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; }