optimize customer view (esp. with lots of commission credits), RT#26416
[freeside.git] / httemplate / view / cust_main / payment_history / payment.html
index ff269bf..b71d73f 100644 (file)
@@ -6,10 +6,6 @@ my( $cust_pay, %opt ) = @_;
 
 my $date_format = $opt{'date_format'} || '%m/%d/%Y';
 
-my $conf = new FS::Conf;
-my $money_char = $conf->config('money_char') || '$';
-my $curuser = $FS::CurrentUser::CurrentUser;
-
 my @cust_bill_pay = $cust_pay->cust_bill_pay;
 my @cust_pay_refund = $cust_pay->cust_pay_refund;
 
@@ -26,7 +22,7 @@ if ( $opt{'pkg-balances'} && $cust_pay->pkgnum ) {
 
 my %cust_bill_pay_width = ('width' => 392);
 my %cust_bill_pay_height = ();
-if ($conf->exists('cust_bill_pay_pkg-manual')) {
+if ( $opt{'cust_bill_pay_pkg-manual'} ) {
   %cust_bill_pay_width = ('width' => 592);
   %cust_bill_pay_height = ('height' => 436);
 }
@@ -53,8 +49,8 @@ if (    scalar(@cust_bill_pay)   == 0
   $payment = emt("Unapplied Payment by [_1]",$otaker);
   $payment =~ s/$otaker/<i>$otaker<\/i>/ if $italicize_otaker;
   $payment = '<B><FONT COLOR="#FF0000">'.$payment.'</FONT></B>';
-  if ( $curuser->access_right('Apply payment') ) {
-    if ( $cust_pay->cust_main->total_owed > 0 ) {
+  if ( $opt{'Apply payment'} ) {
+    if ( $opt{total_owed} > 0 ) {
       $apply = ' ('.
                include( '/elements/popup_link.html',
                           'label'       => emt('apply'),
@@ -66,7 +62,7 @@ if (    scalar(@cust_bill_pay)   == 0
                       ).
                 ')';
     }
-    if ( $cust_pay->cust_main->total_unapplied_refunds > 0 ) {
+    if ( $opt{total_unapplied_refunds} > 0 ) {
       $apply.= ' ('.
                include( '/elements/popup_link.html',
                           'label'       => emt('apply to refund'),
@@ -94,11 +90,11 @@ if (    scalar(@cust_bill_pay)   == 0
   foreach my $app ( sort { $a->_date <=> $b->_date }
                          ( @cust_bill_pay, @cust_pay_refund ) ) {
     if ( $app->isa('FS::cust_bill_pay') ) {
-      $desc .= '&nbsp;&nbsp;' . $money_char . $app->amount . ' ' .
+      $desc .= '&nbsp;&nbsp;' . $opt{money_char} . $app->amount . ' ' .
                 $app->applied_to_invoice . '<BR>';
     } elsif ( $app->isa('FS::cust_pay_refund') ) {
       $desc .= '&nbsp;&nbsp;' .
-               emt("[_1][_2] refunded on [_3]", $money_char, $app->amount,
+               emt("[_1][_2] refunded on [_3]", $opt{money_char}, $app->amount,
                         time2str($date_format, $app->_date) ) . '<BR>';
     } else {
       die "$app is not a FS::cust_bill_pay or FS::cust_pay_refund";
@@ -106,11 +102,11 @@ if (    scalar(@cust_bill_pay)   == 0
   }
   if ( $cust_pay->unapplied > 0 ) {
     $desc .= '&nbsp;&nbsp;'.
-             '<B><FONT COLOR="#FF0000">' .
-             emt("[_1][_2] unapplied", $money_char, $cust_pay->unapplied) .
+             '<B><FONT COLOR="#FF0000">'.
+             emt("[_1][_2] unapplied", $opt{money_char}, $cust_pay->unapplied).
              '</FONT></B>';
-    if ( $curuser->access_right('Apply payment') ) {
-      if ( $cust_pay->cust_main->total_owed > 0 ) {
+    if ( $opt{'Apply payment'} ) {
+      if ( $opt{total_owed} > 0 ) {
         $apply = ' ('.
                  include( '/elements/popup_link.html',
                             'label'      => emt('apply'),
@@ -122,7 +118,7 @@ if (    scalar(@cust_bill_pay)   == 0
                         ).
                  ')';
       }
-      if ( $cust_pay->cust_main->total_unapplied_refunds > 0 ) {
+      if ( $opt{total_unapplied_refunds} > 0 ) {
         $apply.= ' ('.
                  include( '/elements/popup_link.html',
                             'label'      => emt('apply to refund'),
@@ -149,14 +145,14 @@ my $view =
 
 my $refund = '';
 my $refund_days = $opt{'card_refund-days'} || 120;
-my @rights = ('Refund payment');
-push @rights, 'Refund credit card payment' if $payby eq 'CARD';
-push @rights, 'Refund Echeck payment' if $payby eq 'CHEK';
+my $refund_right = '';
+$refund_right = 'Refund credit card payment' if $payby eq 'CARD';
+$refund_right = 'Refund Echeck payment'      if $payby eq 'CHEK';
 if (    $cust_pay->closed !~ /^Y/i
      && $cust_pay->payby =~ /^(CARD|CHEK)$/
      && time-$cust_pay->_date < $refund_days*86400
      && $cust_pay->unrefunded > 0
-     && $curuser->access_right(\@rights)
+     && $opt{$refund_right}
 ) {
   $refund = qq! (<A HREF="${p}edit/cust_refund.cgi?payby=$1;!.
             qq!paynum=!. $cust_pay->paynum. '"'.
@@ -173,18 +169,11 @@ $void = areyousure_link("${p}misc/void-cust_pay.cgi?".$cust_pay->paynum,
                         emt('Void this payment from the database') . $voidmsg,
                         emt('void')
                        )
-    if (    $cust_pay->closed !~ /^Y/i
-     && (    ( $cust_pay->payby eq 'CARD'
-               && $curuser->access_right('Credit card void')
-             )
-          || ( $cust_pay->payby eq 'CHEK'
-               && $curuser->access_right('Echeck void')
-             )
-          || ( $cust_pay->payby !~ /^(CARD|CHEK)$/
-               && $curuser->access_right('Void payments')
-             )
-        )
-   );
+  if $cust_pay->closed !~ /^Y/i
+  && (    ( $cust_pay->payby eq 'CARD'          && $opt{'Credit card void'} )
+       || ( $cust_pay->payby eq 'CHEK'          && $opt{'Echeck void'}      )
+       || ( $cust_pay->payby !~ /^(CARD|CHEK)$/ && $opt{'Void payments'}    )
+     );
 
 my $delete = '';
 $delete = areyousure_link("${p}misc/delete-cust_pay.cgi?".$cust_pay->paynum,
@@ -192,8 +181,9 @@ $delete = areyousure_link("${p}misc/delete-cust_pay.cgi?".$cust_pay->paynum,
                             emt('Delete this payment from the database completely - not recommended'),
                             emt('delete')
                          )
-    if ( $cust_pay->closed !~ /^Y/i && $opt{'deletepayments'}
-                                 && $curuser->access_right('Delete payment') );
+  if $cust_pay->closed !~ /^Y/i
+  && $opt{'deletepayments'}
+  && $opt{'Delete payment'};
 
 my $unapply = '';
 $unapply = areyousure_link("${p}misc/unapply-cust_pay.cgi?".$cust_pay->paynum,
@@ -201,7 +191,8 @@ $unapply = areyousure_link("${p}misc/unapply-cust_pay.cgi?".$cust_pay->paynum,
                             emt('Keep this payment, but dissociate it from the invoices it is currently applied against'),
                             emt('unapply')
                           )
-    if ( $cust_pay->closed !~ /^Y/i && scalar(@cust_bill_pay)           
-                                && $curuser->access_right('Unapply payment') );
+  if $cust_pay->closed !~ /^Y/i
+  && scalar(@cust_bill_pay)           
+  && $opt{'Unapply payment'};
 
 </%init>