diff options
author | ivan <ivan> | 2009-08-20 09:47:05 +0000 |
---|---|---|
committer | ivan <ivan> | 2009-08-20 09:47:05 +0000 |
commit | 1e34f4a5d142bd58f5918219db0931e81ad0418e (patch) | |
tree | bacfc80211078bd21e2ef44c3461b15078bfbd9d /FS/FS/part_event | |
parent | e042c7a9463af50a08cab6ddfcd62fed2b5f276e (diff) |
email statements, RT#4860
Diffstat (limited to 'FS/FS/part_event')
-rw-r--r-- | FS/FS/part_event/Action/cust_statement.pm | 5 | ||||
-rw-r--r-- | FS/FS/part_event/Action/cust_statement_send.pm | 2 | ||||
-rw-r--r-- | FS/FS/part_event/Condition/has_pkg_class.pm | 40 | ||||
-rw-r--r-- | FS/FS/part_event/Condition/has_pkgpart.pm | 41 | ||||
-rw-r--r-- | FS/FS/part_event/Condition/hasnt_pkgpart.pm | 40 |
5 files changed, 125 insertions, 3 deletions
diff --git a/FS/FS/part_event/Action/cust_statement.pm b/FS/FS/part_event/Action/cust_statement.pm index 8d8f127..2d9e877 100644 --- a/FS/FS/part_event/Action/cust_statement.pm +++ b/FS/FS/part_event/Action/cust_statement.pm @@ -11,8 +11,9 @@ sub description { } sub eventtable_hashref { - { 'cust_main' => 1, }; - { 'cust_pkg' => 1, }; + { 'cust_main' => 1, + 'cust_pkg' => 1, + }; } sub default_weight { diff --git a/FS/FS/part_event/Action/cust_statement_send.pm b/FS/FS/part_event/Action/cust_statement_send.pm index 34f023e..74cc48c 100644 --- a/FS/FS/part_event/Action/cust_statement_send.pm +++ b/FS/FS/part_event/Action/cust_statement_send.pm @@ -19,7 +19,7 @@ sub default_weight { sub do_action { my( $self, $cust_statement ) = @_; - $cust_statement->send; + $cust_statement->send( 'statement' ); #XXX configure } diff --git a/FS/FS/part_event/Condition/has_pkg_class.pm b/FS/FS/part_event/Condition/has_pkg_class.pm new file mode 100644 index 0000000..59a3675 --- /dev/null +++ b/FS/FS/part_event/Condition/has_pkg_class.pm @@ -0,0 +1,40 @@ +package FS::part_event::Condition::has_pkg_class; + +use strict; + +use base qw( FS::part_event::Condition ); +use FS::Record qw( qsearch ); +use FS::pkg_class; + +sub description { + 'Customer has uncancelled 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, + }, + ); +} + +sub condition { + my( $self, $object ) = @_; + + my $cust_main = $self->cust_main($object); + + #XXX test + my $hashref = $self->option('pkgclass') || {}; + grep $hashref->{ $_->part_pkg->classnum }, $cust_main->ncancelled_pkgs; +} + +1; diff --git a/FS/FS/part_event/Condition/has_pkgpart.pm b/FS/FS/part_event/Condition/has_pkgpart.pm new file mode 100644 index 0000000..c54b7e2 --- /dev/null +++ b/FS/FS/part_event/Condition/has_pkgpart.pm @@ -0,0 +1,41 @@ +package FS::part_event::Condition::has_pkgpart; + +use strict; + +use base qw( FS::part_event::Condition ); + +sub description { 'Customer has uncancelled package of specified definitions'; } + +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, + }, + ); +} + +sub condition { + my( $self, $object) = @_; + + my $cust_main = $self->cust_main($object); + + #XXX test + my $if_pkgpart = $self->option('if_pkgpart') || {}; + grep $if_pkgpart->{ $_->pkgpart }, $cust_main->ncancelled_pkgs; + +} + +#XXX +#sub condition_sql { +# +#} + +1; diff --git a/FS/FS/part_event/Condition/hasnt_pkgpart.pm b/FS/FS/part_event/Condition/hasnt_pkgpart.pm new file mode 100644 index 0000000..421d023 --- /dev/null +++ b/FS/FS/part_event/Condition/hasnt_pkgpart.pm @@ -0,0 +1,40 @@ +package FS::part_event::Condition::hasnt_pkgpart; + +use strict; + +use base qw( FS::part_event::Condition ); + +sub description { 'Customer does not have uncancelled package of specified definitions'; } + +sub eventtable_hashref { + { 'cust_main' => 1, + 'cust_bill' => 1, + 'cust_pkg' => 1, + }; +} + +sub option_fields { + ( + 'unless_pkgpart' => { 'label' => 'Packages: ', + 'type' => 'select-part_pkg', + 'multiple' => 1, + }, + ); +} + +sub condition { + my( $self, $object ) = @_; + + my $cust_main = $self->cust_main($object); + + #XXX test + my $unless_pkgpart = $self->option('unless_pkgpart') || {}; + ! grep $unless_pkgpart->{ $_->pkgpart }, $cust_main->ncancelled_pkgs; +} + +#XXX +#sub condition_sql { +# +#} + +1; |