I am updating my custom field that I've placed in the standard table SalesLine.
[FormControlEventHandler(formControlStr(SalesAvailableDlvDates, TransferToConfirmedButton), FormControlEventType::Clicked)]
public static void TransferToConfirmedButton_OnClicked(FormControl sender, FormControlEventArgs e)
{
SalesTable salesTable;
SalesLine salesLine;
SalesCalcAvailableDlvDates salesCalcAvailableDlvDates;
SalesCalcAvailableDlvDates_SalesLine salesCalcAvailableDlvDates_SalesLine;
SalesCalcAvailableDlvDates_SalesTable salesCalcAvailableDlvDates_SalesTable;
SalesAvailableDlvDatesTmp salesAvailableDlvDatesTmpSelected;
FormRun formRun = sender.formRun() as FormRun;
FormControl DisableDlvDateControlButton = formRun.design(0).controlName('DisableDlvDateControlButton');
FormDataSource salesLine_ds = sender.formRun().dataSource('SalesLine');
HS_ConfirmedShipDate hs_ConfirmedShipDate;
RecId salesLineRecId;
salesCalcAvailableDlvDates = formRun.args().caller();
switch (classIdGet(salesCalcAvailableDlvDates))
{
case classNum(SalesCalcAvailableDlvDates_SalesLine):
salesCalcAvailableDlvDates_SalesLine = salesCalcAvailableDlvDates as SalesCalcAvailableDlvDates_SalesLine;
salesLine = salesCalcAvailableDlvDates_SalesLine.parmSalesLine();
salesTable = salesLine.salesTable();
break;
case classNum(SalesCalcAvailableDlvDates_SalesTable):
salesCalcAvailableDlvDates_SalesTable = salesCalcAvailableDlvDates as salesCalcAvailableDlvDates_SalesTable;
salesTable = salesCalcAvailableDlvDates_SalesTable.parmSalesTable();
break;
default:
break;
}
salesAvailableDlvDatesTmpSelected = sender.formRun().dataSource(formDataSourceStr(SalesAvailableDlvDates,SalesAvailableDlvDatesTmp)).cursor();
salesLineRecId = salesLine.RecId;
if(DisableDlvDateControlButton.visible() == false)
{
ttsbegin;
hs_confirmedShipDate.clear();
hs_confirmedShipDate.SalesOrderNumber = salesLine.SalesId;
hs_confirmedShipDate.ItemNumber = salesLine.ItemId;
hs_confirmedShipDate.ItemName = salesLine.itemName();
hs_ConfirmedShipDate.RefRecId = salesLine.RecId;
hs_ConfirmedShipDate.OldPromisedDate = salesLine.ShippingDateConfirmed;
hs_ConfirmedShipDate.NewPromisedDate = salesAvailableDlvDatesTmpSelected.AvailableShippingDate;
hs_ConfirmedShipDate.Reason = "@HSP:ATPSimulateDeliveryDate";
hs_confirmedShipDate.insert();
ttscommit;
if(SalesLine.HS_Reason != "@HSP:ATPSimulateDeliveryDate")
{
salesLine.clear();
select forupdate HS_Reason from salesLine
where salesLine.RecId == salesLineRecId;
ttsbegin;
salesLine.HS_Reason = "@HSP:ATPSimulateDeliveryDate";
salesLine.doUpdate();
salesLine_ds.refresh();
ttscommit;
info("@HSP:SalesOrderSaved");
}
}
}
The bold text is how I update the field. (my caller salesCalcAvailableDlvDates doesn't have any refresh/refreshEx/executeQuery. It returns this value. SalesCalcAvailableDlvDates_SalesLine). Every time I execute update my field, this error shows up:
"Cannot edit a record in Order lines (SalesLine). The record shown has been updated by another user. Press Revert or Shift+Control+F5 to see the updated values."
Why is this happening? I am only updating my custom field.
*This post is locked for comments
I have the same question (0)