package FS::part_event::Action::cust_bill_send_agent; use strict; use base qw( FS::part_event::Action ); sub description { 'Send invoice (email/print/fax) with alternate template, for specific agents'; } # this event is just cust_bill_send_alternate + an implicit (and inefficient) # 'agent' condition ## declaring that this action will send out an invoice sub will_send_invoice { 1; } sub eventtable_hashref { { 'cust_bill' => 1 }; } sub option_fields { ( 'agentnum' => { label => 'Only for agent(s)', type => 'select-agent', multiple => 1 }, 'modenum' => { label => 'Invoice mode', type => 'select-invoice_mode', }, 'agent_templatename' => { label => 'Template', type => 'select-invoice_template', }, 'agent_invoice_from' => 'Invoice email From: address', ); } sub default_weight { 50; } sub do_action { my( $self, $cust_bill ) = @_; #my $cust_main = $self->cust_main($cust_bill); my $cust_main = $cust_bill->cust_main; my %agentnums = map { $_=>1 } split(/\s*,\s*/, $self->option('agentnum')); if (keys(%agentnums) and !exists($agentnums{$cust_main->agentnum})) { return; } $cust_bill->set('mode' => $self->option('modenum')); $cust_bill->send( 'template' => $self->option('agent_templatename'), 'from' => $self->option('agent_invoice_from'), ); } 1;