-
- map { $tax .= qq|<option value=\"$_->{taxkey}--$_->{rate}\">$_->{taxdescription} |.($_->{rate} * 100).qq| %|} @{ $form->{TAX} };
- $form->{taxchart} = $tax;
- $form->{selecttaxchart} = $tax;
-
- # forex
- $form->{forex} = $form->{exchangerate};
- $exchangerate = ($form->{exchangerate}) ? $form->{exchangerate} : 1;
- foreach $key (keys %{ $form->{AR_links} }) {
-
- foreach $ref (@{ $form->{AR_links}{$key} }) {
- if ($key eq "AR_paid") {
- $form->{"select$key"} .= "<option value=\"$ref->{accno}\">$ref->{accno}--$ref->{description}</option>\n";
- } else {
- $form->{"select$key"} .= "<option value=\"$ref->{accno}--$ref->{taxkey}\">$ref->{accno}--$ref->{description}</option>\n";
- }
- }
-
- $form->{$key} = $form->{"select$key"};
- # if there is a value we have an old entry
- $j = 0;
- for $i (1 .. scalar @{ $form->{acc_trans}{$key} }) {
- if ($key eq "AR_paid") {
- $j++;
- $form->{"AR_paid_$j"} = "$form->{acc_trans}{$key}->[$i-1]->{accno}--$form->{acc_trans}{$key}->[$i-1]->{description}";
- # reverse paid
- $form->{"paid_$j"} = $form->{acc_trans}{$key}->[$i-1]->{amount} * -1;
- $form->{"datepaid_$j"} = $form->{acc_trans}{$key}->[$i-1]->{transdate};
- $form->{"source_$j"} = $form->{acc_trans}{$key}->[$i-1]->{source};
- $form->{"memo_$j"} = $form->{acc_trans}{$key}->[$i-1]->{memo};
-
- $form->{"forex_$j"} = $form->{"exchangerate_$i"} = $form->{acc_trans}{$key}->[$i-1]->{exchangerate};
- $form->{"AR_paid_$j"} = "$form->{acc_trans}{$key}->[$i-1]->{accno}";
- $form->{paidaccounts}++;
- } else {
-
- $akey = $key;
- $akey =~ s/AR_//;
-
- if ($key eq "AR_tax") {
- $form->{"${key}_$form->{acc_trans}{$key}->[$i-1]->{accno}"} = "$form->{acc_trans}{$key}->[$i-1]->{accno}--$form->{acc_trans}{$key}->[$i-1]->{description}";
- $form->{"${akey}_$form->{acc_trans}{$key}->[$i-1]->{accno}"} = $form->round_amount($form->{acc_trans}{$key}->[$i-1]->{amount} / $exchangerate, 2);
-
- if ($form->{"$form->{acc_trans}{$key}->[$i-1]->{accno}_rate"} > 0) {
- $totaltax += $form->{"${akey}_$form->{acc_trans}{$key}->[$i-1]->{accno}"};
- $taxrate += $form->{"$form->{acc_trans}{$key}->[$i-1]->{accno}_rate"};
- } else {
- $totalwithholding += $form->{"${akey}_$form->{acc_trans}{$key}->[$i-1]->{accno}"};
- $withholdingrate += $form->{"$form->{acc_trans}{$key}->[$i-1]->{accno}_rate"};
- }
-
- } else {
- $form->{"${akey}_$i"} = $form->round_amount($form->{acc_trans}{$key}->[$i-1]->{amount} / $exchangerate, 2);
- if ($akey eq 'amount') {
- $form->{rowcount}++;
- $totalamount += $form->{"${akey}_$i"};
-
- $form->{"oldprojectnumber_$i"} = $form->{"projectnumber_$i"} = "$form->{acc_trans}{$key}->[$i-1]->{projectnumber}";
- $form->{taxrate} = $form->{acc_trans}{$key}->[$i-1]->{rate};
- $form->{"project_id_$i"} = "$form->{acc_trans}{$key}->[$i-1]->{project_id}";
- }
- $form->{"${key}_$i"} = "$form->{acc_trans}{$key}->[$i-1]->{accno}--$form->{acc_trans}{$key}->[$i-1]->{description}";
- $form->{"${key}_$i"} = "$form->{acc_trans}{$key}->[$i-1]->{accno}--$form->{acc_trans}{$key}->[$i-1]->{description}";
- $form->{"select${key}"} =~ /(<option value=\"$form->{acc_trans}{$key}->[$i-1]->{accno}--[^\"]*\">$form->{acc_trans}{$key}->[$i-1]->{accno}--$form->{acc_trans}{$key}->[$i-1]->{description}<\/option>\n)/;
- $test = $1;
- $form->{"select${key}"} = $1;
- if ($akey eq 'amount') {
- $form->{selecttaxchart} =~ /(<option value=\"$form->{acc_trans}{$key}->[$i-1]->{taxkey}--[^<]*)/;
- $form->{selecttaxchart} = $1;
- }
- }
- }
- }
- }
-
- $form->{taxincluded} = $taxincluded if ($form->{id});
- $form->{paidaccounts} = 1 if not defined $form->{paidaccounts};
-
- if ($form->{taxincluded} && $form->{taxrate} && $totalamount) {
- # add tax to amounts and invtotal
- for $i (1 .. 1) {
- $taxamount = ($totaltax + $totalwithholding) * $form->{"amount_$i"} / $totalamount;
- $tax = $form->round_amount($taxamount, 2);
- $diff += ($taxamount - $tax);
- $form->{"amount_$i"} += $tax;
- }
- $form->{amount_1} += $form->round_amount($diff, 2);
- }
-
- # check if calculated is equal to stored
- if ($form->{taxincluded} && $form->{taxrate} && $withholdingrate) {
- if ($form->{"taxrate"} > 0) {
- $taxamount = $form->round_amount(($form->{amount_1} - ($form->{amount_1} / ($form->{taxrate} + 1))), 2);
- } else {
- $taxamount = $form->round_amount(($totalamount + $totaltax + $totalwithholding) * $withholdingrate / (1 - $withholdingrate), 2) * $form->{"taxrate"} / $withholdingrate;
- }
- } else {
- $taxamount = $totalamount * $form->{"taxrate"};
- }
- $taxamount = $form->round_amount($taxamount, 2);
- $form->{tax} = $taxamount;