c744362ce31e6b3d708045a23c7622d053adbfd5
[freeside.git] / FS / FS / part_event / Action / cust_bill_send_if_newest.pm
1 package FS::part_event::Action::cust_bill_send_if_newest;
2
3 use strict;
4 use base qw( FS::part_event::Action );
5
6 sub description {
7   'Send invoice (email/print/fax) with alternate template, if it is still the newest invoice (useful for late notices - set to 31 days or later)';
8 }
9
10 # XXX is this handled better by something against customers??
11 #sub deprecated {
12 #  1;
13 #}
14
15 sub eventtable_hashref {
16   { 'cust_bill' => 1 };
17 }
18
19 sub option_fields {
20   (
21     'modenum' => {  label => 'Invoice mode',
22                     type  => 'select-invoice_mode',
23                  },
24     'if_newest_templatename' => { label    => 'Template',
25                                   type     => 'select-invoice_template',
26                                 },
27   );
28 }
29
30 sub default_weight { 50; }
31
32 sub do_action {
33   my( $self, $cust_bill ) = @_;
34
35   my $invnum = $cust_bill->invnum;
36   my $custnum = $cust_bill->custnum;
37   return '' if scalar(
38     grep { $_->owed > 0 }
39       qsearch('cust_bill', {
40           'custnum' => $custnum,
41           'invnum'  => { op=>'>', value=>$invnum },
42         })
43     );
44   $cust_bill->set('mode' => $self->option('modenum'));
45   $cust_bill->send( 'template' => $self->option('templatename') );
46 }
47
48 1;