X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2Fbin%2Ffreeside-ipifony-download;h=36d3e8e75e9c0e3dfcf77ee9f6c85542680a4159;hb=483c59350c99e30bd7f9e93d5c9f4e117204d1b4;hp=837cc33299c97286c16220d586d2daadff8ca172;hpb=7a618d4493ab7a87f6eabfd1ce3630a6b3436c2f;p=freeside.git diff --git a/FS/bin/freeside-ipifony-download b/FS/bin/freeside-ipifony-download index 837cc3329..36d3e8e75 100644 --- a/FS/bin/freeside-ipifony-download +++ b/FS/bin/freeside-ipifony-download @@ -9,6 +9,7 @@ use FS::UID qw(adminsuidsetup); use FS::Record qw(qsearch qsearchs); use FS::cust_main; use FS::Conf; +use File::Copy qw(copy); use Text::CSV; my %opt; @@ -116,7 +117,7 @@ die "failed to connect to '$sftpuser\@$host'\n(".$sftp->error.")\n" $sftp->setcwd($path) if $path; -my $files = $sftp->ls('.', wanted => qr/\.csv$/, names_only => 1); +my $files = $sftp->ls('ready', wanted => qr/\.csv$/, names_only => 1); if (!@$files) { print STDERR "No charge files found.\n" if $opt{v}; exit(-1); @@ -129,23 +130,23 @@ my %is_e911 = map {$_ => 1} @E911_CODES; FILE: foreach my $filename (@$files) { print STDERR "Retrieving $filename\n" if $opt{v}; - $sftp->get("$filename", "$tmpdir/$filename"); + $sftp->get("ready/$filename", "$tmpdir/$filename"); if($sftp->error) { warn "failed to download $filename\n"; next FILE; } # make sure server archive dir exists - if ( !$sftp->stat('Archive') ) { - print STDERR "Creating $path/Archive\n" if $opt{v}; - $sftp->mkdir('Archive'); + if ( !$sftp->stat('done') ) { + print STDERR "Creating $path/done\n" if $opt{v}; + $sftp->mkdir('done'); if($sftp->error) { # something is seriously wrong die "failed to create archive directory on server:\n".$sftp->error."\n"; } } #move to server archive dir - $sftp->rename("$filename", "Archive/$filename"); + $sftp->rename("ready/$filename", "done/$filename"); if($sftp->error) { warn "failed to archive $filename on server:\n".$sftp->error."\n"; } # process it anyway, I guess/ @@ -159,11 +160,6 @@ FILE: foreach my $filename (@$files) { } open my $fh, "<$tmpdir/$filename"; - my $header = <$fh>; - if ($header !~ /^"cust_id"/) { - warn "warning: $filename has incorrect header row:\n$header\n"; - # but try anyway - } my $csv = Text::CSV->new; # orthodox CSV my %hash; while (my $line = <$fh>) { @@ -172,6 +168,11 @@ FILE: foreach my $filename (@$files) { next FILE; }; @hash{@fields} = $csv->fields(); + if ( $hash{custnum} =~ /^cust/ ) { + # there appears to be a header row + print STDERR "skipping header row\n" if $opt{v}; + next; + } my $cust_main = $cust_main{$hash{custnum}} ||= FS::cust_main->by_key($hash{custnum}); if (!$cust_main) { @@ -187,7 +188,8 @@ FILE: foreach my $filename (@$files) { amount => $amount, quantity => $hash{quantity}, start_date => $cust_main->next_bill_date, - pkg => $hash{date_desc}, + pkg => $hash{date_desc} . + ' (' . $hash{quantity} . ' @ $' . $hash{unit_price} . ' ea)', taxclass => $TAXCLASSES{ $hash{taxclass} }, ); if (my $classname = $hash{classname}) {