%if ( $payby_default eq 'HIDE' ) {
%  $cust_main->payby('BILL') unless $cust_main->payby;
%  my $payby = $cust_main->payby;
  
  
% foreach my $field (qw( payname paycvv paystart_month paystart_year payissue payip paytype paystate billday )) { 
    
% } 
%  #false laziness w/elements/select-month_year.html & view/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 {
%    die "unrecognized expiration date format: $date";
%  }
  
  
  
  
% } else {
%
%  my $r = qq!* !;
  
<% mt('Billing information') |h %>
  <% &ntable("#cccccc") %>
    
      | <%$r%><% mt('Billing type') |h %><& /elements/init_overlib.html &>
%  my $payby = $cust_main->payby;
%  my $paytype = $cust_main->paytype;
%  my( $account, $aba ) = split('@', $payinfo);
%  my $branch = '';
%  ($branch,$aba) = split('\.',$aba)
%    if $conf->exists('cust_main-require-bank-branch');
%
%  my $disabled = 'DISABLED style="background-color: #dddddd"';
%  my $text_disabled = 'style="color: #999999"';
%
%  if ( $payby =~ /^(CARD|DCRD)$/ && cardtype($payinfo) =~ /^(Switch|Solo)$/ ) {
%    $disabled = 'style="background-color: #ffffff"';
%    $text_disabled = 'style="color: #000000";'
%  }
%
%  my $disable_payauto = $conf->exists('disable_payauto_default');
%  my $CARD_payauto_checked =   $payby eq 'DCRD' ? ''
%                             : $payby eq 'CARD' ? 'CHECKED'
%                             : $disable_payauto ? '' : 'CHECKED';
%  my $CHEK_payauto_checked =   $payby eq 'DCHK' ? ''
%                             : $payby eq 'CHEK' ? 'CHECKED'
%                             : $disable_payauto ? '' : 'CHECKED';
%
%  sub billday_options {
%   my $curr_value = shift;
%   my $ret = '';
%   for my $billday ( 1 .. 28 ) {
%       my $sel = '';
%       $sel = "SELECTED='SELECTED'" if $curr_value == $billday;
%       $ret .= "";
%   }
%   $ret;
%  }
%
%  my $card_billday_style = $payby eq 'CARD' ? '' : 'style="color: #999999"';
%  my $chek_billday_style = $payby eq 'CHEK' ? '' : 'style="color: #999999"';
%  my $card_billday_select_disabled = $payby eq 'CARD' ? '' : 'DISABLED';
%  my $chek_billday_select_disabled = $payby eq 'CHEK' ? '' : 'DISABLED';
%
%  my %payby = (
%
%    'CARD' =>
%
%      ' | '.
%
%        qq!| ${r}!.emt('Card number').qq!!.
%          qq! |  | 
!.
%
%        qq!| ${r}!.emt('Expiration').qq!!.
%          ' | '.
%
%          include('/elements/select-month_year.html',
%                    'prefix' => 'CARD_exp',
%                    'selected_date' =>
%                      ( $payby =~ /^(CARD|DCRD)$/ ? $cust_main->paydate : '' ),
%                 ).
%
%          ' | 
'.
%
%        qq!| !.emt('CVV2').qq! !.
%
%          qq!(!.emt('help').qq!)!.
%          qq!!.
%          ' | '.
%
%        qq! | 
| !.emt('Start date').qq!!.
%          ' | '.
%
%          include('/elements/select-month_year.html',
%                    'prefix' => 'CARD_paystart',
%                    'disabled' => $disabled,
%                    'empty_option' => 1,
%                    'start_year' => 2000,
%                    'end_year'   => (localtime())[5] + 1900,
%                    'selected_date' => (
%                      ( $payby =~ /^(CARD|DCRD)$/
%                        && cardtype($payinfo) =~ /^(Switch|Solo)$/ )
%                          ? $cust_main->paystart_month. '-'.
%                            $cust_main->paystart_year 
%                          : ''
%                    )
%                 ).
%
%        qq!!.emt('or Issue number').qq! !.
%          ' | 
!.
%
%        qq!| ${r}!.emt('Exact name on card').qq!!.
%          qq! |  | 
!.
%
%        qq!| !.
%           qq! !.
%           emt('Charge future payments to this [_1] automatically','credit card').' | 
'.
%
%      ( $conf->exists('cust_main-select-billday') ?
%        qq!| %                    Charge on this day of each month | % | 
!
%        : ''
%      ).
%
%      '
',
%
%    'CHEK' => 
%
%      '',
%
%    'LECB' =>  
%
%      '',
%
%    'BILL' =>  
%
%      '',
%
%    'COMP' =>   
%
%      '',
%
%    'CASH' =>
%
%      '',
%
%    'WEST' =>
%
%      '',
%
%    'MCRD' =>
%
%      '',
%
%  );
%
%  #this should use FS::payby
%  my @allopt = qw( CARD CHEK LECB BILL CASH WEST MCRD COMP );
%
%  my %allopt = map { $_ => FS::payby->shortname($_) } @allopt;
%
%  if ( $cust_main->custnum ) {
%    #don't offer CASH/WEST/MCRD initial payment types when editing customer
%    delete $allopt{$_} for qw(CASH WEST MCRD);
%  }
%  
%  my @options = grep exists( $allopt{$_} ), @payby;
%
%  my %payby2option = (
%    ( map { $_ => $_ } @options ),
%    'DCRD' => 'CARD',
%    'DCHK' => 'CHEK',
%  );
  <& /elements/selectlayers.html,
                  'field'      => 'payby',
                  'curr_value' => $payby2option{$payby || $payby_default || $payby[0] },
                  'options'    => \@options,
                  'labels'     => \%allopt,
                  'html_between' => ' | 
',
                  'layer_callback' => sub { my $layer = shift; $payby{$layer}; },
                  'onchange'    => 'init_payauto_changed();',
    &>
  <% &ntable("#cccccc") %>
    |  | 
%   my @exempt_groups = grep /\S/, $conf->config('tax-cust_exempt-groups');
    
      | tax eq "Y" ? 'CHECKED' : '' %>> Tax Exempt<% @exempt_groups ? ' (all taxes)' : '' %> | 
%   foreach my $exempt_group ( @exempt_groups ) {
%     #escape $exempt_group for NAME
      
        | tax_exemption($exempt_group) ? 'CHECKED' : '' %>> Tax Exempt (<% $exempt_group %> taxes) |  | 
%   }
% unless ( $conf->exists('emailinvoiceonly') ) {
    
      | > <% mt('Postal mail invoice') |h %> | 
    
      | > <% mt('Fax invoice') |h %> | 
% }
% unless ( $conf->exists('cust-email-high-visibility')) {
    
      | <% $conf->exists('cust_main-require_invoicing_list_email') ? $r : '' %>Email address(es) |  | 
% }
    
      | <% mt('Invoice terms') |h %> | <& /elements/select-terms.html,
                     'curr_value' => $cust_main->invoice_terms,
        &> | 
    
      | <% mt('Credit limit') |h %> | credit_limit) %><% length($cust_main->credit_limit) ? '' : ' DISABLED' %>>
        credit_limit) ? '' : ' CHECKED'%>> <% mt('Unlimited') |h %> | 
