summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FS/FS/Conf.pm7
-rw-r--r--FS/FS/part_pkg.pm4
-rw-r--r--httemplate/edit/process/quick-charge.cgi27
-rw-r--r--httemplate/view/cust_main/quick-charge.html53
4 files changed, 64 insertions, 27 deletions
diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm
index 0bf1afeeb..30aa1e7ab 100644
--- a/FS/FS/Conf.pm
+++ b/FS/FS/Conf.pm
@@ -1258,6 +1258,13 @@ httemplate/docs/config.html
},
{
+ 'key' => 'require_taxclasses',
+ 'section' => 'billing',
+ 'description' => 'Require a taxclass to be entered for every package',
+ 'type' => 'checkbox',
+ },
+
+ {
'key' => 'welcome_email',
'section' => '',
'description' => 'Template file for welcome email. Welcome emails are sent to the customer email invoice destination(s) each time a svc_acct record is created. See the <a href="http://search.cpan.org/~mjd/Text-Template/lib/Text/Template.pm">Text::Template</a> documentation for details on the template substitution language. The following variables are available<ul><li><code>$username</code> <li><code>$password</code> <li><code>$first</code> <li><code>$last</code> <li><code>$pkg</code></ul>',
diff --git a/FS/FS/part_pkg.pm b/FS/FS/part_pkg.pm
index db31e456f..73f3bae04 100644
--- a/FS/FS/part_pkg.pm
+++ b/FS/FS/part_pkg.pm
@@ -441,6 +441,10 @@ sub check {
return 'Unknown plan '. $self->plan
unless exists($plans{$self->plan});
+ my $conf = new FS::Conf;
+ return 'Taxclass is required'
+ if ! $self->taxclass && $conf->exists('require_taxclasses');
+
'';
}
diff --git a/httemplate/edit/process/quick-charge.cgi b/httemplate/edit/process/quick-charge.cgi
index 477f58508..9d9aa980a 100644
--- a/httemplate/edit/process/quick-charge.cgi
+++ b/httemplate/edit/process/quick-charge.cgi
@@ -9,15 +9,24 @@ $cgi->param('amount') =~ /^\s*(\d+(\.\d{1,2})?)\s*$/
or die 'illegal amount '. $cgi->param('amount');
my $amount = $1;
-my $cust_main = qsearchs('cust_main', { 'custnum' => $custnum } )
- or die "unknown custnum $custnum";
-
-my $error = $cust_main->charge(
- $amount,
- $cgi->param('pkg'),
- '$'. sprintf("%.2f",$amount),
- $cgi->param('taxclass')
-);
+my( $error, $cust_main);
+if ( $cgi->param('taxclass') eq '(select)' ) {
+
+
+ $error = "Must select a tax class";
+} else {
+
+ my $cust_main = qsearchs('cust_main', { 'custnum' => $custnum } )
+ or die "unknown custnum $custnum";
+
+ $error = $cust_main->charge(
+ $amount,
+ $cgi->param('pkg'),
+ '$'. sprintf("%.2f",$amount),
+ $cgi->param('taxclass')
+ );
+
+}
if ($error) {
%>
diff --git a/httemplate/view/cust_main/quick-charge.html b/httemplate/view/cust_main/quick-charge.html
index 0b51586d1..9e4fb8c6e 100644
--- a/httemplate/view/cust_main/quick-charge.html
+++ b/httemplate/view/cust_main/quick-charge.html
@@ -6,26 +6,43 @@
<FORM ACTION="<%=$p%>edit/process/quick-charge.cgi" METHOD="POST">
<INPUT TYPE="hidden" NAME="custnum" VALUE="<%= $cust_main->custnum %>">
Description:<INPUT TYPE="text" NAME="pkg">
-&nbsp;Amount:<INPUT TYPE="text" NAME="amount" SIZE=6>
-&nbsp;<%
+Amount:<INPUT TYPE="text" NAME="amount" SIZE=6>
+<% #false laziness w/ edit/part_pkg.cgi %>
+<% if ( $conf->exists('enable_taxclasses') ) { %>
+
+ <SELECT NAME="taxclass">
+
+ <% if ( $conf->exists('require_taxclasses') ) { %>
+
+ <OPTION VALUE="(select)">Select tax class
+
+ <% } else { %>
+
+ <OPTION VALUE="">
+
+ <% } %>
+
+ <%
+ my $sth = dbh->prepare('SELECT DISTINCT taxclass FROM cust_main_county')
+ or die dbh->errstr;
+ $sth->execute or die $sth->errstr;
+ my %taxclasses = map { $_->[0] => 1 } @{$sth->fetchall_arrayref};
+ my @taxclasses = grep $_, keys %taxclasses;
+ %>
- #false laziness w/ edit/part_pkg.cgi
- if ( $conf->exists('enable_taxclasses') ) {
- print '<SELECT NAME="taxclass">';
- my $sth = dbh->prepare('SELECT DISTINCT taxclass FROM cust_main_county')
- or die dbh->errstr;
- $sth->execute or die $sth->errstr;
- foreach my $taxclass ( map $_->[0], @{$sth->fetchall_arrayref} ) {
- print qq!<OPTION VALUE="$taxclass"!;
- #print ' SELECTED' if $taxclass eq $hashref->{taxclass};
- print qq!>$taxclass</OPTION>!;
- }
- print '</SELECT>';
- } else {
- print '<INPUT TYPE="hidden" NAME="taxclass" VALUE="">';
- }
+ <% foreach my $taxclass ( @taxclasses ) { %>
+
+ <OPTION VALUE="<%= $taxclass %>"<%= 0 ? ' SELECTED' : '' %>><%= $taxclass %>
+
+ <% } %>
-%>
+ </SELECT>
+
+<% } else { %>
+
+ <INPUT TYPE="hidden" NAME="taxclass" VALUE="">';
+
+<% } %>
<INPUT TYPE="submit" VALUE="One-time charge">
</FORM>