Verkaufsauftrag erst durch Aktion inserten

26. März 2020 12:13

Hallo Zusammen,

ich habe in einer Extension eine Page gebaut die an die Cardpage "Verkaufsauftrag" angelehnt ist.
Diese Page enthält wenige Felder aus dem Sales Header + ein eigenes neues Feld, als Subpage die passenden Sales Lines, ebenfalls mit wenigen Feldern + einige eigene neue Felder.
Zudem enthält die Page eine weitere Subpage zu einer komplett eigenen Tabelle, die über das neue Feld im Sales Header verknüpft ist.

Ich stehe vor folgender Herausforderung:
Um die Erzeugung unnötiger Daten zu vermeiden, dürften der Sales Header und die Sales Lines nicht sofort angelegt, sondern erst durch Bestätigung eines Buttons (Sowas wie "Auftrag anlegen" oder "speichern", wie man es aus anderen Systemen kennt) angelegt werden.
Mein erster Ansatz war nun gewesen, das Property der Pages auf SourceTableTemporary = true zu setzen und bei Auswahl der Aktion "Auftrag anlegen" die Recs jeweils in nicht temporäre Record-Variablen zu kopieren und dann zu inserten.
Aber das ganze scheitert schon bei Anlage einer Zeile, wegen dem temporären Sales Header:
tempsnip.png

Ich will den Standard auch eigentlich hier nicht zu viel verbiegen.
Hat das schonmal jemand umgesetzt oder hat ne Idee für ne bessere Vorgehensweise?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Verkaufsauftrag erst durch Aktion inserten

26. März 2020 16:32

Hallo,

normalerweise würde ich sagen: Vergiss es! :wink:

Ab einem bestimmten Zeitpunkt müssen die Records angelegt sein, damit davon abhängige Daten gepflegt werden können. Du kannst nur versuchen durch Zuweisungen und Validates zu steuern, wann das passiert.
Das ist im Standard übrigens genauso. Da wird auch an vielen Stellen ein Wert nur zugewiesen, anstatt ein Validate aufzurufen, damit eben abhängige Tabellen nicht gefüllt werden, die einen gespeicherten Record erfordern.

Gruß Fiddi

Re: Verkaufsauftrag erst durch Aktion inserten

26. März 2020 16:55

DelayedInsert hilft hier nicht weil du nicht nur eine Tabelle hast sondern Kopf und Zeilen und ggf. Bemerkungen und wasweisichsonstnoch.

Wenn du's aufwendig machen willst dann müsstest du eigene Tabellen anlegen, in die du die Daten ablegst, also Buffer oder Temp Tabellen für Sales Header und Sales Line. Deine Aktion würde die Datensätze dann in die richtigen Tabellen verschieben (und z. B. auch erst dann die Auftragsnummer vergeben, damit keine Lücken im Nummernkreis entstehen). Du müsstest überlegen welche Felder du schon in deiner Temp Tabelle brauchst (z. B. brauchst du im Sales Header keine Nummernserie, Buchungsnummernserie, usw.) und vermutlich auch nur einen Teil des Codes aus den Originaltabellen. Und du musst überlegen welche Felder beim Verschieben validiert werden sollen und welche nicht.