summaryrefslogtreecommitdiff
path: root/FS/FS/part_pkg/voip_cdr.pm
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2013-02-27 20:46:58 -0800
committerMark Wells <mark@freeside.biz>2013-02-27 20:46:58 -0800
commitd04c981b5f72ffadabde71af68022059af0d52a5 (patch)
treebce947e07a54a391d5593f957b504ea2805b5a6e /FS/FS/part_pkg/voip_cdr.pm
parent942431fdcb3803b7ef98b1be8c4dc188e1a4b5aa (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.pm36
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 {