void ImportSalesOrders()
{
Container con;
CustTable custTable;
SalesTable salesTable;
SalesLine salesLine;
Headers headers;
Stock details;
num newSalesId;
Description custDescription;
InventTable inventTable;
InventDim inventDim;
InventSiteId inventSiteId;
InventLocationId inventLocationId;
CustAccount custAccount;
real itemPrice;
ItemId itemId;
InventDim frominventDim,ToinventDim;
int x,y;
NumberSeq num;
SysOperationProgress progressbar = new SysOperationProgress();
int i;
;
progressbar.setCaption('Importing Journals');
progressbar.setAnimation(filenameHeader);
progressbar.setTotal(30000);
for (i = 1; i <= 30000; i++)
{
progressbar.setText(strfmt("@SYS105740", i));
progressbar.setCount(i, 1);
}
this.importData();
ttsbegin;
while select headers
{
SalesTable = SalesTable::findDocumentNumber(headers.DocumentNumber);
if(!SalesTable)
{
//create sales table
salesTable.initValue();
num = NumberSeq::newGetNum(SalesParameters::numRefSalesId());
newSalesId = num.num();
if (salesTable::exist(newSalesId))
{
num.abort();
throw error("@SYS23020");
}
salesTable.SalesId = newSalesId;
num.used();
if(custDescription != "")
{
salesTable.SalesName = custDescription;
}
custAccount = headers.CustAccount;
//fetch the customer details from cust table using account no selected from drop-down list
select * from custTable where custTable.AccountNum == custAccount;
salesTable.CustAccount = custTable.AccountNum;
salesTable.InvoiceAccount = custTable.InvoiceAccount;
salesTable.SalesType = SalesType::Sales;
salesTable.SalesStatus = SalesStatus::None;
salesTable.CurrencyCode = custTable.Currency;
salesTable.CustGroup = custTable.CustGroup;
salesTable.DeliveryDateControlType = SalesDeliveryDateControlType::SalesLeadTime;
//Set dates as systemDateTime
salesTable.ReceiptDateRequested = systemdateget();
salesTable.ShippingDateRequested = systemdateget();
salesTable.LanguageId = 'en-us';
salesTable.DlvMode = '10';
inventSiteId = headers.InventSiteId;
inventLocationId = headers.InventSiteId;
salesTable.InventSiteId = inventSiteId;
salesTable.InventLocationId = inventLocationId;
salesTable.DocumentNumber = headers.DocumentNumber;
//Craete Sales Order
salesTable.insert();
while select details
where headers.DocumentNumber == details.DocumentNumber
{
salesLine.clear();
// Create Sales Order Line
salesLine.SalesId = salesTable.SalesId;
salesLine.initFromSalesTable(salesTable);
itemId = details.ItemId;
salesLine.ItemId = itemId;
salesLine.SalesUnit = InventTable::find(salesLine.ItemId).salesUnitId();
select * from inventTable where inventTable.ItemId == salesLine.ItemId;
salesLine.initFromInventTable(inventTable);
inventDim.clear();
inventDim.InventSiteId = inventSiteId;
inventDim.InventLocationId = inventSiteId;
salesLine.InventDimId = InventDim::findOrCreate(inventDim).inventDimId;
//Set Qty as 1 by default
salesLine.SalesQty = details.Qty;
salesLine.ConfirmedDlv = salesTable.ShippingDateConfirmed;
salesLine.lineNum = SalesLine::lastLineNum(salesLine.salesId) + 1.0;
salesLine.RemainInventPhysical = 1;
salesLine.RemainSalesPhysical = 1;
salesLine.DlvMode = '10';
salesLine.SalesStatus = SalesStatus::None;
salesLine.SalesPrice = details.UnitPrice;
salesLine.LineAmount = salesLine.SalesQty * salesLine.SalesPrice;
//Insert sales line items
salesLine.insert();
}
}
++x;
}
ttscommit;
info(strfmt("%1 Header(s) imported with their details", x));
}