RT#42393: Verification cust_pay_pending handling in history & report
[freeside.git] / bin / svc_acct.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::svc_acct;
8
9 my @fields = (
10   { 'header'   => 'pkgnum',
11     'callback' => sub { shift->cust_svc->pkgnum; },
12   },
13   { 'header'   => 'svcpart',
14     'callback' => sub { shift->cust_svc->svcpart; },
15   },
16   { 'header'   => 'Service',
17     'callback' => sub { shift->cust_svc->part_svc->svc; },
18   },
19   qw(
20     username
21     _password
22     slipip
23   )
24 );
25
26 my $user = shift or die &usage;
27 adminsuidsetup $user;
28
29 my $agentnum = shift or die &usage;
30
31 my $csv = new Text::CSV_XS;
32
33 $csv->combine( map { ref($_) ? $_->{'header'} : $_ } @fields ) or die;
34 print $csv->string."\n";
35
36 my @svc_acct = qsearch({
37   'table'     => 'svc_acct',
38   'addl_from' => 'LEFT JOIN cust_svc USING (svcnum)
39                   LEFT JOIN cust_pkg USING (pkgnum)
40                   LEFT JOIN cust_main USING ( custnum )',
41   'hashref'   => {},
42   'extra_sql' => "WHERE cust_main.agentnum = $agentnum",
43 });
44
45 foreach my $svc_acct ( @svc_acct ) {
46   $csv->combine( map { ref($_) ? &{$_->{'callback'}}($svc_acct)
47                                : $svc_acct->$_()
48                      } 
49                    @fields
50                ) or die;
51   print $csv->string."\n";
52 }
53
54 1;