X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FIS.pm;h=fde061d00e38930bfada8e597e92d87475ec4d0a;hb=8e5b1f0e363dd22883e931006b8ac414bad9bbc5;hp=88c015d48a07ac08669f7c9018a33f91ad7237ab;hpb=4bcc6d5246fe26db457d9ae916963154fb89cda9;p=kivitendo-erp.git diff --git a/SL/IS.pm b/SL/IS.pm index 88c015d48..fde061d00 100644 --- a/SL/IS.pm +++ b/SL/IS.pm @@ -966,9 +966,12 @@ SQL } } - $form->{amount}{ $form->{id} }{ $form->{AR} } = $netamount + $tax; - $form->{paid} = - $form->round_amount($form->{paid} * $form->{exchangerate} + $diff, 2); + # Invoice Summary includes Rounding + my $totalamount = $netamount + $tax; + my $rounding = $form->round_amount( $form->round_amount( $totalamount, 2, 1 ) - $totalamount, 2 ); + my $rnd_accno = $rounding == 0 ? 0 : $rounding > 0 ? $form->{rndgain_accno} : $form->{rndloss_accno}; + $form->{amount}{ $form->{id} }{ $form->{AR} } = $totalamount = $form->round_amount( $totalamount, 2, 1 ); + $form->{paid} = $form->round_amount($form->{paid} * $form->{exchangerate} + $diff, 2); # reverse AR $form->{amount}{ $form->{id} }{ $form->{AR} } *= -1; @@ -986,9 +989,7 @@ SQL foreach my $trans_id (keys %{ $form->{amount_cogs} }) { foreach my $accno (keys %{ $form->{amount_cogs}{$trans_id} }) { next unless ($form->{expense_inventory} =~ /\Q$accno\E/); - $form->{amount_cogs}{$trans_id}{$accno} = $form->round_amount($form->{amount_cogs}{$trans_id}{$accno}, 2); - if (!$payments_only && ($form->{amount_cogs}{$trans_id}{$accno} != 0)) { $query = qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, tax_id, taxkey, project_id, chart_link) @@ -1001,7 +1002,6 @@ SQL foreach my $accno (keys %{ $form->{amount_cogs}{$trans_id} }) { $form->{amount_cogs}{$trans_id}{$accno} = $form->round_amount($form->{amount_cogs}{$trans_id}{$accno}, 2); - if (!$payments_only && ($form->{amount_cogs}{$trans_id}{$accno} != 0)) { $query = qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, tax_id, taxkey, project_id, chart_link) @@ -1015,9 +1015,7 @@ SQL foreach my $trans_id (keys %{ $form->{amount} }) { foreach my $accno (keys %{ $form->{amount}{$trans_id} }) { next unless ($form->{expense_inventory} =~ /\Q$accno\E/); - $form->{amount}{$trans_id}{$accno} = $form->round_amount($form->{amount}{$trans_id}{$accno}, 2); - if (!$payments_only && ($form->{amount}{$trans_id}{$accno} != 0)) { $query = qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, tax_id, taxkey, project_id, chart_link) @@ -1043,10 +1041,8 @@ SQL $form->{amount}{$trans_id}{$accno} = 0; } } - foreach my $accno (keys %{ $form->{amount}{$trans_id} }) { $form->{amount}{$trans_id}{$accno} = $form->round_amount($form->{amount}{$trans_id}{$accno}, 2); - if (!$payments_only && ($form->{amount}{$trans_id}{$accno} != 0)) { $query = qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, tax_id, taxkey, project_id, chart_link) @@ -1071,6 +1067,14 @@ SQL do_query($form, $dbh, $query, @values); } } + if (!$payments_only && ($rnd_accno != 0)) { + $query = + qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, tax_id, taxkey, project_id, chart_link) + VALUES (?, (SELECT id FROM chart WHERE accno = ?), ?, ?, (SELECT id FROM tax WHERE taxkey=0), 0, ?, (SELECT link FROM chart WHERE accno = ?))|; + @values = (conv_i($trans_id), $rnd_accno, $rounding, conv_date($form->{invdate}), conv_i($project_id), $rnd_accno); + do_query($form, $dbh, $query, @values); + $rnd_accno = 0; + } } # deduct payment differences from diff @@ -1233,7 +1237,7 @@ SQL return; } - $amount = $netamount + $tax; + $amount = $form->round_amount( $netamount + $tax, 2, 1); # save AR record #erweiterung fuer lieferscheinnummer (donumber) 12.02.09 jb @@ -1871,7 +1875,9 @@ sub retrieve_invoice { (SELECT c.accno FROM chart c WHERE d.income_accno_id = c.id) AS income_accno, (SELECT c.accno FROM chart c WHERE d.expense_accno_id = c.id) AS expense_accno, (SELECT c.accno FROM chart c WHERE d.fxgain_accno_id = c.id) AS fxgain_accno, - (SELECT c.accno FROM chart c WHERE d.fxloss_accno_id = c.id) AS fxloss_accno + (SELECT c.accno FROM chart c WHERE d.fxloss_accno_id = c.id) AS fxloss_accno, + (SELECT c.accno FROM chart c WHERE d.rndgain_accno_id = c.id) AS rndgain_accno, + (SELECT c.accno FROM chart c WHERE d.rndloss_accno_id = c.id) AS rndloss_accno ${query_transdate} FROM defaults d|; @@ -1892,6 +1898,7 @@ sub retrieve_invoice { a.shippingpoint, a.shipvia, a.notes, a.intnotes, a.taxzone_id, a.duedate, a.taxincluded, (SELECT cu.name FROM currencies cu WHERE cu.id=a.currency_id) AS currency, a.shipto_id, a.cp_id, a.employee_id, a.salesman_id, a.payment_id, + a.mtime, a.itime, a.language_id, a.delivery_customer_id, a.delivery_vendor_id, a.type, a.transaction_description, a.donumber, a.invnumber_for_credit_note, a.marge_total, a.marge_percent, a.direct_debit, a.delivery_term_id, @@ -1903,6 +1910,8 @@ sub retrieve_invoice { WHERE a.id = ?|; $ref = selectfirst_hashref_query($form, $dbh, $query, $id); map { $form->{$_} = $ref->{$_} } keys %{ $ref }; + $form->{mtime} = $form->{itime} if !$form->{mtime}; + $form->{lastmtime} = $form->{mtime}; $form->{exchangerate} = $form->get_exchangerate($dbh, $form->{currency}, $form->{invdate}, "buy");