From 3517ebdcb1d425dc7aa8ddc9236ce14834a9924e Mon Sep 17 00:00:00 2001 From: ivan Date: Fri, 23 Oct 2009 01:41:28 +0000 Subject: [PATCH] add cust_bill-consolidate_services config to collapse multiple phone numbers (or whatever) into as few lines as possible on invoices, RT#5223 --- FS/FS/Conf.pm | 7 +++++++ FS/FS/cust_pkg.pm | 13 ++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm index f0e2f4595..4a79131fd 100644 --- a/FS/FS/Conf.pm +++ b/FS/FS/Conf.pm @@ -2902,6 +2902,13 @@ worry that config_items is freeside-specific and icky. }, { + 'key' => 'cust_bill-consolidate_services', + 'section' => 'billing', + 'description' => 'Consolidate service display into fewer lines on invoices rather than one per service.', + 'type' => 'checkbox', + }, + + { 'key' => 'suspend_email_admin', 'section' => '', 'description' => 'Destination admin email address to enable suspension notices', diff --git a/FS/FS/cust_pkg.pm b/FS/FS/cust_pkg.pm index e839eb93e..fc44540a1 100644 --- a/FS/FS/cust_pkg.pm +++ b/FS/FS/cust_pkg.pm @@ -1881,7 +1881,18 @@ sub _labels_short { if ( $num > $max_same_services ) { push @labels, "$label ($num)"; } else { - push @labels, map { "$label: $_" } @values; + if ( $conf->exists('cust_bill-consolidate_services') ) { + # push @labels, "$label: ". join(', ', @values); + while ( @values ) { + my $detail = "$label: "; + $detail .= shift(@values). ', ' + while @values && length($detail.$values[0]) < 78; + $detail =~ s/, $//; + push @labels, $detail; + } + } else { + push @labels, map { "$label: $_" } @values; + } } } -- 2.11.0