summaryrefslogtreecommitdiff
path: root/FS
diff options
context:
space:
mode:
Diffstat (limited to 'FS')
-rw-r--r--FS/FS/Schema.pm3
-rw-r--r--FS/FS/cust_bill.pm17
-rw-r--r--FS/FS/cust_bill_pkg.pm21
-rw-r--r--FS/FS/cust_main/Billing.pm16
-rw-r--r--FS/FS/cust_pkg.pm11
-rw-r--r--FS/FS/part_pkg.pm1
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')