diff options
Diffstat (limited to 'FS')
-rw-r--r-- | FS/FS/cust_payby.pm | 3 | ||||
-rw-r--r-- | FS/FS/part_event/Condition/hasnt_pkg_class_cancelled.pm | 44 | ||||
-rw-r--r-- | FS/FS/part_event/Condition/hasnt_pkgpart_cancelled.pm | 46 |
3 files changed, 93 insertions, 0 deletions
diff --git a/FS/FS/cust_payby.pm b/FS/FS/cust_payby.pm index 623a44efc..62fa9be5f 100644 --- a/FS/FS/cust_payby.pm +++ b/FS/FS/cust_payby.pm @@ -715,6 +715,9 @@ sub cgi_hash_callback { 'CARD' => 'DCRD', 'CHEK' => 'DCHK', ); + # the payby selector gives the choice of CARD or CHEK (or others, but + # those are the ones with auto and on-demand versions). if the user didn't + # choose a weight, then they mean DCRD/DCHK. $hashref->{payby} = $noauto{$hashref->{payby}} if ! $hashref->{weight} && exists $noauto{$hashref->{payby}}; diff --git a/FS/FS/part_event/Condition/hasnt_pkg_class_cancelled.pm b/FS/FS/part_event/Condition/hasnt_pkg_class_cancelled.pm new file mode 100644 index 000000000..353e6469f --- /dev/null +++ b/FS/FS/part_event/Condition/hasnt_pkg_class_cancelled.pm @@ -0,0 +1,44 @@ +package FS::part_event::Condition::hasnt_pkg_class_cancelled; +use base qw( FS::part_event::Condition ); + +use strict; + +sub description { + 'Customer does not have canceled package with class'; +} + +sub eventtable_hashref { + { 'cust_main' => 1, + 'cust_bill' => 1, + 'cust_pkg' => 1, + }; +} + +#something like this +sub option_fields { + ( + 'pkgclass' => { 'label' => 'Package Class', + 'type' => 'select-pkg_class', + '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'} ); + + #XXX test + my $hashref = $self->option('pkgclass') || {}; + ! grep { $hashref->{ $_->part_pkg->classnum } && $_->get('cancel') > $age } + $cust_main->cancelled_pkgs; +} + +1; + diff --git a/FS/FS/part_event/Condition/hasnt_pkgpart_cancelled.pm b/FS/FS/part_event/Condition/hasnt_pkgpart_cancelled.pm new file mode 100644 index 000000000..b4ff6c32b --- /dev/null +++ b/FS/FS/part_event/Condition/hasnt_pkgpart_cancelled.pm @@ -0,0 +1,46 @@ +package FS::part_event::Condition::hasnt_pkgpart_cancelled; +use base qw( FS::part_event::Condition ); + +use strict; + +sub description { 'Customer does not have canceled specific package(s)'; } + +sub eventtable_hashref { + { 'cust_main' => 1, + 'cust_bill' => 1, + 'cust_pkg' => 1, + }; +} + +sub option_fields { + ( + 'if_pkgpart' => { 'label' => '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; + |