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 1885a650c..548c22e77 100644 --- a/FS/FS/Schema.pm +++ b/FS/FS/Schema.pm @@ -1455,6 +1455,8 @@ sub tables_hashref { 'quantity', 'int', 'NULL', '', '', '', 'agent_pkgid', 'int', 'NULL', '', '', '', 'waive_setup', 'char', 'NULL', 1, '', '', + 'recur_show_zero', 'char', 'NULL', 1, '', '', + 'setup_show_zero', 'char', 'NULL', 1, '', '', ], 'primary_key' => 'pkgnum', 'unique' => [], @@ -1638,6 +1640,7 @@ sub tables_hashref { 'fcc_ds0s', 'int', 'NULL', '', '', '', 'no_auto', 'char', 'NULL', 1, '', '', 'recur_show_zero', 'char', 'NULL', 1, '', '', + 'setup_show_zero', 'char', 'NULL', 1, '', '', ], 'primary_key' => 'pkgpart', 'unique' => [], diff --git a/FS/FS/cust_bill.pm b/FS/FS/cust_bill.pm index 082c92d03..ec8ed29dc 100644 --- a/FS/FS/cust_bill.pm +++ b/FS/FS/cust_bill.pm @@ -4612,13 +4612,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 @@ -4647,6 +4655,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, @@ -4822,7 +4831,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 2c79209c5..d332e363f 100644 --- a/FS/FS/cust_bill_pkg.pm +++ b/FS/FS/cust_bill_pkg.pm @@ -899,12 +899,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 4b9c3d328..e94cd8493 100644 --- a/FS/FS/cust_main/Billing.pm +++ b/FS/FS/cust_main/Billing.pm @@ -616,15 +616,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; @@ -638,7 +641,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). @@ -1048,7 +1053,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 872a6446a..07b71dc11 100644 --- a/FS/FS/cust_pkg.pm +++ b/FS/FS/cust_pkg.pm @@ -600,6 +600,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; @@ -3281,6 +3283,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 1981d63df..4a0d157ca 100644 --- a/FS/FS/part_pkg.pm +++ b/FS/FS/part_pkg.pm @@ -554,6 +554,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') |