Billing information
%# If we can't see the unencrypted card, then bill now is an exercise in
%# frustration (without some sort of job queue magic to send it to a secure
%# machine, anyway)
%if ( $FS::CurrentUser::CurrentUser->access_right('Bill customer now')
% && ! $cust_main->is_encrypted($cust_main->payinfo)
% ) {
(Bill now)
% }
<% ntable("#cccccc") %>
<% ntable("#cccccc",2) %>
%( my $balance = $cust_main->balance )
% =~ s/^(\-?)(.*)$/$1<\/FONT>$money_char$2/;
Balance due |
<% $balance %> |
Billing type |
% if ( $cust_main->payby eq 'CARD' || $cust_main->payby eq 'DCRD' ) {
Credit card <% $cust_main->payby eq 'CARD' ? '(automatic)' : '(on-demand)' %>
|
Card number |
<% $cust_main->paymask %> |
%
%#false laziness w/elements/select-month_year.html & edit/cust_main/billing.html
%my( $mon, $year );
%my $date = $cust_main->paydate || '12-2037';
%if ( $date =~ /^(\d{4})-(\d{1,2})-\d{1,2}$/ ) { #PostgreSQL date format
% ( $mon, $year ) = ( $2, $1 );
%} elsif ( $date =~ /^(\d{1,2})-(\d{1,2}-)?(\d{4}$)/ ) {
% ( $mon, $year ) = ( $1, $3 );
%} else {
% warn "unrecognized expiration date format: $date";
% ( $mon, $year ) = ( '', '' );
%}
%
Expiration |
<% "$mon/$year" %> |
% if ( $cust_main->paystart_month ) {
Start date |
<% $cust_main->paystart_month. '/'. $cust_main->paystart_year %>
|
% } elsif ( $cust_main->payissue ) {
Issue # |
<% $cust_main->payissue %>
|
% }
Name on card |
<% $cust_main->payname %> |
% } elsif ( $cust_main->payby eq 'CHEK' || $cust_main->payby eq 'DCHK') {
% my( $account, $aba ) = split('@', $cust_main->paymask );
Electronic check <% $cust_main->payby eq 'CHEK' ? '(automatic)' : '(on-demand)' %>
|
ABA/Routing code |
<% $aba %> |
Account number |
<% $account %> |
Account type |
<% $cust_main->paytype %> |
Bank name |
<% $cust_main->payname %> |
% if ( $conf->exists('show_bankstate') ) {
<% $paystate_label %> |
<% $cust_main->paystate || ' ' %> |
% }
% } elsif ( $cust_main->payby eq 'LECB' ) {
% $cust_main->payinfo =~ /^(\d{3})(\d{3})(\d{4})$/;
% my $payinfo = "$1-$2-$3";
%
Phone bill billing
Phone number |
<% $payinfo %> |
% } elsif ( $cust_main->payby eq 'BILL' ) {
Billing
% if ( $cust_main->payinfo ) {
P.O. |
<% $cust_main->payinfo %> |
% }
Attention |
<% $cust_main->payname %> |
% } elsif ( $cust_main->payby eq 'COMP' ) {
Complimentary
Authorized by |
<% $cust_main->payinfo %> |
%
%#false laziness w/above etc.
%my( $mon, $year );
%my $date = $cust_main->paydate || '12-2037';
%if ( $date =~ /^(\d{4})-(\d{1,2})-\d{1,2}$/ ) { #PostgreSQL date format
% ( $mon, $year ) = ( $2, $1 );
%} elsif ( $date =~ /^(\d{1,2})-(\d{1,2}-)?(\d{4}$)/ ) {
% ( $mon, $year ) = ( $1, $3 );
%} else {
% warn "unrecognized expiration date format: $date";
% ( $mon, $year ) = ( '', '' );
%}
%
Expiration |
<% "$mon/$year" %> |
% }
% my @exempt_groups = grep /\S/, $conf->config('tax-cust_exempt-groups');
Tax exempt<% @exempt_groups ? ' (all taxes)' : '' %> |
<% $cust_main->tax ? 'yes' : 'no' %> |
% foreach my $exempt_group ( @exempt_groups ) {
Tax exempt (<% $exempt_group %> taxes) |
<% $cust_main->tax_exemption($exempt_group) ? 'yes' : 'no' %> |
% }
% if ( $conf->exists('enable_taxproducts') ) {
Tax location |
<% $cust_main->geocode('cch') %> |
% }
Postal invoices |
<% ( grep { $_ eq 'POST' } @invoicing_list ) ? 'yes' : 'no' %>
|
FAX invoices |
<% ( grep { $_ eq 'FAX' } @invoicing_list ) ? 'yes' : 'no' %>
|
Email invoices |
<% join(', ', grep { $_ !~ /^(POST|FAX)$/ } @invoicing_list ) || 'no' %>
|
Invoice terms |
<% $cust_main->invoice_terms || 'Default ('. ( $conf->config('invoice_default_terms') || 'Payable upon receipt' ). ')' %>
|
% if ( $conf->exists('voip-cust_cdr_spools') ) {
Spool CDRs |
<% $cust_main->spool_cdr ? 'yes' : 'no' %> |
% }
% if ( $conf->exists('voip-cust_cdr_squelch') ) {
Print CDRs |
<% $cust_main->squelch_cdr ? 'no' : 'yes' %> |
% }
% if ( $conf->exists('voip-cust_email_csv_cdr') ) {
Email CDRs as CSV |
<% $cust_main->email_csv_cdr ? 'yes' : 'no' %> |
% }
% if ( $show_term || $cust_main->cdr_termination_percentage ) {
CDR termination settlement |
<% $cust_main->cdr_termination_percentage %><% $cust_main->cdr_termination_percentage =~ /\d/ ? '%' : '' %> |
% }
<%once>
my $paystate_label = FS::Msgcat::_gettext('paystate');
$paystate_label = 'Bank state' if $paystate_label =~/^paystate$/;
%once>
<%init>
my( $cust_main ) = @_;
my @invoicing_list = $cust_main->invoicing_list;
my $conf = new FS::Conf;
my $money_char = $conf->config('money_char') || '$';
#false laziness w/edit/cust_main/billing.html
my $term_sql = "SELECT COUNT(*) FROM cust_pkg LEFT JOIN part_pkg USING ( pkgpart ) WHERE custnum = ? AND plan = 'cdr_termination' LIMIT 1";
my $term_sth = dbh->prepare($term_sql) or die dbh->errstr;
$term_sth->execute($cust_main->custnum) or die $term_sth->errstr;
my $show_term = $term_sth->fetchrow_arrayref->[0];
%init>