<& /elements/header-cust_main.html, view=>'payment_history', cust_main=>$cust_main &>

<% emt("Process [_1] payment",$type{$payby}) %>

<& /elements/init_overlib.html &> <& /elements/tr-select-payment_options.html, 'cust_main' => $cust_main, 'process-pkgpart' => scalar($conf->config('manual_process-pkgpart', $cust_main->agentnum)), 'process-display' => scalar($conf->config('manual_process-display')), 'process-skip_first' => $conf->exists('manual_process-skip_first'), 'num_payments' => scalar($cust_main->cust_pay), 'surcharge_percentage' => ( $payby eq 'CARD' ? scalar($conf->config('credit-card-surcharge-percentage', $cust_main->agentnum)) : 0 ), 'surcharge_flatfee' => ( $payby eq 'CARD' ? scalar($conf->config('credit-card-surcharge-flatfee', $cust_main->agentnum)) : 0 ), &> % if ( $conf->exists('part_pkg-term_discounts') ) { <& /elements/tr-select-discount_term.html, 'custnum' => $custnum, 'amount_id' => 'amount', &> % } % my $disallow_no_auto_apply = 0; % if ( $conf->exists("batch-enable") % || grep $payby eq $_, $conf->config('batch-enable_payby') % ) { % % if ( grep $payby eq $_, $conf->config('realtime-disable_payby') ) { % $disallow_no_auto_apply = 1; % } else { % } % } % unless ($disallow_no_auto_apply) { % # false laziness with edit/cust_pay.cgi % # this can go away if no_auto_apply handling gets added to batch payment processing % } % #can't quite handle CARD/CHEK on the same page yet, but very close % #does it make sense from a UI/usability perspective? % % my @cust_payby = (); % if ( $payby eq 'CARD' ) { % @cust_payby = $cust_main->cust_payby('CARD','DCRD'); % } elsif ( $payby eq 'CHEK' ) { % @cust_payby = $cust_main->cust_payby('CHEK','DCHK'); % } else { % die "unknown payby $payby"; % } % % my $custpaybynum = length(scalar($cgi->param('custpaybynum'))) % ? scalar($cgi->param('custpaybynum')) % : scalar(@cust_payby) && $cust_payby[0]->custpaybynum; <& /elements/tr-select-cust_payby.html, 'cust_payby' => \@cust_payby, 'curr_value' => $custpaybynum, 'onchange' => 'cust_payby_changed(this)', &>
   <% mt('Add to current batch') |h %>
<% mt('Auto-apply to invoices') |h %>

> <& /elements/cust_payby_new.html, 'cust_payby' => \@cust_payby, 'curr_value' => $custpaybynum, &>

<& /elements/footer-cust_main.html &> <%once> my %weight = ( 1 => 'Primary', 2 => 'Secondary', 3 => 'Tertiary', 4 => 'Fourth', 5 => 'Fifth', 6 => 'Sixth', 7 => 'Seventh', ); <%init> die "access denied" unless $FS::CurrentUser::CurrentUser->access_right('Process payment'); my %type = ( 'CARD' => 'credit card', 'CHEK' => 'electronic check (ACH)', ); $cgi->param('payby') =~ /^(CARD|CHEK)$/ or die "unknown payby ". $cgi->param('payby'); my $payby = $1; my $validate_select_fields = "#payment_option, #invoice, #custpaybynum, "; my $validate_input_fields = "#amount, input[name=payname], "; if ($payby eq "CHEK") { $validate_input_fields .= "input[name=payinfo1], input[name=payinfo2]"; $validate_select_fields .= "select[name=paytype] "; } elsif ($payby eq "CARD") { $validate_input_fields .= "input[name=payinfo], input[name=paycvv], input[name=address1], #city, #zip"; $validate_select_fields .= "#state, #country "; } $cgi->param('custnum') =~ /^(\d+)$/ or die "illegal custnum ". $cgi->param('custnum'); my $custnum = $1; my $cust_main = qsearchs( 'cust_main', { 'custnum'=>$custnum } ); die "unknown custnum $custnum" unless $cust_main; my $balance = $cust_main->balance; my $payinfo = ''; my $conf = new FS::Conf; my $payunique = "webui-payment-". time. "-$$-". rand() * 2**32;