From 1fc8b74ee30a0bc8bc800713bff9ccc9983527e5 Mon Sep 17 00:00:00 2001 From: ivan Date: Sun, 27 Nov 2005 21:59:24 +0000 Subject: [PATCH] per-agent billco spools --- FS/FS/cust_bill.pm | 59 +++++++++------------------ httemplate/edit/part_bill_event.cgi | 79 +++++++++++++++++++++++++------------ 2 files changed, 71 insertions(+), 67 deletions(-) diff --git a/FS/FS/cust_bill.pm b/FS/FS/cust_bill.pm index 0cfe5c982..44b50ae74 100644 --- a/FS/FS/cust_bill.pm +++ b/FS/FS/cust_bill.pm @@ -739,16 +739,9 @@ server username password dir -format - 'default' or 'billco' - -#??? -If I is not specified or "default", the file will be named -"N-YYYYMMDDHHMMSS.csv" where N is the invoice number and YYMMDDHHMMSS is a -timestamp. -#??? -If I is "billco", two files will be created and uploaded. They will be named "N-YYYYMMDDHHMMSS-header.csv" and "N-YYYYMMDDHHMMSS-detail.csv" where N -is the invoice number and YYMMDDHHMMSS is a timestamp(???). +The file will be named "N-YYYYMMDDHHMMSS.csv" where N is the invoice number +and YYMMDDHHMMSS is a timestamp. See L for a description of the output format. @@ -763,27 +756,13 @@ sub send_csv { mkdir $spooldir, 0700 unless -d $spooldir; my $tracctnum = $self->invnum. time2str('-%Y%m%d%H%M%S', time); - my $file = "$spooldir/$tracctnum"; - if ( lc($opt{'format'}) eq 'billco' ) { - $file .= '-header.csv'; - } else { - #$file = $spooldir. '/'. $self->invnum. time2str('-%Y%m%d%H%M%S.csv', time); - $file .= '.csv'; - } + my $file = "$spooldir/$tracctnum.csv"; my ( $header, $detail ) = $self->print_csv(%opt, 'tracctnum' => $tracctnum ); open(CSV, ">$file") or die "can't open $file: $!"; print CSV $header; - my $oldfile = ''; - if ( lc($opt{'format'}) eq 'billco' ) { - close CSV; - $oldfile = $file; - $file = "$spooldir/$tracctnum-detail.csv"; - open(CSV,">$file") or die "can't open $file: $!"; - } - print CSV $detail; close CSV; @@ -804,14 +783,10 @@ sub send_csv { $net->cwd($opt{dir}) or die "can't cwd to $opt{dir}"; - if ( $oldfile) { - $net->put($oldfile) or die "can't put $oldfile: $!"; - } $net->put($file) or die "can't put $file: $!"; $net->quit; - unlink $oldfile if $oldfile; unlink $file; } @@ -828,6 +803,8 @@ Options are: =item dest - if set (to POST, EMAIL or FAX), only sends spools invoices if the customer has the corresponding invoice destinations set (see L). +=item agent_spools - if set to a true value, will spool to per-agent files rather than a single global file + =back =cut @@ -835,26 +812,25 @@ Options are: sub spool_csv { my($self, %opt) = @_; + my $cust_main = $self->cust_main; + if ( $opt{'dest'} ) { my %invoicing_list = map { /^(POST|FAX)$/ or 'EMAIL' =~ /^(.*)$/; $1 => 1 } - $self->cust_main->invoicing_list; + $cust_main->invoicing_list; return 'N/A' unless $invoicing_list{$opt{'dest'}} || ! keys %invoicing_list; } - #create file(s) - my $spooldir = "/usr/local/etc/freeside/export.". datasrc. "/cust_bill"; mkdir $spooldir, 0700 unless -d $spooldir; my $tracctnum = $self->invnum. time2str('-%Y%m%d%H%M%S', time); - my $file = "$spooldir/spool"; - if ( lc($opt{'format'}) eq 'billco' ) { - $file .= '-header.csv'; - } else { - #$file = $spooldir. '/'. $self->invnum. time2str('-%Y%m%d%H%M%S.csv', time); - $file .= '.csv'; - } + + my $file = + "$spooldir/". + ( $opt{'agent_spools'} ? 'agentnum'.$cust_main->agentnum : 'spool' ). + ( lc($opt{'format'}) eq 'billco' ? '-header' : '' ) . + '.csv'; my ( $header, $detail ) = $self->print_csv(%opt, 'tracctnum' => $tracctnum ); @@ -864,14 +840,15 @@ sub spool_csv { print CSV $header; - my $oldfile = ''; if ( lc($opt{'format'}) eq 'billco' ) { flock(CSV, LOCK_UN); close CSV; - $oldfile = $file; - $file = "$spooldir/spool-detail.csv"; + $file = + "$spooldir/". + ( $opt{'agent_spools'} ? 'agentnum'.$cust_main->agentnum : 'spool' ). + '-detail.csv'; open(CSV,">>$file") or die "can't open $file: $!"; flock(CSV, LOCK_EX); diff --git a/httemplate/edit/part_bill_event.cgi b/httemplate/edit/part_bill_event.cgi index 7e27bd400..64a82493a 100755 --- a/httemplate/edit/part_bill_event.cgi +++ b/httemplate/edit/part_bill_event.cgi @@ -223,7 +223,7 @@ tie my %events, 'Tie::IxHash', );', 'html' => ''. - ''. + ''. ''. - ''. - ''. - '
Format ("default" or "billco"):
Format ("default" or "billco"): '. ''. - ''. - '
For destination: '. - ''. - '
', + 'code' => '$cust_bill->spool_csv( + \'format\' => \'%%%spoolformat%%%\', + \'dest\' => \'%%%spooldest%%%\', + \'agent_spools\' => \'%%%spoolagent_spools%%%\', + );', + 'html' => sub { + my $plandata = shift; + + my $html = + ''. + ''. + ''. + ''. + ''. + ''. + ''. + '
Format: '. + ''. + '
For destination: '. + ''. + '
Individual per-agent spools? {'spoolagent_spools'} ? 'CHECKED' : '' ). + '>'. + '
'; + + $html; + }, 'weight' => 50, }, -- 2.11.0