- $form->{"taxaccounts_$index"} = $ref->{"accno"};
- if ($form->{"taxaccounts"} !~ /$ref->{accno}/) {
- $form->{"taxaccounts"} .= "$ref->{accno} ";
+ $ref->{"inventory_accno_id"} = undef unless $ref->{"is_part"};
+
+ my %accounts;
+ for my $type (qw(inventory income expense)) {
+ next unless $ref->{"${type}_accno_id"};
+ ($accounts{"${type}_accno_id"}, $accounts{"${type}_accno"}) =
+ $self->follow_account_chain($form, $dbh, $transdate, $ref->{"${type}_accno_id"}, $ref->{"${type}_accno"});
+ }
+
+ $form->{"${_}_accno_$index"} = $accounts{"${_}_accno"} for qw(inventory income expense);
+
+ $sth_tax->execute($accounts{$inc_exp}, quote_db_date($transdate));
+ $ref = $sth_tax->fetchrow_hashref or next;
+
+ $form->{"taxaccounts_$index"} = $ref->{"accno"};
+ $form->{"taxaccounts"} .= "$ref->{accno} "if $form->{"taxaccounts"} !~ /$ref->{accno}/;
+
+ $form->{"$ref->{accno}_${_}"} = $ref->{$_} for qw(rate description taxnumber);