customize "previous balance" subtotal line, #34736
authorMark Wells <mark@freeside.biz>
Thu, 30 Apr 2015 01:15:37 +0000 (18:15 -0700)
committerMark Wells <mark@freeside.biz>
Thu, 30 Apr 2015 01:15:37 +0000 (18:15 -0700)
FS/FS/Conf.pm
FS/FS/Upgrade.pm
FS/FS/cust_bill.pm

index 4e2139b..38ccb6e 100644 (file)
@@ -4377,8 +4377,22 @@ and customer address. Include units.',
   {
     'key'         => 'previous_balance-exclude_from_total',
     'section'     => 'invoicing',
-    'description' => 'Do not include previous balance in the \'Total\' line.  Only meaningful when invoice_sections is false.  Optionally provide text to override the Total New Charges description',
-    'type'        => [ qw(checkbox text) ],
+    'description' => 'Show separate totals for previous invoice balance and new charges. Only meaningful when invoice_sections is false.',
+    'type'        => 'checkbox',
+  },
+
+  {
+    'key'         => 'previous_balance-text',
+    'section'     => 'invoicing',
+    'description' => 'Text for the label of the total previous balance, when it is shown separately. Defaults to "Previous Balance".',
+    'type'        => 'text',
+  },
+
+  {
+    'key'         => 'previous_balance-text-total_new_charges',
+    'section'     => 'invoicing',
+    'description' => 'Text for the label of the total of new charges, when it is shown separately. If invoice_show_prior_due_date is enabled, the due date of current charges will be appended. Defaults to "Total New Charges".',
+    'type'        => 'text',
   },
 
   {
index 3694f8a..f508685 100644 (file)
@@ -138,6 +138,13 @@ If you need to continue using the old Form 477 report, turn on the
     $conf->delete('tax-cust_exempt-groups-require_individual_nums');
   }
 
+  # boolean+text previous_balance-exclude_from_total is now two separate options
+  my $total_new_charges = $conf->config('previous_balance-exclude_from_total');
+  if (length($total_new_charges) > 0) {
+    $conf->set('previous_balance-text-total_new_charges', $total_new_charges);
+    $conf->set('previous_balance-exclude_from_total', '');
+  }
+
 }
 
 sub upgrade_overlimit_groups {
index 0de124c..a195e5d 100644 (file)
@@ -2862,20 +2862,26 @@ sub _items_total {
 
   my @items;
   my ($pr_total) = $self->previous;
-  my ($new_charges_desc, $new_charges_amount);
+  my ($previous_charges_desc, $new_charges_desc, $new_charges_amount);
 
   if ( $conf->exists('previous_balance-exclude_from_total') ) {
+    # can we do some caching on this stuff? it's going to change infrequently
+    # in production
+    $previous_charges_desc = $self->mt(
+      $conf->config('previous_balance-text') || 'Previous Balance'
+    );
+
     # then return separate lines for previous balance and total new charges
     if ( $pr_total ) {
       push @items,
-        { total_item    => $self->mt('Previous Balance'),
+        { total_item    => $previous_charges_desc,
           total_amount  => sprintf('%.2f',$pr_total)
         };
     }
     $new_charges_desc = $self->mt(
-      $conf->config('previous_balance-exclude_from_total')
+      $conf->config('previous_balance-text-total_new_charges')
        || 'Total New Charges'
-    ); # localize 'Total New Charges' or whatever's in the config
+    );
 
     $new_charges_amount = $self->charged;