diff options
author | Mark Wells <mark@freeside.biz> | 2013-02-27 20:46:58 -0800 |
---|---|---|
committer | Mark Wells <mark@freeside.biz> | 2013-02-27 20:46:58 -0800 |
commit | d04c981b5f72ffadabde71af68022059af0d52a5 (patch) | |
tree | bce947e07a54a391d5593f957b504ea2805b5a6e /FS/FS/part_pkg/voip_cdr.pm | |
parent | 942431fdcb3803b7ef98b1be8c4dc188e1a4b5aa (diff) |
per-package bundles of voice minutes, #5738
Diffstat (limited to 'FS/FS/part_pkg/voip_cdr.pm')
-rw-r--r-- | FS/FS/part_pkg/voip_cdr.pm | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/FS/FS/part_pkg/voip_cdr.pm b/FS/FS/part_pkg/voip_cdr.pm index 04098a8..67ddfb5 100644 --- a/FS/FS/part_pkg/voip_cdr.pm +++ b/FS/FS/part_pkg/voip_cdr.pm @@ -434,6 +434,7 @@ sub calc_usage { my $error = $cdr->rate( 'part_pkg' => $self, + 'cust_pkg' => $cust_pkg, 'svcnum' => $svc_x->svcnum, 'single_price_included_min' => \$included_min, 'region_group_included_min' => \$region_group_included_min, @@ -581,6 +582,41 @@ sub calc_units { $count; } +sub reset_usage { + my ($self, $cust_pkg, %opt) = @_; + my @part_pkg_usage = $self->part_pkg_usage or return ''; + warn " resetting usage minutes\n" if $opt{debug}; + my %cust_pkg_usage = map { $_->pkgusagepart, $_ } $cust_pkg->cust_pkg_usage; + foreach my $part_pkg_usage (@part_pkg_usage) { + my $part = $part_pkg_usage->pkgusagepart; + my $usage = $cust_pkg_usage{$part} || + FS::cust_pkg_usage->new({ + 'pkgnum' => $cust_pkg->pkgnum, + 'pkgusagepart' => $part, + 'minutes' => $part_pkg_usage->minutes, + }); + foreach my $cdr_usage ( + qsearch('cdr_cust_pkg_usage', {'cdrusagenum' => $usage->cdrusagenum}) + ) { + my $error = $cdr_usage->delete; + warn " error resetting CDR usage: $error\n"; + } + + if ( $usage->pkgusagenum ) { + if ( $part_pkg_usage->rollover ) { + $usage->set('minutes', $part_pkg_usage->minutes + $usage->minutes); + } else { + $usage->set('minutes', $part_pkg_usage->minutes); + } + my $error = $usage->replace; + warn " error resetting usage minutes: $error\n" if $error; + } else { + my $error = $usage->insert; + warn " error resetting usage minutes: $error\n" if $error; + } + } #foreach $part_pkg_usage +} + # tells whether cust_bill_pkg_detail should return a single line for # each phonenum sub sum_usage { |