=item pkgnum - package (see L<FS::cust_pkg>) or 0 for the special virtual sales tax package, or -1 for the virtual line item (itemdesc is used for the line)
=item pkgpart_override - optional package definition (see L<FS::part_pkg>) override
-=item type - can be set to U for usage; more later
-
=item setup - setup fee
=item recur - recurring fee
=item section - Invoice section (overrides normal package section)
-=duplicate - Indicates this item appears elsewhere on the invoice
- (and should not be retaxed or reincluded in totals)
-
-=post_total - A hint that this item should appear after invoice totals
-
=cut
sub section {
}
}
+sub duplicate_section {
+ my $self = shift;
+ $self->duplicate ? $self->part_pkg->categoryname : '';
+}
+
=item quantity - If not set, defaults to 1
=item unitsetup - If not set, defaults to setup
|| $self->ut_numbern('edate')
|| $self->ut_textn('itemdesc')
|| $self->ut_textn('section')
- || $self->ut_enum('duplicate', [ '', 'Y' ])
- || $self->ut_enum('post_total', [ '', 'Y' ])
- || $self->ut_enum('type', [ '', 'U' ]) #only usage for now
;
return $error if $error;
# modeled after cust_bill::owed...
sub owed {
my( $self, $field ) = @_;
- my $balance = $self->duplicate ? 0 : $self->$field();
+ my $balance = $self->$field();
$balance -= $_->amount foreach ( $self->cust_bill_pay_pkg($field) );
$balance -= $_->amount foreach ( $self->cust_credit_bill_pkg($field) );
$balance = sprintf( '%.2f', $balance );
: $self->getfield('unitrecur');
}
-=item separate_cdr
-
-Returns true if this line item represents a cdr line item in its own section.
-
-=cut
-
-# lame, but works for now
-sub separate_cdr {
- my( $self ) = shift;
- $self->pkgnum && $self->section ne $self->part_pkg->categoryname;
-}
-
=item usage CLASSNUM
Returns the amount of the charge associated with usage class CLASSNUM if