71513: Card tokenization [upgrade implemented]
[freeside.git] / bin / cust_bill.export
1 #!/usr/bin/perl
2
3 use strict;
4 use Text::CSV_XS;
5 use FS::UID qw(adminsuidsetup);
6 use FS::Record qw(qsearch);
7 use FS::cust_bill;
8 use Date::Format;
9
10 my @fields = qw(
11   invnum
12   custnum
13 );
14
15 push @fields,
16   { 'header'   => 'Date',
17     'callback' => sub { time2str('%x', shift->_date); },
18   },
19 ;
20
21 push @fields, qw( charged owed );
22
23 my $user = shift or die &usage;
24 adminsuidsetup $user;
25
26 my $agentnum = shift or die &usage;
27
28 my $csv = new Text::CSV_XS;
29
30 $csv->combine( map { ref($_) ? $_->{'header'} : $_ } @fields ) or die;
31 print $csv->string."\n";
32
33 my @cust_bill = qsearch({
34   'table'     => 'cust_bill',
35   'addl_from' => 'LEFT JOIN cust_main USING ( custnum )',
36   'hashref'   => {},
37   'extra_sql' => "WHERE cust_main.agentnum = $agentnum",
38 });
39
40 foreach my $cust_bill ( @cust_bill ) {
41   $csv->combine( map { ref($_) ? &{$_->{'callback'}}($cust_bill)
42                                : $cust_bill->$_()
43                      } 
44                    @fields
45                ) or die;
46   print $csv->string."\n";
47 }
48
49 1;