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.