Rechnungsrabatt F9-Taste

19. Juni 2007 09:37

Hallo zusammen,
weiß jemand, wie man die Funktionalität der F9-Taste (Rechnungsrabatt) per Codeunit aufrufen kann.
Der Rabatt wird in einer Codeunit errechnet und muss dann ja auf die Zeilen verteilt werden, oder geht das auch anders?

Man kann fest davon ausgehen, dass in den Zeilen "Rabatt zugelassen" = true ist, und die Rabattverteilung auf Betrag steht.

Hat das schon mal jemand gemacht, welche Trigger muss man wie aufrufen?

Vielen Dank für eure Hilfe!

Re: Rechnungsrabatt F9-Taste

19. Juni 2007 10:00

Hi Rainer!

rainer hat geschrieben:[...] weiß jemand, wie man die Funktionalität der F9-Taste (Rechnungsrabatt) per Codeunit aufrufen kann.

Code:
CODEUNIT.RUN(CODEUNIT::"Sales-Calc. Discount",SalesHeader);

Gruß, Marc

19. Juni 2007 12:00

Hi Marc,

vielen Dank ersteinmal.

Die Codeunit muss aber mit "SalesLine" aufgerufen werden, oder meist du einen best. Trigger aus der CU?

19. Juni 2007 12:08

rainer hat geschrieben:Die Codeunit muss aber mit "SalesLine" aufgerufen werden, oder meist du einen best. Trigger aus der CU?

Ups, stimmt! Also nicht mit dem Sales Header sondern - wie du es schon sagtest - mit einer Sales Line.

Gruß, Marc

19. Juni 2007 12:43

Hi Marc,

habe ich so gemacht, aber trotzdem verteilt mir die CU den Rechnungsrabatt aus dem Kopf nicht in die Positionen.
Muss ich noch etwas machen?

19. Juni 2007 14:20

Hi Marc,
du meinst wahrscheinlich die Routine, wo der Rechnungsrabatt ermittelt wird. Den habe ich aber schon ausgerechnet, ich suche die Routine, wo der in die Zeilen verteilt wird.

21. Februar 2008 17:03

Ich stehe jetzt vor dem gleichen Problem. Wo wird letztendlich die Sales Line belegt? Ich finde die Stelle einfach nicht :-(

21. Februar 2008 17:11

Deutlich zu schnell aufgegeben ... Hier ist der Weg (für 5.0, bei Änderung des Rechnungsrabattbetrages auf Registerkarte Allgemein):

Form 402 Verkaufsauftragsstatistik\<Control30> - OnValidate()
Code:
UpdateInvDiscAmount(1);


Form 402 Verkaufsauftragsstatistik\UpdateInvDiscAmount(ModifiedIndexNo)
Code:
// ganz am Ende
UpdateVATOnSalesLines;


Form 402 Verkaufsauftragsstatistik\UpdateVATOnSalesLines()
Code:
GetVATSpecification(ActiveTab);
IF TempVATAmountLine1.GetAnyLineModified THEN
  SalesLine.UpdateVATOnLines(0,Rec,SalesLine,TempVATAmountLine1);
...


Table 37 Verkaufszeile\UpdateVATOnLines(QtyType,SalesHeader,SalesLine,VATAmountLine)
Code:
// ziemlich  mittig
IF QtyType = QtyType::General THEN BEGIN
  "Inv. Discount Amount" := InvDiscAmount;
...
Zuletzt geändert von Natalie am 24. Februar 2008 19:19, insgesamt 1-mal geändert.

24. Februar 2008 19:17

Wer von euch auch einmal vor der Aufgabe stehen sollte, an der Verteilung des Rechnungsrabattes drehen zu wollen - lasst es. Wenigstens so lange ihr nicht 100%ig versteht, was da im Standard passiert.

Der Standard dreht mehr als an dem Rechnungsrabatt allein. Es geht dabei auch um die MwSt-Verteilung und es ist mir (zumindest nicht in Anbetracht meiner Zeit) nicht gelungen, den Prozess zu verstehen. Wenn ihr z.B. in der Funktion UpdateVATOnLines die Rabattwerte ändert, dann geht das auf den ersten Blick gut - aber auf den zweiten Blick ist die Statistik falsch und die zugrunde liegenden Reports (z.B. die Auftragsbestägigung) auch.
Und was noch (!) schlimmer ist: Mit jedem Aufruf des Reports ändern sich die Werte mindestens einer VK-Zeile.

Das einzige wirksame und risikofreie Mittel zum Eingriff in den Rechnungsrabatt bleibt das Kennzeichen "Allow Invoice Disc." je VK-Zeile. Aber von einer Umverteilung würde ich nach dem Erlebnis auf jeden Fall die Finger lassen.

PS: Wer von euch den Code schon mal geknackt haben sollte: bitte lasst es mich wissen. Ich will es verstehen :-(

25. Februar 2008 13:00

Natalie hat geschrieben:Der Standard dreht mehr als an dem Rechnungsrabatt allein. Es geht dabei auch um die MwSt-Verteilung und es ist mir (zumindest nicht in Anbetracht meiner Zeit) nicht gelungen, den Prozess zu verstehen.

Du meinst vermutlich die rollierende MWSt-Rundung. Im alten Partnerguide gab es dazu mal einen Artikel (zu 2.x Zeiten). Im Partnersource habe ich den leider noch nicht entdecken können.