I am using the code below to get the specific sales order invoice data in my application. I need to get the selected "Lot number" for the line item in this order. (attached image).
How should I get the lot value in the code from this sales order invoice?
try
{
var pvx = SageAuthentication.oScript;
var oSS = SageAuthentication.oSS;
oSS.InvokeMethod("nSetDate", "S/O", DateTime.Now.ToString("yyyyMMdd"));
oSS.InvokeMethod("nSetModule", "S/O");
int TaskID = (int)oSS.InvokeMethod("nLookupTask", "SO_SalesOrder_UI");
int setProgramTest = (int)oSS.InvokeMethod("nSetProgram", TaskID);
using (DispatchObject soObject = new DispatchObject(pvx.InvokeMethod("NewObject", "SO_Invoice_bus", oSS.GetObject())))
{
soObject.InvokeMethod("nSetKeyValue", new object[] { "InvoiceNo$", strRefNumber });
int check = (int)soObject.InvokeMethod("nSetKey");
var data = new object[] { "InvoiceNo$", strRefNumber };
int value = (int)soObject.InvokeMethodByRef("nGetRecord", data);
var batchNumber = soObject.GetDataObject("BatchNo$");
using (DispatchObject so_line = new DispatchObject(soObject.GetProperty("oLines")))
{
if ((int)soObject.InvokeMethod("nSelectBatch", batchNumber) == 0) throw new ApplicationException((string)soObject.GetProperty("sLastErrorMsg"));
if ((int)soObject.InvokeMethod("nSetKeyValue", new object[] { "InvoiceNo$", strRefNumber }) == 0) throw new ApplicationException((string)soObject.GetProperty("sLastErrorMsg"));
if ((int)soObject.InvokeMethod("nSetKey") == 0) throw new ApplicationException((string)soObject.GetProperty("sLastErrorMsg"));
so_line.InvokeMethod("nMoveFirst");
int EOF = (int)so_line.GetProperty("nEOF");
do
{
var salesOrder = new clsInvoice();
var InvoiceLineNumber = so_line.GetDataObject("InvoiceNo$");
if (InvoiceLineNumber == strRefNumber)
{
salesOrder.InvoiceNo = InvoiceLineNumber;
salesOrder.CustomerNo = soObject.GetDataObject("CustomerNo$");
var name = soObject.GetDataObject("oCustomerChild$");
salesOrder.OrderDate = TextUtilities.ConvertDate(soObject.GetDataObject("OrderDate$")).ToShortDateString();
salesOrder.OrderType = soObject.GetDataObject("OrderType$");
salesOrder.BillToName = soObject.GetDataObject("BillToName$");
salesOrder.CustomerPONo = soObject.GetDataObject("CustomerPONo$");
salesOrder.TermsCode = soObject.GetDataObject("TermsCode$");
salesOrder.Salesperson = soObject.GetDataObject("SalesPerson$");
salesOrder.TaxableAmt = soObject.GetDataDecimalObject("TaxableAmt");
salesOrder.NonTaxableAmt = soObject.GetDataDecimalObject("NonTaxableAmt");
salesOrder.FreightAmt = soObject.GetDataDecimalObject("FreightAmt");
salesOrder.SalesTaxAmt = soObject.GetDataDecimalObject("SalesTaxAmt");
salesOrder.DiscountAmt = soObject.GetDataDecimalObject("DiscountAmt");
salesOrder.DepositAmt = soObject.GetDataDecimalObject("DepositAmt");
salesOrder.ShipToName = soObject.GetDataObject("ShipToName$");
salesOrder.ShipToAddress1 = soObject.GetDataObject("ShipToAddress1$");
salesOrder.ShipToAddress2 = soObject.GetDataObject("ShipToAddress2$");
salesOrder.ShipToAddress3 = soObject.GetDataObject("ShipToAddress3$");
salesOrder.ShipToCity = soObject.GetDataObject("ShipToCity$");
salesOrder.ShipToCountry = soObject.GetDataObject("ShipToCountry$");
salesOrder.ShipToState = soObject.GetDataObject("ShipToState$");
salesOrder.ShipToZip = soObject.GetDataObject("ShipToZipcode$");
salesOrder.BillToName = soObject.GetDataObject("BillToName$");
salesOrder.BillToAddress1 = soObject.GetDataObject("BillToAddress1$");
salesOrder.BillToAddress2 = soObject.GetDataObject("BillToAddress2$");
salesOrder.BillToAddress3 = soObject.GetDataObject("BillToAddress3$");
salesOrder.BillToCity = soObject.GetDataObject("BillToCity$");
salesOrder.BillToCountry = soObject.GetDataObject("BillToCountry$");
salesOrder.BillToState = soObject.GetDataObject("BillToState$");
salesOrder.BillToZipcode = soObject.GetDataObject("BillToZipcode$");
salesOrder.CityStateZip = salesOrder.ShipToCity + "," + salesOrder.ShipToState + "," + salesOrder.ShipToZip;
salesOrder.ShipToName = soObject.GetDataObject("ShipToName$");
//LotSerialLinesExist
salesOrder.LotSerialLinesExist = soObject.GetDataObject("LotSerialLinesExist$");
var ItemCode = so_line.GetDataObject("ItemCode$");
salesOrder.InvoiceLineItemCode = so_line.GetDataObject("ItemCode$");
salesOrder.InvoiceLineDesc = so_line.GetDataObject("ItemCodeDesc$");
salesOrder.InvoiceLineUnitOfMeasure = so_line.GetDataObject("UnitOfMeasure$");
salesOrder.InvoiceLineQuantity = so_line.GetDataNumericObject("QuantityOrdered");
salesOrder.InvoiceLineQuantityShipped = so_line.GetDataNumericObject("QuantityShipped");
salesOrder.InvoiceLineUnitPrice = so_line.GetDataDecimalObject("UnitPrice");
salesOrder.InvoiceLineCommentText = so_line.GetDataObject("CommentText$");
salesOrder.InvoiceLineDiscountPercent = so_line.GetDataNumericObject("LineDiscountPercent");
//LotSerialLinesExist
salesOrder.Valuation = soObject.GetDataObject("Valuation$");
salesOrder.LotSerialFullyDistributed = soObject.GetDataObject("LotSerialFullyDistributed$");
salesOrder.LineKey = soObject.GetDataObject("LineKey");
using (DispatchObject LotSerial = new DispatchObject(pvx.InvokeMethod("NewObject", "SO_LotSerialHistory_bus", oSS.GetObject())))
{
LotSerial.InvokeMethod("nSetKeyValue", new object[] {"InvoiceNo$", InvoiceLineNumber });
int returnValue = (int)LotSerial.InvokeMethod("nFind");
if (returnValue > 0)
{
}
else
{
int check1 = (int)LotSerial.InvokeMethod("nSetKey");
var data1 = new object[] { "InvoiceNo$", InvoiceLineNumber };
int value1 = (int)LotSerial.InvokeMethodByRef("nGetRecord", data);
var LotNumber = LotSerial.GetDataObject("LotSerialNo$");
}
}
salesOrder.InvoiceLineTaxClass = so_line.GetDataObject("TaxClass$");
salesOrder.InvoiceLineExtensionAmt = so_line.GetDataNumericObject("ExtensionAmt");
List<clsInvoice> invoiceList = new List<clsInvoice>();
using (DispatchObject Object = new DispatchObject(pvx.InvokeMethod("NewObject", "IM_ItemCost_bus", oSS.GetObject())))
{
Object.InvokeMethod("nSetKeyValue", new object[] { "ItemCode$", ItemCode });
int returnValue0 = (int)Object.InvokeMethod("nFind");
if (returnValue0 > 0)
{
int retVal = 0;
var data1 = new object[] { "ItemCode$", "UDF_LOC$" };
retVal = (int)Object.InvokeMethodByRef("oDetail_Object", data1);
salesOrder.LOC = Object.GetDataObject("UDF_LOC$");
}
}
if (salesOrder.InvoiceLineQuantityShipped != 0)
{
alInvoices.Add(salesOrder);
}
}
so_line.InvokeMethod("nMoveNext");
EOF = (int)so_line.GetProperty("nEOF");
} while (EOF != 1);
}
}
return alInvoices;
}
catch (Exception ex)
{
throw;
return null;
}
