#!/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;