https://www.kivitendo.de/redmine/https://www.kivitendo.de/redmine/redmine/favicon.ico?15768422422018-05-11T14:57:17Zwissenprojekt kivitendo - Fehler #352: Beim Drucken mehrerer Rechnung aus dem Bericht heraus wird der Rabatt falsch berechnethttps://www.kivitendo.de/redmine/issues/352?journal_id=5842018-05-11T14:57:17ZJan Bürenjan@kivitendo-premium.de
<ul></ul><p>Ah, hier hatte Geoff das schon zusammengefasst: <a class="external" href="https://redmine.kivitendo-premium.de/issues/342">https://redmine.kivitendo-premium.de/issues/342</a></p> projekt kivitendo - Fehler #352: Beim Drucken mehrerer Rechnung aus dem Bericht heraus wird der Rabatt falsch berechnethttps://www.kivitendo.de/redmine/issues/352?journal_id=5852018-05-11T16:01:13ZJan Bürenjan@kivitendo-premium.de
<ul></ul><p>Ohje, dann hatte Dirk Marklewitz doch recht, dass fxsellprice der Preis ohne Rabatt ist.</p>
<p>Im Beleg wird alles wieder richtig gedruckt, weil in SL/IS.pm _retrieve_invoice folgendes macht:</p>
<pre>
# retrieve individual items
$query =
qq|SELECT
c1.accno AS inventory_accno, c1.new_chart_id AS inventory_new_chart, date($transdate) - c1.valid_from AS inventory_valid,
c2.accno AS income_accno, c2.new_chart_id AS income_new_chart, date($transdate) - c2.valid_from as income_valid,
c3.accno AS expense_accno, c3.new_chart_id AS expense_new_chart, date($transdate) - c3.valid_from AS expense_valid,
i.id AS invoice_id,
i.description, i.longdescription, i.qty, i.fxsellprice AS sellprice, i.discount, i.parts_id AS id, i.unit, i.deliverydate AS reqdate,
^^^^^^^^^^^^^^^^^^^^^^^
</pre>
<p>Ok, dieser Wert wird seit Anbeginn der Weltendämmerung als sellprice verwendet.<br />Tja, man sollte nicht vom Variablennamen vorschnell auf die Verwendung schliessen ...</p>
<p>Demnach brauchen wir fxsellprice in FlattenToForm:</p>
<p>FlattenToForm.pm</p>
<pre>
- _copy($item, $form, '', "_${idx}", $format_noround, qw(qty sellprice));
+ _copy($item, $form, '', "_${idx}", $format_noround, qw(qty sellprice fxsellprice));
</pre>
<p>Und entsprechend angebliche sellprices durch wirkliche sellprices bei der Funktion ersetzen:<br />SL/Helper/MassPrintCreatePDF.pm</p>
<pre>
sub create_massprint_pdf {
$create_params{variable_content_types} = $form->get_variable_content_types();
$params{document}->flatten_to_form($form, format_amounts => 1);
# 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;
</pre>
<p>Folgende Testfälle i.O.:</p>
<p>1. Rechnung erfassen<br />2. Wiederkehrende Rechnung erfassen und automatisch per Mail verschicken<br />3. Rechnung mit Fremdwährung erfassen</p>
<p>Alle drei Fälle werden danach von diesem Druckaufruf korrekt ausgedruckt.</p> projekt kivitendo - Fehler #352: Beim Drucken mehrerer Rechnung aus dem Bericht heraus wird der Rabatt falsch berechnethttps://www.kivitendo.de/redmine/issues/352?journal_id=6342018-11-29T14:27:55ZJan Bürenjan@kivitendo-premium.de
<ul><li><strong>Status</strong> wurde von <i>Neu</i> zu <i>Erledigt</i> geändert</li></ul><p>Pragmatischerweise verbessert der Fix den Ist-Stand mehr als ihn zu verschlechtern, Details:</p>
<p>Das flatten_to_form den Wert fxsellprice mit ausgibt,bzw. berücksichtigt ist sinnvoll.</p>
<p>Der Helper MassPrintCreatePDF.pm macht jetzt das, was auch retrieve_item macht, sodass dann der Aufruf von $form->prepare_for_printing; diesselben Daten bekommt wie über den alten Weg.</p>
<p>Sicherlich müsste das Verfahren an beiden Stellen angefasst werden, dass allerdings dann eher mit Bearbeitung von <a class="issue tracker-1 status-1 priority-2 priority-default" title="Fehler: inkonsistente Werte in »invoice.sellprice« (Neu)" href="https://www.kivitendo.de/redmine/issues/342">#342</a></p>
<p>Im Master mit #075f64d61e999506517a eingespielt</p>