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;
@ISA = qw( FS::cust_main_Mixin FS::Record );
-$DEBUG = 2;
+$DEBUG = 0;
$me = '[FS::cust_bill_pkg]';
=head1 NAME
'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 ) {
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";
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";
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";
sub cust_pkg {
my $self = shift;
- warn "$me $self -> cust_pkg";
+ carp "$me $self -> cust_pkg" if $DEBUG;
qsearchs( 'cust_pkg', { 'pkgnum' => $self->pkgnum } );
}
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;
}
}
#split usage from recur
my $usage = sprintf( "%.2f", $cust_bill_pkg{recur}->usage );
- warn "usage is $usage\n" if $DEBUG;
+ 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 };
$cust_bill_pkg{''}->recur( $classless );
$cust_bill_pkg{$class} = $cust_bill_pkg_usage;
}
- delete $cust_bill_pkg{''} unless $cust_bill_pkg{''}->recur;
+ warn "Unexpected classless usage value: ". $cust_bill_pkg{''}->recur
+ if ($cust_bill_pkg{''}->recur && $cust_bill_pkg{''}->recur < 0);
+ delete $cust_bill_pkg{''}
+ unless ($cust_bill_pkg{''}->recur && $cust_bill_pkg{''}->recur > 0);
}
# # sort setup,recur,'', and the rest numeric && return
}
+=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
=head1 BUGS