Blog
Name is Anant Dubey and the intent to create this blog is to discuss the problems and issues that developer face in the dynamics AX development and to share the new things that come up with the new version of AX.
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();
}
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment