adjust IPifony download to show quantity/unit price in package desc, #18333
[freeside.git] / FS / bin / freeside-ipifony-download
index 837cc33..36d3e8e 100644 (file)
@@ -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}) {