[freeside-commits] branch master updated. 058c0f954497dabf988af9fa4d50760509f8aa00

Jonathan Prykop jonathan at 420.am
Mon Mar 9 18:58:04 PDT 2015


The branch, master has been updated
       via  058c0f954497dabf988af9fa4d50760509f8aa00 (commit)
      from  5123fd25380f308622f614f4ddb18001cdb0a4e2 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 058c0f954497dabf988af9fa4d50760509f8aa00
Author: Jonathan Prykop <jonathan at freeside.biz>
Date:   Mon Mar 9 20:57:30 2015 -0500

    RT#25563: Better handling of commissions which do not have rates configured

diff --git a/FS/FS/part_event/Action/Mixin/credit_bill.pm b/FS/FS/part_event/Action/Mixin/credit_bill.pm
index 82b215d..694f965 100644
--- a/FS/FS/part_event/Action/Mixin/credit_bill.pm
+++ b/FS/FS/part_event/Action/Mixin/credit_bill.pm
@@ -54,6 +54,9 @@ our %part_pkg_cache;
 sub _calc_credit {
   my $self = shift;
   my $cust_bill_pkg = shift;
+  my $who = shift;
+  my $warnref = shift;
+  my $warning = '';
 
   my $what = $self->option('what');
   my $cost = ($what =~ /_cost/ ? 1 : 0);
@@ -64,9 +67,11 @@ sub _calc_credit {
 
   my $percent;
   if ( $self->can('_calc_credit_percent') ) {
-    $percent = $self->_calc_credit_percent($cust_pkg, @_);
+    $percent = $self->_calc_credit_percent($cust_pkg, $who);
+    $warning = 'Percent calculated to zero ' unless $percent+0;
   } else {
     $percent = $self->option('percent') || 0;
+    $warning = 'Percent set to zero ' unless $percent+0;
   }
 
   my $charge = 0;
@@ -83,20 +88,26 @@ sub _calc_credit {
     }
 
     $charge = ($charge || 0) * ($cust_pkg->quantity || 1);
+    $warning .= 'Charge calculated to zero ' unless $charge+0;
 
   } else { # setup, recur, or setuprecur
 
     if ( $what eq 'setup' ) {
       $charge = $cust_bill_pkg->get('setup');
+      $warning .= 'Setup is zero ' unless $charge+0;
     } elsif ( $what eq 'recur' ) {
       $charge = $cust_bill_pkg->get('recur');
+      $warning .= 'Recur is zero ' unless $charge+0;
     } elsif ( $what eq 'setuprecur' ) {
       $charge = $cust_bill_pkg->get('setup') + $cust_bill_pkg->get('recur');
+      $warning .= 'Setup and recur are zero ' unless $charge+0;
     }
 
     # don't multiply by quantity here; it's already included
   }
 
+  $$warnref .= $warning if ref($warnref);
+
   $charge = 0 if $charge < 0; # e.g. prorate
   return ($percent * $charge / 100);
 }
diff --git a/FS/FS/part_event/Action/bill_sales_credit.pm b/FS/FS/part_event/Action/bill_sales_credit.pm
index 3193a81..ab69375 100644
--- a/FS/FS/part_event/Action/bill_sales_credit.pm
+++ b/FS/FS/part_event/Action/bill_sales_credit.pm
@@ -38,6 +38,7 @@ sub do_action {
                                          pkgnum => { op => '>', value => '0' }
                                        });
 
+  my $warning = '';
   foreach my $cust_bill_pkg (@items) {
     my $pkgnum = $cust_bill_pkg->pkgnum;
     my $cust_pkg = $pkgnum_pkg{$pkgnum} ||= $cust_bill_pkg->cust_pkg;
@@ -50,7 +51,7 @@ sub do_action {
 
     next if !$sales; #no sales person, no credit
 
-    my $amount = $self->_calc_credit($cust_bill_pkg, $sales);
+    my $amount = $self->_calc_credit($cust_bill_pkg, $sales, \$warning);
 
     if ($amount > 0) {
       $salesnum_amount{$salesnum} ||= 0;
@@ -86,6 +87,8 @@ sub do_action {
       if $error;
   } # foreach $salesnum
 
+  return $warning;
+
 }
 
 1;

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/part_event/Action/Mixin/credit_bill.pm |   13 ++++++++++++-
 FS/FS/part_event/Action/bill_sales_credit.pm |    5 ++++-
 2 files changed, 16 insertions(+), 2 deletions(-)




More information about the freeside-commits mailing list