Показать сообщение отдельно
Старый 26.10.2007, 03:34   #1  
Blog bot is offline
Blog bot
Участник
 
25,493 / 847 (79) +++++++
Регистрация: 28.10.2006
jinx: Microsoft Dynamics AX API – Teil 3 „Buchen von Auftr?gen“
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“ Methodeerzeugt ein,der Buchungsart entsprechendes, Objekt und gibt dieses zur?ck (In diesemFall wird ein „SalesFormLetter_Confirm“ Objekt erzeugt).
Die eigentliche Buchung wird ?ber die Methode „update“ aufgerufen. Da dieser Methodealle f?r die Buchung notwendigen Daten als Parameter ?bergeben werden k?nnen, isteine 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;
;
//Angabedes Auftrags, welcher gebucht werden soll.
salesId = "00423_036";
salesTable = SalesTable::find(salesId);

//Bestimmen des Buchungstyps durch Angabe des DocumentStatus
salesFormLetter = SalesFormLetter::construct(DocumentStatus::Confirmation);

//Buchendes 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 Wesentlichennur zwei Schritte notwendig sind.
  1. ?ber die Methode „construct“ ein dem Buchungstyp einsprechendes Objekt erzeugen.
  2. ?ber den Aufruf der Methode „update“ den Auftrag buchen.
Nat?rlich k?nnen auch noch umfangreichere oder etwas speziellere Buchungsszenarienmit der Klasse „salesFormLetter“ abgebildet werden. So ist es z.B. m?glich, gleichbei der Buchung entsprechende Dokumente auszudrucken (einmal, mehrfach und in verschiedeneFormate), die Maske f?r die Buchung zu ?ffnen (damit der Benutzer Einfluss auf dieBuchung nehmen kann) oder die Buchung nicht direkt auszuf?hren, sondern diese f?rdie Stapelverarbeitung bereit zu stellen.
Damit es nicht zu komplex wird, kurz noch ein Beispiel zum Buchung und gleichzeitigenausdrucken entsprechender Dokumente.
//--- Buchen mit Ausdruck ---
static void PostingConfimation(Args_args)
{
SalesFormLetter salesFormLetter;
SalesTable salesTable;
SalesId salesId;
PrintJobSettings printJobSettings;
;
//Angabedes Auftrags, welcher gebucht werden soll.
salesId = "00423_036";
salesTable = SalesTable::find(salesId);
salesFormLetter = SalesFormLetter::construct(DocumentStatus::Confirmation);

//Buchendes Auftrags und drucken (Druckmedium aus Std. Einstellung).
salesFormLetter.update(salesTable,
SystemDateGet(),
SalesUpdate::All,
AccountOrder::None,
NoYes::No,
NoYes::Yes);

//2terAusdruck.
printJobSettings = new PrintJobSettings(salesFormLetter.printerSettingsFormletter(
PrintSetupOriginalCopy::Original));
//Wohinm?chten wir drucken (hier Datei).
printJobSettings.setTarget(PrintMedium::File);

//Inwelches Format soll gedruckt werden (hier PDF).
printJobSettings.format(PrintFormat::PDF);
printJobSettings.fileName(@"C:\Test_Order.pdf");

//?bergabeder Druckoptionen an das SalesFormLetter Objekt.
salesFormLetter.updatePrinterSettingsFormLetter(printJobSettings.packPrintJobSettings());

salesFormLetter.printJournal();
}


Es wird keine Haftung oder Gew?hrleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel K?hn (Aku's AX Blog, http://blog.ak-home.net) and Mathias F??ler (jinx's AX Blog, http://starside.eu)

More...