more detail when selecting invoices in quick payment entry, #15861
authorMark Wells <mark@freeside.biz>
Tue, 2 Jul 2013 20:38:06 +0000 (13:38 -0700)
committerMark Wells <mark@freeside.biz>
Tue, 2 Jul 2013 20:38:06 +0000 (13:38 -0700)
httemplate/misc/batch-cust_pay.html
httemplate/misc/xmlhttp-cust_bill-search.html

index 04a402b..cc1a26a 100644 (file)
@@ -5,6 +5,15 @@
 
 <& /elements/error.html &>
 
+<STYLE TYPE="text/css">
+.select_invnum {
+  text-align: right;
+  width: 220px;
+}
+.select_invnum * {
+  font-family: monospace;
+}
+</STYLE>
 <SCRIPT TYPE="text/javascript">
 function warnUnload() {
   if(document.getElementById("OneTrueTable").rows.length > 3 &&
@@ -185,21 +194,23 @@ function choose_app_invnum() {
 function focus_app_invnum() {
 % # invoice numbers just display as invoice numbers
   var rownum = this.getAttribute('rownum');
-  var add_opt = function(obj, value) {
+  var add_opt = function(obj, value, label) {
     var o = document.createElement('OPTION');
-    o.text = value;
+    o.text = label;
     o.value = value;
     obj.add(o);
   }
   this.options.length = 0;
   var this_invoice = this.curr_invoice;
   if ( this_invoice ) {
-    add_opt(this, this_invoice.invnum);
+    add_opt(this, this_invoice.invnum, this_invoice.label);
   } else {
-    add_opt(this, '');
+    add_opt(this, '', '');
   }
   for ( var x in invoices_for_row[rownum] ) {
-    add_opt(this, invoices_for_row[rownum][x].invnum);
+    add_opt(this,
+            invoices_for_row[rownum][x].invnum,
+            invoices_for_row[rownum][x].label);
   }
 }
 
@@ -236,8 +247,7 @@ function create_application_row(rownum, appnum) {
   select_invnum.setAttribute('appnum', appnum);
   select_invnum.setAttribute('id', 'invnum'+rownum+'.'+appnum);
   select_invnum.setAttribute('name', 'invnum'+rownum+'.'+appnum);
-  select_invnum.style.textAlign = 'right';
-  select_invnum.style.width = '50px';
+  select_invnum.className = 'select_invnum';
   select_invnum.onchange = choose_app_invnum;
   select_invnum.onfocus  = focus_app_invnum;
   
index c60a0b0..6082dc7 100644 (file)
@@ -4,17 +4,37 @@
 my $curuser = $FS::CurrentUser::CurrentUser;
 die 'access denied' unless $curuser->access_right('View invoices');
 my @return;
+my $date_format = FS::Conf->new->config('date_format') || '%m/%d/%Y';
 if ( $cgi->param('sub') eq 'custnum_search_open' ) { 
   my $custnum = $cgi->param('arg');
   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 };
-  }
+    if ( $curuser->agentnums_href->{ $cust_main->agentnum } ) {
+      my @open_bills = $cust_main->open_cust_bill;
+      my $invnum_len;
+      my $owed_len;
+      my $date_len;
+      foreach my $cust_bill (@open_bills) {
+        my $invnum = $cust_bill->invnum;
+        my $owed = $cust_bill->owed;
+        my $date = time2str($date_format, $cust_bill->_date);
+        $invnum_len = length($invnum) if length($invnum) > $invnum_len;
+        $owed_len   = length($owed)   if length($owed) > $owed_len;
+        $date_len   = length($date)   if length($date) > $date_len;
+
+        push @return, { $cust_bill->hash,
+                        'owed' => $owed,
+                        'date' => $date };
+      }
+      my $format = '%' . $invnum_len . 'd - %' . $date_len . 's - '.
+                    (FS::Conf->new->config('money_char') || '$') .
+                   '%' . $owed_len . '.2f';
+      foreach (@return) {
+        $_->{label} = sprintf($format, $_->{invnum}, $_->{date}, $_->{owed});
+      }
+    } #if agentnum
+  } #if $custnum
 }
 
 </%init>