04.09.2007, 01:12 | #1 |
Участник
|
jinx: Microsoft Dynamics AX API – Teil 2 „Erstellen von Bestellungen“
Eine Bestellung umfasst in Microsoft Dynamics AX immer einen Datensatz der Tabelle „PurchTable“ und wenn die Bestellung einen Artikel enth?lt, auch einen Datensatz in der Tabelle „PurchLine“. Zus?tzlich werden in Abh?ngigkeit von den Daten der Bestellung (Einmallieferant: Ja/Nein, Intercompany: Ja/Nein, etc.) zus?tzliche Datens?tze in anderen Tabellen erzeugt bzw. ge?ndert. Beispielhaft sei hier die Tabelle „VendTable“ genannt. In dieser wird ein neuer Lieferant erstellt, wenn beim Erstellen der Bestellung angegeben wurde, dass es sich um einen Einmallieferanten handelt. Ein weiteres Beispiel w?re die Tabelle „MarkupTrans“ in der in Abh?ngigkeit von den Einstellungen f?r sonstige Zuschl?ge ebenfalls weitere Datens?tze erzeugt werden.
Die Logik, die das Erstellen der einzelnen Datens?tze der verschiedenen Tabellen steuert wird in Microsoft Dynamics AX durch die Klassen „PurchTableType“ (Abbildung 1) und „PurchLineType“ (Abbildung 2), sowie deren abgeleiteten Klassen abgebildet. Diese Klassen steuern das Verhalten bei Anlage, ?nderung und L?schung einer Bestellung. Dies beinhaltet auch, welche Werte ein Feld bei welchem Bestellungstyp annehmen darf, was geschieht wenn ein Feld ge?ndert wird, was wird wie gebucht und so weiter. Diese Klassen werden von ?berschriebenen Methoden der Tabellen „PurchTable“ und „PurchLine“ aufgerufen. So ruft zum Beispiel die Methode „Insert“ der Tabelle „PurchTable“, die Methode „Insert“ der Klasse „PurchTableType“ auf. Abh?ngig vom Bestellungstyp wird ?ber die Methode „construct“ bei der Initialisierung eines „PurchTableType“ Objekts gesteuert, welches konkrete Objekt erzeugt wird („PurchTableType_Purch“, „PurchTableType_ReturnItem“, etc.). Dies erfolgt in der Methode „type“ der Tabelle „PurchTable“ oder „PurchLine“. Unter anderem sind weiterhin die Methoden „Update“, „Delete“, „InitValue“, „ValidateField“ und „Delete“ auf die gleiche Weise ?berschrieben. Ein Blick in die Methoden der Tabelle „PurchTable“ sollte dies verdeutlichen. Somit ist die Logik, die f?r die Steuerung von Bestellungen in Microsoft Dynamics AX verantwortlich ist, vom Prinzip her vergleichbar mit der Logik welche die Auftr?ge „steuert“ (vergleiche hierzu: Microsoft Dynamics AX API – Teil 1 „Erstellen von Auftr?gen“). Deswegen ist das Erstellen einer Bestellung genau so einfach wie das Erstellen eines Auftrags. Um eine neue Bestellung zu erstellen muss im Wesentlichen nur:
Hierzu ein Beispiel: void createPurchTableAndLine() { VendAccount vendAccount = ""; ItemId itemId = ""; PurchTable purchTable; PurchLine purchLine; NumberSeq numberSeq; InventTable inventTable; ; //Bestellungskopf (PurchTable) //Neue Bestellungsnummer aus Nummernkreis erzeugen NumberSeq = NumberSeq::newGetNumFromCode( PurchParameters::numRefPurchId().numberSequence); purchTable.PurchId = NumberSeq.num(); //Bestellungskopf initialisieren purchTable.initValue(); //Initialisierung der lieferantenspezifischen Bestellungsdaten purchTable.initFromVendTable(VendTable::find(vendAccount)); //Bestellungskopf erstellen purchTable.insert(); //Bestellungsposition (PurchLine) purchLine.clear(); //Zuweisen von Bestellungsnummer und Artikelnummer purchLine.purchId = purchTable.PurchId; purchLine.ItemId = itemId; //Bestellungsposition erstellen (ruft PurchLine.insert auf) purchLine.createLine(NoYes::Yes, NoYes::Yes, NoYes::Yes, NoYes::Yes, NoYes::Yes, NoYes::Yes); } Es wird keine Haftung oder Gew?hrleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Mathias F??ler * jinx's AX Blog http://starside.eu * More... |
|
04.09.2007, 11:46 | #2 |
Banned
|
Программное создание закупок.
|
|
|
|