adding export scripts for ea, RT#19067
authorIvan Kohler <ivan@freeside.biz>
Tue, 28 Aug 2012 23:06:15 +0000 (16:06 -0700)
committerIvan Kohler <ivan@freeside.biz>
Tue, 28 Aug 2012 23:06:15 +0000 (16:06 -0700)
bin/cust_bill.export [new file with mode: 0755]
bin/cust_main.export [new file with mode: 0755]
bin/cust_pkg.export [new file with mode: 0755]
bin/svc_acct.export [new file with mode: 0755]
bin/svc_broadband.export [new file with mode: 0755]
bin/svc_phone.export [new file with mode: 0755]

diff --git a/bin/cust_bill.export b/bin/cust_bill.export
new file mode 100755 (executable)
index 0000000..40c32e5
--- /dev/null
@@ -0,0 +1,49 @@
+#!/usr/bin/perl
+
+use strict;
+use Text::CSV_XS;
+use FS::UID qw(adminsuidsetup);
+use FS::Record qw(qsearch);
+use FS::cust_bill;
+use Date::Format;
+
+my @fields = qw(
+  invnum
+  custnum
+);
+
+push @fields,
+  { 'header'   => 'Date',
+    'callback' => sub { time2str('%x', shift->_date); },
+  },
+;
+
+push @fields, qw( charged owed );
+
+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_bill = qsearch({
+  'table'     => 'cust_bill',
+  'addl_from' => 'LEFT JOIN cust_main USING ( custnum )',
+  'hashref'   => {},
+  'extra_sql' => "WHERE cust_main.agentnum = $agentnum",
+});
+
+foreach my $cust_bill ( @cust_bill ) {
+  $csv->combine( map { ref($_) ? &{$_->{'callback'}}($cust_bill)
+                               : $cust_bill->$_()
+                     } 
+                   @fields
+               ) or die;
+  print $csv->string."\n";
+}
+
+1;
diff --git a/bin/cust_main.export b/bin/cust_main.export
new file mode 100755 (executable)
index 0000000..4adfeeb
--- /dev/null
@@ -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;
diff --git a/bin/cust_pkg.export b/bin/cust_pkg.export
new file mode 100755 (executable)
index 0000000..f922e02
--- /dev/null
@@ -0,0 +1,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;
diff --git a/bin/svc_acct.export b/bin/svc_acct.export
new file mode 100755 (executable)
index 0000000..dba4ac9
--- /dev/null
@@ -0,0 +1,54 @@
+#!/usr/bin/perl
+
+use strict;
+use Text::CSV_XS;
+use FS::UID qw(adminsuidsetup);
+use FS::Record qw(qsearch);
+use FS::svc_acct;
+
+my @fields = (
+  { 'header'   => 'pkgnum',
+    'callback' => sub { shift->cust_svc->pkgnum; },
+  },
+  { 'header'   => 'svcpart',
+    'callback' => sub { shift->cust_svc->svcpart; },
+  },
+  { 'header'   => 'Service',
+    'callback' => sub { shift->cust_svc->part_svc->svc; },
+  },
+  qw(
+    username
+    _password
+    slipip
+  )
+);
+
+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 @svc_acct = qsearch({
+  'table'     => 'svc_acct',
+  'addl_from' => 'LEFT JOIN cust_svc USING (svcnum)
+                  LEFT JOIN cust_pkg USING (pkgnum)
+                  LEFT JOIN cust_main USING ( custnum )',
+  'hashref'   => {},
+  'extra_sql' => "WHERE cust_main.agentnum = $agentnum",
+});
+
+foreach my $svc_acct ( @svc_acct ) {
+  $csv->combine( map { ref($_) ? &{$_->{'callback'}}($svc_acct)
+                               : $svc_acct->$_()
+                     } 
+                   @fields
+               ) or die;
+  print $csv->string."\n";
+}
+
+1;
diff --git a/bin/svc_broadband.export b/bin/svc_broadband.export
new file mode 100755 (executable)
index 0000000..1d5c713
--- /dev/null
@@ -0,0 +1,59 @@
+#!/usr/bin/perl
+
+use strict;
+use Text::CSV_XS;
+use FS::UID qw(adminsuidsetup);
+use FS::Record qw(qsearch);
+use FS::svc_broadband;
+
+my @fields = (
+  { 'header'   => 'pkgnum',
+    'callback' => sub { shift->cust_svc->pkgnum; },
+  },
+  { 'header'   => 'svcpart',
+    'callback' => sub { shift->cust_svc->svcpart; },
+  },
+  { 'header'   => 'Service',
+    'callback' => sub { shift->cust_svc->part_svc->svc; },
+  },
+  qw(
+    description
+    speed_up
+    speed_down
+    ip_addr
+    mac_addr
+    latitude
+    longitude
+  )
+);
+
+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 @svc_broadband = qsearch({
+  'select'    => 'svc_broadband.*',
+  'table'     => 'svc_broadband',
+  'addl_from' => 'LEFT JOIN cust_svc USING (svcnum)
+                  LEFT JOIN cust_pkg USING (pkgnum)
+                  LEFT JOIN cust_main USING ( custnum )',
+  'hashref'   => {},
+  'extra_sql' => "WHERE cust_main.agentnum = $agentnum",
+});
+
+foreach my $svc_broadband ( @svc_broadband ) {
+  $csv->combine( map { ref($_) ? &{$_->{'callback'}}($svc_broadband)
+                               : $svc_broadband->$_()
+                     } 
+                   @fields
+               ) or die;
+  print $csv->string."\n";
+}
+
+1;
diff --git a/bin/svc_phone.export b/bin/svc_phone.export
new file mode 100755 (executable)
index 0000000..aa0eb20
--- /dev/null
@@ -0,0 +1,55 @@
+#!/usr/bin/perl
+
+use strict;
+use Text::CSV_XS;
+use FS::UID qw(adminsuidsetup);
+use FS::Record qw(qsearch);
+use FS::svc_phone;
+
+my @fields = (
+  { 'header'   => 'pkgnum',
+    'callback' => sub { shift->cust_svc->pkgnum; },
+  },
+  { 'header'   => 'svcpart',
+    'callback' => sub { shift->cust_svc->svcpart; },
+  },
+  { 'header'   => 'Service',
+    'callback' => sub { shift->cust_svc->part_svc->svc; },
+  },
+  qw(
+    phonenum
+    pin
+    sip_password
+    phone_name
+  )
+);
+
+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 @svc_phone = qsearch({
+  'table'     => 'svc_phone',
+  'addl_from' => 'LEFT JOIN cust_svc USING (svcnum)
+                  LEFT JOIN cust_pkg USING (pkgnum)
+                  LEFT JOIN cust_main USING ( custnum )',
+  'hashref'   => {},
+  'extra_sql' => "WHERE cust_main.agentnum = $agentnum",
+});
+
+foreach my $svc_phone ( @svc_phone ) {
+  $csv->combine( map { ref($_) ? &{$_->{'callback'}}($svc_phone)
+                               : $svc_phone->$_()
+                     } 
+                   @fields
+               ) or die;
+  print $csv->string."\n";
+}
+
+1;