configurable payment date for auto CHEK/CARD, RT10813
[freeside.git] / httemplate / edit / cust_main / billing.html
index 353f2b9..530aa09 100644 (file)
       return true;
     }
 
+    function init_payauto_changed(){
+        var f = document.getElementById('CARD_payauto');
+        if(f != null) payauto_changed(f);
+        f = document.getElementById('CHEK_payauto');
+        if(f != null) payauto_changed(f);
+    }
+
+    function payauto_changed(payauto_field){
+        var span = (payauto_field.name == 'CARD_payauto') ? 'card_billday' : 'chek_billday';
+        var select = document.getElementById('select_'+span);
+        span = document.getElementById(span);
+        if (span == null || select == null) return;
+        if(payauto_field.checked) {
+            span.style.color = '#000000';
+            select.disabled = false;
+        }
+        else {
+            span.style.color = '#999999';
+            select.disabled = true;
+            select.selectedIndex = 0;
+        }
+    }
+
   </SCRIPT>
 
   <% include('/elements/init_overlib.html') %>
 %    $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 .= "<OPTION VALUE='$billday' $sel>$billday</OPTION>";
+%   }
+%   $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' =>
 %      '<TABLE BGCOLOR="#cccccc" BORDER=0 CELLSPACING=0 HEIGHT=192>'.
 %
 %        qq!<TR><TD ALIGN="right" WIDTH="200">${r}Card number </TD>!.
-%          qq!<TD WIDTH="408"><INPUT TYPE="text" NAME="CARD_payinfo" VALUE="!. ( $payby =~ /^(CARD|DCRD)$/ ? $payinfo : '' ). qq!" MAXLENGTH=19 onChange="card_changed(this)" onKeyUp="card_changed(this)"></TD></TR>!.
+%          qq!<TD WIDTH="408"><INPUT TYPE="text" ID="CARD_payauto" NAME="CARD_payinfo" VALUE="!. ( $payby =~ /^(CARD|DCRD)$/ ? $payinfo : '' ). qq!" MAXLENGTH=19 onChange="card_changed(this)" onKeyUp="card_changed(this)"></TD></TR>!.
 %
 %        qq!<TR><TD ALIGN="right" WIDTH="200">${r}Expiration </TD>!.
 %          '<TD WIDTH="408">'.
 %        qq!<TR><TD ALIGN="right" WIDTH="200">${r}Exact name on card </TD>!.
 %          qq!<TD WIDTH="408"><INPUT TYPE="text" NAME="CARD_payname" VALUE="!. ( $payby =~ /^(CARD|DCRD)$/ ? $cust_main->payname : '' ). qq!"></TD></TR>!.
 %
-%        qq!<TR><TD COLSPAN=2 WIDTH="608"><INPUT TYPE="checkbox" NAME="CARD_payauto" !. ( $payby eq 'DCRD' ? '' : 'CHECKED' ). '> Charge future payments to this card automatically</TD></TR>'.
+%        qq!<TR><TD COLSPAN=2 WIDTH="608">!.
+%           qq!<INPUT TYPE="checkbox" onchange="payauto_changed(this);" NAME="CARD_payauto" $CARD_payauto_checked> !.
+%           qq!Charge future payments to this card automatically</TD></TR>!.
+%
+%      ( $conf->exists('cust_main-select-billday') ?
+%           qq!<TR><TD ALIGN="RIGHT" id="card_billday" $card_billday_style>
+%                       Charge on this day of each month</TD><TD> &nbsp; 
+%                       <SELECT NAME="billday">!
+%                . billday_options($cust_main->billday) . qq!</SELECT> </TD></TR>!
+%        : ''
+%      ).
 %
 %      '</TABLE>',
 %
 %       ).
 %
 %
-%        qq!<TR><TD COLSPAN=4 WIDTH="608"><INPUT TYPE="checkbox" NAME="CHEK_payauto" !. ( $payby eq 'DCHK' ? '' : 'CHECKED' ). '> Charge future payments to this electronic check automatically</TD></TR>'.
+%        qq!<TR><TD COLSPAN=4 WIDTH="608">!.
+%           qq!<INPUT TYPE="checkbox" onchange="payauto_changed(this);" ID="CHEK_payauto" NAME="CHEK_payauto" $CHEK_payauto_checked> !.
+%              qq!Charge future payments to this electronic check automatically</TD></TR>!.
 %
