Anleitung
Damit Navision zu einem bestimmten Zeitpunkt (etwa bei Anlage eines Verkaufsauftrages) einen Hinweis ausgeben kann, müssen wir die Möglichkeit schaffen eine Zahlungsbedingung als eine "Vorkassen"-Zahlungsbedingung zu kennzeichnen. Dazu müssen wir selbst Hand anlegen und etwas passendes programmieren.
Gehe über den Objectdesigner in den Designmodus der Tabelle Payment Terms (ID: 3). Erstelle von hieraus ein neues Feld mit der Bezeichnung "Vorkasse" und dem Typ "Boolean".
Das neue Feld erstellst du indem du eine neue Zeile anlegst. Da die zukünftigen Zahlungsbedingungen nur den Status "Vorkasse (Ja/Nein)" haben, ist hier der Typ Boolean interessant.
Nach Speicherung und Kompilierung der Tabelle musst du noch das neue Feld in die dazugehörige Seite Payment Terms (ID: 4) hinzufügen. Auch hier gehst du über den Objektdesigner in den Designmodus der Seite.
Wie auch bei der Tabelle speicherst und kompilierst du deine gemachten Änderungen und kannst nun bequem über das "Debitor & Verkauf"-Modul und über den Menüpunkt "Einrichtung" deine Zahlungsbedingungen als "Vorkassen"-Zahlungsbedingung kennzeichnen.
Nachdem Navision nun weiß, welche der eingerichteten Zahlungsbedingungen eine "Vorkassen"-Zahlungsbedingung ist, müsste beim Anlegen eines Verkaufsbeleges eine entsprechende Prüfung mit ggf. anschließender Meldung programmiert werden. Hierzu gehst du in den Designmodus der Tabelle Sales Header (ID: 36).
Wann und was genau muss denn jetzt geprüft werden? Nachdem die Debitornummer in dem Verkaufsbeleg eingegeben wurde, muss geprüft werden, ob die Zahlungsbedingung des gewählten Debitors eine "Vorkassen"-Zahlungsbedingung ist.
Um diese Prüfung durchführen zu können, brauchst du als Datenmaterial das Feld "Payment Terms Code" aus der Tabelle Customer (ID: 18) und das neue Feld "Vorkasse" aus der Tabelle Payment Terms (ID: 3). Das Feld "Payment Terms Code" bekommst du über die Record-Variable "Cust"; die du unter "C/AL Globals" bereits findest. Auch findest du dort die Variable "PaymentTerms" worüber du das Feld "Vorkasse" bekommst.
Da die Prüfung direkt nach Eingabe der Debitornummer im Feld "Bill-to Customer No." erfolgen soll, gehst du in den OnValidate-Trigger des Feldes "Bill-to Customer No.". Es öffnet sich der C/AL Editor. Hier siehst du erst einmal viele Programmzeilen. Jetzt gilt es die richtige Stelle zu finden, wo du deine Prüfung programmierst.
Suche die folgenden Zeilen innerhalb des Triggers:
"Bill-to Customer Template Code" := ''; "Bill-to Name" := Cust.Name; "Bill-to Name 2" := Cust."Name 2"; ...
Da die o. g. Programmzeilen die Felder der Seite anhand der eingegebenen Debitorennummer füllen, sollte deine Prüfung vorher programmiert werden. Füge vor den o. g. Programmcode ein paar leere Zeilen ein. Jetzt kannst du die Prüfung programmieren.
IF PaymentTerms.GET(Cust."Payment Terms Code") THEN IF PaymentTerms.Vorkasse THEN MESSAGE('Der Debitor %1 besitzt eine Vorkassen-Zahlungsbedingung.', Cust."No.");
In der ersten Programmzeile holst du dir die Zahlungsbedingung des Debitors in die Record-Variable "Zahlungsbedingung". Anschließend prüfst du in der zweiten Programmzeile ob diese Zahlungsbedingung eine "Vorkasse"-Zahlungsbedingung ist. Ist dies der Fall wird in der letzten Programmzeile eine entsprechende Meldung ausgegeben.