summaryrefslogtreecommitdiff
path: root/FS/FS
diff options
context:
space:
mode:
authorivan <ivan>2008-04-16 21:52:38 +0000
committerivan <ivan>2008-04-16 21:52:38 +0000
commit50807fa33b7bfdd80ce8c103e2c6598a357349dc (patch)
tree9964f2b652608690de562faf1671510a0feca802 /FS/FS
parent54e557ff60c8c11f3666c4f6acc33ebe8aa4b8ff (diff)
start implementing billing add-ons
Diffstat (limited to 'FS/FS')
-rw-r--r--FS/FS/cust_main.pm5
-rw-r--r--FS/FS/part_pkg.pm13
2 files changed, 16 insertions, 2 deletions
diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm
index 168c43dc8..c7d497ac9 100644
--- a/FS/FS/cust_main.pm
+++ b/FS/FS/cust_main.pm
@@ -2093,7 +2093,8 @@ sub bill {
$cust_pkg->setfield('bill', '')
unless defined($cust_pkg->bill);
- my $part_pkg = $cust_pkg->part_pkg;
+ #my $part_pkg = $cust_pkg->part_pkg;
+ my @part_pkg = $cust_pkg->part_pkg->self_and_bill_linked;
my %hash = $cust_pkg->hash;
my $old_cust_pkg = new FS::cust_pkg \%hash;
@@ -2138,7 +2139,7 @@ sub bill {
# XXX should this be a package event? probably. events are called
# at collection time at the moment, though...
- if ( $part_pkg->can('reset_usage') ) {
+ foreach my $part_pkg ( grep { $_->can('reset_usage') } @part_pkg ) {
warn " resetting usage counters" if $DEBUG > 1;
$part_pkg->reset_usage($cust_pkg);
}
diff --git a/FS/FS/part_pkg.pm b/FS/FS/part_pkg.pm
index 96bd019a6..fd43e61c6 100644
--- a/FS/FS/part_pkg.pm
+++ b/FS/FS/part_pkg.pm
@@ -755,6 +755,19 @@ sub _part_pkg_link {
);
}
+sub self_and_bill_linked {
+ shift->_self_and_linked('bill', @_);
+}
+
+sub _self_and_linked {
+ my( $self, $type ) = @_;
+
+ ( $self,
+ map { $_->dst_pkg->_self_and_linked($type) }
+ $self->_part_pkg_link($type)
+ );
+}
+
=item part_pkg_taxoverride
Returns all associated FS::part_pkg_taxoverride objects (see