summaryrefslogtreecommitdiff
path: root/bin/cust_pkg.export
blob: f922e02f0d8f74ffd11e0a49439f80fe00a2811d (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
#!/usr/bin/perl

use strict;
use Text::CSV_XS;
use FS::UID qw(adminsuidsetup);
use FS::Record qw(qsearch);
use FS::cust_pkg;
use Date::Format;

my @fields = qw(
  pkgnum
  custnum
  status
  pkgpart
);

push @fields,
  { 'header'   => 'Package',
    'callback' => sub { shift->part_pkg->pkg_comment('nopkgpart'=>1) },
  },
  map { 
    my $field = $_;
    { 'header'   => $field,
      'callback' => sub { my $d = shift->get($field) or return '';
                          time2str('%x', $d); # %X", $d);
                        },
    };
  } qw( order_date start_date setup last_bill bill
        adjourn susp resume
        expire cancel uncancel
        contract_end
  )
;

my $user = shift or die &usage;
adminsuidsetup $user;

my $agentnum = shift or die &usage;

my $csv = new Text::CSV_XS;

$csv->combine( map { ref($_) ? $_->{'header'} : $_ } @fields ) or die;
print $csv->string."\n";

my @cust_pkg = qsearch({
  'table'     => 'cust_pkg',
  'addl_from' => 'LEFT JOIN cust_main USING ( custnum )',
  'hashref'   => {},
  'extra_sql' => "WHERE cust_main.agentnum = $agentnum",
});

foreach my $cust_pkg ( @cust_pkg ) {
  $csv->combine( map { ref($_) ? &{$_->{'callback'}}($cust_pkg)
                               : $cust_pkg->$_()
                     } 
                   @fields
               ) or die;
  print $csv->string."\n";
}

1;