tolerate custnum errors in quick payment entry, #22369
authorMark Wells <mark@freeside.biz>
Fri, 5 Apr 2013 23:15:56 +0000 (16:15 -0700)
committerMark Wells <mark@freeside.biz>
Fri, 5 Apr 2013 23:15:56 +0000 (16:15 -0700)
httemplate/misc/batch-cust_pay.html
httemplate/misc/xmlhttp-cust_bill-search.html

index ef06441..0b2f1f1 100644 (file)
@@ -23,10 +23,12 @@ function add_row_callback(rownum, prefix) {
 
 function custnum_update_callback(rownum, prefix) {
   var custnum = document.getElementById('custnum'+rownum).value;
-  document.getElementById('enable_app'+rownum).disabled = (
-    custnum == 0 || 
-    num_open_invoices[rownum] < 2
-  );
+  // if there is a custnum and more than one open invoice, enable
+  // (and check) the box
+  var show_applications = (custnum > 0 && num_open_invoices[rownum] > 1);
+  var enable_app_checkbox = document.getElementById('enable_app'+rownum);
+  enable_app_checkbox.disabled = show_applications;
+
 % if ( $use_discounts ) {
   select_discount_term(rownum, prefix);
 % }
@@ -34,9 +36,6 @@ function custnum_update_callback(rownum, prefix) {
 
 function invnum_update_callback(rownum, prefix) {
   custnum_update_callback(rownum, prefix);
-  var enable = document.getElementById('enable_app'+rownum);
-  enable.checked = true;
-  toggle_application_row.call(enable);
 }
 
 function select_discount_term(row, prefix) {
@@ -96,6 +95,17 @@ function toggle_application_row(ev, next) {
         next.call(this, rownum);
       }
     );
+  } else {
+    var row = document.getElementById('row'+rownum);
+    var table_rows = row.parentNode.rows;
+    for (i = row.sectionRowIndex; i < table_rows.count; i++) {
+      if ( table_rows[i].id.indexof('row'+rownum+'.') > -1 ) {
+        table_rows.removeChild(table_rows[i]);
+      } else {
+        break;
+      }
+    }
+    lock_payment_row(rownum, false);
   }
 }
 
index 46f15d1..459c5db 100644 (file)
@@ -6,13 +6,15 @@ die 'access denied' unless $curuser->access_right('View invoices');
 my @return;
 if ( $cgi->param('sub') eq 'custnum_search_open' ) { 
   my $custnum = $cgi->param('arg');
-  #warn "searching invoices for $custnum\n";
-  my $cust_main = FS::cust_main->by_key($custnum);
-  @return = map { 
-    +{ $_->hash, 
-      'owed' => $_->owed }
-  } $cust_main->open_cust_bill
-    if $curuser->agentnums_href->{ $cust_main->agentnum };
+  if ( $custnum =~ /^(\d+)$/ ) {
+#warn "searching invoices for $custnum\n";
+    my $cust_main = FS::cust_main->by_key($custnum);
+    @return = map { 
+      +{ $_->hash, 
+        'owed' => $_->owed }
+    } $cust_main->open_cust_bill
+      if $curuser->agentnums_href->{ $cust_main->agentnum };
+  }
 }
 
 </%init>