X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcust_bill_pkg.pm;h=96f09c91578d198a52099117e2a543a6bdad6bda;hb=539b6216a17a5423431d430022c4e0f9581a9d2f;hp=6bd39d4b94bcd3b1acfa1a013827544e8b61527c;hpb=794a4505360fec404e2b9d5c6daf79f750186bfe;p=freeside.git diff --git a/FS/FS/cust_bill_pkg.pm b/FS/FS/cust_bill_pkg.pm index 6bd39d4b9..96f09c915 100644 --- a/FS/FS/cust_bill_pkg.pm +++ b/FS/FS/cust_bill_pkg.pm @@ -63,6 +63,8 @@ supported: =item unitrecur - If not set, defaults to recur +=item hidden - If set to Y, indicates data should not appear as separate line item on invoice + =back sdate and edate are specified as UNIX timestamps; see L. Also @@ -109,7 +111,7 @@ sub insert { return $error; } - if ( defined dbdef->table('cust_bill_pkg_detail') && $self->get('details') ) { + if ( $self->get('details') ) { foreach my $detail ( @{$self->get('details')} ) { my $cust_bill_pkg_detail = new FS::cust_bill_pkg_detail { 'billpkgnum' => $self->billpkgnum, @@ -117,22 +119,23 @@ sub insert { 'detail' => (ref($detail) ? $detail->[1] : $detail ), 'amount' => (ref($detail) ? $detail->[2] : '' ), 'classnum' => (ref($detail) ? $detail->[3] : '' ), + 'phonenum' => (ref($detail) ? $detail->[4] : '' ), }; $error = $cust_bill_pkg_detail->insert; if ( $error ) { $dbh->rollback if $oldAutoCommit; - return $error; + return "error inserting cust_bill_pkg_detail: $error"; } } } - if ( defined dbdef->table('cust_bill_pkg_display') && $self->get('display') ){ + if ( $self->get('display') ) { foreach my $cust_bill_pkg_display ( @{ $self->get('display') } ) { $cust_bill_pkg_display->billpkgnum($self->billpkgnum); $error = $cust_bill_pkg_display->insert; if ( $error ) { $dbh->rollback if $oldAutoCommit; - return $error; + return "error inserting cust_bill_pkg_display: $error"; } } } @@ -143,7 +146,7 @@ sub insert { $error = $cust_tax_exempt_pkg->insert; if ( $error ) { $dbh->rollback if $oldAutoCommit; - return $error; + return "error inserting cust_tax_exempt_pkg: $error"; } } } @@ -157,7 +160,7 @@ sub insert { warn $error; if ( $error ) { $dbh->rollback if $oldAutoCommit; - return $error; + return "error inserting cust_bill_pkg_tax_location: $error"; } } } @@ -170,11 +173,22 @@ sub insert { warn $error; if ( $error ) { $dbh->rollback if $oldAutoCommit; - return $error; + return "error inserting cust_bill_pkg_tax_rate_location: $error"; } } } + my $cust_tax_adjustment = $self->get('cust_tax_adjustment'); + 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"; + } + } + $dbh->commit or die $dbh->errstr if $oldAutoCommit; ''; @@ -224,6 +238,8 @@ sub check { || $self->ut_numbern('sdate') || $self->ut_numbern('edate') || $self->ut_textn('itemdesc') + || $self->ut_textn('itemcomment') + || $self->ut_enum('hidden', [ '', 'Y' ]) ; return $error if $error; @@ -276,6 +292,24 @@ sub cust_bill { qsearchs( 'cust_bill', { 'invnum' => $self->invnum } ); } +=item previous_cust_bill_pkg + +Returns the previous cust_bill_pkg for this package, if any. + +=cut + +sub previous_cust_bill_pkg { + my $self = shift; + return unless $self->sdate; + qsearchs({ + 'table' => 'cust_bill_pkg', + 'hashref' => { 'pkgnum' => $self->pkgnum, + 'sdate' => { op=>'<', value=>$self->sdate }, + }, + 'order_by' => 'ORDER BY sdate DESC LIMIT 1', + }); +} + =item details [ OPTION => VALUE ... ] Returns an array of detail information for the invoice line item. @@ -338,7 +372,7 @@ sub details { $format_sub = $opt{format_function} if $opt{format_function}; map { ( $_->format eq 'C' - ? &{$format_sub}( $_->detail ) + ? &{$format_sub}( $_->detail, $_ ) : &{$escape_function}( $_->detail ) ) } @@ -364,7 +398,9 @@ sub desc { if ( $self->pkgnum > 0 ) { $self->itemdesc || $self->part_pkg->pkg; } else { - $self->itemdesc || 'Tax'; + my $desc = $self->itemdesc || 'Tax'; + $desc .= ' '. $self->itemcomment if $self->itemcomment =~ /\S/; + $desc; } }