adding export scripts for ea, RT#19067
[freeside.git] / bin / cust_pkg.export
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;