improve late fee descriptions, #25899
authorMark Wells <mark@freeside.biz>
Fri, 9 May 2014 19:25:44 +0000 (12:25 -0700)
committerMark Wells <mark@freeside.biz>
Fri, 9 May 2014 19:25:44 +0000 (12:25 -0700)
FS/FS/Template_Mixin.pm
FS/FS/cust_bill_pkg.pm

index 2781748..e0ea6ab 100644 (file)
@@ -2291,12 +2291,28 @@ sub _items_fee {
       }
     } # otherwise include them all in the main section
     # XXX what to do when sectioning by location?
+    
+    my @ext_desc;
+    my %base_invnums; # invnum => invoice date
+    foreach ($cust_bill_pkg->cust_bill_pkg_fee) {
+      if ($_->base_invnum) {
+        my $base_bill = FS::cust_bill->by_key($_->base_invnum);
+        my $base_date = $self->time2str_local('short', $base_bill->_date)
+          if $base_bill;
+        $base_invnums{$_->base_invnum} = $base_date || '';
+      }
+    }
+    foreach (sort keys(%base_invnums)) {
+      next if $_ == $self->invnum;
+      push @ext_desc,
+        $self->mt('from invoice \\#[_1] on [_2]', $_, $base_invnums{$_});
+    }
     push @items,
       { feepart     => $cust_bill_pkg->feepart,
         amount      => sprintf('%.2f', $cust_bill_pkg->setup + $cust_bill_pkg->recur),
         description => $part_fee->itemdesc_locale($self->cust_main->locale),
+        ext_description => \@ext_desc
         # sdate/edate?
-        # ext_description referencing the base_invnum?
       };
   }
   @items;
index f1267d3..4b85d30 100644 (file)
@@ -906,6 +906,18 @@ sub cust_tax_exempt_pkg {
   $self->{Hash}->{cust_tax_exempt_pkg} ||= [];
 }
 
+=item cust_bill_pkg_fee
+
+Returns the list of associated cust_bill_pkg_fee objects, if this is 
+a fee-type item.
+
+=cut
+
+sub cust_bill_pkg_fee {
+  my $self = shift;
+  qsearch('cust_bill_pkg_fee', { billpkgnum => $self->billpkgnum });
+}
+
 =item cust_bill_pkg_tax_Xlocation
 
 Returns the list of associated cust_bill_pkg_tax_location and/or