billing event cloning
[freeside.git] / httemplate / edit / process / quick-charge.cgi
index 3c7cac5..839a4e9 100644 (file)
@@ -14,6 +14,7 @@ die "access denied"
   unless $FS::CurrentUser::CurrentUser->access_right('One-time charge');
 
 my $error = '';
+my $conf = new FS::conf;
 my $param = $cgi->Vars;
 
 my @description = ();
@@ -30,8 +31,21 @@ $param->{"amount"} =~ /^\s*(\d+(\.\d{1,2})?)\s*$/
   or $error .= "Illegal amount " . $param->{"amount"} . "  ";
 my $amount = $1;
 
+my $quantity = 1;
+if ( $cgi->param('quantity') =~ /^\s*(\d+)\s*$/ ) {
+  $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 ) {
@@ -40,8 +54,12 @@ unless ( $error ) {
 
   $error ||= $cust_main->charge( {
     'amount'     => $amount,
+    'quantity'   => $quantity,
     'pkg'        => scalar($cgi->param('pkg')),
     'taxclass'   => scalar($cgi->param('taxclass')),
+    'taxproductnum' => scalar($cgi->param('taxproductnum')),
+    'tax_override' => $override,
+    'classnum'   => scalar($cgi->param('classnum')),
     'additional' => \@description,
   } );
 }