X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcust_bill_pkg.pm;h=cd049d121ce156530e23370f41efc274786deecf;hb=5b87686b7a7f09e766bb1749628365b81f4f72fc;hp=9d7aae23ca86f5f81163c5f421268a762bb5fe97;hpb=3a02e398ce013116c6ee97fc18472a6f40e0798d;p=freeside.git diff --git a/FS/FS/cust_bill_pkg.pm b/FS/FS/cust_bill_pkg.pm index 9d7aae23c..cd049d121 100644 --- a/FS/FS/cust_bill_pkg.pm +++ b/FS/FS/cust_bill_pkg.pm @@ -2,6 +2,7 @@ package FS::cust_bill_pkg; use strict; use vars qw( @ISA $DEBUG $me ); +use Carp; use FS::Record qw( qsearch qsearchs dbdef dbh ); use FS::cust_main_Mixin; use FS::cust_pkg; @@ -18,7 +19,7 @@ use FS::cust_tax_adjustment; @ISA = qw( FS::cust_main_Mixin FS::Record ); -$DEBUG = 2; +$DEBUG = 0; $me = '[FS::cust_bill_pkg]'; =head1 NAME @@ -151,6 +152,8 @@ sub insert { 'amount' => (ref($detail) ? $detail->[2] : '' ), 'classnum' => (ref($detail) ? $detail->[3] : '' ), 'phonenum' => (ref($detail) ? $detail->[4] : '' ), + 'duration' => (ref($detail) ? $detail->[5] : '' ), + 'regionname' => (ref($detail) ? $detail->[6] : '' ), }; $error = $cust_bill_pkg_detail->insert; if ( $error ) { @@ -186,9 +189,7 @@ sub insert { if ( $tax_location ) { foreach my $cust_bill_pkg_tax_location ( @$tax_location ) { $cust_bill_pkg_tax_location->billpkgnum($self->billpkgnum); - warn $cust_bill_pkg_tax_location; $error = $cust_bill_pkg_tax_location->insert; - warn $error; if ( $error ) { $dbh->rollback if $oldAutoCommit; return "error inserting cust_bill_pkg_tax_location: $error"; @@ -201,7 +202,6 @@ sub insert { foreach my $cust_bill_pkg_tax_rate_location ( @$tax_rate_location ) { $cust_bill_pkg_tax_rate_location->billpkgnum($self->billpkgnum); $error = $cust_bill_pkg_tax_rate_location->insert; - warn $error; if ( $error ) { $dbh->rollback if $oldAutoCommit; return "error inserting cust_bill_pkg_tax_rate_location: $error"; @@ -213,7 +213,6 @@ sub insert { if ( $cust_tax_adjustment ) { $cust_tax_adjustment->billpkgnum($self->billpkgnum); $error = $cust_tax_adjustment->replace; - warn $error; if ( $error ) { $dbh->rollback if $oldAutoCommit; return "error replacing cust_tax_adjustment: $error"; @@ -346,7 +345,7 @@ Returns the package (see L) for this invoice line item. sub cust_pkg { my $self = shift; - warn "$me $self -> cust_pkg"; + carp "$me $self -> cust_pkg" if $DEBUG; qsearchs( 'cust_pkg', { 'pkgnum' => $self->pkgnum } ); } @@ -361,7 +360,10 @@ sub part_pkg { if ( $self->pkgpart_override ) { qsearchs('part_pkg', { 'pkgpart' => $self->pkgpart_override } ); } else { - $self->cust_pkg->part_pkg; + my $part_pkg; + my $cust_pkg = $self->cust_pkg; + $part_pkg = $cust_pkg->part_pkg if $cust_pkg; + $part_pkg; } } @@ -527,6 +529,16 @@ sub owed { $balance; } +#modeled after owed +sub payable { + my( $self, $field ) = @_; + my $balance = $self->$field(); + $balance -= $_->amount foreach ( $self->cust_credit_bill_pkg($field) ); + $balance = sprintf( '%.2f', $balance ); + $balance =~ s/^\-0\.00$/0.00/; #yay ieee fp + $balance; +} + sub cust_bill_pay_pkg { my( $self, $field ) = @_; qsearch( 'cust_bill_pay_pkg', { 'billpkgnum' => $self->billpkgnum, @@ -627,8 +639,9 @@ sub disintegrate { } #split usage from recur - my $usage = sprintf( "%.2f", $cust_bill_pkg{recur}->usage ); - warn "usage is $usage\n" if $DEBUG; + my $usage = sprintf( "%.2f", $cust_bill_pkg{recur}->usage ) + if exists($cust_bill_pkg{recur}); + warn "usage is $usage\n" if $DEBUG > 1; if ($usage) { my $cust_bill_pkg_usage = new FS::cust_bill_pkg { $cust_bill_pkg{recur}->hash }; @@ -780,6 +793,43 @@ sub _cust_tax_exempt_pkg { } +=item cust_bill_pkg_tax_Xlocation + +Returns the list of associated cust_bill_pkg_tax_location and/or +cust_bill_pkg_tax_rate_location objects + +=cut + +sub cust_bill_pkg_tax_Xlocation { + my $self = shift; + + my %hash = ( 'billpkgnum' => $self->billpkgnum ); + + ( + qsearch ( 'cust_bill_pkg_tax_location', { %hash } ), + qsearch ( 'cust_bill_pkg_tax_rate_location', { %hash } ) + ); + +} + +=item cust_bill_pkg_detail [ CLASSNUM ] + +Returns the list of associated cust_bill_pkg_detail objects +The optional CLASSNUM argument will limit the details to the specified usage +class. + +=cut + +sub cust_bill_pkg_detail { + my $self = shift; + my $classnum = shift || ''; + + my %hash = ( 'billpkgnum' => $self->billpkgnum ); + $hash{classnum} = $classnum if $classnum; + + qsearch ( 'cust_bill_pkg_detail', { %hash } ), + +} =back