X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fpart_fee.pm;h=1d4682c1eed4866034666e724c8559054f4bfc19;hp=370005c1577065c73463fd44ee9b33d9d585f897;hb=f822e27a1e00594332ffa487a1c284234c5580a6;hpb=ebd92772ce134b05f72d11e564a9f9abf72f1b4e diff --git a/FS/FS/part_fee.pm b/FS/FS/part_fee.pm index 370005c15..1d4682c1e 100644 --- a/FS/FS/part_fee.pm +++ b/FS/FS/part_fee.pm @@ -2,11 +2,11 @@ package FS::part_fee; use strict; use base qw( FS::o2m_Common FS::Record ); -use vars qw( $DEBUG ); use FS::Record qw( qsearch qsearchs ); use FS::cust_bill_pkg_display; -$DEBUG = 0; +our $DEBUG = 0; +our $default_class; =head1 NAME @@ -50,6 +50,9 @@ the invoice =item disabled - 'Y' if the fee is disabled =item classnum - the L that the fee belongs to, for reporting +and placement on multisection invoices. Unlike packages, fees I be +assigned to a class; they will default to class named "Fees", which belongs +to the same invoice section that normally contains taxes. =item taxable - 'Y' if this fee should be considered a taxable sale. Currently, taxable fees will be treated like they exist at the customer's @@ -130,6 +133,13 @@ sub check { $self->set('amount', 0) unless $self->amount; $self->set('percent', 0) unless $self->percent; + $default_class ||= qsearchs('pkg_class', { classname => 'Fees' }) + or die "default package fee class not found; run freeside-upgrade to continue.\n"; + + if (!$self->get('classnum')) { + $self->set('classnum', $default_class->classnum); + } + my $error = $self->ut_numbern('feepart') || $self->ut_textn('comment') @@ -392,7 +402,8 @@ sub lineitem { # if this is a percentage fee and has line item fractions, # adjust them to be proportional and to add up correctly. - if ( @item_base ) { + # don't try this if we're charging on a zero-amount set of line items. + if ( scalar(@item_base) > 0 and $total_base > 0 ) { my $cents = $amount * 100; # not necessarily the same as percent my $multiplier = $amount / $total_base; @@ -513,6 +524,11 @@ sub has_taxproduct { return ($self->taxproductnum ? 1 : 0); } +sub taxproduct { # compat w/ part_pkg + my $self = shift; + $self->part_pkg_taxproduct; +} + =back =head1 BUGS