%# by default, only show default <% emt('Tax product') %> <& select-taxproduct.html, %opt, 'field' => $field.'_', # expected in edit/process/part_pkg 'curr_value' => $curr_values{''}, &> % if ( !$separate ) { % } % foreach my $usage_class (@classes) { % my $classnum = $usage_class->classnum; <% $usage_class->classname %> <& select-taxproduct.html, %opt, 'field' => $field.'_'.$classnum, 'curr_value' => $curr_values{$classnum}, &> % } <%init> my %opt = @_; my $field = delete($opt{field}) || 'taxproductnum'; my @classes = qsearch('usage_class', { 'disabled' => '' }); unshift @classes, FS::usage_class->new({ 'classnum' => 'setup', 'classname' => 'Setup', }), FS::usage_class->new({ 'classnum' => 'recur', 'classname' => 'Recur', }), ; my $separate = 0; # will change to 1 if any non-default classes have values my $pkgpart = delete($opt{pkgpart}); my %curr_values; my %pkg_options; if ($pkgpart) { my $part_pkg = FS::part_pkg->by_key($pkgpart); %pkg_options = $part_pkg->options; $curr_values{''} = $cgi->param('taxproductnum') || $part_pkg->taxproductnum; } foreach my $usage_class (@classes) { my $classnum = $usage_class->classnum; my $curr_value = $cgi->param("usage_taxproductnum_$classnum") || $pkg_options{"usage_taxproductnum_$classnum"} || ''; $curr_values{$classnum} = $curr_value; $separate = 1 if ( length($classnum) and length($curr_value) ); }