Dynamics AX Blog - Dynamics AX 2012 - Beiträge von 2014 - Seite 3

RSS-Feed dieser Version
Rechnung per Code druckenDer nachstehende Job demonstriert, wie man in Dynamics AX 2012 eine vorhandene Rechnung/Ausgangsrechnung per Code (nach-)drucken kann. Im Beispiel erfolgt die Ausgabe am Bildschirm. static void printSalesInvoiceThroughCode(Args _args)
{ SalesInvoiceJournalPrint salesInvoiceJournalPrint; Set set = new Set(Types::Record); SRSPrintDestinationSettings srsPrintDestinationSettings; // Add record set.add(CustInvoiceJour::findRecId(5637188088)); // Set printer settings srsPrintDestinationSettings = new SRSPrintDestinationSettings(); srsPrintDestinationSettings.fileFormat(SRSReportFileFormat::Screen); // Initalize salesInvoiceJournalPrint = SalesInvoiceJournalPrint::construct(); salesInvoiceJournalPrint.parmPrintFormletter(NoYes::Yes); salesInvoiceJournalPrint.parmUsePrintManagement(false); salesInvoiceJournalPrint.parmPrinterSettingsFormLetter(srsPrintDestinationSettings.pack()); salesInvoiceJournalPrint.printJournal(set); } |
Lagerbestandsabfrage mit Gruppierung nach bestimmten DimensionenUnter Verwendung der Klasse InventDimOnhand kann man sich den Lagerbestand von Artikel und/oder bestimmten Lagerungsdimensionen ermitteln. Im folgenden Job wird der Bestand für einen bestimmten Artikel und einen bestimmten Lagerplatz ermittelt. Dabei wird je Farbe gruppiert. static void getInventOnhandExample(Args _args) { ItemId itemId; InventDimOnHand inventDimOnHand; InventDimParm inventDimParmOnHandLevel; InventDimOnHandIterator inventDimOnHandIterator; InventDimOnHandMember inventDimOnHandMember; InventDim inventDim; InventDim inventDimCriteria; InventDimParm inventDimParmCriteria; // Item: Query specific item itemId = "DMO003"; // inventDimCriteria: Apply ranges inventDimCriteria.wmsLocationId = "12-1"; inventDimCriteria.InventBatchId = "DMOBatch001"; // inventDimParmCriteria: should values from inventDimCriteria be used? inventDimParmCriteria.ItemIdFlag = false; inventDimParmCriteria.InventSiteIdFlag = false; inventDimParmCriteria.InventLocationIdFlag = false; inventDimParmCriteria.wmsLocationIdFlag = true; // wmsLocationId from inventDimCriteria will be used inventDimParmCriteria.wmsPalletIdFlag = false; inventDimParmCriteria.InventBatchIdFlag = false; // inventBatchId from inventDimCriteria will not be used inventDimParmCriteria.InventSerialIdFlag = false; inventDimParmCriteria.ConfigIdFlag = false; inventDimParmCriteria.InventSizeIdFlag = false; inventDimParmCriteria.InventColorIdFlag = false; inventDimParmCriteria.InventStyleIdFlag = false; // inventDimParmOnHandLevel: Which dimensions should be used to group for? // inventDimParmOnHandLevel necessary for inventDimOnHandLevel::DimParm inventDimParmOnHandLevel.ItemIdFlag = true; // necessary inventDimParmOnHandLevel.InventSiteIdFlag = false; inventDimParmOnHandLevel.InventLocationIdFlag = false; inventDimParmOnHandLevel.wmsLocationIdFlag = false; inventDimParmOnHandLevel.wmsPalletIdFlag = false; inventDimParmOnHandLevel.InventBatchIdFlag = false; inventDimParmOnHandLevel.InventSerialIdFlag = false; inventDimParmOnHandLevel.ConfigIdFlag = false; inventDimParmOnHandLevel.InventSizeIdFlag = false; inventDimParmOnHandLevel.InventColorIdFlag = true; // group by color inventDimParmOnHandLevel.InventStyleIdFlag = false; inventDimOnHand = InventDimOnHand::newAvailPhysical(itemId, inventDimCriteria, inventDimParmCriteria, InventDimOnHandLevel::DimParm, inventDimParmOnHandLevel); inventDimOnHandIterator = inventDimOnHand.onHandIterator(); while (inventDimOnHandIterator.more()) { inventDimOnHandMember = inventDimOnHandIterator.value(); inventDim = InventDim::find(inventDimOnHandMember.parmInventDimId()); info(con2Str([ inventDimOnHandMember.parmItemId(), inventDim.InventSiteId, inventDim.InventLocationId, inventDim.wmsLocationId, inventDim.wmsPalletId, inventDim.InventBatchId, inventDim.InventSerialId, inventDim.ConfigId, inventDim.InventSizeId, inventDim.InventColorId, inventDim.InventStyleId, inventDimOnHandMember.parmInventQty()])); inventDimOnHandIterator.next(); } } Das Ergebnis des obigen Jobs ist folgendes Infolog: DMO003,,,12-1,,,,,,Cherry,,54 |
Alle Tabellen ermitteln, bei denen eine bestimmte Eigenschaft gesetzt istDer hier vorgestellte Job gibt über das Infolog alle Tabellen aus, bei welchen eine bestimmte Eigenschaft - im Beispiel wird die Property ModifiedBy abgefragt - static void findTablesWithSpecificProperty(Args _args) { TreeNode treeNodeTables; TreeNode treeNode; str prop; str properties; #aot #Properties; treeNodeTables = TreeNode::findNode(#TablesPath + #AOTRootPath); treeNodeTables = treeNodeTables.AOTfirstChild(); while(treeNodeTables) { properties = treeNodeTables.AOTgetProperties(); prop = Global::findProperty(properties,#PropertyModifiedBy); if(prop == "yes") { info(treeNodeTables.AOTname()); } treeNodeTables = treeNodeTables.AOTnextSibling(); } } |
Palette per Code erstellenDer folgende Job zeigt, wie man eine Palette per Code erstellen kann und dabei die Palettennummer aus dem Nummernkreis zieht. Wichtig bei letzterem ist, die numberSeq.used() aufzurufen damit die gezogene Nummer auch als "verwendet" gekennzeichnet wird. static void howToUseNumberSeq(Args _args) { WMSPallet wmsPallet; NumberSeq numberSeq; #define.InventLocationId("12") #define.WMSLocationId("L01") ttsbegin; wmsPallet.clear(); wmsPallet.initValue(); wmsPallet.InventLocationId = #InventLocationId; wmsPallet.wmsLocationId = #WMSLocationId; numberSeq = WMSPallet::numberSeq(true,true); if (numberSeq) { wmsPallet.wmsPalletId = WMSPalletIdGenerate::newPalletIdFromNumberSeq(numberSeq); numberSeq.used(); } if(wmsPallet.validateWrite()) { wmsPallet.insert(); } else { throw error("@SYS96731"); } ttscommit; } |
Erfassungen für Preis-/Rabattvereinbarungen per Code buchen/prüfenDie nächsten Zeilen Code zeigen exemplarisch, wie man Erfassungen für Preis-/Rabattvereinbarungen - oft auch als Preisjournale bezeichnet - per Code prüfen oder buchen kann. static void checkOrPostPriceDiscJournal(Args _args) { PriceDiscAdmCheckPost priceDiscAdmCheckPost; PriceDiscAdmTable priceDiscAdmTable; PriceDiscJournalNum priceDiscJournalNum = "PDJ-00014"; priceDiscAdmTable = PriceDiscAdmTable::find(priceDiscJournalNum); if (priceDiscAdmTable.Posted) { throw error("@SYS21497"); } priceDiscAdmCheckPost = new PriceDiscAdmCheckPost(true); // true = Checkonly, false = Post priceDiscAdmCheckPost.initJournalNum(priceDiscJournalNum); priceDiscAdmCheckPost.run(); } |
Kommissionierliste eines Produktionsauftrages erstellenDer folgende Job erstellt eine Kommissionierliste für einen Produktionsauftrag. static void createPickingList(Args _args) { ProdJournalCreateBOM prodJournalCreateBOM; prodJournalCreateBOM = ProdJournalCreateBOM::construct(); prodJournalCreateBOM.parmProdId('P000188'); prodJournalCreateBOM.parmJournalNameId(ProdJournalName::standardJournalName(ProdJournalType::Picklist, prodJournalCreateBOM.parmProdId())); prodJournalCreateBOM.parmTransDate(systemDateGet()); prodJournalCreateBOM.parmBOMAutoConsump(BOMAutoConsump::Never); prodJournalCreateBOM.parmProposalAsConsump(NoYes::No); prodJournalCreateBOM.parmQtyCalc(5); prodJournalCreateBOM.parmConsumpProposal(ProdBOMConsumpProposal::Qty); prodJournalCreateBOM.run(); }
Alternativ wenn der Journalkopf bereits existiert: static void createPickingList(Args _args) { ProdJournalCreateBOM prodJournalCreateBOM; prodJournalCreateBOM = ProdJournalCreateBOM::construct(); prodJournalCreateBOM.parmProdId('P000188'); prodJournalCreateBOM.parmJournalId('00926'); // Bei bestehendem Journalkopf prodJournalCreateBOM.parmTransDate(systemDateGet()); prodJournalCreateBOM.parmBOMAutoConsump(BOMAutoConsump::Never); prodJournalCreateBOM.parmProposalAsConsump(NoYes::No); prodJournalCreateBOM.parmQtyCalc(11); prodJournalCreateBOM.parmConsumpProposal(ProdBOMConsumpProposal::Qty); prodJournalCreateBOM.run(); } |
|
|
|
|
|
|
Der nachstehende Job demonstriert, wie man in Dynamics AX 2012 eine vorhandene Bestellung per Code (nach-)drucken kann. Im Beispiel erfolgt die Ausgabe am Bildschirm.
{
PurchPurchOrderJournalPrint purchPurchOrderJournalPrint;
Set set = new Set(Types::Record);
SRSPrintDestinationSettings srsPrintDestinationSettings;
// Add record
set.add(VendPurchOrderJour::findRecId(5637179849));
// Set printer settings
srsPrintDestinationSettings = new SRSPrintDestinationSettings();
srsPrintDestinationSettings.fileFormat(SRSReportFileFormat::Screen);
// Initalize
purchPurchOrderJournalPrint = PurchPurchOrderJournalPrint::construct();
purchPurchOrderJournalPrint.parmPrintFormletter(NoYes::Yes);
purchPurchOrderJournalPrint.parmUsePrintManagement(false);
purchPurchOrderJournalPrint.parmPrinterSettingsFormLetter(srsPrintDestinationSettings.pack());
// Print
purchPurchOrderJournalPrint.printJournal(set);
}