'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, '', '',
'pkgpart', 'int', '', '', '', '',
'svcpart', 'int', '', '', '', '',
'quantity', 'int', '', '', '', '',
+ 'setup_show_zero', 'char', 'NULL', 1, '', '',
'primary_svc','char', 'NULL', 1, '', '',
'hidden', 'char', 'NULL', 1, '', '',
],
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
push @{ $s->{ext_description} }, @d;
} else {
$s = {
+ _is_setup => 1,
description => $description,
#pkgpart => $part_pkg->pkgpart,
pkgnum => $cust_bill_pkg->pkgnum,
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;
}
}
=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
&& 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;
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).
|| $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'))
)
{
|| $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;
";
}
+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
|| $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')
sprintf('%.2f', $part_pkg->option('setup_fee') ),
align=>'right'
},
- { data => ( $is_recur ? ' setup' : ' one-time' ),
+ { data => ( ( $is_recur ? ' setup' : ' one-time' ).
+ ( $part_pkg->option('recur_fee') == 0
+ && $part_pkg->setup_show_zero
+ ? ' (printed on invoices)'
+ : ''
+ )
+ ),
align=>'left',
},
],
[
- { data=>( $is_recur
- ? $money_char.sprintf('%.2f ', $part_pkg->option('recur_fee'))
- : $part_pkg->freq_pretty
- ),
+ { data=>(
+ $is_recur
+ ? $money_char. sprintf('%.2f ', $part_pkg->option('recur_fee'))
+ : $part_pkg->freq_pretty
+ ),
align=> ( $is_recur ? 'right' : 'center' ),
colspan=> ( $is_recur ? 1 : 2 ),
},
( $is_recur
- ? { data => ( $is_recur ? $part_pkg->freq_pretty : '' ),
+ ? { data => ( $is_recur
+ ? $part_pkg->freq_pretty.
+ ( $part_pkg->option('recur_fee') == 0
+ && $part_pkg->recur_show_zero
+ ? ' (printed on invoices)'
+ : ''
+ )
+ : '' ),
align=>'left',
}
: ()
),
],
- [ { data =>
- ( $part_pkg->option('recur_fee') == 0 && $part_pkg->recur_show_zero )
- ? ' (printed on invoices)'
- : '',
- align => 'center', #?
- colspan => 2,
- },
- ],
( map {
my $dst_pkg = $_->dst_pkg;
[
'credit_weight' => 'Credit weight',
'agentnum' => 'Agent',
'setup_fee' => 'Setup fee',
+ 'setup_show_zero' => 'Show zero setup',
'recur_fee' => 'Recurring fee',
'recur_show_zero' => 'Show zero recurring',
'discountnum' => 'Offer discounts for longer terms',
{field=>'disabled', type=>$disabled_type, value=>'Y'},
{field=>'disable_line_item_date_ranges', type=>$disabled_type, value=>'Y'},
- { type => 'tablebreak-tr-title',
- value => 'Pricing', #better name?
+ { type => 'tablebreak-tr-title',
+ value => 'Pricing', #better name?
},
- { field => 'plan',
- type => 'selectlayers-select',
- options => [ keys %plan_labels ],
- labels => \%plan_labels,
+ { field => 'plan',
+ type => 'selectlayers-select',
+ options => [ keys %plan_labels ],
+ labels => \%plan_labels,
onchange => 'aux_planchanged(what);',
},
- { field => 'setup_fee',
- type => 'money',
+ { field => 'setup_fee',
+ type => 'money',
+ onchange => 'setup_changed',
+ },
+ { field => 'setup_show_zero',
+ type => 'checkbox',
+ value => 'Y',
+ disabled => sub { $setup_show_zero_disabled },
},
{ field => 'freq',
type => 'part_pkg_freq',
my %options = ();
my $recur_disabled = 1;
+my $setup_show_zero_disabled = 0;
my $recur_show_zero_disabled = 1;
my $pkgpart = '';
$opt->{action} = 'Custom' if $cgi->param('pkgnum');
+ $setup_show_zero_disabled = ($cgi->param('setup_fee') > 0) ? 1 : 0;
+
$recur_disabled = $cgi->param('freq') ? 0 : 1;
$recur_show_zero_disabled =
$cgi->param('freq')
- ? $cgi->param('recur_fee') ? 0 : 1
+ ? $cgi->param('recur_fee') > 0 ? 1 : 0
: 1;
foreach ($cgi->param) {
my $edit_callback = sub {
my( $cgi, $object, $fields, $opt ) = @_;
+ $setup_show_zero_disabled = ($object->option('setup_fee') > 0) ? 1 : 0;
+
$recur_disabled = $object->freq ? 0 : 1;
+ $recur_show_zero_disabled =
+ $object->freq
+ ? $object->option('recur_fee') > 0 ? 1 : 0
+ : 1;
+
(@agent_type) =
map {$_->typenum} qsearch('type_pkgs', { 'pkgpart' => $object->pkgpart } );
%options = $object->options;
- $object->set($_ => $object->option($_))
+ $object->set($_ => $object->option($_, 1))
foreach (qw( setup_fee recur_fee disable_line_item_date_ranges ));
$pkgpart = $object->pkgpart;
} else {
what.form.recur_fee.disabled = false;
what.form.recur_fee.style.backgroundColor = '#ffffff';
- what.form.recur_show_zero.disabled = false;
+ recur_changed( what.form.recur_fee );
//what.form.recur_show_zero.style.backgroundColor= '#ffffff';
}
}
+ function setup_changed(what) {
+ var setup = what.value;
+ if ( parseFloat(setup) == 0 ) {
+ what.form.setup_show_zero.disabled = false;
+ } else {
+ what.form.setup_show_zero.disabled = true;
+ }
+ }
+
function recur_changed(what) {
var recur = what.value;
- if ( recur == 0 ) {
+ if ( parseFloat(recur) == 0 ) {
what.form.recur_show_zero.disabled = false;
} else {
what.form.recur_show_zero.disabled = true;