summaryrefslogtreecommitdiff
path: root/FS/FS
diff options
context:
space:
mode:
authorivan <ivan>2009-10-23 01:41:28 +0000
committerivan <ivan>2009-10-23 01:41:28 +0000
commit3517ebdcb1d425dc7aa8ddc9236ce14834a9924e (patch)
treebeaa312f46177ca18771d9f55c505281a0154fcc /FS/FS
parente0cfc4fdd26c8bf42ba52763dc29e451792b2976 (diff)
add cust_bill-consolidate_services config to collapse multiple phone numbers (or whatever) into as few lines as possible on invoices, RT#5223
Diffstat (limited to 'FS/FS')
-rw-r--r--FS/FS/Conf.pm7
-rw-r--r--FS/FS/cust_pkg.pm13
2 files changed, 19 insertions, 1 deletions
diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm
index f0e2f45..4a79131 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 e839eb9..fc44540 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;
+ }
}
}