optimization for ginourmous numbers of packages for intergate, whew
[freeside.git] / httemplate / view / cust_main.cgi
index d157be3..6fe759b 100755 (executable)
@@ -83,11 +83,13 @@ print '</TR>',
           $cust_main->country,
           '</TD></TR>',
   ;
-  my $daytime_label = gettext('daytime') || 'Day Phone';
-  my $night_label = gettext('night') || 'Night Phone';
-  print '<TR><TD ALIGN="right">$daytime_label</TD><TD COLSPAN=5 BGCOLOR="#ffffff">',
+  my $daytime_label = FS::Msgcat::_gettext('daytime') || 'Day Phone';
+  my $night_label = FS::Msgcat::_gettext('night') || 'Night Phone';
+  print '<TR><TD ALIGN="right">'. $daytime_label.
+          '</TD><TD COLSPAN=5 BGCOLOR="#ffffff">',
           $cust_main->daytime || '&nbsp', '</TD></TR>',
-       '<TR><TD ALIGN="right">$night_label</TD><TD COLSPAN=5 BGCOLOR="#ffffff">',
+        '<TR><TD ALIGN="right">'. $night_label. 
+          '</TD><TD COLSPAN=5 BGCOLOR="#ffffff">',
           $cust_main->night || '&nbsp', '</TD></TR>',
         '<TR><TD ALIGN="right">Fax</TD><TD COLSPAN=5 BGCOLOR="#ffffff">',
           $cust_main->fax || '&nbsp', '</TD></TR>',
@@ -124,10 +126,10 @@ print '</TR>',
             $cust_main->get("${pre}country"),
             '</TD></TR>',
     ;
-    print '<TR><TD ALIGN="right">$daytime_label</TD>',
+    print '<TR><TD ALIGN="right">'. $daytime_label. '</TD>',
           '<TD COLSPAN=5 BGCOLOR="#ffffff">',
             $cust_main->get("${pre}daytime") || '&nbsp', '</TD></TR>',
-          '<TR><TD ALIGN="right">$night_label</TD>'.
+          '<TR><TD ALIGN="right">'. $night_label. '</TD>'.
           '<TD COLSPAN=5 BGCOLOR="#ffffff">',
             $cust_main->get("${pre}night") || '&nbsp', '</TD></TR>',
           '<TR><TD ALIGN="right">Fax</TD><TD COLSPAN=5 BGCOLOR="#ffffff">',
@@ -229,6 +231,13 @@ if ( $conf->config('payby-default') ne 'HIDE' ) {
           '<TR><TD ALIGN="right">Bank name</TD><TD BGCOLOR="#ffffff">',
           $cust_main->payname, '</TD></TR>'
     ;
+  } elsif ( $cust_main->payby eq 'LECB' ) {
+    $cust_main->payinfo =~ /^(\d{3})(\d{3})(\d{4})$/;
+    my $payinfo = "$1-$2-$3";
+    print 'Phone bill billing</TD></TR>',
+          '<TR><TD ALIGN="right">Phone number</TD><TD BGCOLOR="#ffffff">',
+          $payinfo, '</TD></TR>',
+    ;
   } elsif ( $cust_main->payby eq 'BILL' ) {
     print 'Billing</TD></TR>';
     print '<TR><TD ALIGN="right">P.O. </TD><TD BGCOLOR="#ffffff">',
@@ -271,14 +280,14 @@ print '<BR>'.
   qq!<INPUT TYPE="hidden" NAME="custnum" VALUE="$custnum">!.
   '<SELECT NAME="pkgpart"><OPTION> ';
 
-foreach my $type_pkgs ( qsearch('type_pkgs',{'typenum'=> $agent->typenum }) ) {
-  my $pkgpart = $type_pkgs->pkgpart;
-#  my $part_pkg = qsearchs('part_pkg', { 'pkgpart' => $pkgpart } )
-#    or do { warn "unknown type_pkgs.pkgpart $pkgpart"; next; };
-  my $part_pkg =
-    qsearchs('part_pkg', { 'pkgpart' => $pkgpart, 'disabled' => '' } )
-    or next;
-  print qq!<OPTION VALUE="$pkgpart">!. $part_pkg->pkg. ' - '.
+foreach my $part_pkg (
+  qsearch( 'part_pkg', { 'disabled' => '' }, '',
+           ' AND 0 < ( SELECT COUNT(*) FROM type_pkgs '.
+           '             WHERE typenum = '. $agent->typenum.
+           '             AND type_pkgs.pkgpart = part_pkg.pkgpart )'
+         )
+) {
+  print '<OPTION VALUE="'. $part_pkg->pkgpart. '">'. $part_pkg->pkg. ' - '.
         $part_pkg->comment;
 }
 
@@ -390,11 +399,12 @@ foreach my $package (@packages) {
         qq!$pkg - $comment (&nbsp;<a href="$pkgview">Details</a>&nbsp;)!;
        # | !;
 
-  print qq! (&nbsp;<A HREF="${p}misc/change_pkg.cgi?$pkgnum">!.
-        'Change&nbsp;package</A>&nbsp;)';
-
   #false laziness with view/cust_pkg.cgi, but i'm trying to make that go away so
   unless ( $package->getfield('cancel') ) {
+
+    print qq! (&nbsp;<A HREF="${p}misc/change_pkg.cgi?$pkgnum">!.
+          'Change&nbsp;package</A>&nbsp;)';
+
     print ' (&nbsp;';
     if ( $package->getfield('susp') ) {
       print qq!<A HREF="${p}misc/unsusp_pkg.cgi?$pkgnum">Unsuspend</A>!;
@@ -468,6 +478,11 @@ function cust_pay_areyousure(href) {
  == true)
         window.location.href = href;
 }
+function cust_pay_unapply_areyousure(href) {
+    if (confirm("Are you sure you want to unapply this payment?")
+ == true)
+        window.location.href = href;
+}
 </SCRIPT>
 END
 
@@ -522,8 +537,12 @@ if ( $conf->config('payby-default') ne 'HIDE' ) {
       my $delete = $payment->closed !~ /^Y/i && $conf->exists('deletepayments')
                      ? qq! (<A HREF="javascript:cust_pay_areyousure('${p}misc/delete-cust_pay.cgi?!. $payment->paynum. qq!')">delete</A>)!
                      : '';
+      my $unapply =
+        $payment->closed !~ /^Y/i && $conf->exists('unapplypayments')
+          ? qq! (<A HREF="javascript:cust_pay_unapply_areyousure('${p}misc/unapply-cust_pay.cgi?!. $payment->paynum. qq!')">unapply</A>)!
+          : '';
       push @history,
-        "$date\tPayment, Invoice #$invnum ($payby$payinfo)$delete\t\t$paid\t\t\t$target";
+        "$date\tPayment, Invoice #$invnum ($payby$payinfo)$delete$unapply\t\t$paid\t\t\t$target";
     }
   
     my(@cust_credit_bill)=