Dynamics AX Blog - Beiträge von 2014 - Seite 2
Kommissionierlisten-Kopf eines Produktionsauftrages erstellenDer folgende Job erstellt eine "Kopfdatensatz" für eine Kommissionierliste eines Produktionsauftrages.
static void createProdJournalTable_PickingList_III(Args _args)
{
ProdJournalCreate prodJournalCreate;
prodJournalCreate = new ProdJournalCreate();
prodJournalCreate.parmProdId('P000188');
prodJournalCreate.parmJournalNameId(
ProdJournalName::standardJournalName(
ProdJournalType::Picklist,
prodJournalCreate.parmProdId()));
prodJournalCreate.initProdJournalTableData(ProdJournalType::Picklist);
prodJournalCreate.usedProdJournalTable().insert();
prodJournalCreate.run();
} |
Bestellung per Code buchenMit Hilfe der folgenden Zeilen möchte ich zeigen, wie man eine Bestellung per Code buchen kann.
static void postPurchaseOrder(Args _args)
{
PurchTable purchTable = PurchTable::find("000025");
PurchFormLetter purchFormLetter;
purchFormLetter = PurchFormLetter::construct(DocumentStatus::PurchaseOrder);
purchFormLetter.update(purchTable, "", systemDateGet(), PurchUpdate::All);
} |
Auftragsbestätigung per Code buchenMit Hilfe der folgenden Zeilen möchte ich zeigen, wie man eine Auftragsbestätigung 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.
static void postSalesConfirmation(Args _args)
{
SalesTable salesTable = SalesTable::find("000747");
SalesFormLetter salesFormLetter;
salesFormLetter = SalesFormLetter::construct(DocumentStatus::Confirmation);
salesFormLetter.update(salesTable, systemDateGet(), SalesUpdate::All);
} |
Lieferschein per Code buchenMit Hilfe der folgenden Zeilen möchte ich zeigen, wie man einen Lieferschein per Code buchen kann.
static void postSalesPackingslip(Args _args)
{
SalesTable salesTable = SalesTable::find("000747");
SalesFormLetter salesFormLetter;
salesFormLetter = SalesFormLetter::construct(DocumentStatus::PackingSlip);
salesFormLetter.update(salesTable, systemDateGet(), SalesUpdate::All);
} |
Rechnung per Code buchenMit Hilfe der folgenden Zeilen möchte ich zeigen, wie man eine Rechnung/Ausgangsrechnung per Code buchen kann.
static void postSalesInvoice(Args _args)
{
SalesTable salesTable = SalesTable::find("000747");
SalesFormLetter salesFormLetter;
salesFormLetter = SalesFormLetter::construct(DocumentStatus::Invoice);
salesFormLetter.update(salesTable, systemDateGet(), SalesUpdate::All);
} |
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);
... |
|
|
|
|
|
|
Nachstehend ein Code-Beispiel, wie man eine RecId vom Typ DefaultDimension für mehrere Dimensionen generieren kann.
Anschließend wird diese DefaultDimension mit einem Hauptkonto zu einer RecId vom Typ LedgerDimension kombiniert.
static void buildDefaultAndLedgerDimension(Args _args) { DimensionAttributeValueSetStorage dimensionAttributeValueSetStorage; DimensionAttribute dimensionAttribute; DimensionAttributeValue dimensionAttributeValue; DimensionDefault dimensionDefault; LedgerDimensionAccount ledgerDimensionAccount; dimensionAttributeValueSetStorage = new DimensionAttributeValueSetStorage(); // BusinessUnit dimensionAttribute = DimensionAttribute::findByName('BusinessUnit'); if(dimensionAttribute) { dimensionAttributeValue = DimensionAttributeValue::findByDimensionAttributeAndValue(dimensionAttribute, '069', false, true); dimensionAttributeValueSetStorage.addItem(dimensionAttributeValue); } // CostCenter dimensionAttribute = DimensionAttribute::findByName('CostCenter'); if(dimensionAttribute) { dimensionAttributeValue = DimensionAttributeValue::findByDimensionAttributeAndValue(dimensionAttribute, '010', false, true); dimensionAttributeValueSetStorage.addItem(dimensionAttributeValue); } // Department dimensionAttribute = DimensionAttribute::findByName('Department'); if(dimensionAttribute) { dimensionAttributeValue = DimensionAttributeValue::findByDimensionAttributeAndValue(dimensionAttribute, '024', false, true); dimensionAttributeValueSetStorage.addItem(dimensionAttributeValue); } dimensionDefault = dimensionAttributeValueSetStorage.save(); // Merge main account and source dimension values and return RecId which can be used as ledgerDimension ledgerDimensionAccount = DimensionDefaultingService::serviceCreateLedgerDimension(DimensionStorage::getDefaultAccountForMainAccountNum("110110"), dimensionDefault); info(strFmt("Default dimension recId: %1", dimensionDefault)); info(strFmt("DefaultDimension (Source RecId): %1 LedgerDimension (Merged RecId): %2", dimensionDefault, ledgerDimensionAccount)); }Notiz: Aufmerksamen Lesern ist sicherlich nicht entgangen, daß ich beides bereits in anderen Beiträgen geposted habe. Dieser Beitrag ist lediglich eine Kombination davon.