Merge branch 'master' of git.freeside.biz:/home/git/freeside
authorIvan Kohler <ivan@freeside.biz>
Fri, 11 May 2018 18:12:03 +0000 (11:12 -0700)
committerIvan Kohler <ivan@freeside.biz>
Fri, 11 May 2018 18:12:03 +0000 (11:12 -0700)
1  2 
FS/FS/cust_main/Billing_Realtime.pm

@@@ -421,6 -421,8 +421,8 @@@ sub realtime_bop 
      $options{amount} = $amount;
    }
  
+   return '' unless $options{amount} > 0;
    # set fields from passed cust_payby
    _bop_cust_payby_options(\%options);
  
      if $conf->config('credit-card-surcharge-percentage', $self->agentnum)
      && $options{method} eq 'CC';
  
+   my $cc_surcharge_flat = 0;
+   $cc_surcharge_flat = $conf->config('credit-card-surcharge-flatfee', $self->agentnum)
+     if $conf->config('credit-card-surcharge-flatfee', $self->agentnum)
+     && $options{method} eq 'CC';
    # always add cc surcharge if called from event 
-   if($options{'cc_surcharge_from_event'} && $cc_surcharge_pct > 0) {
-       $cc_surcharge = $options{'amount'} * $cc_surcharge_pct / 100;
+   if($options{'cc_surcharge_from_event'} && ($cc_surcharge_pct > 0 || $cc_surcharge_flat > 0)) {
+     if ($options{'amount'} > 0) {
+       $cc_surcharge = ($options{'amount'} * ($cc_surcharge_pct / 100)) + $cc_surcharge_flat;
        $options{'amount'} += $cc_surcharge;
        $options{'amount'} = sprintf("%.2f", $options{'amount'}); # round (again)?
+     }
    }
-   elsif($cc_surcharge_pct > 0) { # we're called not from event (i.e. from a 
-                                  # payment screen), so consider the given 
-                                # amount as post-surcharge
-     $cc_surcharge = $options{'amount'} - ($options{'amount'} / ( 1 + $cc_surcharge_pct/100 ));
+   elsif($cc_surcharge_pct > 0 || $cc_surcharge_flat > 0) {
+     # we're called not from event (i.e. from a
+     # payment screen), so consider the given
+               # amount as post-surcharge
+     $cc_surcharge = $options{'amount'} - (($options{'amount'} - $cc_surcharge_flat) / ( 1 + $cc_surcharge_pct/100 )) if $options{'amount'} > 0;
    }
    
    $cc_surcharge = sprintf("%.2f",$cc_surcharge) if $cc_surcharge > 0;
@@@ -1193,7 -1203,6 +1203,7 @@@ sub _realtime_bop_result 
                "resolved - error updating status for paypendingnum ".
                $cust_pay_pending->paypendingnum. ": $cpp_done_err \n";
        warn $e;
 +      #XXX internal system log $e (what's going on?)
        $perror = "$e ($perror)";
      }