Das Buchen von Aufträgen in Microsoft Dynamics AX geschieht über die Klasse „SalesFormLetter“ bzw. einer ihrer konkretisierten (abgeleiteten) Klassen. Jeder Buchungstyp (z.B. Bestätigung, Lieferschein, Rechnung) ist durch eine eigene Klasse abgebildet, welche von der Basisklasse „SalesFormLetter“ abgeleitet ist (siehe Abbildung).
Um einen Auftrag per Programmcode zu buchen, muss ein Objekt der Klasse „SalesFormLetter“ erstellt werden.
salesFormLetter = SalesFormLetter::construct(DocumentStatus::Confirmation);
Dies geschieht, wie Allgemein in Microsoft Dynamics AX üblich, über die “construct” Methode der Klasse. Als Parameter muss dieser Methode die gewünschte Art der Buchung (z.B. Bestätigung, Lieferschein, Rechnung) angegeben werden. Die „construct“ Methode erzeugt ein,der Buchungsart entsprechendes, Objekt und gibt dieses zurück (In diesem Fall wird ein „SalesFormLetter_Confirm“ Objekt erzeugt).Die eigentliche Buchung wird über die Methode „update“ aufgerufen. Da dieser Methode alle für die Buchung notwendigen Daten als Parameter übergeben werden können, ist eine einzelne Zuweisung von z.B. dem Auftrag, welcher gebucht werden soll, nicht notwendig.
Hierzu ein Beispiel:
// --- Buchen ohne Ausdruck ---static void PostingConfimation(Args _args){ SalesFormLetter salesFormLetter; SalesTable salesTable; SalesId salesId; PrintJobSettings printJobSettings; ; //Angabe des Auftrags, welcher gebucht werden soll. salesId = "00423_036"; salesTable = SalesTable::find(salesId); // Bestimmen des Buchungstyps durch Angabe des DocumentStatus salesFormLetter = SalesFormLetter::construct(DocumentStatus::Confirmation); //Buchen des Auftrags (aber nicht Drucken). salesFormLetter.update(salesTable, SystemDateGet(), SalesUpdate::All, AccountOrder::None, NoYes::No, NoYes::No);}
Bei diesem Beispiel ist gut zu sehen, dass für die Buchung eines Auftrags im Wesentlichen nur zwei Schritte notwendig sind.
Über die Methode „construct“ ein dem Buchungstyp einsprechendes Objekt erzeugen.
Über den Aufruf der Methode „update“ den Auftrag buchen.
Natürlich können auch noch umfangreichere oder etwas speziellere Buchungsszenarien mit der Klasse „salesFormLetter“ abgebildet werden. So ist es z.B. möglich, gleich bei der Buchung entsprechende Dokumente auszudrucken (einmal, mehrfach und in verschiedene Formate), die Maske für die Buchung zu öffnen (damit der Benutzer Einfluss auf die Buchung nehmen kann) oder die Buchung nicht direkt auszuführen, sondern diese für die Stapelverarbeitung bereit zu stellen.
Damit es nicht zu komplex wird, kurz noch ein Beispiel zum Buchung und gleichzeitigen ausdrucken entsprechender Dokumente.
// --- Buchen mit Ausdruck ---static void PostingConfimation(Args _args){ SalesFormLetter salesFormLetter; SalesTable salesTable; SalesId salesId; PrintJobSettings printJobSettings; ; //Angabe des Auftrags, welcher gebucht werden soll. salesId = "00423_036"; salesTable = SalesTable::find(salesId); salesFormLetter = SalesFormLetter::construct(DocumentStatus::Confirmation); //Buchen des Auftrags und drucken (Druckmedium aus Std. Einstellung). salesFormLetter.update(salesTable, SystemDateGet(), SalesUpdate::All, AccountOrder::None, NoYes::No, NoYes::Yes); //2ter Ausdruck. printJobSettings = new PrintJobSettings(salesFormLetter.printerSettingsFormletter( PrintSetupOriginalCopy::Original)); //Wohin möchten wir drucken (hier Datei). printJobSettings.setTarget(PrintMedium::File); //In welches Format soll gedruckt werden (hier PDF). printJobSettings.format(PrintFormat::PDF); printJobSettings.fileName(@"C:\Test_Order.pdf"); //Übergabe der Druckoptionen an das SalesFormLetter Objekt. salesFormLetter.updatePrinterSettingsFormLetter(printJobSettings.packPrintJobSettings()); salesFormLetter.printJournal();}
Remember Me
Subscribe in a reader