Problem Creating Receipt of goods whit BOI in c#

Good morning guys have a problem creating a receipt of goods over PO got Missing or invalid header. triying get olines  this is mi code 

using (DispatchObject pvx = new DispatchObject("ProvideX.Script"))
{
// Replace the text "*PATH TO MAS90\HOME*" with the correct MAS90\Home path in the line below
pvx.InvokeMethod("Init", mas90);
// Instantiate a new Session object and initialize the session
// by setting the user, company, date and module
using (DispatchObject oSS = new DispatchObject(pvx.InvokeMethod("NewObject", "SY_Session")))
{
oSS.InvokeMethod("nSetUser", new object[] { username, password });
oSS.InvokeMethod("nSetCompany", new object[] { companyCode });
string date = DateTime.Today.ToString("yyyyMMdd");
oSS.InvokeMethod("nSetDate", "P/O", date);
oSS.InvokeMethod("nSetModule", "P/O");
// Get the Task ID for the AR_Customer_ui program
int TaskID = (int)oSS.InvokeMethod("nLookupTask", "PO_ReceiptofGoods_ui");
var error2 = (string)oSS.InvokeMethod("sLastErrorMsg", null);
Logger.Log("verificando si hay error en el PO_ReceiptofGoods_ui " + error2);
oSS.InvokeMethod("nSetProgram", TaskID);
try
{
using (DispatchObject PO_order = new DispatchObject(pvx.InvokeMethod("NewObject", "PO_Receipt_bus", oSS.GetObject())))
{
object[] nextOrderNum = new object[] { "receiptNo$" };
var retval = 0;
PO_order.InvokeMethodByRef("nGetNextReceiptNo", nextOrderNum); // nGetNextSalesOrderNo nGetNextInvoiceNo
// order.ExportedId = nextOrderNum[0].ToString();
//Logger.Log("using ID :" + order.ExportedId);

var p = Convert.ToInt32(PO_order.GetProperty("nBatchEnabled"));
if (p > 0)
{
Logger.Log("Batch Enabled");
object[] batchName = new object[] { "" };
letter = "L";
string num = "";
/* if (bacthperrep == "yes")
{
if (order.InventorySite != null)
num = letter + order.InventorySite.OriginalId;
else
{
Logger.Log("No whs its assign to this salesman id" + order.Vendor.Name);
num = letter + DateTime.Today.Month.ToString() + DateTime.Today.Day.ToString();
}

}
else
{*/
num = letter + DateTime.Today.Month.ToString() + DateTime.Today.Day.ToString();
// }
Logger.Log(num);
string BatchPrivateField = "N";
string BatchComment = "LaceupInvoices";
object[] batchNoObject = new object[] { num, BatchPrivateField, BatchComment };
PO_order.InvokeMethodByRef("nSelectNewBatch", batchNoObject);
PO_order.InvokeMethod("nSetValue", batchNoObject);
PO_order.InvokeMethod("nSetValue", "BatchNo$", batchNoObject[0].ToString());
}

// sales_order.InvokeMethod("nSetKey", nextOrderNum);

retval = Convert.ToInt32(PO_order.InvokeMethod("nSetKey", nextOrderNum[0].ToString()));
Logger.Log(nextOrderNum[0].ToString());
if (retval == 0)
{
error2 = (string)PO_order.InvokeMethod("sLastErrorMsg", null);
Logger.Log("verificando si hay error en el PO_ReceiptNumber " + error2);
}

retval = Convert.ToInt32(PO_order.InvokeMethod("nSetValue", "ReceiptDate$", date));
if (retval == 0)
{
error2 = (string)PO_order.InvokeMethod("sLastErrorMsg", null);
Logger.Log("verificando si hay error en el PO_Receiptdate " + error2);
}

retval = Convert.ToInt32(PO_order.InvokeMethod("nSetKey"));
/* if (retval == 0)
{
error2 = (string)PO_order.InvokeMethod("sLastErrorMsg", null);
Logger.Log("verificando si hay error en el set key " + error2); //retval.ToString()
}*/

var retval1 = Convert.ToInt32(PO_order.InvokeMethod("nSetValue", "ReceiptType$", "G"));
// if (retval1 == 0)
// {
error2 = (string)PO_order.InvokeMethod("sLastErrorMsg", null);
Logger.Log("verificando si hay error en el PO_receipttype " + error2);
// }
retval = Convert.ToInt32(PO_order.InvokeMethod("nSetKey"));
retval = Convert.ToInt32(PO_order.InvokeMethod("nSetValue", "PurchaseOrderNo$", order.PoNumber));
if (retval == 0)
{
error2 = (string)PO_order.InvokeMethod("sLastErrorMsg", null);
Logger.Log("verificando si hay error en el PO_orderno " + " " + order.PoNumber + error2);
}
retval = Convert.ToInt32(PO_order.InvokeMethod("nSetKey"));

var parts = order.Vendor.OriginalId.Split(new char[] { '-' });

retval = Convert.ToInt32(PO_order.InvokeMethod("nSetValue", "APDivisionNo$", parts[0]));
if (retval == 0)
{
error2 = (string)PO_order.InvokeMethod("sLastErrorMsg", null);
Logger.Log("verificando si hay error en el PO_division " + error2);
}

retval = Convert.ToInt32(PO_order.InvokeMethod("nSetValue", "VendorNo$", parts[1]));
if (retval == 0)
{
error2 = (string)PO_order.InvokeMethod("sLastErrorMsg", null);
Logger.Log("verificando si hay error en el PO_vendorno " + error2);
}

string site = "";
InventorySite temp;
if (invMap.TryGetValue(order.InventorySite.Name, out temp))
{
site = temp.OriginalId;
}
else
{
site = defaultsite;
Logger.Log("escribio whs "+ defaultsite);
}

temp = context.InventorySites.Where(x => x.OriginalId == site).FirstOrDefault();
retval = Convert.ToInt32(PO_order.InvokeMethod("nSetValue", "WarehouseCode$", site));
Logger.Log("site" + site);
if (retval == 0)
{
error2 = (string)PO_order.InvokeMethod("sLastErrorMsg", null);
Logger.Log("verificando si hay error poniendo el whse " + error2 ); //retval.ToString()
}

retval = Convert.ToInt32(PO_order.InvokeMethod("nSetKey"));

Logger.Log("copiar las lineas del po");
DispatchObject PO_order_line = new DispatchObject(PO_order.GetProperty("oLines"));        ERROR Missing or invalid header.
error2 = (string)PO_order_line.InvokeMethod("sLastErrorMsg", null);
Logger.Log("verificando si hay error en el modulo olines " + error2);

retval = Convert.ToInt32(PO_order_line.InvokeMethod("nCopyPurchaseOrderLines", new object[] { order.PoNumber, 0 }));
if (retval == 0)
{
error2 = (string)PO_order_line.InvokeMethod("sLastErrorMsg", null);
Logger.Log("verificando si hay error copiando las lineas " + error2 + "Ret VAL; "); //retval.ToString()
}

retval = Convert.ToInt32(PO_order_line.InvokeMethod("nMoveFirst", null));
if (retval == 0)
{
error2 = (string)PO_order_line.InvokeMethod("sLastErrorMsg", null);
Logger.Log("verificando si hay error moviendo al primer record " + error2 + "Ret VAL; " + retval.ToString());
}

foreach (var line in order.PoDetails.OrderBy(x => x.OriginalId))
{
// PO_order_line.InvokeMethod("nAddLine");
// PO_order_line.InvokeMethod("nSetValue", "ItemCode$", line.Product.OriginalId);
// PO_order_line.InvokeMethod("nSetValue", "QuantityOrdered", line.QtyOrdered);
// PO_order_line.InvokeMethod("nSetValue", "QuantityReceived", line.QtyReceived);
// PO_order_line.InvokeMethod("nSetValue", "WarehouseCode$", site);
// PO_order_line.InvokeMethod("nSetValue", "UnitCost", line.Cost);
// PO_order_line.InvokeMethod("nWrite");
retval = Convert.ToInt32(PO_order_line.InvokeMethod("nSetValue", "ItemCode$", line.Product.OriginalId));
if (retval == 0)
{
error2 = (string)PO_order_line.InvokeMethod("sLastErrorMsg", null);
Logger.Log("verificando si hay error escribiendo el item code " + error2);
}
retval = Convert.ToInt32(PO_order_line.InvokeMethod("nSetValue", "QuantityReceived", line.QtyReceived));
if (retval == 0)
{
error2 = (string)PO_order_line.InvokeMethod("sLastErrorMsg", null);
Logger.Log("verificando si hay error escribiendo la cantidad " + error2);
}
// PO_order_line.InvokeMethod("nSetValue", "ReceiptType$", "G");
retval = Convert.ToInt32(PO_order_line.InvokeMethod("nWrite"));
if (retval == 0)
{
error2 = (string)PO_order_line.InvokeMethod("sLastErrorMsg", null);
Logger.Log("verificando si hay error escribiendo la linea " + error2);
}

retval = Convert.ToInt32(PO_order_line.InvokeMethod("nMoveNext", null));
if (retval == 0)
{
error2 = (string)PO_order_line.InvokeMethod("sLastErrorMsg", null);
Logger.Log("verificando si hay error move next " + error2);
}
}
retval = Convert.ToInt32(PO_order.InvokeMethod("nWrite"));
if (retval == 0)
{
error2 = (string)PO_order.InvokeMethod("sLastErrorMsg", null);
Logger.Log("verificando si hay error escribiendo el po " + error2);
}
PO_order_line.Dispose();
}
}
catch (Exception ex)
{
Logger.Log(ex);
}
}

THANK'S

Parents Reply Children
No Data