| 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. |
if oiReturnStatus = 0
then oiReturnStatus = -98.
if vcActivityCode <> "Create":U and
vcActivityCode <> "Delete":U and
vcActivityCode <> "":U
then do :
assign vcMessage = trim (substitute(#T-7'The activity code $1 is not supported for the component $2.':255(999890352)T-7#,vcActivityCode,"BGLMASK":U)).
<M-9 run SetMessage
(input vcMessage (icMessage),
input ? (icArguments),
input ? (icFieldName),
input ? (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input ? (icRowid),
input 'QadFin-9067':U (icFcMsgNumber),
input ? (icFcExplanation),
input ? (icFcIdentification),
input ? (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BGLMask>
assign oiReturnStatus = -1.
return.
end.
/* Resolve the CODE fields to ID fields */
/* Assign the Domain_ID */
for each t_sGLMask where
t_sGLMask.Domain_ID = 0 or t_sGLMask.Domain_ID = ? :
assign t_sGLMask.Domain_ID = viDomainID.
end.
/* Assign the GL_ID */
<Q-17 run GLPrim (all) (Read) (NoCache)
(input viCompanyId, (CompanyId)
input ?, (GLCode)
input ?, (GLId)
output dataset tqGLPrim) in BGL >
for each t_sGLMask where
t_sGLMask.tcGLCode > "":U
break by t_sGLMask.tcGLCode :
if first-of (t_sGLMask.tcGLCode)
then do :
find first tqGLPrim where
tqGLPrim.tcGLCode = t_sGLMask.tcGLCode no-error.
if available tqGLPrim
then assign viTempID = tqGLPrim.tiGL_ID.
else assign viTempID = 0.
end.
assign t_sGLMask.GL_ID = vitempID.
end. /* GL */
/* Assign the DIVISION_ID */
if can-find (first t_sGLMask where
t_sGLMask.tcDivisionCode > "":U)
then do :
<Q-18 run DivisionPrim (all) (Read) (NoCache)
(input viCompanyId, (CompanyId)
input ?, (DivisionID)
input ?, (DivisionCode)
output dataset tqDivisionPrim) in BDivision >
for each t_sGLMask where
t_sGLMask.tcDivisionCode > "":U
break by t_sGLMask.tcDivisionCode :
if first-of (t_sGLMask.tcDivisionCode)
then do :
find first tqDivisionPrim where
tqDivisionPrim.tcDivisionCode = t_sGLMask.tcDivisionCode no-error.
if available tqDivisionPrim
then assign viTempID = tqDivisionPrim.tiDivision_ID.
else assign viTempID = 0.
end.
assign t_sGLMask.Division_ID = vitempID.
end. /* Division */
end.
/* Assign the CostCentre_ID */
if can-find (first t_sGLMask where
t_sGLMask.tcCostCentreCode > "":U)
then do :
<Q-19 run CostCentrePrim (all) (Read) (NoCache)
(input viCompanyId, (CompanyId)
input ?, (CostCentreID)
input ?, (CostCentreCode)
output dataset tqCostCentrePrim) in BCostCentre >
for each t_sGLMask where
t_sGLMask.tcCostCentreCode > "":U
break by t_sGLMask.tcCostCentreCode :
if first-of (t_sGLMask.tcCostCentreCode)
then do :
find first tqCostCentrePrim where
tqCostCentrePrim.tcCostCentreCode = t_sGLMask.tcCostCentreCode no-error.
if available tqCostCentrePrim
then assign viTempID = tqCostCentrePrim.tiCostCentre_ID.
else assign viTempID = 0.
end.
assign t_sGLMask.CostCentre_ID = vitempID.
end. /* CostCentre */
end.
/* Assign the Project_ID */
if can-find (first t_sGLMask where
t_sGLMask.tcProjectCode > "":U)
then do :
<Q-20 run ProjectPrim (all) (Read) (NoCache)
(input viCompanyId, (CompanyId)
input ?, (ProjectID)
input ?, (ProjectCode)
output dataset tqProjectPrim) in BProject >
for each t_sGLMask where
t_sGLMask.tcProjectCode > "":U
break by t_sGLMask.tcProjectCode :
if first-of (t_sGLMask.tcProjectCode)
then do :
find first tqProjectPrim where
tqProjectPrim.tcProjectCode = t_sGLMask.tcProjectCode no-error.
if available tqProjectPrim
then assign viTempID = tqProjectPrim.tiProject_ID.
else assign viTempID = 0.
end.
assign t_sGLMask.Project_ID = vitempID.
end. /* Project */
end.
for each t_sGLMask on error undo, return:
/* ================================================================= */
/* Lookup object by logical key */
/* When in create mode, skip lookup. */
/* ================================================================= */
if vcActivityCode <> "Create":U
then do:
vcFreeform = "for each GLMask where GLMask.Domain_ID = '":U + string(t_sGLMask.Domain_ID) + "'":U
+ " and GLMask.GL_ID = '":U + string(t_sGLMask.GL_ID) + "'":U
+ " and GLMask.Division_ID = '":U + string(t_sGLMask.Division_ID) + "'":U
+ " and GLMask.CostCentre_ID = '":U + string(t_sGLMask.CostCentre_ID) + "'":U
+ " and GLMask.Project_ID = '":U + string(t_sGLMask.Project_ID) + "'":U.
<M-2 run DataLoad
(input '' (icRowids),
input '' (icPkeys),
input '' (icObjectIds),
input vcFreeform (icFreeform),
input yes (ilKeepPrevious),
output viFcReturnSuper (oiReturnStatus)) in BGLMask>
if viFcReturnSuper >= 0
then find first tGLMask where tGLMask.Domain_ID = t_sGLMask.Domain_ID
and tGLMask.GL_ID = t_sGLMask.GL_ID
and tGLMask.Division_ID = t_sGLMask.Division_ID
and tGLMask.CostCentre_ID = t_sGLMask.CostCentre_ID
and tGLMask.Project_ID = t_sGLMask.Project_ID.
end. /* if vcActivityCode <> Create */
/* ================================================================= */
/* 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_sGLMask.
else do:
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign
t_sGLMask.tc_Rowid = tGLMask.tc_Rowid
t_sGLMask.tc_ParentRowid = ""
opPrimeKey = (if opPrimeKey = "" then "" else opPrimeKey + chr(4))
+ string(tGLMask.GLMask_ID).
end.
next.
end. /* if vcActivityCode = Delete */
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:
assign
vcMessage = trim(#T-1'Object with key $1 does not exist.':100(48021)T-1#).
<M-3 run SetMessage
(input vcMessage (icMessage),
input t_sGLMask.Domain_ID (icArguments),
input 'tGLMask.Domain_ID':U (icFieldName),
input t_sGLMask.Domain_ID (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sGLMask.tc_Rowid (icRowid),
input 'QadFin-5922':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BGLMask>
assign oiReturnStatus = -1.
return.
end. /* if vcActivityCode = Modify */
/* ================================================================= */
/* When object not found or in create mode, create it. */
/* ================================================================= */
<M-4 run AddDetailLine
(input 'GLMask':U (icTable),
input '' (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BGLMask>
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_sGLMask.tc_Status = "N":U.
end. /* if vcActivityCode = Create */
else do:
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_sGLMask.tc_Status = "C":U.
end.
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
/* insert code for subtables here */
/* ================================================================= */
/* override value for identity fields in input */
/* ================================================================= */
assign
t_sGLMask.GLMask_ID = tGLMask.GLMask_ID
t_sGLMask.Domain_ID = viDomainId
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
t_sGLMask.tc_Rowid = tGLMask.tc_Rowid
t_sGLMask.tc_ParentRowid = ""
opPrimeKey = (if opPrimeKey = "" then "" else opPrimeKey + chr(4))
+ string(tGLMask.GLMask_ID).
end.
if oiReturnStatus = -98
then oiReturnStatus = 0.