summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorivan <ivan>2010-03-30 02:52:52 +0000
committerivan <ivan>2010-03-30 02:52:52 +0000
commit470179da98f2d8f1db6c0a834202c080233a61de (patch)
tree573f692e28473dc5618f0100baeeea9c2cfa78dd
parent3c64b5db7af79557f231f0f41bd821b58c63bc95 (diff)
employee commissions, RT#6991
-rw-r--r--FS/FS/part_event/Action/pkg_employee_credit.pm43
1 files changed, 43 insertions, 0 deletions
diff --git a/FS/FS/part_event/Action/pkg_employee_credit.pm b/FS/FS/part_event/Action/pkg_employee_credit.pm
new file mode 100644
index 000000000..94fc5f3b1
--- /dev/null
+++ b/FS/FS/part_event/Action/pkg_employee_credit.pm
@@ -0,0 +1,43 @@
+package FS::part_event::Action::pkg_employee_credit;
+
+use strict;
+use base qw( FS::part_event::Action::pkg_referral_credit );
+use FS::Record qw(qsearchs);
+use FS::access_user;
+
+sub description { 'Credit the ordering employee a specific amount'; }
+
+#a little false laziness w/pkg_referral_credit
+sub do_action {
+ my( $self, $cust_pkg ) = @_;
+
+ my $cust_main = $self->cust_main($cust_pkg);
+
+ #yuck. this is why text $otaker is gone in 2.1
+ my $otaker = $cust_pkg->otaker;
+ my $employee = qsearchs('access_user', { 'username' => $otaker } )
+ or return "No employee for username $otaker";
+ return "No customer record for employee ". $employee->username
+ unless $employee->user_custnum;
+
+ my $employee_cust_main = $employee->user_cust_main;
+ #? or return "No customer record for employee ". $employee->username;
+
+ my $amount = $self->_calc_credit($cust_pkg);
+ return '' unless $amount > 0;
+
+ my $reasonnum = $self->option('reasonnum');
+
+ my $error = $employee_cust_main->credit(
+ $amount,
+ \$reasonnum,
+ 'addlinfo' =>
+ 'for customer #'. $cust_main->display_custnum. ': '.$cust_main->name,
+ );
+ die "Error crediting customer ". $employee_cust_main->custnum.
+ " for employee commission: $error"
+ if $error;
+
+}
+
+1;