Wednesday, November 17, 2010

Importing data from text file in Axapta

The code will help you to import data from text file and create a sales order.


static void loadCSVFile(Args _args)
{
Dialog dialog;
DialogField dialogFileName;
SysOperationProgress simpleProgress;
Filename filename;
FileIOPermission permission;
TextIO textIO;
NumberSeq numSeq;
InventTable inventTable;
str s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12;
Real r1,r2,r3,r4,r5,r6;
int i1,i2,i3,i4,i5,i6,i;
Addressing a1,a2,a3;
TransDate d1,d2,d3;
salesTable salesTable,salesTable1,salesTable2;
salesLine salesLine,salesLine1,salesLine2,salesLine3,salesLine4;
InventDim inventDim,inventDim1,inventDim2;
Container c1,c2;
CompanyInfo companyInfoLoc = CompanyInfo::find();
Container filterCriteria;
#File
#avifiles
;
dialog = new Dialog("Importing Text File");
dialogFileName = dialog.addField(typeid(Filenameopen), "File Name");
filterCriteria = ['*.txt'];
filterCriteria = dialog.filenameLookupFilter(filterCriteria);
dialog.run();

if (dialog.run())
filename = dialogFileName.value();

if(!filename)
{
info("Filename must be filled");
throw("");
}

permission = new fileIOpermission(filename,#io_read);
permission.assert();
textIO = new TextIO(filename,#io_read);
textIO.inFieldDelimiter(';');///Change the Delimeter if it is , or ; etc

simpleProgress = SysOperationProgress::newGeneral(#aviUpdate, 'Importing sales data',100);

if(textIO)
{
while(textIO.status() == IO_Status::Ok)
{
c1 = textIO.read();
s11 = conpeek(c1,2);
if(strlen(s11) > 1)
{

numSeq = numberSeq::newGetNum(SalesParameters::numRefSalesId());
salesTable.SalesId = numSeq.num();///SalesId
salesTable.initValue();
salestable.CustAccount = Conpeek(c1,1);// Cust Account
salesTable.InvoiceAccount = Conpeek(c1,1);//Cust Account
salestable.SalesId = salestable.SalesId;
salesTable.initFromCustTable();
salestable.ShippingDateRequested = systemdateget();
salesTable.ShippingDateConfirmed = systemdateget();
salesTable.insert();

salesLine.SalesId = salesTable.SalesId;
salesLine.initFromSalesTable(SalesTable);
salesLine.initValue();
salesLine.ItemId = Conpeek(c1,2);//ItemId
inventTable=salesLine.inventTable();
salesLine.initFromInventTable(inventTable);
inventDim1.InventSiteId = Conpeek(c1,3);//// InventSiteId
inventDim1.InventLocationId = Conpeek(c1,4);//// InventLocationId
salesLine.inventDimId = InventDim::findOrCreate(inventDim1).inventDimId;
salesLine.initFromCustTable();
salesLine.SalesQty = conpeek(c1,5);//Sales Quantity
salesLine.QtyOrdered = conpeek(c1,5);// Sales Quantity
salesLine.SalesPrice = conpeek(c1,6);//Sales Price
salesLine.LineAmount = salesLine.SalesPrice * salesLine.SalesQty;//Sales Amount
salesLine.AssessableValue_IN = salesLine.LineAmount;
salesLine.Address_IN = companyInfoLoc.Address;
salesLine.ExciseType_IN = companyInfoLoc.ExciseType_IN;
salesLine.TIN_IN = companyInfoLoc.TIN_IN;
salesLine.ECCNumber_IN = companyInfoLoc.ECCNumber_IN;
salesLine.IECNumber_IN = companyInfoLoc.IECNumber_IN;
salesLine.STCNumber_IN = companyInfoLoc.STCNumber_IN;
salesLine.SalesTaxRegistrationNumber_IN = companyInfoLoc.SalesTaxRegistrationNumber_IN;
salesLine.TAN_IN = companyInfoLoc.TAN_IN;
salesLine.State_IN = companyInfoLoc.State;
salesLine.RemainSalesPhysical = salesLine.SalesQty;
salesLine.RemainSalesFinancial = 0;
salesLine.RemainInventPhysical = salesLine.QtyOrdered;
salesLine.LineNum = SalesLine::lastLineNum(salesLine.SalesId) + 1.0;
salesLine.insert();
i++;
simpleProgress.incCount();
simpleprogress.setText(strfmt("Lines imported: %1", i));
info(strfmt("Sales Order : %1 has been created",salesTable.SalesId));
sleep(10);
}

}
}
}

1 comment:

  1. Hi Kranthi,

    Please can you help me how to create text file for importing sales order.

    ReplyDelete