From 9475cae8f0ea21e5f69d28ee71f835cd4ac8a64d Mon Sep 17 00:00:00 2001 From: Philip Reetz Date: Mon, 2 Jan 2006 19:06:52 +0000 Subject: [PATCH] Fehler bei Splitbuchungen beseitigt, wenn mit Steuer inkl. gebucht wurde --- SL/AR.pm | 30 ++++++++++------- bin/mozilla/ar.pl | 82 ++++++++++++++++------------------------------- 2 files changed, 46 insertions(+), 66 deletions(-) diff --git a/SL/AR.pm b/SL/AR.pm index 75dc0264b..a6b0f42d3 100644 --- a/SL/AR.pm +++ b/SL/AR.pm @@ -55,10 +55,11 @@ sub post_transaction { $form->{transdate}, 'buy'); } for $i (1 .. $form->{rowcount}) { - $form->{AR_amounts}{"amount_$i"} = (split(/--/, $form->{"AR_amount_$i"}))[0]; + $form->{AR_amounts}{"amount_$i"} = + (split(/--/, $form->{"AR_amount_$i"}))[0]; } ($form->{AR_amounts}{receivables}) = split(/--/, $form->{ARselected}); - ($form->{AR}{receivables}) = split(/--/, $form->{ARselected}); + ($form->{AR}{receivables}) = split(/--/, $form->{ARselected}); $form->{exchangerate} = ($exchangerate) @@ -85,28 +86,33 @@ sub post_transaction { $form->{taxincluded} = 0 if ($form->{amount} == 0); for $i (1 .. $form->{rowcount}) { - ($form->{"taxkey_$i"}, $NULL) = split /--/, $form->{"taxchart_$i"}; + ($form->{"taxkey_$i"}, $NULL) = split /--/, $form->{"taxchart_$i"}; $query = qq| SELECT c.accno, t.rate FROM chart c, tax t where c.id=t.chart_id AND t.taxkey=$form->{"taxkey_$i"}|; $sth = $dbh->prepare($query); $sth->execute || $form->dberror($query); - ($form->{AR_amounts}{"tax_$i"}, $form->{"taxrate_$i"}) = $sth->fetchrow_array; - $form->{AR_amounts}{"tax_$i"}{taxkey} = $form->{"taxkey_$i"}; + ($form->{AR_amounts}{"tax_$i"}, $form->{"taxrate_$i"}) = + $sth->fetchrow_array; + $form->{AR_amounts}{"tax_$i"}{taxkey} = $form->{"taxkey_$i"}; $form->{AR_amounts}{"amount_$i"}{taxkey} = $form->{"taxkey_$i"}; $sth->finish; if (!$form->{"korrektur_$i"}) { if ($form->{taxincluded} *= 1) { - $tax = $form->{"amount_$i"} - ($form->{"amount_$i"} / ($form->{"taxrate_$i"} + 1)); + $tax = + $form->{"amount_$i"} - + ($form->{"amount_$i"} / ($form->{"taxrate_$i"} + 1)); $amount = $form->{"amount_$i"} - $tax; $form->{"amount_$i"} = $form->round_amount($amount, 2); $diff += $amount - $form->{"amount_$i"}; $form->{"tax_$i"} = $form->round_amount($tax, 2); $form->{netamount} += $form->{"amount_$i"}; + } else { + $form->{"tax_$i"} = $form->{"amount_$i"} * $form->{"taxrate_$i"}; + $form->{"tax_$i"} = + $form->round_amount($form->{"tax_$i"} * $form->{exchangerate}, 2); } - $form->{"tax_$i"} = $form->{"amount_$i"} * $form->{"taxrate_$i"}; - $form->{"tax_$i"} = $form->round_amount($form->{"tax_$i"} * $form->{exchangerate}, 2); } $form->{total_tax} += $form->{"tax_$i"}; } @@ -223,9 +229,11 @@ sub post_transaction { WHERE c.accno = '$form->{AR_amounts}{"amount_$i"}'), $form->{"amount_$i"}, '$form->{transdate}', $project_id, '$taxkey')|; $dbh->do($query) || $form->dberror($query); - if ($form->{"tax_$i"} !=0) { + if ($form->{"tax_$i"} != 0) { + # insert detail records in acc_trans - $query = qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, + $query = + qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, project_id, taxkey) VALUES ($form->{id}, (SELECT c.id FROM chart c WHERE c.accno = '$form->{AR_amounts}{"tax_$i"}'), @@ -234,6 +242,7 @@ sub post_transaction { } } } + # add recievables $query = qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, project_id) @@ -242,7 +251,6 @@ sub post_transaction { $form->{receivables}, '$form->{transdate}', $project_id)|; $dbh->do($query) || $form->dberror($query); - # add paid transactions for my $i (1 .. $form->{paidaccounts}) { if ($form->{"paid_$i"} != 0) { diff --git a/bin/mozilla/ar.pl b/bin/mozilla/ar.pl index eaa0f2224..d70bc3c90 100644 --- a/bin/mozilla/ar.pl +++ b/bin/mozilla/ar.pl @@ -116,7 +116,8 @@ sub create_links { $form->{duedate} = $duedate if $duedate; $form->{oldcustomer} = "$form->{customer}--$form->{customer_id}"; - $form->{rowcount} = 1; + $form->{rowcount} = 1; + # currencies @curr = split /:/, $form->{currencies}; chomp $curr[0]; @@ -182,7 +183,7 @@ sub create_links { # if there is a value we have an old entry my $j = 0; my $k = 0; - print(STDERR Dumper($form->{acc_trans})); + for $i (1 .. scalar @{ $form->{acc_trans}{$key} }) { if ($key eq "AR_paid") { $j++; @@ -205,7 +206,7 @@ sub create_links { $akey = $key; $akey =~ s/AR_//; - if ($key eq "AR_tax") { + if ($key eq "AR_tax" || $key eq "AP_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}"} = @@ -223,11 +224,10 @@ sub create_links { $form->{"${akey}_$form->{acc_trans}{$key}->[$i-1]->{accno}"}; $withholdingrate += $form->{"$form->{acc_trans}{$key}->[$i-1]->{accno}_rate"}; - } - print(STDERR $form->{acc_trans}{$key}->[$i - 1]->{amount}, " ACC_TRANS\n"); - print(STDERR "$key KEY, $k Zeile\n"); + } $index = $form->{acc_trans}{$key}->[$i - 1]->{index}; $form->{"tax_$index"} = $form->{acc_trans}{$key}->[$i - 1]->{amount}; + $totaltax += $form->{"tax_$index"}; } else { $k++; @@ -275,33 +275,15 @@ sub create_links { ($totaltax + $totalwithholding) * $form->{"amount_$i"} / $totalamount; $tax = $form->round_amount($taxamount, 2); $diff += ($taxamount - $tax); - $form->{"amount_$i"} += $tax; + $form->{"amount_$i"} += $form->{"tax_$i"}; } $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; - $form->{invtotal} = $totalamount + $totaltax + $totalwithholding; + $form->{invtotal} = $totalamount + $totaltax; $form->{locked} = ($form->datetonum($form->{transdate}, \%myconfig) <= @@ -353,8 +335,9 @@ sub form_header { s/option>\Q$form->{$item}\E/option selected>$form->{$item}/; } $selectAR_amount_unquoted = $form->{selectAR_amount}; - $taxchart = $form->{taxchart}; - map { $form->{$_} =~ s/\"/"/g } qw(AR_amount selectAR_amount AR taxchart); + $taxchart = $form->{taxchart}; + map { $form->{$_} =~ s/\"/"/g } + qw(AR_amount selectAR_amount AR taxchart); # format amounts $form->{exchangerate} = @@ -438,14 +421,12 @@ sub form_header { $button1 = qq| {transdate}> text('button') - . qq|> + . $locale->text('button') . qq|> |; $button2 = qq| {duedate}> text('button') - . qq|> + . $locale->text('button') . qq|> |; #write Trigger @@ -571,23 +552,23 @@ $jsscript |; - - $amount = $locale->text('Amount'); $project = $locale->text('Project'); for $i (1 .. $form->{rowcount}) { # format amounts - $form->{"amount_$i"} = $form->format_amount(\%myconfig, $form->{"amount_$i"}, 2); + $form->{"amount_$i"} = + $form->format_amount(\%myconfig, $form->{"amount_$i"}, 2); $form->{"tax_$i"} = $form->format_amount(\%myconfig, $form->{"tax_$i"}, 2); $selectAR_amount = $selectAR_amount_unquoted; - $selectAR_amount =~ s/option value=\"$form->{"AR_amount_$i"}\"/option value=\"$form->{"AR_amount_$i"}\" selected/; + $selectAR_amount =~ + s/option value=\"$form->{"AR_amount_$i"}\"/option value=\"$form->{"AR_amount_$i"}\" selected/; $tax = $taxchart; $tax_selected = $form->{"taxchart_$i"}; $tax =~ s/value=\"$tax_selected\"/value=\"$tax_selected\" selected/; $tax = - qq||; + qq||; print qq| @@ -605,9 +586,6 @@ $jsscript $project = ""; } - - - $form->{invtotal} = $form->format_amount(\%myconfig, $form->{invtotal}, 2); print qq| @@ -648,8 +626,7 @@ $jsscript + . $locale->text('Incoming Payments') . qq| |; @@ -816,9 +793,9 @@ sub update { $form->{invtotal} = 0; -# $form->{selectAR_amount} = $form->{AR_amount}; -# $form->{selectAR_amount} =~ -# s/value=\"$form->{AR_amountselected}\"/value=\"$form->{AR_amountselected}\" selected/; + # $form->{selectAR_amount} = $form->{AR_amount}; + # $form->{selectAR_amount} =~ + # s/value=\"$form->{AR_amountselected}\"/value=\"$form->{AR_amountselected}\" selected/; $form->{selectAR} = $form->{AR}; @@ -843,8 +820,7 @@ sub update { for $i (1 .. $form->{rowcount}) { $form->{"amount_$i"} = $form->parse_amount(\%myconfig, $form->{"amount_$i"}); - $form->{"tax_$i"} = - $form->parse_amount(\%myconfig, $form->{"tax_$i"}); + $form->{"tax_$i"} = $form->parse_amount(\%myconfig, $form->{"tax_$i"}); if ($form->{"amount_$i"}) { push @a, {}; $j = $#a; @@ -887,7 +863,6 @@ sub update { &check_project; - $form->{invtotal} = ($form->{taxincluded}) ? $form->{invtotal} : $form->{invtotal} + $totaltax; @@ -1083,14 +1058,12 @@ sub search { $button1 = qq| + . $locale->text('button') . qq|> |; $button2 = qq| + . $locale->text('button') . qq|> |; #write Trigger @@ -1309,10 +1282,9 @@ sub ar_transactions { $option .= $locale->text('Closed'); } - @columns = - $form->sort_columns( + @columns = $form->sort_columns( qw(transdate id invnumber ordnumber name netamount tax amount paid datepaid due duedate notes employee shippingpoint shipvia) - ); + ); foreach $item (@columns) { if ($form->{"l_$item"} eq "Y") { -- 2.20.1
| - . $locale->text('Incoming Payments') - . qq|
text('button') - . qq|> text('button') - . qq|>