echeck/ACH refunds
[freeside.git] / httemplate / view / cust_main.cgi
index a34ddc4..4d27765 100755 (executable)
@@ -300,13 +300,25 @@ if ( defined $cust_main->dbdef_table->column('comments')
         '</PRE></TD></TR></TABLE></TABLE>';
 }
 
-print '</TD></TR></TABLE>';
+%>
+
+</TD></TR></TABLE>
 
-print '<BR>'.
-  '<FORM ACTION="'.popurl(2).'edit/process/quick-cust_pkg.cgi" METHOD="POST">'.
-  qq!<INPUT TYPE="hidden" NAME="custnum" VALUE="$custnum">!.
-  '<SELECT NAME="pkgpart"><OPTION> ';
+<BR>
+<SCRIPT TYPE="text/javascript">
+function enable_order_pkg () {
+  if ( document.OrderPkgForm.pkgpart.selectedIndex > 0 ) {
+    document.OrderPkgForm.submit.disabled = false;
+  } else {
+    document.OrderPkgForm.submit.disabled = true;
+  }
+}
+</SCRIPT>
+<FORM NAME="OrderPkgForm" ACTION="<%= $p %>edit/process/quick-cust_pkg.cgi" METHOD="POST">
+<INPUT TYPE="hidden" NAME="custnum" VALUE="<%= $custnum %>">
+<SELECT NAME="pkgpart" onChange="enable_order_pkg()"><OPTION>Order additional package
 
+<%
 foreach my $part_pkg (
   qsearch( 'part_pkg', { 'disabled' => '' }, '',
            ' AND 0 < ( SELECT COUNT(*) FROM type_pkgs '.
@@ -314,11 +326,13 @@ foreach my $part_pkg (
            '             AND type_pkgs.pkgpart = part_pkg.pkgpart )'
          )
 ) {
-  print '<OPTION VALUE="'. $part_pkg->pkgpart. '">'. $part_pkg->pkg. ' - '.
-        $part_pkg->comment;
-}
+%>
+<OPTION VALUE="<%= $part_pkg->pkgpart %>"><%= $part_pkg->pkg %> - <%= $part_pkg->comment %>
+<% } %>
 
-print '</SELECT><INPUT TYPE="submit" VALUE="Order Package"></FORM><BR>';
+</SELECT><INPUT NAME="submit" TYPE="submit" VALUE="Order Package" disabled></FORM><BR>
+
+<%
 
 if ( $conf->config('payby-default') ne 'HIDE' ) {
 
@@ -625,17 +639,17 @@ print '</TABLE>';
     my $refund = '';
     my $refund_days = $conf->config('card_refund-days') || 120;
     if (    $cust_pay->closed !~ /^Y/i
-         && $cust_pay->payby eq 'CARD' 
+         && $cust_pay->payby =~ /^(CARD|CHEK)$/
          && time-$cust_pay->_date < $refund_days*86400
          && $cust_pay->unrefunded > 0
     ) {
-      $refund = qq! (<A HREF="!. qq!${p}edit/cust_refund.cgi?payby=CARD;!.
+      $refund = qq! (<A HREF="!. qq!${p}edit/cust_refund.cgi?payby=$1;!.
                 qq!paynum=!. $cust_pay->paynum. qq!">refund</A>)!;
     }
 
     my $void = '';
     if (    $cust_pay->closed !~ /^Y/i
-         && $cust_pay->payby ne 'CARD'
+         && $cust_pay->payby !~  /^(CARD|CHEK)$/
        ) {
       $void = qq! (<A HREF="javascript:areyousure('!.
               qq!${p}misc/void-cust_pay.cgi?!. $cust_pay->paynum.
@@ -685,7 +699,7 @@ print '</TABLE>';
 
     push @history, {
       'date'   => $cust_pay_void->_date,
-      'desc'   => "Payment $info <I>voided ".
+      'desc'   => "<DEL>Payment $info</DEL> <I>voided ".
                   time2str("%D", $cust_pay_void->void_date).
                   " by ". $cust_pay_void->otaker. '</i>',
       'void_payment' => $cust_pay_void->paid,
@@ -897,28 +911,14 @@ sub get_packages {
     $pkg{expire} = $cust_pkg->getfield('expire');
     $pkg{cancel} = $cust_pkg->getfield('cancel');
   
-    my %svcparts = ();
-
-    foreach my $pkg_svc (
-      qsearch('pkg_svc', { 'pkgpart' => $part_pkg->pkgpart })
-    ) {
-  
-      next if ($pkg_svc->quantity == 0);
-  
-      my $part_svc = qsearchs('part_svc', { 'svcpart' => $pkg_svc->svcpart });
-  
-      my $svcpart = {};
-      $svcpart->{svcpart} = $part_svc->svcpart;
-      $svcpart->{svc} = $part_svc->svc;
-      $svcpart->{svcdb} = $part_svc->svcdb;
-      $svcpart->{quantity} = $pkg_svc->quantity;
-      $svcpart->{count} = 0;
-  
-      $svcpart->{services} = [];
-
-      $svcparts{$svcpart->{svcpart}} = $svcpart;
-
-    }
+    my %svcparts = map {
+      $_->svcpart => {
+                       $_->part_svc->hash,
+                       'quantity' => $_->quantity,
+                       'count'    => $cust_pkg->num_cust_svc($_->svcpart),
+                       #'services' => [],
+                     };
+    } $part_pkg->pkg_svc;
 
     foreach my $cust_svc ( $cust_pkg->cust_svc ) {
       #warn "svcnum ". $cust_svc->svcnum. " / svcpart ". $cust_svc->svcpart. "\n";
@@ -930,18 +930,14 @@ sub get_packages {
       #false laziness with above, to catch extraneous services.  whole
       #damn thing should be OO...
       my $svcpart = ( $svcparts{$cust_svc->svcpart} ||= {
-        'svcpart'  => $cust_svc->svcpart,
-        'svc'      => $cust_svc->part_svc->svc,
-        'svcdb'    => $cust_svc->part_svc->svcdb,
+        $cust_svc->part_svc->hash,
         'quantity' => 0,
-        'count'    => 0,
-        'services' => [],
+        'count'    => $cust_pkg->num_cust_svc($cust_svc->svcpart),
+        #'services' => [],
       } );
 
       push @{$svcpart->{services}}, $svc;
 
-      $svcpart->{count}++;
-
     }
 
     $pkg{svcparts} = [ values %svcparts ];