-%        '<TR><TD>&nbsp;</TD></TR>'.
-%        '<TR><TD>&nbsp;</TD></TR>'.
-%        '<TR><TD>&nbsp;</TD></TR>'.
+%      ( $conf->exists('cust_main-select-billday') ?
+%           qq!<TR><TD ALIGN="RIGHT" id="chek_billday" $chek_billday_style>
+%                    Charge on this day of each month </TD><TD> &nbsp;
+%                   <SELECT NAME="billday">!
+%                . billday_options($cust_main->billday) . qq!</SELECT> </TD></TR>!
+%        : ''
+%      ).
 %
 %      '</TABLE>',
 %
 %        qq!<INPUT TYPE="hidden" NAME="BILL_exp_year" VALUE="2037">!.
 %
 %        qq!<TR><TD ALIGN="right" WIDTH="200">Attention </TD>!.
-%          qq!<TD WIDTH="408"><INPUT TYPE="text" NAME="BILL_payname" VALUE="!. ( $payby eq 'BILL' ? $cust_main->payname : '' ). qq!"></TD></TR>!.
+%          qq!<TD WIDTH="408"><INPUT TYPE="text" NAME="BILL_payname" VALUE="!. encode_entities( $payby eq 'BILL' ? $cust_main->payname : '' ). qq!"></TD></TR>!.
 %
 %        '<TR><TD>&nbsp;</TD></TR>'.
 %        '<TR><TD>&nbsp;</TD></TR>'.
                   'labels'     => \%allopt,
                   'html_between' => '</TD></TR></TABLE>',
                   'layer_callback' => sub { my $layer = shift; $payby{$layer}; },
+                  'onchange'    => 'init_payauto_changed();',
               )
     %>
 
 
     <TR><TD>&nbsp;</TD></TR>
 
+%   my @exempt_groups = grep /\S/, $conf->config('tax-cust_exempt-groups');
+
     <TR>
-      <TD WIDTH="608" COLSPAN="2"><INPUT TYPE="checkbox" NAME="tax" VALUE="Y" <% $cust_main->tax eq "Y" ? 'CHECKED' : '' %>> Tax Exempt</TD>
+      <TD WIDTH="608" COLSPAN="2"><INPUT TYPE="checkbox" NAME="tax" VALUE="Y" <% $cust_main->tax eq "Y" ? 'CHECKED' : '' %>> Tax Exempt<% @exempt_groups ? ' (all taxes)' : '' %></TD>
     </TR>
 
+%   foreach my $exempt_group ( @exempt_groups ) {
+%     #escape $exempt_group for NAME
+      <TR>
+        <TD WIDTH="608" COLSPAN="2">&nbsp;&nbsp;<INPUT TYPE="checkbox" NAME="tax_<% $exempt_group %>" VALUE="Y" <% $cust_main->tax_exemption($exempt_group) ? 'CHECKED' : '' %>> Tax Exempt (<% $exempt_group %> taxes)<TD>
+      </TR>
+%   }
+
 % unless ( $conf->exists('emailinvoiceonly') ) {
 
     <TR>
 
 % }
 
+% unless ( $conf->exists('cust-email-high-visibility')) {
     <TR>
       <TD ALIGN="right" WIDTH="200">
         <% $conf->exists('cust_main-require_invoicing_list_email') ? $r : '' %>Email address(es)
       </TD>
       <TD WIDTH="408"><INPUT TYPE="text" NAME="invoicing_list" VALUE="<% join(', ', grep { $_ !~ /^(POST|FAX)$/ } @invoicing_list ) %>"></TD>
     </TR>
+% }
 
     <TR>
       <TD ALIGN="right" WIDTH="200">Invoice terms </TD>
       <TD WIDTH="408">
