my @lines = map { $self->build_item($_) }
$cust_bill->cust_bill_pkg;
+ return if !@lines;
+
my $ClientNumber = $conf->config('suretax-client_number')
or die "suretax-client_number config required.\n";
my $ValidationKey = $conf->config('suretax-validation_key')
# assemble the request hash
my $request = $self->build_request;
+ if (!$request) {
+ warn "no taxable items in invoice; skipping SureTax request\n" if $DEBUG;
+ return;
+ }
warn "sending SureTax request\n" if $DEBUG;
my $request_json = $json->encode($request);
my %opt = @_;
my $field = delete($opt{field}) || 'taxproductnum';
my $pkgpart = delete($opt{pkgpart});
-my $part_pkg = FS::part_pkg->by_key($pkgpart);
-my %pkg_options = $part_pkg->options;
-$pkg_options{'usage_taxproductnum_'} = $part_pkg->taxproductnum;
+my %pkg_options;
+if ($pkgpart) {
+ my $part_pkg = FS::part_pkg->by_key($pkgpart);
+ my %pkg_options = $part_pkg->options;
+ $pkg_options{'usage_taxproductnum_'} = $part_pkg->taxproductnum;
+}
my @classes = qsearch('usage_class', { 'disabled' => '' });
unshift @classes,
name_col => 'description',
hashref => { data_vendor => $vendor },
order_by => 'order by taxstatus',
+ required => 1,
%opt
&>
}
$a .= qq[>$label</A> ];
+ $cgi->param('show', $opt{show});
} elsif ( $entry->{popup} ) {