X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;ds=sidebyside;f=bin%2Fcust_main.export;fp=bin%2Fcust_main.export;h=4adfeeb7c45316e343155ffec76b5e66815c44ab;hb=0e17277ed0cc243452dfc07d1bd702502c7d50c3;hp=0000000000000000000000000000000000000000;hpb=9f2220031123f06ab275840a3129c9807b9a782a;p=freeside.git diff --git a/bin/cust_main.export b/bin/cust_main.export new file mode 100755 index 000000000..4adfeeb7c --- /dev/null +++ b/bin/cust_main.export @@ -0,0 +1,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;