[gelöst] commit auf Sales Line, ESC merwürdiges Verhalten

6. April 2011 13:20

Hallo zusammen,

ich verzweifle gerade an meinen Programmierkünsten.
Ich möchte bei uns die Kreditlimitprüfung für das Feld "Unit Price" in der Tabelle 37 aktivieren. Im Standard funktioniert das, bei uns leider nicht, es ist aber erforderlich.
Im validate-Trigger des Feldes habe ich folgendes programmiert:
Code:
COMMIT;
SalesLine.COPY(Rec);
lCduCustCheckCreditLimit.SalesLineCheck(SalesLine);


Damit funktioniert der Aufruf der Kreditlimitprüfung auch. Wenn die Meldung "Maximales Kreditlimit des Debitors wurde überschritten..." mit 'Ja' beantwortet wird funktioniert alles, wie gewünscht.
Ein kleines Problem bekomme ich aber, wenn ich auf 'Nein' klicke. Das System springt zurück in die Auftragserfassung, und ich kann den Verkaufspreis wieder ändern. Wenn ich an der Stelle Esc drücke, um den alten Wert zu bekommen, wird dieser angezeigt, sobald ich den Satz verlasse, steht aber wieder der vorherige Wert drin.

Beispiel:
Es steht 80,00 als Verkaufspreis drin. Ich ändere den Preis auf 130,00 wodurch das Kreditlimit überschritten wird. Die Meldung erscheint und ich beantworte diese mit 'Nein'. Beim Druck auf Esc erscheint wieder 80,00, wenn ich den Satz verlasse oder die Auftragskarte verlasse, erscheint wieder 130,00 und dieser Wert wird auch gespeichert.

Hat jemand eine Idee, wie ich das abfangen könnten?
Mir ist klar, dass durch das commit der Wert 130,00 gespeichert wird, dieses commit ist aber erforderlich, weil in der Kreditlimitprüfung diese Zeile steht:
Code:
    OK := CustCheckCreditLimit.RUNMODAL = ACTION::Yes;

und da muss vorher das commit erfolgen.

Gruß
Alexander
Zuletzt geändert von zannaleer am 6. April 2011 15:44, insgesamt 1-mal geändert.

Re: commit auf Sales Line, ESC-Taste merwürdiges Verhalten

6. April 2011 13:34

Wofür überhaupt die Anpassung?
Die Standardkreditlimitprüfung findet in Funktion UpdateAmounts statt - diese Funktion wird aber sowieso aufgerufen, wenn mann den VK-Preis ändert.

Der NAV Standard provoziert ohne COMMIT nur deshalb keinen Fehler, weil vom Start der Transaktion bis zum Popup keine Daten geändert wurden (also MODIFY, INSERT etc.). Wahrscheinlich ist nun durch eine Individualanpassung eine Datenänderung innerhalb dieses Prozesses eingetreten.

Workaround könnte sein:
Vor dem COMMIT den alten VK-Preis merken und bei Abbruch der Funktion wieder zurückschreiben - dafür müssten jedoch die Kreditlimitfunktionen angepasst werden: SalesLineCheck muss ein True/False zurückgeben.

Re: commit auf Sales Line, ESC-Taste merwürdiges Verhalten

6. April 2011 14:31

Ich kann immer nur empfehlen, nicht zu viele Schleifen und rosa Blümchen zu programmieren und Standardfunktionalität zu nutzen.
Das nächste Update-Projekt kommt bestimmt und dann werden die zuständigen Personen vom Stuhl fallen, wenn eine erste Kalkulation des Projektumfangs eingegangen ist. Ab einem bestimmten "Verstümmelungsgrad" wird das Projekt als Neuprojekt deklariert, da ein Update noch teurer wäre.

Gruß
Jan

Re: commit auf Sales Line, ESC-Taste merwürdiges Verhalten

6. April 2011 15:43

Hallo zusammen,

ich habe die Kreditlimitprüfung geändert. Diese gibt jetzt ein true/false zurück.
Der Aufruf funktioniert dann so:
Code:
COMMIT;
SalesLine.COPY(Rec);
IF NOT lCduCustCheckCreditLimit.SalesLineCheck(SalesLine) THEN  BEGIN
   Rec := xRec;
END;


Die UpdateAmounts habe ich auch gesehen, da bei uns aber (leider) nichts mehr Standard ist, funktionierte beim Ändern des VK-Preises auch die Kreditlimitprüfung nicht.

JanGD, ich stimme Dir voll und ganz zu, aber leider ist bei uns eh schon nichts mehr Standard.

Gruß
Alexander