Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 2e5f7860

Von Bernd Bleßmann vor mehr als 10 Jahren hinzugefügt

  • ID 2e5f786069ded4f9e72902915ae914f3e67b62fa
  • Vorgänger 648c1ad7
  • Nachfolger 4d0bc1f1

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.

Unterschiede anzeigen:

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