Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 075f64d6

Von Jan Büren vor etwa 6 Jahren hinzugefügt

  • ID 075f64d61e999506517a304022525d83c29e6e3e
  • Vorgänger f40cd4e1
  • Nachfolger 975a63bb

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.

Unterschiede anzeigen:

SL/DB/Helper/FlattenToForm.pm
90 90
    _copy($item,          $form, '',               "_${idx}", 0,               qw(description project_id ship serialnumber pricegroup_id ordnumber donumber cusordnumber unit
91 91
                                                                                  subtotal longdescription price_factor_id marge_price_factor reqdate transdate
92 92
                                                                                  active_price_source active_discount_source));
93
    _copy($item,          $form, '',              "_${idx}", $format_noround, qw(qty sellprice));
93
    _copy($item,          $form, '',              "_${idx}", $format_noround, qw(qty sellprice fxsellprice));
94 94
    _copy($item,          $form, '',              "_${idx}", $format_amounts, qw(marge_total marge_percent lastcost));
95 95
    _copy($item,          $form, '',              "_${idx}", $format_percent, qw(discount));
96 96
    _copy($item->project, $form, 'project',       "_${idx}", 0,               qw(number description)) if _has($item, 'project_id');
SL/DB/Helper/PriceTaxCalculator.pm
95 95
  $item->fxsellprice($item->sellprice) if $data->{is_invoice};
96 96

  
97 97
  my $num_dec   = max 2, _num_decimal_places($item->sellprice);
98
  $num_dec   = 5;
98 99
  my $discount  = _round($item->sellprice * ($item->discount || 0), $num_dec);
99 100
  my $sellprice = _round($item->sellprice - $discount,              $num_dec);
100 101

  
SL/Helper/MassPrintCreatePDF.pm
37 37
  # flatten_to_form sets payment_terms from customer/vendor - we do not want that here
38 38
  # really ??
39 39
  delete $form->{payment_terms} if !$form->{payment_id};
40
  for my $i (1 .. $form->{rowcount}) {
41
    $form->{"sellprice_$i"} = $form->{"fxsellprice_$i"};
42
  }
40 43

  
41 44
  $form->prepare_for_printing;
42 45
  $form->{attachment_filename} = $form->generate_attachment_filename;

Auch abrufbar als: Unified diff