From: Christopher Burger Date: Tue, 11 Jul 2017 15:35:14 +0000 (-0400) Subject: RT# 76307 - Added billing event action to add a tag X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=486d081eca43a67f8c8b993d424541b5ab661d93 RT# 76307 - Added billing event action to add a tag --- 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;