[freeside-commits] branch master updated. a8aacbc2ef8cc36bcdae327be7d0f59a1b1f3666

Mark Wells mark at 420.am
Thu Aug 14 19:44:34 PDT 2014


The branch, master has been updated
       via  a8aacbc2ef8cc36bcdae327be7d0f59a1b1f3666 (commit)
      from  e5770f1c578ba47f730488df7fb5a03307ac71ab (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit a8aacbc2ef8cc36bcdae327be7d0f59a1b1f3666
Author: Mark Wells <mark at freeside.biz>
Date:   Thu Aug 14 19:42:39 2014 -0700

    adjust EFT Canada processing delay based on time of day, and warn the user, #20384

diff --git a/FS/FS/pay_batch/eft_canada.pm b/FS/FS/pay_batch/eft_canada.pm
index 64fd2f9..3c1d219 100644
--- a/FS/FS/pay_batch/eft_canada.pm
+++ b/FS/FS/pay_batch/eft_canada.pm
@@ -66,23 +66,9 @@ my %holiday = (
       @config = $conf->config('batchconfig-eft_canada');
     }
     # SFTP login, password, trans code, delay time
-    my $process_delay;
-    ($trans_code, $process_delay) = @config[2,3];
-    $process_delay ||= 1; # days
-
-    my $pt = time + ($process_delay * 86400);
-    my @lt = localtime($pt);
-    while (    $lt[6] == 0 #Sunday
-            || $lt[6] == 6 #Saturday
-            || $holiday_yearly{ $lt[4]+1 }{ $lt[3] }
-            || $holiday{ $lt[5]+1900 }{ $lt[4]+1 }{ $lt[3] }
-          )
-    {
-      $pt += 86400;
-      @lt = localtime($pt);
-    }
+    ($trans_code) = $config[2];
 
-    $process_date = time2str('%D', $pt);
+    $process_date = time2str('%D', process_date($conf, $agentnum));
   },
 
   delimiter => '', # avoid blank lines for header/footer
@@ -124,4 +110,54 @@ my %holiday = (
 
 );
 
+sub download_note { # is a class method
+  my $class = shift;
+  my $pay_batch = shift;
+  my $conf = FS::Conf->new;
+  my $agentnum = $pay_batch->agentnum;
+  my $tomorrow = (localtime(time))[2] >= 10;
+  my $upload_date = time;
+  $upload_date += 86400 if $tomorrow;
+  my $process_date = process_date($conf, $agentnum);
+  my $date_format = $conf->config('date_format') || '%D';
+
+  'Upload this file before 11:00 AM '.
+    ($tomorrow ? 'tomorrow' : 'today') .
+    ' (' . time2str($date_format, $upload_date) . '). '.
+    'Payments will be processed on '.
+    time2str($date_format, $process_date) . '.';
+}
+
+sub process_date {
+  my ($conf, $agentnum) = @_;
+  my @config;
+  if ( $conf->exists('batch-spoolagent') ) {
+    @config = $conf->config('batchconfig-eft_canada', $agentnum);
+  } else {
+    @config = $conf->config('batchconfig-eft_canada');
+  }
+
+  my $process_delay = $config[3] || 1;
+
+  if ( (localtime(time))[2] >= 10 ) {
+    # If downloading the batch after 10:00 local time, it likely won't make
+    # the cutoff for next-day turnaround, and EFT will reject it.
+    $process_delay++;
+  }
+
+  my $pt = time + ($process_delay * 86400);
+  my @lt = localtime($pt);
+  while (    $lt[6] == 0 #Sunday
+          || $lt[6] == 6 #Saturday
+          || $holiday_yearly{ $lt[4]+1 }{ $lt[3] }
+          || $holiday{ $lt[5]+1900 }{ $lt[4]+1 }{ $lt[3] }
+        )
+  {
+    $pt += 86400;
+    @lt = localtime($pt);
+  }
+
+  $pt;
+}
+
 1;
