[freeside-commits] branch master updated. 180e28e1bc437246c6892655bc6c241cf686830b

Mark Wells mark at 420.am
Mon Dec 8 14:35:35 PST 2014


The branch, master has been updated
       via  180e28e1bc437246c6892655bc6c241cf686830b (commit)
       via  9e7de7d0c00d79c9616c5584213a25e2ca41b5b3 (commit)
      from  61e4d4c2bbb146090aa3acd1f31fd9f109d17425 (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 180e28e1bc437246c6892655bc6c241cf686830b
Author: Mark Wells <mark at freeside.biz>
Date:   Mon Dec 8 14:34:56 2014 -0800

    trivial fix to discount report

diff --git a/httemplate/graph/cust_bill_pkg_discount.html b/httemplate/graph/cust_bill_pkg_discount.html
index 0d66799..5074aa3 100644
--- a/httemplate/graph/cust_bill_pkg_discount.html
+++ b/httemplate/graph/cust_bill_pkg_discount.html
@@ -74,7 +74,7 @@ foreach my $agent ( $sel_agent || qsearch('agent', { 'disabled' => '' } ) ) {
                       #'average_per_cust_pkg' => $average_per_cust_pkg,
                     ];
 
-      push @links, "$link?agentnum=$row_agentnum"; #;classnum=$row_classnum;";
+      push @links, $link . "agentnum=$row_agentnum;";
 
       @_colors = ($col_scheme->colors)[0,4,8,1,5,9,2,6,10,3,7,11];
       push @colors, shift @_colors;
diff --git a/httemplate/graph/report_cust_bill_pkg_discount.html b/httemplate/graph/report_cust_bill_pkg_discount.html
index 6de84f8..36ad782 100644
--- a/httemplate/graph/report_cust_bill_pkg_discount.html
+++ b/httemplate/graph/report_cust_bill_pkg_discount.html
@@ -1,4 +1,4 @@
-<& /elements/header.html', 'Discount Report' &>
+<& /elements/header.html, 'Discount Report' &>
 
 <FORM ACTION="cust_bill_pkg_discount.html" METHOD="GET">
 

commit 9e7de7d0c00d79c9616c5584213a25e2ca41b5b3
Author: Mark Wells <mark at freeside.biz>
Date:   Mon Dec 8 14:34:54 2014 -0800

    show discounts on invoices as negative line items, #31273

diff --git a/FS/FS/Template_Mixin.pm b/FS/FS/Template_Mixin.pm
index f67de76..ebc977a 100644
--- a/FS/FS/Template_Mixin.pm
+++ b/FS/FS/Template_Mixin.pm
@@ -346,8 +346,8 @@ sub print_generic {
 
   if ( $format eq 'latex' && grep { /^%%Detail/ } @invoice_template ) {
     #change this to a die when the old code is removed
-    # it's been almost ten years, changing it to a die.
-    die "old-style invoice template $templatefile; ".
+    # it's been almost ten years, changing it to a die on the next release.
+    warn "old-style invoice template $templatefile; ".
          "patch with conf/invoice_latex.diff or use new conf/invoice_latex*\n";
          #$old_latex = 'true';
          #@invoice_template = _translate_old_latex_format(@invoice_template);
@@ -2638,14 +2638,14 @@ sub _items_cust_bill_pkg {
                                    # and location labels
 
   my @b = (); # accumulator for the line item hashes that we'll return
-  my ($s, $r, $u, $d) = ( undef, undef, undef );
+  my ($s, $r, $u, $d) = ( undef, undef, undef, undef );
             # the 'current' line item hashes for setup, recur, usage, discount
   foreach my $cust_bill_pkg ( @$cust_bill_pkgs )
   {
     # if the current line item is waiting to go out, and the one we're about
     # to start is not bundled, then push out the current one and start a new
     # one.
-    foreach ( $s, $r, ($opt{skip_usage} ? () : $u ) , $d ) {
+    foreach ( $s, $r, ($opt{skip_usage} ? () : $u ), $d ) {
       if ( $_ && !$cust_bill_pkg->hidden ) {
         $_->{amount}      = sprintf( "%.2f", $_->{amount} );
         $_->{amount}      =~ s/^\-0\.00$/0.00/;
@@ -3047,6 +3047,15 @@ sub _items_cust_bill_pkg {
             or ( $type eq 'R' and $cust_bill_pkg->unitrecur > 0 )
         ) {
 
+          # the line item hashref for the line that will show the original
+          # price
+          # (use the recur or single line for the package, unless we're 
+          # showing a setup line for a package with no recurring fee)
+          my $active_line = $r;
+          if ( $type eq 'S' ) {
+            $active_line = $s;
+          }
+
           my @discounts = $cust_bill_pkg->cust_bill_pkg_discount;
           # special case: if there are old "discount details" on this line 
           # item, don't show discount line items
@@ -3061,23 +3070,18 @@ sub _items_cust_bill_pkg {
               $cust_bill_pkg->billpkgnum."\n"
               if $DEBUG;
             my $discount_amount = sum( map {$_->amount} @discounts );
-            my $orig_amount = $cust_bill_pkg->setup + $cust_bill_pkg->recur
-                              + $discount_amount;
             # if multiple discounts apply to the same package, how to display
             # them? ext_description lines, apparently
+            #
+            # # discount amounts are negative
             if ( $d and $cust_bill_pkg->hidden ) {
-              $d->{amount}      += $discount_amount;
-              $d->{orig_amount} += $orig_amount;
+              $d->{amount}      -= $discount_amount;
             } else {
               my @ext;
-              # make a placeholder for the original price, if necessary
-              # (if unit prices are enabled, it won't be necessary)
-              push @ext, '' if !$conf->exists('invoice-unitprice');
               $d = {
                 _is_discount    => 1,
-                description     => $self->mt('Discount included'),
-                amount          => $discount_amount,
-                orig_amount     => $orig_amount,
+                description     => $self->mt('Discount'),
+                amount          => -1 * $discount_amount,
                 ext_description => \@ext,
               };
               foreach my $cust_bill_pkg_discount (@discounts) {
@@ -3086,12 +3090,10 @@ sub _items_cust_bill_pkg {
               }
             }
 
-            # update the placeholder to show the original price in the 
-            # first ext_description line
-            if ( !$conf->exists('invoice-unitprice') ) {
-              $d->{ext_description}->[0] =
-                sprintf('Original price: %.2f', $d->{orig_amount});
-            }
+            # update the active line (before the discount) to show the 
+            # original price (whether this is a hidden line or not)
+            $active_line->{amount} += $discount_amount;
+            
           } # if there are any discounts
         } # if this is an appropriate place to show discounts
 
@@ -3116,7 +3118,7 @@ sub _items_cust_bill_pkg {
 
   }
 
-  foreach ( $s, $r, ($opt{skip_usage} ? () : $u, $d ) ) {
+  foreach ( $s, $r, ($opt{skip_usage} ? () : $u ), $d ) {
     if ( $_  ) {
       $_->{amount}      = sprintf( "%.2f", $_->{amount} ),
         if exists($_->{amount});
diff --git a/FS/FS/discount.pm b/FS/FS/discount.pm
index 43ad490..0561f9c 100644
--- a/FS/FS/discount.pm
+++ b/FS/FS/discount.pm
@@ -174,12 +174,12 @@ sub description_short {
   my $money_char = $conf->config('money_char') || '$';  
 
   my $desc = $self->name ? $self->name.': ' : '';
-  $desc .= $money_char. sprintf('%.2f/month ', $self->amount)
+  $desc .= $money_char. sprintf('%.2f/month', $self->amount)
     if $self->amount > 0;
 
   ( my $percent = $self->percent ) =~ s/\.0+$//;
   $percent =~ s/(\.\d*[1-9])0+$/$1/;
-  $desc .= $percent. '% '
+  $desc .= $percent. '%'
     if $self->percent > 0;
 
   $desc;

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

Summary of changes:
 FS/FS/Template_Mixin.pm                            |   44 ++++++++++----------
 FS/FS/discount.pm                                  |    4 +-
 httemplate/graph/cust_bill_pkg_discount.html       |    2 +-
 .../graph/report_cust_bill_pkg_discount.html       |    2 +-
 4 files changed, 27 insertions(+), 25 deletions(-)




More information about the freeside-commits mailing list