Monday, January 13, 2025

Import Transfer Journal using CSV in AX 2012

Below is the CSV import format JournalID,itemId,FromSiteId,FromWarehouse,FromLocation,FromSize,FromColor,FromConfig,FromStyle,ToSiteId,ToWarehouse,ToLocation,ToSize,ToColor,ToConfig,ToStyle,Qty,CostPrice,CostAmount,dimcustomer, dimDepartment, dimEmployee, dimLocation, dimRetailStores, dimVendor INJ-019996,100185,2001,WH001,Stock,,White,A,KEN,2001,CW0001,Stock,,White,A,KEN,15,20,200,,,,2099-Whole,, ---------------------------------------------------------------------------------------------------------------- Below is the Dynamics AX Code static void ADImportTransferJournal(Args _args) { CommaTextIO csvFile; container readCon; Dialog dialog; DialogField dfFileName; FileName fileName; ItemId itemId; InventJournalTable inventJournalTable; InventJournalTrans inventJournalTrans; InventDim frominventDim, ToinventDim; JournalCheckPost inventJournalCheckPost; DimensionAttributeValueSetStorage valueSetStorage = new DimensionAttributeValueSetStorage(); DimensionDefault result; int i; DimensionAttribute dimensionAttribute; DimensionAttributeValue dimensionAttributeValue; container conAttr; container conValue, conLedgerDimension; str dimValue; DimensionDisplayValue dimcustomerFrom, dimDepartmentFrom, dimEmployeeFrom, dimLocationFrom, dimRetailStoresFrom, dimVendorFrom; DimensionDisplayValue dimcustomerTo, dimDepartmentTo, dimEmployeeTo, dimLocationTo, dimRetailStoresTo, dimVendorTo; #File dialog = new Dialog("Pick the file"); dfFileName = dialog.addField(extendedTypeStr("FilenameOpen")); dialog.filenameLookupFilter(['csv','*.csv']); if (dialog.run()) { csvFile = new CommaTextIo(dfFileName.value(), 'r'); csvFile.inFieldDelimiter(','); readCon = csvFile.read(); while(csvFile.status() == IO_Status::OK) { readCon = csvFile.read(); if(readCon) { inventJournalTable.JournalId = conPeek(readCon,1); itemId = conPeek(readCon,2); inventJournalTrans.clear(); inventJournalTrans.initFromInventJournalTable(inventJournalTable); inventJournalTrans.ItemId = itemId; frominventDim.InventSiteId= conPeek(readCon,3); frominventDim.InventLocationId= conPeek(readCon,4); frominventDim.wMSLocationId = conPeek(readCon,5); fromInventDim.InventSizeId = conPeek(readCon,6); fromInventDim.InventColorId = conPeek(readCon,7); fromInventDim.configId = conPeek(readCon,8); fromInventDim.InventStyleId = conPeek(readCon,9); ToinventDim.InventSiteId= conPeek(readCon,10); ToinventDim.InventLocationId= conPeek(readCon,11); ToinventDim.wMSLocationId = conPeek(readCon,12); ToinventDim.InventSizeId = conPeek(readCon,13); ToinventDim.InventColorId = conPeek(readCon,14); ToinventDim.configId = conPeek(readCon,15); ToinventDim.InventStyleId = conPeek(readCon,16); //ToinventDim.InventLocationId = "SD"; //ToInventDim.wMSLocationId = '11_A2'; //ToInventDim.InventSizeId = '1000'; //ToInventDim.inventBatchId = 'T20/0001/1'; ToinventDim = InventDim::findOrCreate(ToinventDim); frominventDim = InventDim::findOrCreate(frominventDim); inventJournalTrans.InventDimId = frominventDim.inventDimId; inventJournalTrans.initFromInventTable(InventTable::find(itemId)); inventJournalTrans.Qty = conPeek(readCon,17); inventJournalTrans.ToInventDimId = ToinventDim.inventDimId; //inventJournalTrans.CostAmount = InventJournalTrans.calcCostAmount(-abs(any2real(strReplace((strFmt('%1',inventJournalTrans.Qty))),',','.')))); //inventJournalTrans.CostAmount = InventJournalTrans.calcCostAmount(inventJournalTrans.Qty); inventJournalTrans.CostPrice = conPeek(readCon,18); inventJournalTrans.CostAmount = conPeek(readCon,19); dimcustomerFrom = conPeek(readCon,20); dimDepartmentFrom = conPeek(readCon,21); dimEmployeeFrom = conPeek(readCon,22); dimLocationFrom = conPeek(readCon,23); dimRetailStoresFrom = conPeek(readCon,24); dimVendorFrom = conPeek(readCon,25); inventJournalTrans.TransDate = str2Date(conpeek(readCon, 26), 213); //conPeek(readCon,26); //dimcustomerTo = conPeek(readCon,26); //dimDepartmentTo = conPeek(readCon,27); //dimEmployeeTo = conPeek(readCon,28); //dimLocationTo = conPeek(readCon,29); //dimRetailStoresTo = conPeek(readCon,30); //dimVendorTo = conPeek(readCon,31); conAttr = ["Customer", "Department", "Employee", "Location", "RetailStores", "Vendor"]; conValue = [dimcustomerFrom, dimDepartmentFrom, dimEmployeeFrom, dimLocationFrom, dimRetailStoresFrom, dimVendorFrom]; //conLedgerDimension = ["Customer", "Department", "Employee", "Location", "RetailStores", "Vendor"]; inventJournalTrans.LedgerDimension = 0; for (i = 1; i <= conLen(conAttr); i++) { dimensionAttribute = dimensionAttribute::findByName(conPeek(conAttr,i)); if (dimensionAttribute.RecId == 0) { continue; } dimValue = conPeek(conValue,i); if (dimValue != "") { dimensionAttributeValue = dimensionAttributeValue::findByDimensionAttributeAndValue(dimensionAttribute,dimValue,false,true); valueSetStorage.addItem(dimensionAttributeValue); } } result = valueSetStorage.save(); inventJournalTrans.DefaultDimension = result; inventJournalTrans.JournalType = InventJournalType::Transfer; inventJournalTrans.insert(); } } } info("Imported Successfully"); //inventJournalCheckPost = InventJournalCheckPost::newJournalCheckPost(JournalCheckpostType::Post,inventJournalTable); //inventJournalCheckPost.parmThrowCheckFailed(1); //inventJournalCheckPost.parmShowInfoResult(1); //inventJournalCheckPost.run(); }

No comments:

Post a Comment