diff --git a/httemplate/misc/xmlhttp-pay_batch-note.html b/httemplate/misc/xmlhttp-pay_batch-note.html
new file mode 100644
index 0000000..ef59016
--- /dev/null
+++ b/httemplate/misc/xmlhttp-pay_batch-note.html
@@ -0,0 +1,18 @@
+<% $note %>\
+<%init>
+
+my ($batchnum, $format) = $cgi->param('arg');
+
+my $note = '';
+if ( $batchnum =~ /^(\d+)$/ ) {
+  my $pay_batch = FS::pay_batch->by_key($batchnum);
+  if ( $pay_batch and $format =~ /^(\w+)$/ ) {
+    my $class = "FS::pay_batch::$format";
+    if ( $class->can('download_note') ) {
+      # now we can actually do something
+      $note = $class->download_note($pay_batch);
+    }
+  }
+}
+
+</%init>
diff --git a/httemplate/search/elements/cust_pay_batch_top.html b/httemplate/search/elements/cust_pay_batch_top.html
index bf30477..c502aa9 100644
--- a/httemplate/search/elements/cust_pay_batch_top.html
+++ b/httemplate/search/elements/cust_pay_batch_top.html
@@ -1,24 +1,42 @@
+<& /elements/xmlhttp.html,
+  'url'   => $p.'misc/xmlhttp-pay_batch-note.html',
+  'subs'  => [ 'get_note' ]
+&>
+<script type="text/javascript">
+function format_changed() {
+  var form = document.forms['download'];
+  get_note( <% $batchnum %>, form.elements['format'].value,
+    //callback
+    function(text) {
+      document.getElementById('download_note').textContent = text;
+    }
+  );
+}
+</script>
 % # Download batch
 % if ( $status eq 'O'
 %   or ( $status eq 'I' and $curuser->access_right('Reprocess batches') )
 %   or ( $status eq 'R' and $curuser->access_right('Redownload resolved batches') )
 %   ) {
-<TABLE>
-<TR><FORM ACTION="<%$p%>misc/download-batch.cgi" METHOD="POST">
-<INPUT TYPE="hidden" NAME="batchnum" VALUE="<%$batchnum%>">
+<FORM ACTION="<%$p%>misc/download-batch.cgi" NAME="download" METHOD="POST">
+    <INPUT TYPE="hidden" NAME="batchnum" VALUE="<%$batchnum%>">
 %   if ( $fixed ) {
-<INPUT TYPE="hidden" NAME="format" VALUE="<%$fixed%>">
+    <INPUT TYPE="hidden" NAME="format" VALUE="<%$fixed%>">
 %   }
 %   else {
-Download batch in format <SELECT NAME="format">
+    Download batch in format <SELECT NAME="format" onchange="format_changed()">
 %     foreach ( keys %download_formats ) {
-<OPTION VALUE="<%$_%>"><% $download_formats{$_} %></OPTION>
+      <OPTION VALUE="<%$_%>"><% $download_formats{$_} %></OPTION>
 %     }
-</SELECT> 
-<& .select_gateway &>
+    </SELECT> 
+    <BR>
+    <DIV STYLE="color:#ff0000" ID="download_note"></DIV>
+    <& .select_gateway &>
 %   }
-<INPUT TYPE="submit" VALUE="Download"></FORM><BR><BR></TR>
+    <INPUT TYPE="submit" VALUE="Download">
 % } # end of download
+</FORM>
+<BR>
 
 % # Upload batch
 % if ( $pay_batch->status eq 'I'
@@ -27,44 +45,42 @@ Download batch in format <SELECT NAME="format">
 %     and $conf->exists('batch-manual_approval')
 %   ) 
 % ) {
-<TR>
-<% include('/elements/form-file_upload.html',
+<& /elements/form-file_upload.html,
               'name'      => 'FileUpload',
               'action'    => "${p}misc/upload-batch.cgi",
               'num_files' => 1,
               'fields'    => [ 'batchnum', 'format', 'gatewaynum' ],
               'url'       => $cgi->self_url,
               'message'   => 'Batch results uploaded.',
-) %>
-Upload results<BR></TR>
-<TR>
-<% include('/elements/file-upload.html',
+&>
+  Upload results<BR>
+  <& /elements/file-upload.html,
               'field'     => 'file',
               'label'     => 'Filename',
               'no_table'  => 1,
-) %>
-<INPUT TYPE="hidden" NAME="batchnum" VALUE="<% $batchnum %>">
-<BR></TR>
+  &>
+  <INPUT TYPE="hidden" NAME="batchnum" VALUE="<% $batchnum %>">
+  <BR>
 %   if ( $fixed ) {
 %     if ( $fixed eq 'td_eft1464' ) { # special case
-<TR>Upload in format <SELECT NAME="format">
-<OPTION VALUE="td_eftack264">TD EFT Acknowledgement</OPTION>
-<OPTION VALUE="td_eftret80">TD EFT Returned Items</OPTION>
-</SELECT> </TR>
+  Upload in format <SELECT NAME="format">
+    <OPTION VALUE="td_eftack264">TD EFT Acknowledgement</OPTION>
+    <OPTION VALUE="td_eftret80">TD EFT Returned Items</OPTION>
+  </SELECT>
 %     }
 %     else {
-<INPUT TYPE="hidden" NAME="format" VALUE="<% $fixed %>">
+  <INPUT TYPE="hidden" NAME="format" VALUE="<% $fixed %>">
 %     }
 %   }
 %   else {
-<TR>Upload in format <SELECT NAME="format">
+  Upload in format <SELECT NAME="format">
 %     foreach ( keys(%upload_formats) ) {
-<OPTION VALUE="<%$_%>"><% $upload_formats{$_} %></OPTION>
+    <OPTION VALUE="<%$_%>"><% $upload_formats{$_} %></OPTION>
 %     }
-</SELECT>
-<& .select_gateway &>
+  </SELECT>
+  <& .select_gateway &>
 %   } # if $fixed
-<TR><INPUT TYPE="submit" VALUE="Upload"></TR>
+  <INPUT TYPE="submit" VALUE="Upload">
 </FORM><BR>
 % } # end upload
 
