Dynamics AX Blog - Dynamics AX 2012 - Seite 17

RSS-Feed dieser Version
Lieferschein per Code druckenDer nachstehende Job demonstriert, wie man in Dynamics AX 2012 einen vorhandenen (Ausgangs-)Lieferschein per Code (nach-)drucken kann. Im Beispiel erfolgt die Ausgabe am Bildschirm. static void printSalesPackingSlipThroughCode(Args _args) { SalesPackingSlipJournalPrint salesPackingSlipJournalPrint; Set set = new Set(Types::Record); SRSPrintDestinationSettings srsPrintDestinationSettings; // Add record set.add(CustPackingSlipJour::findRecId(5637161120)); // Set printer settings srsPrintDestinationSettings = new SRSPrintDestinationSettings(); srsPrintDestinationSettings.fileFormat(SRSReportFileFormat::Screen); // Initalize salesPackingSlipJournalPrint = SalesPackingSlipJournalPrint::construct(); salesPackingSlipJournalPrint.parmPrintFormletter(NoYes::Yes); salesPackingSlipJournalPrint.parmUsePrintManagement(false); salesPackingSlipJournalPrint.parmPrinterSettingsFormLetter(srsPrintDestinationSettings.pack()); // Print salesPackingSlipJournalPrint.printJournal(set); } Ändert man die Parameter der SRSPrintDestinationSettings kann man den Bericht natürlich auch an einen Drucker senden, eine Datei erstellen oder den Bericht per Mail versenden. static void printSalesPackingSlipThroughCode(Args _args) { SalesPackingSlipJournalPrint salesPackingSlipJournalPrint; Set set = new Set(Types::Record); SRSPrintDestinationSettings srsPrintDestinationSettings; // Add record set.add(CustPackingSlipJour::findRecId(5637161120)); // Set printer settings srsPrintDestinationSettings = new SRSPrintDestinationSettings(); srsPrintDestinationSettings.fileFormat(SRSReportFileFormat::PDF); srsPrintDestinationSettings.fileName(@'c:\temp\packingslip.pdf'); srsPrintDestinationSettings.printMediumType(SRSPrintMediumType::File); srsPrintDestinationSettings.numberOfCopies(1); srsPrintDestinationSettings.overwriteFile(true); // Initalize salesPackingSlipJournalPrint = SalesPackingSlipJournalPrint::construct(); salesPackingSlipJournalPrint.parmPrintFormletter(NoYes::Yes); salesPackingSlipJournalPrint.parmUsePrintManagement(false); salesPackingSlipJournalPrint.parmPrinterSettingsFormLetter(srsPrintDestinationSettings.pack()); // Print salesPackingSlipJournalPrint.printJournal(set); } Weiters kann man auf diese Art & Weise auch mehrere Lieferscheine auf einmal drucken, dazu muss man lediglich die entsprechenden CustPackingSlipJour-Datensätze dem Set "set" hinzufügen: ... // Add record set.add(CustPackingSlipJour::findRecId(5637155842)); set.add(CustPackingSlipJour::findRecId(5637145354)); ... Wer den Lieferschein zusätzlich noch im Druckarchiv speichern möchte, kann dies durch folgende Zeile erreichen: ... srsPrintDestinationSettings.parmPrintToArchive(true); ... |
Primäre Adresse per Code anlegenDie nachstehenden Zeilen Code zeigen ein Beispiel, wie man per X++ eine (primäre) Adresse für eine vorhandene Partei im Globalen Adressbuch erstellen kann. Primär wird sie allerdings nur dann, wenn es noch keine primäre Adresse gibt! 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); } |
Auftragsbestätigung per Code druckenDer nachstehende Job demonstriert, wie man in Dynamics AX 2012 eine vorhandene Auftragsbestätigung per Code (nach-)drucken kann. Im Beispiel erfolgt die Ausgabe am Bildschirm. 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); } |
Bestellung per Code druckenDer nachstehende Job demonstriert, wie man in Dynamics AX 2012 eine vorhandene Bestellung per Code (nach-)drucken kann. Im Beispiel erfolgt die Ausgabe am Bildschirm. 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); } |
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 |
|
|
|
|
|
|
Mit Hilfe der folgenden Zeilen möchte ich zeigen, wie man eine Rechnung/Ausgangsrechnung per Code buchen kann.
Wer etwas mehr Kontrolle über die zu buchenden Daten haben möchte, sollte sich die verfügbaren Parameter der salesFormLetter.update() näher ansehen.