<%doc> Examples: include( 'elements/report_cust_pay_or_refund.html', 'thing' => 'pay', 'name_singular' => 'payment', ) include( 'elements/report_cust_pay_or_refund.html', 'thing' => 'refund', 'name_singular' => 'refund', ) <& /elements/header.html, mt($title) &>
<% emt('[_1] search options', ucfirst($name_singular)) %> <& /elements/tr-select.html, label => ucfirst(PL($name_singular)) . ' of type:', field => 'payby', options => [ keys %payby ], labels => \%payby, multiple => 1, size => 18, &> % if (substr($conf->config('card_masking_method'), -5) eq 'last4' || !$conf->config('card_masking_method')) { % } <& /elements/tr-select-user.html &> % if ( $has_reason ) { % # limit to reasons that are in use for the table being reported on % # (maybe order by count(*) desc?) <& /elements/tr-select-table.html, label => emt('Reason'), field => 'reasonnum', id => 'reasonnum', table => 'reason', name_col => 'reason', extra_sql => " WHERE EXISTS(SELECT 1 FROM $table WHERE $table.reasonnum = reason.reasonnum) ", empty_label => emt('any'), &> % } % if ( $void ) { % } % if ( $table eq 'cust_pay' ) { % # payment batch % # <& /elements/tr-select-batchnum.html &> % #payment "entry" batch (should probably just all become the same thing) <& /elements/tr-select-paybatch.html &> % } <& /elements/tr-input-lessthan_greaterthan.html, 'label' => emt('Amount'), 'field' => 'paid', &>
<% mt('Card Last 4 #:') |h %>
<% mt('Check #:') |h %>
<% mt('Transaction #:') |h %>
<% mt(ucfirst($name_singular). ' date') |h %> <& /elements/tr-input-beginning_ending.html, layout => 'horiz', input_time => $conf->exists('report-cust_pay-select_time'), &>
<% mt('Voided') |h %> <& /elements/tr-input-beginning_ending.html, prefix => 'void', layout => 'horiz', &>

<% emt('Customer search options') %> <& /elements/tr-select-cust_tag.html, 'custnum' => $opt{'custnum'}, &> <& /elements/tr-select-agent.html, 'curr_value' => scalar($cgi->param('agentnum')), 'label' => emt('Agent'), 'disable_empty' => 0, &> <& /elements/tr-select-cust_class.html, 'label' => emt('Customer class'), 'field' => 'cust_classnum', 'multiple' => 1, 'pre_options' => [ 0 => emt('(none)') ], &> <& options_cust_location.html &>
% if ( $table eq 'cust_pay' ) {
<% emt('Display options') %> <& /elements/tr-checkbox.html, 'label' => emt('Include tax names'), 'field' => 'tax_names', 'value' => 1, &> <& /elements/tr-checkbox.html, 'label' => emt('Include order number'), 'field' => 'show_order_number', 'value' => 1, &>
% }
<& /elements/footer.html &> <%init> my %opt = @_; my $table = 'cust_'.$opt{'thing'}; my $name_singular = $opt{'name_singular'}; die "access denied" unless $FS::CurrentUser::CurrentUser->access_right('Basic payment and refund reports'); my $conf = new FS::Conf; my $void = $cgi->param('void') ? 1 : 0; my $unapplied = $cgi->param('unapplied') ? 1 : 0; my $title = $void ? "Voided $name_singular report" : $unapplied ? "Unapplied $name_singular report" : "\u$name_singular report" ; $table .= '_void' if $void; my $has_reason = dbdef->table($table)->column('reasonnum'); tie (my %payby, 'Tie::IxHash', 'CARD-VisaMC' => 'credit card (Visa/MasterCard)', 'CARD-Amex' => 'credit card (American Express)', 'CARD-Discover' => 'credit card (Discover)', 'CARD-Maestro' => 'credit card (Maestro/Switch/Solo)', 'CARD-Tokenized' => 'credit card (Tokenized)', 'CHEK' => 'electronic check / ACH', 'BILL' => 'check', 'CASH' => 'cash', 'PPAL' => 'Paypal', 'APPL' => 'Apple Store', 'ANRD' => 'Android Market', 'PREP' => 'prepaid card', 'WIRE' => 'wire transfer', 'WEST' => 'Western Union', 'IDTP' => 'IDT Payment Services', 'EDI' => 'Electronic Debit (EDI)', 'MCRD' => 'manual credit card', 'MCHK' => 'manual electronic check', );