diff options
Diffstat (limited to 'FS')
-rw-r--r-- | FS/FS/Schema.pm | 3 | ||||
-rw-r--r-- | FS/FS/cust_bill.pm | 17 | ||||
-rw-r--r-- | FS/FS/cust_bill_pkg.pm | 21 | ||||
-rw-r--r-- | FS/FS/cust_main/Billing.pm | 16 | ||||
-rw-r--r-- | FS/FS/cust_pkg.pm | 11 | ||||
-rw-r--r-- | FS/FS/part_pkg.pm | 1 |
6 files changed, 57 insertions, 12 deletions
diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm index fb17f0bab..bac52ce7b 100644 --- a/FS/FS/Schema.pm +++ b/FS/FS/Schema.pm @@ -1455,6 +1455,8 @@ sub tables_hashref { 'reason', 'varchar', '', $char_d, '', '', 'payby', 'char', '', 4, '', '', # CARD/BILL/COMP, should # be index into payby + 'recur_show_zero', 'char', 'NULL', 1, '', '', + 'setup_show_zero', 'char', 'NULL', 1, '', '', # table eventually 'payinfo', 'varchar', 'NULL', 512, '', '', #see cust_main above 'paymask', 'varchar', 'NULL', $char_d, '', '', @@ -1638,6 +1640,7 @@ sub tables_hashref { 'pkgpart', 'int', '', '', '', '', 'svcpart', 'int', '', '', '', '', 'quantity', 'int', '', '', '', '', + 'setup_show_zero', 'char', 'NULL', 1, '', '', 'primary_svc','char', 'NULL', 1, '', '', 'hidden', 'char', 'NULL', 1, '', '', ], diff --git a/FS/FS/cust_bill.pm b/FS/FS/cust_bill.pm index 2d7341efd..7bf4fd2ac 100644 --- a/FS/FS/cust_bill.pm +++ b/FS/FS/cust_bill.pm @@ -4497,13 +4497,21 @@ sub _items_cust_bill_pkg { my $cust_pkg = $cust_bill_pkg->cust_pkg; - if ( $cust_bill_pkg->setup != 0 && (!$type || $type eq 'S') ) { + if ( (!$type || $type eq 'S') + && ( $cust_bill_pkg->setup != 0 + || $cust_bill_pkg->setup_show_zero + ) + ) + { warn "$me _items_cust_bill_pkg adding setup\n" if $DEBUG > 1; my $description = $desc; - $description .= ' Setup' if $cust_bill_pkg->recur != 0; + $description .= ' Setup' + if $cust_bill_pkg->recur != 0 + || $discount_show_always + || $cust_bill_pkg->recur_show_zero; my @d = (); unless ( $cust_pkg->part_pkg->hide_svc_detail @@ -4532,6 +4540,7 @@ sub _items_cust_bill_pkg { push @{ $s->{ext_description} }, @d; } else { $s = { + _is_setup => 1, description => $description, #pkgpart => $part_pkg->pkgpart, pkgnum => $cust_bill_pkg->pkgnum, @@ -4708,7 +4717,9 @@ sub _items_cust_bill_pkg { push @b, { %$_ } if $_->{amount} != 0 || $discount_show_always - || $cust_bill_pkg->recur_show_zero; + || ( ! $_->{_is_setup} && $cust_bill_pkg->recur_show_zero ) + || ( $_->{_is_setup} && $cust_bill_pkg->setup_show_zero ) + ; $_ = undef; } } diff --git a/FS/FS/cust_bill_pkg.pm b/FS/FS/cust_bill_pkg.pm index aee2a5429..77cdd1123 100644 --- a/FS/FS/cust_bill_pkg.pm +++ b/FS/FS/cust_bill_pkg.pm @@ -898,12 +898,25 @@ sub cust_bill_pkg_discount { =cut sub recur_show_zero { - my $self = shift; + #my $self = shift; + # $self->recur == 0 + #&& $self->pkgnum + #&& $self->cust_pkg->part_pkg->recur_show_zero; + + shift->_X_show_zero('recur'); + +} + +sub setup_show_zero { + shift->_X_show_zero('setup'); +} + +sub _X_show_zero { + my( $self, $what ) = @_; - $self->recur == 0 - && $self->pkgnum - && $self->cust_pkg->part_pkg->recur_show_zero; + return 0 unless $self->$what() == 0 && $self->pkgnum; + $self->cust_pkg->_X_show_zero($what); } =back diff --git a/FS/FS/cust_main/Billing.pm b/FS/FS/cust_main/Billing.pm index a4603df2c..e78f3148a 100644 --- a/FS/FS/cust_main/Billing.pm +++ b/FS/FS/cust_main/Billing.pm @@ -593,15 +593,18 @@ sub _omit_zero_value_bundles { && scalar(@{$cust_bill_pkg->get('discounts')}) && $conf->exists('discount-show-always')); - warn " pkgnum ". $cust_bill_pkg->pkgnum. - " sum $sum, recur_show_zero ". $cust_bill_pkg->recur_show_zero. "\n" + warn " pkgnum ". $cust_bill_pkg->pkgnum. " sum $sum, ". + "setup_show_zero ". $cust_bill_pkg->setup_show_zero. + "recur_show_zero ". $cust_bill_pkg->recur_show_zero. "\n" if $DEBUG > 0; if (scalar(@cust_bill_pkg_bundle) && !$cust_bill_pkg->pkgpart_override) { push @cust_bill_pkg, @cust_bill_pkg_bundle if $sum > 0 || ($sum == 0 && ( $discount_show_always - || grep $_->recur_show_zero, @cust_bill_pkg_bundle ) + || grep {$_->recur_show_zero || $_->setup_show_zero} + @cust_bill_pkg_bundle + ) ); @cust_bill_pkg_bundle = (); $sum = 0; @@ -615,7 +618,9 @@ sub _omit_zero_value_bundles { push @cust_bill_pkg, @cust_bill_pkg_bundle if $sum > 0 || ($sum == 0 && ( $discount_show_always - || grep $_->recur_show_zero, @cust_bill_pkg_bundle ) + || grep {$_->recur_show_zero || $_->setup_show_zero} + @cust_bill_pkg_bundle + ) ); warn " _omit_zero_value_bundles: ". scalar(@in). @@ -1011,7 +1016,8 @@ sub _make_lines { || $recur != 0 || (!$part_pkg->hidden && $options{has_hidden}) #include some $0 lines || $discount_show_always - || ($recur == 0 && $part_pkg->recur_show_zero) + || ($setup == 0 && $cust_pkg->_X_show_zero('setup')) + || ($recur == 0 && $cust_pkg->_X_show_zero('recur')) ) { diff --git a/FS/FS/cust_pkg.pm b/FS/FS/cust_pkg.pm index 8babbe529..5fd53478d 100644 --- a/FS/FS/cust_pkg.pm +++ b/FS/FS/cust_pkg.pm @@ -599,6 +599,8 @@ sub check { || $self->ut_enum('no_auto', [ '', 'Y' ]) || $self->ut_enum('waive_setup', [ '', 'Y' ]) || $self->ut_numbern('agent_pkgid') + || $self->ut_enum('recur_show_zero', [ '', 'Y', 'N', ]) + || $self->ut_enum('setup_show_zero', [ '', 'Y', 'N', ]) ; return $error if $error; @@ -3275,6 +3277,15 @@ sub _location_sql_where { "; } +sub _X_show_zero { + my( $self, $what ) = @_; + + my $what_show_zero = $what. '_show_zero'; + length($self->$what_show_zero()) + ? ($self->$what_show_zero() eq 'Y') + : $self->part_pkg->$what_show_zero(); +} + =head1 SUBROUTINES =over 4 diff --git a/FS/FS/part_pkg.pm b/FS/FS/part_pkg.pm index 96a55a8c9..66ce36e03 100644 --- a/FS/FS/part_pkg.pm +++ b/FS/FS/part_pkg.pm @@ -485,6 +485,7 @@ sub check { || $self->ut_enum('custom', [ '', 'Y' ] ) || $self->ut_enum('no_auto', [ '', 'Y' ]) || $self->ut_enum('recur_show_zero', [ '', 'Y' ]) + || $self->ut_enum('setup_show_zero', [ '', 'Y' ]) #|| $self->ut_moneyn('setup_cost') #|| $self->ut_moneyn('recur_cost') || $self->ut_floatn('setup_cost') |