X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpart_event%2FAction%2Fpkg_sales_credit.pm;h=26a6f6dbd1ad59229d628657d674ed99ed55de4a;hb=eb40f5598b09feb017c0fb290a53b04d82513d77;hp=8e04a3bd5093b92b56ebd54e944e8ecc4c8ac5b8;hpb=6891db8c9287fa670e5f6961c8ad3f2e3097fc3c;p=freeside.git diff --git a/FS/FS/part_event/Action/pkg_sales_credit.pm b/FS/FS/part_event/Action/pkg_sales_credit.pm index 8e04a3bd5..26a6f6dbd 100644 --- a/FS/FS/part_event/Action/pkg_sales_credit.pm +++ b/FS/FS/part_event/Action/pkg_sales_credit.pm @@ -1,36 +1,47 @@ package FS::part_event::Action::pkg_sales_credit; +use base qw( FS::part_event::Action::Mixin::credit_flat + FS::part_event::Action ); use strict; -use base qw( FS::part_event::Action::pkg_referral_credit ); sub description { 'Credit the sales person a specific amount'; } -#a little false laziness w/pkg_referral_credit +sub eventtable_hashref { + { 'cust_pkg' => 1 }; +} + sub do_action { my( $self, $cust_pkg, $cust_event ) = @_; my $cust_main = $self->cust_main($cust_pkg); my $sales = $cust_pkg->sales; - return "No customer record for sales person ". $sales->salesperson + $sales ||= $self->cust_main($cust_pkg)->sales + if $self->option('cust_main_sales'); + + return '' unless $sales; #no sales person, no credit + + die "No customer record for sales person ". $sales->salesperson unless $sales->sales_custnum; my $sales_cust_main = $sales->sales_cust_main; #? or return "No customer record for sales person ". $sales->salesperson; - my $amount = $self->_calc_credit($cust_pkg); - return '' unless $amount > 0; + my $warning = ''; + my $amount = $self->_calc_credit($cust_pkg, $sales, \$warning); + return $warning unless $amount > 0; my $reasonnum = $self->option('reasonnum'); my $error = $sales_cust_main->credit( $amount, \$reasonnum, - 'eventnum' => $cust_event->eventnum, - 'addlinfo' => 'for customer #'. $cust_main->display_custnum. - ': '.$cust_main->name. - ', package #'. $cust_pkg->pkgnum, - #'commission_salesnum' => $sales->salesnum, + 'eventnum' => $cust_event->eventnum, + 'addlinfo' => 'for customer #'. $cust_main->display_custnum. + ': '.$cust_main->name. + ', package #'. $cust_pkg->pkgnum, + 'commission_salesnum' => $sales->salesnum, + 'commission_pkgnum' => $cust_pkg->pkgnum, ); die "Error crediting customer ". $sales_cust_main->custnum. " for sales commission: $error"