I have stored header data into my "SaleOrderHeader" and lines data into "SaleOrderLines" and simply created sales order from a job class. Code is given below.
Now I want to add validation if I have selected site "1" it should belong to the warehouse with site "1". if I add site "1" and store it in warehouse "32" which belongs to site site "3" it should
show an error message. I simply want to throw and error.
can anyone help me with code ? how to add validation?
I've used following code in job class to create sales order.
class SalesOrderCreate
{
///
/// Runs the class with the specified arguments.
///
/// The specified arguments.
public static void main(Args _args)
{
SalesTable salesTable;
SaleOrderHeader saleOrderHeader;
SalesLine salesLine;
SaleOrderLines saleOrderLines;
NumberSeq numberSeq;
SalesFormLetter salesFormLetter;
InventDim inventDim;
ttsbegin;
while select * from saleOrderHeader
{
// number sequence for newly created sales order
numberSeq = NumberSeq::newGetNum(SalesParameters::numRefSalesId());
salesTable.SalesId = numberSeq.num();
numberSeq.used();
salesTable.initValue();
// Header data insertion
salesTable.CustAccount = SaleOrderHeader.CustAccount;
salesTable.initFromCustTable();
// Validate
if (!salesTable.validateWrite())
{
throw Exception::Error;
}
salesTable.insert();
// Outputs the newly created saleid's
info(strfmt("sale order created : %1",salesTable.SalesId));
while select * from saleOrderLines
where saleOrderLines.SalesId == saleOrderHeader.SalesId
// Lines data insertion
{
salesline.clear();
inventDim.clear();
salesLine.SalesId = salesTable.SalesId;
salesLine.ItemId = saleOrderLines.ItemId;
salesLine.SalesQty = saleOrderLines.SalesQty;
salesLine.CurrencyCode = saleOrderLines.CurrencyCode;
salesline.SalesPrice = saleOrderLines.SalesPrice;
salesLine.ShippingDateRequested = saleOrderLines.ShippingDateRequested;
salesLine.LineAmount = salesLine.calcLineAmount();
inventDim.InventSiteId = saleOrderLines.Warehouse;
inventDim.InventLocationId = saleOrderLines.Location;
salesLine.InventDimId=InventDim::findDim(inventDim).inventDimId ;
salesLine.createLine(true,true,false,true,true);
}
}
ttscommit;
}
}