This commit was manufactured by cvs2svn to create tag 'freeside_2_1_1'.
[freeside.git] / httemplate / view / cust_main / payment_history / payment.html
index b9a0694..6ec9fdb 100644 (file)
@@ -4,6 +4,8 @@
 
 my( $cust_pay, %opt ) = @_;
 
+my $date_format = $opt{'date_format'} || '%m/%d/%Y';
+
 my $conf = new FS::Conf;
 my $curuser = $FS::CurrentUser::CurrentUser;
 
@@ -33,46 +35,64 @@ $payby =~ s/^MCRD$/Manual credit card/;
 $payby =~ s/^BILL$//;
 my $info = $payby ? "($payby$payinfo)" : '';
 
-my( $pre, $post, $desc, $apply, $ext ) = ( '', '', '', '', '' );
+my $desc = '';
+if ( $opt{'pkg-balances'} && $cust_pay->pkgnum ) {
+  my $cust_pkg = qsearchs('cust_pkg', { 'pkgnum' => $cust_pay->pkgnum } );
+  $desc .= ' for '. $cust_pkg->pkg_label_long;
+}
+
+my %cust_bill_pay_width = ('width' => 392);
+my %cust_bill_pay_height = ();
+if ($conf->exists('cust_bill_pay_pkg-manual')) {
+  %cust_bill_pay_width = ('width' => 592);
+  %cust_bill_pay_height = ('height' => 436);
+}
+
+my( $pre, $post, $apply, $ext ) = ( '', '', '', '' );
 if (    scalar(@cust_bill_pay)   == 0
      && scalar(@cust_pay_refund) == 0 ) {
   #completely unapplied
   $pre = '<B><FONT COLOR="#FF0000">Unapplied ';
   $post = '</FONT></B>';
   if ( $curuser->access_right('Apply payment') ) {
-    $apply = ' ('. include( '/elements/popup_link.html',
-                              'label'       => 'apply',
-                              'action'      => "${p}edit/cust_bill_pay.cgi?".
-                                               $cust_pay->paynum,
-                              'actionlabel' => 'Apply payment',
-                              'width'       => 392,
-                              #default# 'height' => 336,
-                          ).
-              ')';
-    #XXX if there are any open refunds
-    $apply.= ' ('. include( '/elements/popup_link.html',
-                              'label'       => 'apply to refund',
-                              'action'      => "${p}edit/cust_pay_refund.cgi?".
-                                               $cust_pay->paynum,
-                              'actionlabel' => 'Apply payment to refund',
-                              'width'       => 392,
-                              #default# 'height' => 336,
-                          ).
-              ')';
+    if ( $cust_pay->cust_main->total_owed > 0 ) {
+      $apply = ' ('.
+               include( '/elements/popup_link.html',
+                          'label'       => 'apply',
+                          'action'      => "${p}edit/cust_bill_pay.cgi?".
+                                           $cust_pay->paynum,
+                          'actionlabel' => 'Apply payment',
+                          %cust_bill_pay_width,
+                          %cust_bill_pay_height,
+                      ).
+                ')';
+    }
+    if ( $cust_pay->cust_main->total_unapplied_refunds > 0 ) {
+      $apply.= ' ('.
+               include( '/elements/popup_link.html',
+                          'label'       => 'apply to refund',
+                          'action'      => "${p}edit/cust_pay_refund.cgi?".
+                                           $cust_pay->paynum,
+                          'actionlabel' => 'Apply payment to refund',
+                          'width'       => 392,
+                          #default# 'height' => 336,
+                      ).
+               ')';
+    }
   }
 } elsif (    scalar(@cust_bill_pay)   == 1
           && scalar(@cust_pay_refund) == 0
           && $cust_pay->unapplied == 0     ) {
   #applied to one invoice, the usual situation
-  $desc = ' '. $cust_bill_pay[0]->applied_to_invoice;
+  $desc .= ' '. $cust_bill_pay[0]->applied_to_invoice;
 } elsif (    scalar(@cust_bill_pay)   == 0
           && scalar(@cust_pay_refund) == 1
           && $cust_pay->unapplied == 0     ) {
   #applied to one refund
-  $desc = ' refunded on '. time2str("%D", $cust_pay_refund[0]->_date);
+  $desc .= ' refunded on '. time2str($date_format, $cust_pay_refund[0]->_date);
 } else {
   #complicated
-  $desc = '<BR>';
+  $desc .= '<BR>';
   foreach my $app ( sort { $a->_date <=> $b->_date }
                          ( @cust_bill_pay, @cust_pay_refund ) ) {
     if ( $app->isa('FS::cust_bill_pay') ) {
@@ -80,11 +100,11 @@ if (    scalar(@cust_bill_pay)   == 0
                '$'. $app->amount.
                ' '. $app->applied_to_invoice.
                '<BR>';
-               #' on '. time2str("%D", $cust_bill_pay->_date).
+               #' on '. time2str($date_format, $cust_bill_pay->_date).
     } elsif ( $app->isa('FS::cust_pay_refund') ) {
       $desc .= '&nbsp;&nbsp;'.
                '$'. $app->amount.
-               ' refunded on '. time2str("%D", $app->_date).
+               ' refunded on '. time2str($date_format, $app->_date).
                '<BR>';
     } else {
       die "$app is not a FS::cust_bill_pay or FS::cust_pay_refund";
@@ -95,25 +115,30 @@ if (    scalar(@cust_bill_pay)   == 0
              '<B><FONT COLOR="#FF0000">$'.
              $cust_pay->unapplied. ' unapplied</FONT></B>';
     if ( $curuser->access_right('Apply payment') ) {
-      $apply = ' ('. include( '/elements/popup_link.html',
-                                'label'      => 'apply',
-                                'action'     => "${p}edit/cust_bill_pay.cgi?".
-                                                $cust_pay->paynum,
-                                'actionlabel' => 'Apply payment',
-                                'width'      => 392,
-                                #default# 'height' => 336,
-                           ).
-               ')';
-      #XXX if there are any open refunds
-      $apply.= ' ('. include( '/elements/popup_link.html',
-                                'label'      => 'apply to refund',
-                                'action'     => "${p}edit/cust_pay_refund.cgi?".
-                                                $cust_pay->paynum,
-                                'actionlabel' => 'Apply payment to refund',
-                                'width'      => 392,
-                                #default# 'height' => 336,
-                           ).
-               ')';
+      if ( $cust_pay->cust_main->total_owed > 0 ) {
+        $apply = ' ('.
+                 include( '/elements/popup_link.html',
+                            'label'      => 'apply',
+                            'action'     => "${p}edit/cust_bill_pay.cgi?".
+                                            $cust_pay->paynum,
+                            'actionlabel' => 'Apply payment',
+                            %cust_bill_pay_width,
+                            %cust_bill_pay_height,
+                        ).
+                 ')';
+      }
+      if ( $cust_pay->cust_main->total_unapplied_refunds > 0 ) {
+        $apply.= ' ('.
+                 include( '/elements/popup_link.html',
+                            'label'      => 'apply to refund',
+                            'action'     => "${p}edit/cust_pay_refund.cgi?".
+                                            $cust_pay->paynum,
+                            'actionlabel' => 'Apply payment to refund',
+                            'width'      => 392,
+                            #default# 'height' => 336,
+                        ).
+                 ')';
+      }
     }
     $desc .= '<BR>';
   }
@@ -129,7 +154,7 @@ my $view =
    ')';
 
 my $refund = '';
-my $refund_days = $conf->config('card_refund-days') || 120;
+my $refund_days = $opt{'card_refund-days'} || 120;
 if (    $cust_pay->closed !~ /^Y/i
      && $cust_pay->payby =~ /^(CARD|CHEK)$/
      && time-$cust_pay->_date < $refund_days*86400
@@ -169,7 +194,7 @@ if (    $cust_pay->closed !~ /^Y/i
 
 my $delete = '';
 if ( $cust_pay->closed !~ /^Y/i
-     && $conf->exists('deletepayments')
+     && $opt{'deletepayments'}
      && $curuser->access_right('Delete payment')
    )
 {