Hello Folks,
I need some help with this issue. Since I need to lock QTY / Date in PO Entry, I have created a Data Directive for PORel (In-Transaction), and added the code below:
/* Set the Lock Date checkbox
and/or the Lock Qty checkbox when a new PORel is created.
The Lock Date and Lock Qty checkbox values are stored in the COMXref table.
COMxref.foreignKey1 = Lock Date
COMxref.foreignKey2 = Lock Qty */
bool foundComxRefRecord = false;
string setLockDate = "No";
string setLockQty = "Yes";
Erp.Tables.COMXref COMXref;
foreach (var ttPORel_iterator in (from ttPORel_Row in ttPORel
where string.Equals(ttPORel_Row.RowMod, IceRow.ROWSTATE_ADDED, StringComparison.OrdinalIgnoreCase)
select ttPORel_Row))
{
var ttPORelRow = ttPORel_iterator;
COMXref = (from COMXref_Row in Db.COMXref
where string.Compare(COMXref_Row.Company, ttPORelRow.Company, true) == 0
&& string.Compare(COMXref_Row.File, "PORel_Mapping", true) == 0
&& COMXref_Row.Key1 == System.Convert.ToString(ttPORelRow.PONum)
&& COMXref_Row.Key2 == System.Convert.ToString(ttPORelRow.POLine)
&& COMXref_Row.Key3 == System.Convert.ToString(ttPORelRow.PORelNum)
select COMXref_Row).FirstOrDefault();
if (COMXref != null)
{
COMXref.foreignKey1 = setLockDate;
COMXref.foreignKey2 = setLockQty;
foundComxRefRecord = true;
Db.Release(ref COMXref);
}
if (!foundComxRefRecord)
{
COMXref = new Erp.Tables.COMXref();
Db.COMXref.Insert(COMXref);
COMXref.Company = ttPORelRow.Company;
COMXref.File = "PORel_Mapping";
COMXref.Key1 = System.Convert.ToString(ttPORelRow.PONum);
COMXref.Key2 = System.Convert.ToString(ttPORelRow.POLine);
COMXref.Key3 = System.Convert.ToString(ttPORelRow.PORelNum);
COMXref.foreignKey1 = setLockDate;
COMXref.foreignKey2 = setLockQty;
}
}
Now, the code compiles flawless, but when trying to add / modify a line or release on an open PO, I get the following error: "LINQ to Entities does not recognize the method 'System.String ToString(Int32)' method, and this method cannot be translated into a store expression."
I have tried to replace the System.String ToString(Int32)' method for the SqlFunctions.StringConvert method instead of just ToString (which cannot be converted into SQL), but then I get a compilation error: "Error CS0103: The name 'SqlFunctions' does not exist in the current context [InTranTrigger.cs(159,39)]"
I will appreciate if somebody can shed some light on this issue.
Regards,
Daniel Dell'Aquila