% $cgi->param('error', $error );
<% $cgi->redirect($p.'quick-charge.html?'. $cgi->query_string) %>
% } else {
-<% header("One-time charge added") %>
+<% header(emt("One-time charge added")) %>
<SCRIPT TYPE="text/javascript">
window.top.location.reload();
</SCRIPT>
unless $FS::CurrentUser::CurrentUser->access_right('One-time charge');
my $error = '';
+my $conf = new FS::conf;
my $param = $cgi->Vars;
my @description = ();
or $error .= "Illegal customer number " . $param->{"custnum"} . " ";
my $custnum = $1;
-$param->{"amount"} =~ /^\s*(\d+(\.\d{1,2})?)\s*$/
+$param->{"amount"} =~ /^\s*(\d*(?:\.?\d{1,2}))\s*$/
or $error .= "Illegal amount " . $param->{"amount"} . " ";
my $amount = $1;
$quantity = $1;
}
+$param->{'tax_override'} =~ /^\s*([,\d]*)\s*$/
+ or $error .= "Illegal tax override " . $param->{"tax_override"} . " ";
+my $override = $1;
+
if ( $param->{'taxclass'} eq '(select)' ) {
- $error .= "Must select a tax class. ";
+ $error .= "Must select a tax class. "
+ unless ($conf->exists('enable_taxproducts') &&
+ ( $override || $param->{taxproductnum} )
+ );
+ $cgi->param('taxclass', '');
}
unless ( $error ) {
or $error .= "Unknown customer number $custnum. ";
$error ||= $cust_main->charge( {
- 'amount' => $amount,
- 'quantity' => $quantity,
- 'pkg' => scalar($cgi->param('pkg')),
- 'taxclass' => scalar($cgi->param('taxclass')),
- 'classnum' => scalar($cgi->param('classnum')),
- 'additional' => \@description,
+ 'amount' => $amount,
+ 'quantity' => $quantity,
+ 'bill_now' => scalar($cgi->param('bill_now')),
+ 'invoice_terms' => scalar($cgi->param('invoice_terms')),
+ 'start_date' => ( scalar($cgi->param('start_date'))
+ ? parse_datetime($cgi->param('start_date'))
+ : ''
+ ),
+ 'no_auto' => scalar($cgi->param('no_auto')),
+ 'pkg' => scalar($cgi->param('pkg')),
+ 'setuptax' => scalar($cgi->param('setuptax')),
+ 'taxclass' => scalar($cgi->param('taxclass')),
+ 'taxproductnum' => scalar($cgi->param('taxproductnum')),
+ 'tax_override' => $override,
+ 'classnum' => scalar($cgi->param('classnum')),
+ 'additional' => \@description,
} );
}