Revision 2e5f7860
Von Bernd Bleßmann vor mehr als 10 Jahren hinzugefügt
SL/OE.pm | ||
---|---|---|
415 | 415 |
|
416 | 416 |
$form->{"lastcost_$i"} = $form->parse_amount($myconfig, $form->{"lastcost_$i"}); |
417 | 417 |
|
418 |
# set values to 0 if nothing entered |
|
419 |
$form->{"discount_$i"} = $form->parse_amount($myconfig, $form->{"discount_$i"}) / 100; |
|
420 |
|
|
421 |
$form->{"sellprice_$i"} = $form->parse_amount($myconfig, $form->{"sellprice_$i"}); |
|
422 |
$fxsellprice = $form->{"sellprice_$i"}; |
|
418 |
# keep entered selling price |
|
419 |
my $fxsellprice = |
|
420 |
$form->parse_amount($myconfig, $form->{"sellprice_$i"}); |
|
423 | 421 |
|
424 |
my ($dec) = ($form->{"sellprice_$i"} =~ /\.(\d+)/);
|
|
425 |
$dec = length($dec);
|
|
422 |
my ($dec) = ($fxsellprice =~ /\.(\d+)/);
|
|
423 |
$dec = length $dec;
|
|
426 | 424 |
my $decimalplaces = ($dec > 2) ? $dec : 2; |
427 | 425 |
|
428 |
$discount = $form->round_amount($form->{"sellprice_$i"} * $form->{"discount_$i"}, $decimalplaces);
|
|
429 |
$form->{"sellprice_$i"} = $form->round_amount($form->{"sellprice_$i"} - $discount, $decimalplaces);
|
|
426 |
# undo discount formatting
|
|
427 |
$form->{"discount_$i"} = $form->parse_amount($myconfig, $form->{"discount_$i"}) / 100;
|
|
430 | 428 |
|
431 |
$form->{"inventory_accno_$i"} *= 1;
|
|
432 |
$form->{"expense_accno_$i"} *= 1;
|
|
429 |
# deduct discount
|
|
430 |
$form->{"sellprice_$i"} = $fxsellprice * (1 - $form->{"discount_$i"});
|
|
433 | 431 |
|
432 |
# round linetotal at least to 2 decimal places |
|
434 | 433 |
$price_factor = $price_factors{ $form->{"price_factor_id_$i"} } || 1; |
435 | 434 |
$linetotal = $form->round_amount($form->{"sellprice_$i"} * $form->{"qty_$i"} / $price_factor, 2); |
436 | 435 |
|
436 |
$form->{"inventory_accno_$i"} *= 1; |
|
437 |
$form->{"expense_accno_$i"} *= 1; |
|
438 |
|
|
437 | 439 |
@taxaccounts = split(/ /, $form->{"taxaccounts_$i"}); |
438 | 440 |
$taxrate = 0; |
439 | 441 |
$taxdiff = 0; |
Auch abrufbar als: Unified diff
Kein Runden des Rabatts vor der Berechnung im Angebot/Auftrag.
Das Vorgehen etwas an da von SL/IS.pm post_invoice() angeglichen.
Problem war, dass in Angebot/Auftrag bei Vergabe eines Rabatts das
Frontend richtig grechnet hat, aber das Backend nicht (durch Runden
des Rabatts). Dadurch unterschieden sich die Summen in der Belegmaske
von den Summe im Bericht.