specify Avalara tax product for per-line taxes, #73063
[freeside.git] / httemplate / elements / tr-part_pkg-taxproducts.html
index ad464ca..50dace7 100644 (file)
@@ -1,18 +1,39 @@
+%# by default, only show default
 <TR>
-  <TH COLSPAN=2>Tax products</TH>
+  <TH ALIGN="right"><% emt('Tax product') %></TH>
+  <TD><& select-taxproduct.html,
+        %opt,
+        'field'       => $field.'_', # expected in edit/process/part_pkg
+        'curr_value'  => $curr_values{''},
+      &>
+  </TD>
+</TR>
+% if ( !$separate ) {
+<TR STYLE="font-size: small">
+  <TD></TD>
+  <TD>
+  <BUTTON TYPE="button" ID="show_taxproduct_class">By usage class
+    <IMG SRC="<%$fsurl%>images/arrow.down.black.png">
+  </BUTTON>
+  </TD>
 </TR>
+<SCRIPT TYPE="text/javascript">
+$().ready(function() {
+  $('#show_taxproduct_class').on('click', function() {
+    this.disabled = true;
+    $('tr.taxproduct_class').show();
+  });
+});
+</SCRIPT>
+% }
 % foreach my $usage_class (@classes) {
 %   my $classnum = $usage_class->classnum;
-%   my $curr_value =
-%        $cgi->param("usage_taxproductnum_$classnum")
-%     || $pkg_options{"usage_taxproductnum_$classnum"}
-%     || '';
-<TR>
-  <TD><% $usage_class->classname %></TD>
+<TR CLASS="taxproduct_class" STYLE="<% $separate ? '' : 'display:none' %>">
+  <TH ALIGN="right"><% $usage_class->classname %></TH>
   <TD><& select-taxproduct.html,
         %opt,
         'field'       => $field.'_'.$classnum,
-        'curr_value'  => $curr_value
+        'curr_value'  => $curr_values{$classnum},
       &>
   </TD>
 </TR>
 <%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);
-  my %pkg_options = $part_pkg->options;
-  $pkg_options{'usage_taxproductnum_'} = $part_pkg->taxproductnum;
+  %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) );
 }
 
-my @classes = qsearch('usage_class', { 'disabled' => '' });
-unshift @classes,
-  FS::usage_class->new({ 'classnum' => '', 'classname' => '(default)', }),
-  FS::usage_class->new({ 'classnum' => 'setup', 'classname' => 'Setup', }),
-  FS::usage_class->new({ 'classnum' => 'recur', 'classname' => 'Recur', }),
-;
 </%init>