summaryrefslogtreecommitdiff
path: root/FS/FS/part_event/Action/cust_bill_send_agent.pm
blob: bbb757b596bef7c74aa3b5da0c2b96a2317b1695 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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

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'),
    'invoice_from'  => $self->option('agent_invoice_from'),
  );
}

1;