@@ -74,12 +90,12 @@ Upload results<BR></TR>
 %   and $payby eq 'CHEK'
 %   and $conf->exists('batch-manual_approval')
 %   ) {
-<TR><INPUT TYPE="button" VALUE="Manually approve" onclick="
+<INPUT TYPE="button" VALUE="Manually approve" onclick="
 if ( confirm('Approve all remaining payments in this batch?') ) 
   window.location.href='<%$p%>misc/process/pay_batch-approve.cgi?batchnum=<%$batchnum%>';
-"></TR>
+">
+<BR>
 % } # end manual approval
-</TABLE>
 
 % # summary info
 Batch is <% $statustext{$status} %><BR>
@@ -119,19 +135,19 @@ my $batchnum = $pay_batch->batchnum;
 my $fixed = $conf->config("batch-fixed_format-$payby");
 
 tie my %download_formats, 'Tie::IxHash', (
-'' => 'Default batch mode',
-'NACHA' => '94 byte NACHA',
-'csv-td_canada_trust-merchant_pc_batch' => 
-              'CSV file for TD Canada Trust Merchant PC Batch',
-'csv-chase_canada-E-xactBatch' =>
-              'CSV file for Chase Canada E-xactBatch',
-'PAP' => '80 byte file for TD Canada Trust PAP Batch',
-'BoM' => 'Bank of Montreal ECA batch',
-'ach-spiritone' => 'Spiritone ACH batch',
-'paymentech' => 'XML file for Chase Paymentech',
-'RBC' => 'Royal Bank of Canada PDS batch',
-'td_eft1464' => '1464 byte file for TD Commercial Banking EFT',
-'eft_canada' => 'EFT Canada CSV batch',
+  '' => 'Default batch mode',
+  'NACHA' => '94 byte NACHA',
+  'csv-td_canada_trust-merchant_pc_batch' => 
+                'CSV file for TD Canada Trust Merchant PC Batch',
+  'csv-chase_canada-E-xactBatch' =>
+                'CSV file for Chase Canada E-xactBatch',
+  'PAP' => '80 byte file for TD Canada Trust PAP Batch',
+  'BoM' => 'Bank of Montreal ECA batch',
+  'ach-spiritone' => 'Spiritone ACH batch',
+  'paymentech' => 'XML file for Chase Paymentech',
+  'RBC' => 'Royal Bank of Canada PDS batch',
+  'td_eft1464' => '1464 byte file for TD Commercial Banking EFT',
+  'eft_canada' => 'EFT Canada CSV batch',
 # insert new batch formats here
 );
 
@@ -150,4 +166,5 @@ my $count_query = "SELECT COUNT(*) FROM cust_pay_batch WHERE batchnum=$batchnum"
 my $count = FS::Record->scalar_sql($count_query);
 my $sum_query = "SELECT SUM(amount) FROM cust_pay_batch WHERE batchnum=$batchnum";
 my $total = sprintf("%.2f", FS::Record->scalar_sql($sum_query));
+
 </%init>

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/pay_batch/eft_canada.pm                      |   68 ++++++++++---
 httemplate/misc/xmlhttp-pay_batch-note.html        |   18 ++++
 httemplate/search/elements/cust_pay_batch_top.html |  105 ++++++++++++--------
 3 files changed, 131 insertions(+), 60 deletions(-)
 create mode 100644 httemplate/misc/xmlhttp-pay_batch-note.html




More information about the freeside-commits mailing list