summaryrefslogtreecommitdiff
path: root/httemplate/search/cust_bill_event.cgi
blob: df4dcbf424262036c03922c1e2d034684c79b299 (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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<%

my $title = $cgi->param('failed') ? 'Failed invoice events' : 'Invoice events';

my($beginning, $ending) = FS::UI::Web::parse_beginning_ending($cgi);

##tie my %hash, 'Tie::DxHash', 
#my %hash = (
#      _date => { op=> '>=', value=>$beginning },
## i wish...
##      _date => { op=> '<=', value=>$ending },
#);
#$hash{'statustext'} = { op=> '!=', value=>'' }
#  if $cgi->param('failed');

my $where = " WHERE cust_bill_event._date >= $beginning".
            "   AND cust_bill_event._date <= $ending";
$where .= " AND statustext != '' AND statustext IS NOT NULL"
  if $cgi->param('failed');

my $sql_query = {
  'table'     => 'cust_bill_event',
  #'hashref'   => \%hash,
  'hashref'   => {}, 
  'select'    => join(', ',
                   'cust_bill_event.*',
                   'part_bill_event.event',
                   'cust_bill.custnum',
                   'cust_bill._date AS cust_bill_date',
                   'cust_main.custnum AS cust_main_custnum',
                   FS::UI::Web::cust_sql_fields(),
                 ),
  'extra_sql' => "$where ORDER BY _date ASC",
  'addl_from' => 'LEFT JOIN part_bill_event USING ( eventpart ) '.
                 'LEFT JOIN cust_bill       USING ( invnum    ) '.
                 'LEFT JOIN cust_main       USING ( custnum   ) ',
};

my $count_sql = "select count(*) from cust_bill_event $where";

my $conf = new FS::Conf;

my $failed = $cgi->param('failed');

my $html_init = join("\n", map {
  ( my $action = $_ ) =~ s/_$//;
  include('/elements/progress-init.html',
            $_.'form',
            [ 'action', 'beginning', 'ending', 'failed' ],
            "../misc/${_}invoice_events.cgi",
            { 'message' => "Invoices re-${action}ed" }, #would be nice to show the number of them, but...
            $_, #key
         ),
  qq!<FORM NAME="${_}form">!,
  qq!<INPUT TYPE="hidden" NAME="action" VALUE="$_">!, #not used though
  qq!<INPUT TYPE="hidden" NAME="beginning" VALUE="$beginning">!,
  qq!<INPUT TYPE="hidden" NAME="ending"    VALUE="$ending">!,
  qq!<INPUT TYPE="hidden" NAME="failed"    VALUE="$failed">!,
  qq!</FORM>!
} qw( print_ email_ fax_ ) );

my $menubar =  [
                 'Main menu' => $p,
                 'Re-print these events' =>
                   "javascript:print_process()",
                 'Re-email these events' =>
                   "javascript:email_process()",
               ];

push @$menubar, 'Re-fax these events' =>
                  "javascript:fax_process()"
  if $conf->exists('hylafax');

my $link_cust = sub {
  my $cust_bill_event = shift;
  $cust_bill_event->cust_main_custnum
    ? [ "${p}view/cust_main.cgi?", 'custnum' ]
    : '';
};

%><%= include( 'elements/search.html',
                 'title'       => $title,
                 'html_init'   => $html_init,
                 'menubar'     => $menubar,
                 'name'        => 'billing events',
                 'query'       => $sql_query,
                 'count_query' => $count_sql,
                 'header'      => [ 'Event',
                                    'Date',
                                    'Status',
                                    #'Inv #', 'Inv Date', 'Cust #',
                                    'Invoice',
                                    FS::UI::Web::cust_header(),
                                  ],
                 'fields' => [
                               'event',
                               sub { time2str("%b %d %Y %T", $_[0]->_date) },
                               sub { 
                                     #my $cust_bill_event = shift;
                                     my $status = $_[0]->status;
                                     $status .= ': '.$_[0]->statustext
                                       if $_[0]->statustext;
                                     $status;
                                   },
                               sub {
                                     #my $cust_bill_event = shift;
                                     'Invoice #'. $_[0]->invnum.
                                     ' ('.
                                       time2str("%D", $_[0]->cust_bill_date).
                                     ')';
                                   },
                               \&FS::UI::Web::cust_fields,
                             ],
                 'links' => [
                              '',
                              '',
                              '',
                              sub {
                                my $part_bill_event = shift;
                                my $template = $part_bill_event->templatename;
                                $template .= '-' if $template;
                                [ "${p}view/cust_bill.cgi?$template", 'invnum'];
                              },
                              ( map { $link_cust } FS::UI::Web::cust_header() ),
                            ],
             )
%>