% if ( $conf->exists('voip-cust_cdr_spools') ) { 
      
       | spool_cdr eq "Y" ? 'CHECKED' : '' %>> <% mt('Spool CDRs') |h %> | 
% } else { 
      
% }
% if ( $conf->exists('voip-cust_cdr_squelch') ) { 
      
       | squelch_cdr eq "Y" ? 'CHECKED' : '' %>> <% mt($conf->exists('voip-cdr_email') ? 'Omit CDRs from printed invoices' : 'Omit CDRs from invoices') |h %> | 
% } else { 
      
% }
% if ( $conf->exists('voip-cust_email_csv_cdr') ) { 
      
       | email_csv_cdr eq "Y" ? 'CHECKED' : '' %>> <% mt('Attach CDRs as CSV to emailed invoices') |h %> | 
% } else { 
      
% }
% if ( $conf->exists('voip-cust_accountcode_cdr') ) { 
       
        | accountcode_cdr eq "Y" ? 'CHECKED' : '' %>
            > <% mt('Breakdown CDRs by accountcode') |h %> | 
% } else { 
       
% }
% if ( $show_term || $cust_main->cdr_termination_percentage ) {
      
       | <% mt('CDR termination settlement') |h %> | % | 
% } else {
      
% }
%my @available_locales = $conf->config('available-locales');
%if ( scalar(@available_locales) ) {
%   push @available_locales, '';
%    my %locale_labels = map { 
%        my %ll;
%        my %info = FS::Locales->locale_info($_);
%        $ll{$_} = $info{name} . " (" . $info{country} . ")";
%        %ll;
%    } FS::Locales->locales;
  <& /elements/tr-select.html, 
        'label'         => emt('Invoicing locale'),
        'field'         => 'locale',
        'options'       => \@available_locales,
        'labels'        => \%locale_labels,
        'curr_value'    => $cust_main->locale,
  &>
% }
  
  <% $r %> <% mt('required fields') |h %> 
% } 
<%once>
my $paystate_label = FS::Msgcat::_gettext('paystate');
$paystate_label = 'Bank state' if $paystate_label =~/^paystate$/;
%once>
<%init>
my( $cust_main, %options ) = @_;
my @invoicing_list = @{ $options{'invoicing_list'} };
my $payinfo = $options{'payinfo'};
my $conf = new FS::Conf;
my $payby_default = $conf->config('payby-default');
my @payby = grep /\w/, $conf->config('payby');
#@payby = (qw( CARD DCRD CHEK DCHK LECB BILL CASH WEST COMP ))
@payby = (qw( CARD DCRD CHEK DCHK LECB BILL CASH COMP ))
  unless @payby;
my $show_term = '';
if ( $cust_main->custnum ) {
  #false laziness w/view/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;
  $show_term = $term_sth->fetchrow_arrayref->[0];
}
%init>