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

use strict;
use Text::CSV_XS;
use FS::UID qw(adminsuidsetup);
use FS::Record qw(qsearch);
use FS::cust_main;

my @fields = qw(
  custnum
  status
  last
  first
  company
  address1
  address2
  city
  county
  state
  zip
  country
  daytime
  night
  mobile
  fax
  ship_address1
  ship_address2
  ship_city
  ship_county
  ship_state
  ship_zip
  ship_country
  ship_daytime
  ship_night
  ship_mobile
  ship_fax
  invoicing_list_emailonly_scalar
  payby
  balance
);

push @fields,
  #Billing Type: Credit Card
  { 'header'   => 'Credit Card number',
    'callback' => sub { my $c_m = shift;
                        $c_m->payby =~ /^(CARD|DCRD)$/ ? $c_m->payinfo : '' ;
                      },
  },
  { 'header'   => 'Expiration on card',
    'callback' => sub { my $c_m = shift;
                        return '' unless $c_m->payby =~ /^(CARD|DCRD)$/;
                        $c_m->paydate =~ /^(\d{4})-(\d{2})-\d{2}$/ or die;
                        return "$2/$1";
                      },
  },
  { 'header'   => 'Name on card',
    'callback' => sub { my $c_m = shift;
                        $c_m->payby =~ /^(CARD|DCRD)$/ ? $c_m->paydname : '' ;
                      },
  },

  #Billing Type: Electronic check
  { 'header'   => 'ABA/Routing number',
    'callback' => sub { my $c_m = shift;
                        return '' unless $c_m->payby =~ /^(CHEK|DCHK)$/;
                        (split('@', $c_m->payinfo))[1];
                      },
  },
  { 'header'   => 'Account number',
    'callback' => sub { my $c_m = shift;
                        return '' unless $c_m->payby =~ /^(CHEK|DCHK)$/;
                        (split('@', $c_m->payinfo))[0];
                      },
  },
  { 'header'   => 'Account type',
    'callback' => sub { my $c_m = shift;
                        $c_m->payby =~ /^(CHEK|DCHK)$/ ? $c_m->paytype : '';
                      },
  },
  { 'header'   => 'Bank Name',
    'callback' => sub { my $c_m = shift;
                        $c_m->payby =~ /^(CHEK|DCHK)$/ ? $c_m->payname : '';
                      },
  },

;

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_main = qsearch('cust_main', { 'agentnum'=>$agentnum });

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

1;