diff options
author | Christopher Burger <burgerc@freeside.biz> | 2017-07-11 11:35:14 -0400 |
---|---|---|
committer | Christopher Burger <burgerc@freeside.biz> | 2017-07-12 12:32:41 -0400 |
commit | cfc3556abb94b4b90b8b3cb551c379e08e804b41 (patch) | |
tree | e7622eeb6f3ac3c7795b4f9c191a0132314c471e /FS/FS | |
parent | f37c3c6ac7c133abc53b73527f1e0000701eeddc (diff) |
RT# 76307 - Added billing event action to add a tag
Diffstat (limited to 'FS/FS')
-rw-r--r-- | FS/FS/part_event/Action/addtag.pm | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/FS/FS/part_event/Action/addtag.pm b/FS/FS/part_event/Action/addtag.pm new file mode 100644 index 000000000..947f0c37d --- /dev/null +++ b/FS/FS/part_event/Action/addtag.pm @@ -0,0 +1,53 @@ +package FS::part_event::Action::addtag; + +use strict; +use base qw( FS::part_event::Action ); +use FS::Record qw( qsearch ); + +sub description { 'Add customer tag'; } + +sub eventtable_hashref { + { 'cust_main' => 1, + 'cust_bill' => 1, + 'cust_pkg' => 1, + 'cust_pay' => 1, + 'cust_pay_batch' => 1, + 'cust_statement' => 1, + }; +} + +sub option_fields { + ( + 'tagnum' => { 'label' => 'Customer tag', + 'type' => 'select-cust_tag', + 'multiple' => 1, + }, + ); +} + +sub default_weight { 20; } + +sub do_action { + my( $self, $object, $tagnum ) = @_; + + my %exists = map { $_->tagnum => $_->tagnum } + qsearch({ + table => 'cust_tag', + hashref => { custnum => $object->custnum, }, + }); + + my @tags = split(/\,/, $self->option('tagnum')); + foreach my $tagnum ( split(/\,/, $self->option('tagnum') ) ) { + if ( !$exists{$tagnum} ) { + my $cust_tag = new FS::cust_tag { 'tagnum' => $tagnum, + 'custnum' => $object->custnum, }; + my $error = $cust_tag->insert; + if ( $error ) { + return $error; + } + } + } + ''; +} + +1; |