-        <SELECT NAME="invoice_terms">
-          <OPTION VALUE="">Default (<% $conf->config('invoice_default_terms') || 'Payable upon receipt' %>)
-%         foreach my $term ( 'Payable upon receipt',
-%                            ( map "Net $_", 0, 10, 15, 20, 30, 45, 60 ),
-%                          ) {
-            <OPTION VALUE="<% $term %>" <% $cust_main->invoice_terms eq $term ? ' SELECTED' : '' %>><% $term %>
-%         }
-        </SELECT>
+        <% include('/elements/select-terms.html',
+                     'curr_value' => $cust_main->invoice_terms,
+                  )
+        %>
+      </TD>
+    </TR>
+    <TR>
+      <TD ALIGN="right" WIDTH="200">Credit limit </TD>
+      <TD WIDTH="408">
+        <SCRIPT TYPE="text/javascript">
+function toggle(obj) {
+  obj.form.credit_limit.disabled = obj.checked;
+}
+        </SCRIPT>
+        <INPUT TYPE="text" NAME="credit_limit" VALUE=<% sprintf('"%.2f"', $cust_main->credit_limit) %><% length($cust_main->credit_limit) ? '' : ' DISABLED' %>>
+        <INPUT TYPE="checkbox" NAME="no_credit_limit" VALUE=1 onclick="toggle(this)"<% length($cust_main->credit_limit) ? '' : ' CHECKED'%>> Unlimited
       </TD>
     </TR>
 
        <TD COLSPAN="2"><INPUT TYPE="checkbox" NAME="spool_cdr" VALUE="Y" <% $cust_main->spool_cdr eq "Y" ? 'CHECKED' : '' %>> Spool CDRs</TD>
       </TR>
 % } else { 
-
       <INPUT TYPE="hidden" NAME="spool_cdr" VALUE="<% $cust_main->spool_cdr %>">
-% } 
+% }
 
 % if ( $conf->exists('voip-cust_cdr_squelch') ) { 
       <TR>
-       <TD COLSPAN="2"><INPUT TYPE="checkbox" NAME="squelch_cdr" VALUE="Y" <% $cust_main->squelch_cdr eq "Y" ? 'CHECKED' : '' %>> Omit CDRs from invoices</TD>
+       <TD COLSPAN="2"><INPUT TYPE="checkbox" NAME="squelch_cdr" VALUE="Y" <% $cust_main->squelch_cdr eq "Y" ? 'CHECKED' : '' %>> Omit CDRs from printed invoices</TD>
       </TR>
 % } else { 
-
       <INPUT TYPE="hidden" NAME="squelch_cdr" VALUE="<% $cust_main->squelch_cdr %>">
-% } 
+% }
+
+% if ( $conf->exists('voip-cust_email_csv_cdr') ) { 
+      <TR>
+       <TD COLSPAN="2"><INPUT TYPE="checkbox" NAME="email_csv_cdr" VALUE="Y" <% $cust_main->email_csv_cdr eq "Y" ? 'CHECKED' : '' %>> Attach CDRs as CSV to emailed invoices</TD>
+      </TR>
+% } else { 
+      <INPUT TYPE="hidden" NAME="email_csv_cdr" VALUE="<% $cust_main->email_csv_cdr %>">
+% }
+
+% if ( $show_term || $cust_main->cdr_termination_percentage ) {
+      <TR>
+       <TD ALIGN="right">CDR termination settlement</TD>
+       <TD><INPUT TYPE  = "text"
+                  NAME  = "cdr_termination_percentage"
+                  SIZE  = 6
+                  VALUE = "<% $cust_main->cdr_termination_percentage %>"
+                  STYLE = "text-align:right;"
+        ><B>%</B></TD>
+      </TR>
+% } else {
+      <INPUT TYPE="hidden" NAME="cdr_termination_percentage" VALUE="<% $cust_main->cdr_termination_percentage %>">
+% }
 
   </TABLE>
 
   <% $r %> required fields
 % } 
 
+<script type="text/javascript">
+    init_payauto_changed();
+</script>
+
 <%once>
 
 my $paystate_label = FS::Msgcat::_gettext('paystate');
@@ -455,4 +562,13 @@ my @payby = grep /\w/, $conf->config('payby');
 @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>