[freeside-commits] branch master updated. 19d05a388f1525eeb776295dbba7e3beda9b84f3
Ivan
ivan at 420.am
Tue Feb 26 01:21:59 PST 2013
The branch, master has been updated
via 19d05a388f1525eeb776295dbba7e3beda9b84f3 (commit)
from cf5c051b077e618cf5fdc6f6a31b68b7d133a966 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 19d05a388f1525eeb776295dbba7e3beda9b84f3
Author: Ivan Kohler <ivan at freeside.biz>
Date: Tue Feb 26 01:21:55 2013 -0800
add event action to increment the referring customer's pacakge's next bill date, RT#20143
diff --git a/FS/FS/part_event/Action/referral_pkg_billdate.pm b/FS/FS/part_event/Action/referral_pkg_billdate.pm
new file mode 100644
index 0000000..40d94e2
--- /dev/null
+++ b/FS/FS/part_event/Action/referral_pkg_billdate.pm
@@ -0,0 +1,55 @@
+package FS::part_event::Action::referral_pkg_billdate;
+
+use strict;
+use base qw( FS::part_event::Action );
+
+sub description { "Increment the referring customer's package's next bill date"; }
+
+#sub eventtable_hashref {
+#}
+
+sub option_fields {
+ (
+ 'if_pkgpart' => { 'label' => 'Only packages',
+ 'type' => 'select-part_pkg',
+ 'multiple' => 1,
+ },
+ 'increment' => { 'label' => 'Increment by',
+ 'type' => 'freq',
+ 'value' => '1m',
+ },
+ );
+}
+
+sub do_action {
+ my( $self, $cust_object, $cust_event ) = @_;
+
+ my $cust_main = $self->cust_main($cust_object);
+
+ return 'No referring customer' unless $cust_main->referral_custnum;
+
+ my $referring_cust_main = $cust_main->referring_cust_main;
+ #return 'Referring customer is cancelled'
+ # if $referring_cust_main->status eq 'cancelled';
+
+ my %if_pkgpart = map { $_=>1 } split(/\s*,\s*/, $self->option('if_pkgpart') );
+ my @cust_pkg = grep $if_pkgpart{ $_->pkgpart },
+ $referring_cust_main->billing_pkgs;
+ return 'No qualifying billing package definition' unless @cust_pkg;
+
+ my $cust_pkg = $cust_pkg[0]; #only one
+
+ my $bill = $cust_pkg->bill || $cust_pkg->setup || time;
+
+ $cust_pkg->bill(
+ $cust_pkg->part_pkg->add_freq( $bill, $self->option('increment') )
+ );
+
+ my $error = $cust_pkg->replace;
+ die "Error incrementing next bill date: $error" if $error;
+
+ '';
+
+}
+
+1;
-----------------------------------------------------------------------
Summary of changes:
FS/FS/part_event/Action/referral_pkg_billdate.pm | 55 ++++++++++++++++++++++
1 files changed, 55 insertions(+), 0 deletions(-)
create mode 100644 FS/FS/part_event/Action/referral_pkg_billdate.pm
More information about the freeside-commits
mailing list