From: Jan Büren Date: Mon, 3 Sep 2018 14:52:00 +0000 (+0200) Subject: Fixt #352 Beim Drucken mehrerer Rechnung aus dem Bericht heraus wird der Rabatt falsc... X-Git-Tag: release-3.5.4~199 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=075f64d61e999506517a304022525d83c29e6e3e;p=kivitendo-erp.git Fixt #352 Beim Drucken mehrerer Rechnung aus dem Bericht heraus wird der Rabatt falsch berechnet Hotfix für die zweifache Berechnung vom Rabatt (Marge bei Berichten falsch) erstellt. Hintergrund: Der alte Code erwartet keine vorformatierten Werte, wird aber bei periodischen Jobs noch zwingend aufgerufen (sellprice mit fxsellprice in MassPrintCreatePDF überlagert) Ferner Rundungsgenauigkeiten für wiederkehrende Rechnungen erhöht. --- diff --git a/SL/DB/Helper/FlattenToForm.pm b/SL/DB/Helper/FlattenToForm.pm index 1f54a8afe..1228acc87 100644 --- a/SL/DB/Helper/FlattenToForm.pm +++ b/SL/DB/Helper/FlattenToForm.pm @@ -90,7 +90,7 @@ sub flatten_to_form { _copy($item, $form, '', "_${idx}", 0, qw(description project_id ship serialnumber pricegroup_id ordnumber donumber cusordnumber unit subtotal longdescription price_factor_id marge_price_factor reqdate transdate active_price_source active_discount_source)); - _copy($item, $form, '', "_${idx}", $format_noround, qw(qty sellprice)); + _copy($item, $form, '', "_${idx}", $format_noround, qw(qty sellprice fxsellprice)); _copy($item, $form, '', "_${idx}", $format_amounts, qw(marge_total marge_percent lastcost)); _copy($item, $form, '', "_${idx}", $format_percent, qw(discount)); _copy($item->project, $form, 'project', "_${idx}", 0, qw(number description)) if _has($item, 'project_id'); diff --git a/SL/DB/Helper/PriceTaxCalculator.pm b/SL/DB/Helper/PriceTaxCalculator.pm index 9a2718415..d830c1e11 100644 --- a/SL/DB/Helper/PriceTaxCalculator.pm +++ b/SL/DB/Helper/PriceTaxCalculator.pm @@ -95,6 +95,7 @@ sub _calculate_item { $item->fxsellprice($item->sellprice) if $data->{is_invoice}; my $num_dec = max 2, _num_decimal_places($item->sellprice); + $num_dec = 5; my $discount = _round($item->sellprice * ($item->discount || 0), $num_dec); my $sellprice = _round($item->sellprice - $discount, $num_dec); diff --git a/SL/Helper/MassPrintCreatePDF.pm b/SL/Helper/MassPrintCreatePDF.pm index e81419983..66fbaf2b9 100644 --- a/SL/Helper/MassPrintCreatePDF.pm +++ b/SL/Helper/MassPrintCreatePDF.pm @@ -37,6 +37,9 @@ sub create_massprint_pdf { # flatten_to_form sets payment_terms from customer/vendor - we do not want that here # really ?? delete $form->{payment_terms} if !$form->{payment_id}; + for my $i (1 .. $form->{rowcount}) { + $form->{"sellprice_$i"} = $form->{"fxsellprice_$i"}; + } $form->prepare_for_printing; $form->{attachment_filename} = $form->generate_attachment_filename;