Sales order creation from sales quotation through code AX 2012/D365 x++
public void createSalesOrder(FormDataSource _SalesOrderDS)
{
int recordsCount;
SalesQuotationLine salesQuotationLine;
SalesQuotationTable salesQuotationTable;
SalesTable salesTable;
SalesLine salesLine;
NumberSeq numberSeq;
boolean headerCreated = false;
recordsCount = _SalesOrderDS.recordsMarked().lastIndex();
salesQuotationLine = _SalesOrderDS.getFirst(1);
ttsbegin;
while (salesQuotationLine)
{
try
{
if (!headerCreated)
{
salesQuotationTable = salesQuotationLine.salesQuotationTable();
salesTable.clear();
numberSeq = NumberSeq::newGetNumFromCode(SalesParameters::numRefSalesId().numberSequenceTable().NumberSequence);
salesTable.SalesId = numberSeq.num();
salesTable.initValue();
salesTable.initFromSalesQuotationTable(salesQuotationTable);
salesTable.SalesType = SalesType::Sales;
salesTable.SalesStatus = SalesStatus::Backorder;
if(salesTable.validateWrite())
{
salesTable.insert();
headerCreated = true;
Markup::copy(false,
salesQuotationTable,
salesTable);
}
}
if (headerCreated)
{
salesLine.clear();
salesLine.initFromSalesTable(salesTable);
salesLine.initFromSalesQuotationLine(salesQuotationLine);
salesLine.SalesStatus = SalesStatus::Backorder;
salesLine.ItemId = salesQuotationLine.ItemId;
salesLine.SalesQty = salesQuotationLine.SalesQty;
salesLine.InventDimId = salesQuotationLine.InventDimId;
//salesLine.SalesDeliverNow = salesLine.SalesQty;
salesLine.LineAmount = salesQuotationLine.LineAmount;
salesLine.SalesPrice = salesQuotationLine.SalesPrice;
if (salesLine.validateWrite())
{
salesLine.createLine(true,true,false,true,true,true);
salesLine.SalesPrice = salesQuotationLine.SalesPrice;
salesLine.SalesQty = salesQuotationLine.SalesQty;
salesLine.LineDisc = salesQuotationLine.LineDisc;
salesLine.LineAmount = salesLine.calcLineAmount();
salesLine.update();
Markup::copy(false,
salesQuotationLine,
salesLine);
}
}
}
catch
{
ttsabort;
throw error("@SYS18738");
}
salesQuotationLine = _SalesOrderDS.getNext();
}
ttscommit;
if (headerCreated)
{
info(strFmt("@SYS134769",salesTable.SalesId));
}
}
{
int recordsCount;
SalesQuotationLine salesQuotationLine;
SalesQuotationTable salesQuotationTable;
SalesTable salesTable;
SalesLine salesLine;
NumberSeq numberSeq;
boolean headerCreated = false;
recordsCount = _SalesOrderDS.recordsMarked().lastIndex();
salesQuotationLine = _SalesOrderDS.getFirst(1);
ttsbegin;
while (salesQuotationLine)
{
try
{
if (!headerCreated)
{
salesQuotationTable = salesQuotationLine.salesQuotationTable();
salesTable.clear();
numberSeq = NumberSeq::newGetNumFromCode(SalesParameters::numRefSalesId().numberSequenceTable().NumberSequence);
salesTable.SalesId = numberSeq.num();
salesTable.initValue();
salesTable.initFromSalesQuotationTable(salesQuotationTable);
salesTable.SalesType = SalesType::Sales;
salesTable.SalesStatus = SalesStatus::Backorder;
if(salesTable.validateWrite())
{
salesTable.insert();
headerCreated = true;
Markup::copy(false,
salesQuotationTable,
salesTable);
}
}
if (headerCreated)
{
salesLine.clear();
salesLine.initFromSalesTable(salesTable);
salesLine.initFromSalesQuotationLine(salesQuotationLine);
salesLine.SalesStatus = SalesStatus::Backorder;
salesLine.ItemId = salesQuotationLine.ItemId;
salesLine.SalesQty = salesQuotationLine.SalesQty;
salesLine.InventDimId = salesQuotationLine.InventDimId;
//salesLine.SalesDeliverNow = salesLine.SalesQty;
salesLine.LineAmount = salesQuotationLine.LineAmount;
salesLine.SalesPrice = salesQuotationLine.SalesPrice;
if (salesLine.validateWrite())
{
salesLine.createLine(true,true,false,true,true,true);
salesLine.SalesPrice = salesQuotationLine.SalesPrice;
salesLine.SalesQty = salesQuotationLine.SalesQty;
salesLine.LineDisc = salesQuotationLine.LineDisc;
salesLine.LineAmount = salesLine.calcLineAmount();
salesLine.update();
Markup::copy(false,
salesQuotationLine,
salesLine);
}
}
}
catch
{
ttsabort;
throw error("@SYS18738");
}
salesQuotationLine = _SalesOrderDS.getNext();
}
ttscommit;
if (headerCreated)
{
info(strFmt("@SYS134769",salesTable.SalesId));
}
}
Comments
Post a Comment