| opPrimeKey | output | longchar | Primary Key field value of loaded record(s). Keys are chr(4) separated. Key fields are chr(2) separated. |
| oiReturnStatus | output | integer | Return status of the method. |
for each t_sCustomField by rowid(t_sCustomField) on error undo, throw:
if t_sCustomField.tcLookupType = ?
then t_sCustomField.tcLookupType = "".
if t_sCustomField.CustomFieldComponent = ""
or t_sCustomField.CustomFieldComponent = ?
then do:
<M-54 run SetMessage
(input #T-69'Component name is mandatory.':255(788911950)T-69# (icMessage),
input '' (icArguments),
input 'tCustomField.CustomFieldComponent' (icFieldName),
input t_sCustomField.CustomFieldComponent (icFieldValue),
input 'E' (icType),
input 3 (iiSeverity),
input t_sCustomField.tc_Rowid (icRowid),
input 'blf-505405':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCustomField>
assign oiReturnStatus = -1.
return.
end.
if t_sCustomField.CustomFieldFieldName = ""
or t_sCustomField.CustomFieldFieldName = ?
then do:
<M-68 run SetMessage
(input #T-48'Field name is mandatory.':255(322934822)T-48# (icMessage),
input '' (icArguments),
input 'tCustomField.CustomFieldFieldName' (icFieldName),
input t_sCustomField.CustomFieldFieldName (icFieldValue),
input 'E' (icType),
input 3 (iiSeverity),
input t_sCustomField.tc_Rowid (icRowid),
input 'blf-336564':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCustomField>
assign oiReturnStatus = -1.
return.
end.
/* ================================================================= */
/* Lookup object by logical key */
/* When in create mode, skip lookup. */
/* ================================================================= */
if vcActivityCode <> "Create":U
then do:
vcFreeform = "for each CustomField where "
+ "CustomField.CustomFieldComponent = '":U + t_sCustomField.CustomFieldComponent + "' and "
+ "CustomField.CustomFieldFieldName = '":U + t_sCustomField.CustomFieldFieldName + "'":U.
<M-34 run DataLoad
(input '' (icRowids),
input '' (icPkeys),
input '' (icObjectIds),
input vcFreeform (icFreeform),
input yes (ilKeepPrevious),
output viFcReturnSuper (oiReturnStatus)) in BCustomField>
if viFcReturnSuper >= 0
then do:
/* DataLoad succeeded, no no-error needed */
find first tCustomField where
tCustomField.CustomFieldComponent = t_sCustomField.CustomFieldComponent and
tCustomField.CustomFieldFieldName = t_sCustomField.CustomFieldFieldName.
if tCustomField.tc_Status <> ""
then do:
<M-84 run SetMessage
(input #T-22'Duplicate entry in input ($1).':255(332074471)T-22# (icMessage),
input t_sCustomField.CustomFieldComponent + '/' + t_sCustomField.CustomFieldFieldName (icArguments),
input 'tCustomField.CustomFieldFieldName' (icFieldName),
input t_sCustomField.CustomFieldFieldName (icFieldValue),
input 'E' (icType),
input 3 (iiSeverity),
input t_sCustomField.tc_Rowid (icRowid),
input 'blf-680195':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCustomField>
assign oiReturnStatus = -1.
return.
end.
end.
end.
/* ================================================================= */
/* When in delete mode, ignore input data. */
/* When object not found, do not return an error. */
/* ================================================================= */
if vcActivityCode = "Delete":U
then do:
if viFcReturnSuper = -4
then delete t_sCustomField.
else do:
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
/* keep the UI rowid for usage in error messages (tFcMessages.tcFcRowid) */
<M-89 run SetRowidConvert
(input t_sCustomField.tc_Rowid (icOldRowid),
input tCustomField.tc_Rowid (icNewRowid),
output viFcReturnSuper (oiReturnStatus)) in BCustomField>
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_sCustomField.tc_Rowid = tCustomField.tc_Rowid
t_sCustomField.tc_ParentRowid = ""
opPrimeKey = (if opPrimeKey = "" then "" else opPrimeKey + chr(4))
+ string(tCustomField.CustomField_ID).
end.
next.
end.
if vcActivityCode = "Create":U
or viFcReturnSuper = -4
then do:
/* ================================================================= */
/* When object not found and in modify only mode, return an error. */
/* ================================================================= */
if vcActivityCode = "Modify":U
then do:
<M-17 run SetMessage
(input #T-1'This custom field ($1) does not exist.':255(661239297)T-1# (icMessage),
input t_sCustomField.CustomFieldComponent + '/' + t_sCustomField.CustomFieldFieldName (icArguments),
input 'tCustomField.CustomFieldFieldName' (icFieldName),
input t_sCustomField.CustomFieldFieldName (icFieldValue),
input 'E' (icType),
input 3 (iiSeverity),
input t_sCustomField.tc_Rowid (icRowid),
input 'blf-831869':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCustomField>
assign oiReturnStatus = -1.
return.
end.
/* ================================================================= */
/* When object not found or in create mode, create it. */
/* ================================================================= */
<M-98 run AddDetailLine
(input 'CustomField' (icTable),
input '' (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BCustomField>
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_sCustomField.tc_Status = "N":U.
end.
else do:
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_sCustomField.tc_Status = "C":U
tCustomField.tc_Status = "C":U.
end.
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
/* ================================================================= */
/* Delete existing detail */
/* ================================================================= */
for each tCustomValue where
tCustomValue.tc_ParentRowid = tCustomField.tc_Rowid:
assign tCustomValue.tc_Status = "D":U.
end.
/* ================================================================= */
/* Update / add detail */
/* ================================================================= */
for each t_sCustomValue where
t_sCustomValue.tc_ParentRowid = t_sCustomField.tc_Rowid:
find first tCustomValue where
tCustomValue.tc_ParentRowid = tCustomField.tc_Rowid and
tCustomValue.CustomValueCode = t_sCustomValue.CustomValueCode no-error.
if available tCustomValue
then if tCustomValue.tc_Status = "D":U
then assign t_sCustomValue.tc_Status = "C":U
tCustomValue.tc_Status = "C":U.
else do:
<M-76 run SetMessage
(input #T-57'Duplicate entry in input ($1).':255(332074471)T-57# (icMessage),
input t_sCustomValue.CustomValueCode (icArguments),
input 'tCustomValue.CustomValueCode' (icFieldName),
input t_sCustomValue.CustomValueCode (icFieldValue),
input 'E' (icType),
input 3 (iiSeverity),
input t_sCustomValue.tc_Rowid (icRowid),
input 'blf-189690':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCustomField>
assign oiReturnStatus = -1.
return.
end.
else do:
<M-87 run AddDetailLine
(input 'CustomValue' (icTable),
input tCustomField.tc_Rowid (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BCustomField>
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
assign t_sCustomValue.tc_Status = "N":U
tCustomValue.CustomValueCode = t_sCustomValue.CustomValueCode.
end.
/* keep the UI rowid for usage in error messages (tFcMessages.tcFcRowid) */
<M-24 run SetRowidConvert
(input t_sCustomValue.tc_Rowid (icOldRowid),
input tCustomValue.tc_Rowid (icNewRowid),
output viFcReturnSuper (oiReturnStatus)) in BCustomField>
/* ================================================================= */
/* override value for identity fields in input */
/* ================================================================= */
assign t_sCustomValue.CustomValue_ID = tCustomValue.CustomValue_ID
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
t_sCustomValue.CustomField_ID = tCustomValue.CustomField_ID
t_sCustomValue.tc_Rowid = tCustomValue.tc_Rowid
t_sCustomValue.tc_ParentRowid = tCustomField.tc_Rowid.
end.
<I-8 {UpdateTransString
&TABLE = "CustomField"}>
/* keep the UI rowid for usage in error messages (tFcMessages.tcFcRowid) */
<M-74 run SetRowidConvert
(input t_sCustomField.tc_Rowid (icOldRowid),
input tCustomField.tc_Rowid (icNewRowid),
output viFcReturnSuper (oiReturnStatus)) in BCustomField>
/* ================================================================= */
/* override value for identity fields in input */
/* ================================================================= */
assign t_sCustomField.CustomField_ID = tCustomField.CustomField_ID
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
t_sCustomField.tc_Rowid = tCustomField.tc_Rowid
t_sCustomField.tc_ParentRowid = ""
opPrimeKey = (if opPrimeKey = "" then "" else opPrimeKey + chr(4))
+ string(tCustomField.CustomField_ID).
end.