| 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. |
assign viLocalReturnStatus = 0
oiReturnStatus = -98.
/* Start Queries */
<Q-7 run DomainsPrim (Start) in BDomain >
PROCESSBLOCK:
for each t_sCOACrossRef
break by t_sCOACrossRef.tc_Rowid:
/* ================================================================= */
/* Lookup object by logical key */
/* When in create mode, skip lookup. */
/* ================================================================= */
if vcActivityCode <> "Create":U
then do:
/* Retrieve the SourceDomain_ID */
if t_sCOACrossRef.tcSourceDomainCode <> '':U and
t_sCOACrossRef.tcSourceDomainCode <> ?
then do:
<Q-6 run DomainsPrim (all) (Read) (NoCache)
(input ?, (DomainID)
input t_sCOACrossRef.tcSourceDomainCode, (DomainCode)
output dataset tqDomainsPrim) in BDomain >
find tqDomainsPrim where
tqDomainsPrim.tcDomainCode = t_sCOACrossRef.tcSourceDomainCode
no-error.
if available tqDomainsPrim
then assign t_sCOACrossRef.SourceDomain_ID = tqDomainsPrim.tiDomain_ID.
end. /* if t_sCOACrossRef.tcSourceDomainCode <> '':U and */
/* fill SourceDomain_id when blank */
if t_sCOACrossRef.SourceDomain_ID = 0 or
t_sCOACrossRef.SourceDomain_ID = ?
then assign t_sCOACrossRef.SourceDomain_ID = viDomainID.
/* Load the posting */
assign vcFreeform = "for each COACrossRef where COACrossRef.SourceDomain_ID = ":U + string(t_sCOACrossRef.SourceDomain_ID)
+ " and COACrossRef.COACrossRefCode = '":U + string(t_sCOACrossRef.COACrossRefCode) + "'":U.
<M-9 run DataLoad
(input ? (icRowids),
input ? (icPkeys),
input ? (icObjectIds),
input vcFreeform (icFreeform),
input true (ilKeepPrevious),
output viFcReturnSuper (oiReturnStatus)) in BCOACrossRef>
if viFcReturnSuper >= 0
then find first tCOACrossRef where
tCOACrossRef.SourceDomain_ID = t_sCOACrossRef.SourceDomain_ID and
tCOACrossRef.COACrossRefCode = t_sCOACrossRef.COACrossRefCode
no-error.
end. /* if vcActivityCode <> "Create":U or */
/* ================================================================= */
/* 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_sCOACrossRef.
else do:
if viFcReturnSuper <> 0
then viLocalReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then leave PROCESSBLOCK.
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_sCOACrossRef.tc_Rowid = tCOACrossRef.tc_Rowid
t_sCOACrossRef.tc_ParentRowid = ""
opPrimeKey = (if opPrimeKey = "" then "" else opPrimeKey + chr(4))
+ string(tCOACrossRef.COACrossRef_ID).
end. /* else do */
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'Unable to find COA Cross Reference.':255(71382)T-1#) + chr(10) +
trim(substitute(#T-2'Source Domain: &1':255(71383)T-2#, trim(t_sCOACrossRef.tcSourceDomainCode) )) + chr(10) +
trim(substitute(#T-3'COA Cross Reference Code: &1':255(71384)T-3#, trim(t_sCOACrossRef.COACrossRefCode) ))
viLocalReturnStatus = viFcReturnSuper.
<M-10 run SetMessage
(input vcMessage (icMessage),
input ? (icArguments),
input 't_sCOACrossRef.COACrossRefCode' (icFieldName),
input t_sCOACrossRef.COACrossRefCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sCOACrossRef.tc_Rowid (icRowid),
input 'QadFin-8704':U (icFcMsgNumber),
input ? (icFcExplanation),
input ? (icFcIdentification),
input ? (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCOACrossRef>
leave PROCESSBLOCK.
end. /* if vcActivityCode = Modify */
/* ================================================================= */
/* When object not found or in create mode, create it. */
/* ================================================================= */
<M-11 run AddDetailLine
(input 'COACrossRef':U (icTable),
input '':U (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BCOACrossRef>
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_sCOACrossRef.tc_Status = "N":U.
end. /* if vcActivityCode = Create */
else do:
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_sCOACrossRef.tc_Status = "C":U.
end. /* else do: */
if viFcReturnSuper <> 0
then viLocalReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then leave PROCESSBLOCK.
assign t_sCOACrossRef.COACrossRef_ID = tCOACrossRef.COACrossRef_ID.
/* insert code for subtables here */
/* Code for COACrossRefDet */
/* ================================================================= */
/* Delete existing detail */
/* ================================================================= */
for each tCOACrossRefDet where
tCOACrossRefDet.tc_ParentRowid = tCOACrossRef.tc_Rowid:
assign tCOACrossRefDet.tc_Status = "D":U.
end. /* for each tPostingLine where */
/* ================================================================= */
/* Update / add detail */
/* ================================================================= */
for each t_sCOACrossRefDet where
t_sCOACrossRefDet.tc_ParentRowid = t_sCOACrossRef.tc_Rowid and
t_sCOACrossRefDet.tc_Status <> "D":U:
assign t_sCOACrossRefDet.COACrossRef_ID = t_sCOACrossRef.COACrossRef_ID.
find first tCOACrossRefDet where
tCOACrossRefDet.tc_ParentRowid = tCOACrossRef.tc_Rowid and
tCOACrossRefDet.COACrossRefDetSrcGLFrom = t_sCOACrossRefDet.COACrossRefDetSrcGLFrom and
tCOACrossRefDet.COACrossRefDetSrcGLTo = t_sCOACrossRefDet.COACrossRefDetSrcGLTo and
tCOACrossRefDet.COACrossRefDetSrcDivFrom = t_sCOACrossRefDet.COACrossRefDetSrcDivFrom and
tCOACrossRefDet.COACrossRefDetSrcDivTo = t_sCOACrossRefDet.COACrossRefDetSrcDivTo and
tCOACrossRefDet.COACrossRefDetSrcCCFrom = t_sCOACrossRefDet.COACrossRefDetSrcCCFrom and
tCOACrossRefDet.COACrossRefDetSrcCCTo = t_sCOACrossRefDet.COACrossRefDetSrcCCTo and
tCOACrossRefDet.COACrossRefDetSrcProjFrom = t_sCOACrossRefDet.COACrossRefDetSrcProjFrom and
tCOACrossRefDet.COACrossRefDetSrcProjTo = t_sCOACrossRefDet.COACrossRefDetSrcProjTo
no-error.
if available tCOACrossRefDet
then assign t_sCOACrossRefDet.tc_Status = "C":U.
else do:
<M-12 run AddDetailLine
(input 'COACrossRefDet':U (icTable),
input tCOACrossRef.tc_Rowid (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BCOACrossRef>
if viFcReturnSuper <> 0
then viLocalReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then leave PROCESSBLOCK.
assign t_sCOACrossRefDet.tc_Status = "N":U.
end. /* else do: */
/* ================================================================= */
/* override value for identity fields in input (PostingLine) */
/* ================================================================= */
assign t_sCOACrossRefDet.COACrossRefDet_ID = tCOACrossRefDet.COACrossRefDet_ID
t_sCOACrossRefDet.COACrossRef_ID = tCOACrossRefDet.COACrossRef_ID
t_sCOACrossRefDet.tc_Rowid = tCOACrossRefDet.tc_Rowid
t_sCOACrossRefDet.tc_ParentRowid = tCOACrossRef.tc_Rowid.
end. /* for each t_sCOACrossRefDet */
<I-37 {UpdateTransString
&TABLE = "COACrossRef"}>
/* ================================================================= */
/* override value for identity fields in input (Posting) */
/* ================================================================= */
assign t_sCOACrossRef.COACrossRef_ID = tCOACrossRef.COACrossRef_ID
t_sCOACrossRef.SourceDomain_ID = tCOACrossRef.SourceDomain_ID
t_sCOACrossRef.tc_Rowid = tCOACrossRef.tc_Rowid
t_sCOACrossRef.tc_ParentRowid = ""
opPrimeKey = (if opPrimeKey = "" then "" else opPrimeKey + chr(4))
+ string(tCOACrossRef.COACrossRef_ID).
end. /* PROCESSBLOCK */
/* Stop Queries */
<Q-8 run DomainsPrim (Stop) in BDomain >
assign oiReturnStatus = viLocalReturnStatus.