Dynamics AX Blog - Dynamics AX 2012 - Page 15

RSS-Feed of this version
Create primary address through codeThe following lines show an example of how you can create a (primary) address for an existing party in the global address book by x ++ code. static void createPartyAddress(Args _args) { DirPartyTable dirPartyTable = DirPartyTable::findByNum("???100000"); DirParty dirParty; DirPartyPostalAddressView dirPartyPostalAddressView; // Create instance of dirParty dirParty = DirParty::constructFromCommon(dirPartyTable, DirUtility::getCurrentDateTime(), dirPartyTable.partyType()); // Create primary address dirPartyPostalAddressView.LocationName = "Office"; dirPartyPostalAddressView.City = "Vienna"; dirPartyPostalAddressView.Street = "Kärtnerring"; dirPartyPostalAddressView.StreetNumber = "18"; dirPartyPostalAddressView.CountryRegionId = "AUT"; dirPartyPostalAddressView.IsPrimary = NoYes::Yes; dirParty.createOrUpdatePostalAddress(dirPartyPostalAddressView); } |
Print sales confirmation through codeThe following job demonstrates, how you can print an existing Sales confirmation through code. The example sends the report to screen. static void printSalesConfirmThroughCode(Args _args)
{ SalesConfirmJournalPrint salesConfirmJournalPrint; Set set = new Set(Types::Record); SRSPrintDestinationSettings srsPrintDestinationSettings; // Add record set.add(CustConfirmJour::findRecId(5637155842)); // Set printer settings srsPrintDestinationSettings = new SRSPrintDestinationSettings(); srsPrintDestinationSettings.fileFormat(SRSReportFileFormat::Screen); // Initalize salesConfirmJournalPrint = SalesConfirmJournalPrint::construct(); salesConfirmJournalPrint.parmPrintFormletter(NoYes::Yes); salesConfirmJournalPrint.parmUsePrintManagement(false); salesConfirmJournalPrint.parmPrinterSettingsFormLetter(srsPrintDestinationSettings.pack()); salesConfirmJournalPrint.printJournal(set); } |
Print purchase order through codeThe following job demonstrates, how you can print an existing Purchase order through code. The example sends the report to screen. static void printPurchaseOrderThroughCode(Args _args)
{ 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()); purchPurchOrderJournalPrint.printJournal(set); } |
Print sales invoice through codeThe following job demonstrates, how you can print an existing Sales invoice through code. The example sends the report to screen. 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); } |
Query On-Hand inventory using specific inventory-dimensionsUsing the class InventDimOnhand, you can determine the on-hand inventory of articles and/or specific inventory-dimensions. The following job determines the inventory for a specific item and a specific inventlocation. This is grouped per color. 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(); } } The output of the above job looks is an infolog like the following: DMO003,,,12-1,,,,,,Cherry,,54 |
Get all tables, where a particular property has a specific valueThe following job lists all tables where a particular property - in the example the property ModifiedBy is requested - has a specific value. 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(); } } |
|
|
|
|
|
|
The following job demonstrates, how you can print an existing Sales packing slip through code. The example sends the report to screen.
Changing the parameter of the instance of SRSPrintDestinationSettings allows you to send the sales packing slip to printer, file or mail. The next example creates a PDF-file.
If you want to print multiple sales confirmations at once, you have to add the corresponding CustPackingSlipJour-records to the set called "set:
To additionally save the sales packing slip to print archive, you can add the following line: