[freeside-commits] branch master updated. a455b3d4dd10624e223705477f55ef09ed81a85f

Mark Wells mark at 420.am
Mon Jun 9 14:24:06 PDT 2014


The branch, master has been updated
       via  a455b3d4dd10624e223705477f55ef09ed81a85f (commit)
      from  b58f35d5de926f2f9187e9c5052ef70f0e652124 (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 a455b3d4dd10624e223705477f55ef09ed81a85f
Author: Mark Wells <mark at freeside.biz>
Date:   Mon Jun 9 14:23:59 2014 -0700

    correctly associate bundled line item amounts with base items, #29518

diff --git a/FS/FS/Template_Mixin.pm b/FS/FS/Template_Mixin.pm
index bfa03bc..afa17fc 100644
--- a/FS/FS/Template_Mixin.pm
+++ b/FS/FS/Template_Mixin.pm
@@ -2295,7 +2295,26 @@ separate quantities, for some reason).
 
 sub _items_nontax {
   my $self = shift;
-  grep { $_->pkgnum } $self->cust_bill_pkg;
+  # The order of these is important.  Bundled line items will be merged into
+  # the most recent non-hidden item, so it needs to be the one with:
+  # - the same pkgnum
+  # - the same start date
+  # - no pkgpart_override
+  #
+  # So: sort by pkgnum,
+  # then by sdate
+  # then sort the base line item before any overrides
+  # then sort hidden before non-hidden add-ons
+  # then sort by override pkgpart (for consistency)
+  sort { $a->pkgnum <=> $b->pkgnum        or
+         $a->sdate  <=> $b->sdate         or
+         ($a->pkgpart_override ? 0 : -1)  or
+         ($b->pkgpart_override ? 0 : 1)   or
+         $b->hidden cmp $a->hidden        or
+         $a->pkgpart_override <=> $b->pkgpart_override
+       }
+  # and of course exclude taxes and fees
+  grep { $_->pkgnum > 0 } $self->cust_bill_pkg;
 }
 
 sub _items_fee {

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

Summary of changes:
 FS/FS/Template_Mixin.pm |   21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)




More information about the freeside-commits mailing list