I have BPM (Method Directive) in Epicor 10.1.600.
BO: JobEntry
Method: ChangeJobHeadProdTeamID
The user trigger its from the Job Entry screen by changing the “Prod Team” field. The BPM has a Post-Processing directive, which looks like this:
foreach (var ttJobHead_Row in ttJobHead) //ttJobHead
{
using (var txScope = IceContext.CreateDefaultTransactionScope())
{
//get the header row and update it
var jobheadrow = (from JobHead_Row in Db.JobHead.With(LockHint.UpdLock)
where JobHead_Row.Company == ttJobHead_Row.Company
&& string.Compare(JobHead_Row.JobNum, ttJobHead_Row.JobNum, true) == 0
select JobHead_Row).FirstOrDefault();
if (jobheadrow != null)
{
jobheadrow.Serial_c = callContextBpmData.Character01;
jobheadrow.Height_c = Convert.ToInt32(callContextBpmData.Number01);
jobheadrow.Width_c = Convert.ToInt32(callContextBpmData.Number02);
jobheadrow.PaintColor_c = callContextBpmData.Character02;
}
}
Db.Validate();
txScope.Complete();
}
}
It executes successfully, and brings me back to the Job Entry screen. When I select “Save” on the Job Entry screen, I get the error:
Row has been modified by another user and couldn’t be updated.
I have tried putting this into the above code before the line “txScope.Complete();” and I still get the error:
var jobEntryBO = Ice.Assemblies.ServiceRenderer.GetService<Erp.Contracts.JobEntrySvcContract>(Db);
var currentJob = jobEntryBO.GetByID(ttJobHead_Row.JobNum);
this.dsHolder.Attach(currentJob);