diff options
author | Ivan Kohler <ivan@freeside.biz> | 2016-04-25 09:58:11 -0700 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2016-04-25 09:58:11 -0700 |
commit | cc4caa54e9974ea3d6ac7cf55cf45863d2a8905e (patch) | |
tree | 065b8cd6ee18dbf4994a2b2b3c9aab02a1a501bc /FS/FS/part_event | |
parent | 395927e9939742a20f8f5bf8578f6b8f9b6387b4 (diff) |
add conditions for customer cancelled packages, RT#42043
Diffstat (limited to 'FS/FS/part_event')
-rw-r--r-- | FS/FS/part_event/Condition/has_pkgpart_cancelled.pm | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/FS/FS/part_event/Condition/has_pkgpart_cancelled.pm b/FS/FS/part_event/Condition/has_pkgpart_cancelled.pm new file mode 100644 index 0000000..7e2a567 --- /dev/null +++ b/FS/FS/part_event/Condition/has_pkgpart_cancelled.pm @@ -0,0 +1,45 @@ +package FS::part_event::Condition::has_pkgpart_cancelled; +use base qw( FS::part_event::Condition ); + +use strict; + +sub description { 'Customer has canceled specific package(s)'; } + +sub eventtable_hashref { + { 'cust_main' => 1, + 'cust_bill' => 1, + 'cust_pkg' => 1, + }; +} + +sub option_fields { + ( + 'if_pkgpart' => { 'label' => 'Only packages: ', + 'type' => 'select-part_pkg', + 'multiple' => 1, + }, + 'age' => { 'label' => 'Cancellation in last', + 'type' => 'freq', + }, + ); +} + +sub condition { + my( $self, $object, %opt ) = @_; + + my $cust_main = $self->cust_main($object); + + my $age = $self->option_age_from('age', $opt{'time'} ); + + my $if_pkgpart = $self->option('if_pkgpart') || {}; + grep { $if_pkgpart->{ $_->pkgpart } && $_->get('cancel') > $age } + $cust_main->cancelled_pkgs; + +} + +#XXX +#sub condition_sql { +# +#} + +1; |