| 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.
PROCESSBLOCK:
for each t_sRecEntry
break by t_srecEntry.recEntry_id:
/* ================================================================= */
/* Lookup object by logical key */
/* When in create mode, skip lookup. */
/* ================================================================= */
if vcActivityCode <> "Create":U
then do:
/* =========================== */
/* Fill company_id when blank. */
/* =========================== */
if t_sRecEntry.Company_ID = 0 or
t_sRecEntry.Company_ID = ?
then assign t_sRecEntry.Company_ID = viCompanyId.
assign vcFreeform = "for each RecEntry where RecEntry.Company_ID = ":U + string(t_sRecEntry.Company_ID)
+ " and recEntry.RecEntryCode = '":U + string(t_sRecEntry.RecEntryCode) + "'".
<M-9 run DataLoad
(input '':U (icRowids),
input '':U (icPkeys),
input '':U (icObjectIds),
input vcFreeform (icFreeform),
input true (ilKeepPrevious),
output viFcReturnSuper (oiReturnStatus)) in BRecurringEntry>
if viFcReturnSuper >= 0
then find first tRecEntry where
tRecEntry.Company_ID = t_sRecEntry.Company_ID and
tRecEntry.RecEntryCode = t_sRecEntry.RecEntryCode
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_sRecEntry.
else do:
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then leave PROCESSBLOCK.
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_sRecEntry.tc_Rowid = tRecEntry.tc_Rowid
t_sRecEntry.tc_ParentRowid = ""
opPrimeKey = (if opPrimeKey = "" then "" else opPrimeKey + chr(4))
+ string(tRecEntry.RecEntry_ID).
end. /* else do */
next.
end. /* if vcActivityCode = "Delete":U */
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 vcMessageRE = trim(#T-1'Unable to find recurring Entry':255(999890091)T-1#) + chr(10) +
trim(substitute(#T-2'Company ID: &1':255(69637)t-2#, trim(string(t_sRecEntry.Company_ID)) )) + chr(10) +
trim(substitute(#T-3'Recurring entry code: &1.':255(3493)T-3#,trim(string(t_sRecEntry.RecEntryCode)) ))
oiReturnStatus = -1.
<M-4 run SetMessage
(input vcMessageRE (icMessage),
input '':U (icArguments),
input 't_sRecEntry.RecEntryCode':U (icFieldName),
input t_sRecEntry.RecEntryCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sRecEntry.tc_rowid (icRowid),
input 'QadFin-8824':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BRecurringEntry>
leave PROCESSBLOCK.
end. /* if vcActivityCode = "Modify":U */
/* ================================================================= */
/* When object not found or in create mode, create it. */
/* ================================================================= */
<M-5 run AddDetailLine
(input 'RecEntry':U (icTable),
input '':U (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BRecurringEntry>
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_sRecEntry.tc_Status = "N":U.
end. /* if vcActivityCode = "Create":U or */
else do:
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_sRecEntry.tc_Status = "C":U.
end. /* else do: */
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then leave PROCESSBLOCK.
assign t_sRecEntry.RecEntry_ID = tRecEntry.RecEntry_ID.
/* ================================================================= */
/* Process RecEntryLine records */
/* ================================================================= */
/* ================================================================= */
/* Delete existing detail */
/* ================================================================= */
for each tRecEntryLine where
tRecEntryLine.tc_ParentRowid = tRecEntry.tc_Rowid:
assign tRecEntryLine.tc_Status = "D":U.
end. /* for each tPostingLine where */
/* ================================================================= */
/* Update / add detail */
/* ================================================================= */
for each t_sRecEntryLine where
t_sRecEntryLine.tc_ParentRowid = t_sRecEntry.tc_Rowid and
t_sRecEntryLine.tc_Status <> "D":U:
/* =================================================================== */
/* Check the status of the line - stop processing if a line is posted. */
/* =================================================================== */
if t_sRecEntryLine.RecEntryLineStatus = {&RECENTRYLINESTATUS-POSTED}
then do:
assign vcMessageRE = trim(#T-14'The data could not be loaded. The system was unable to load the recurring entry.':255(3521)t-14#) + chr(10) +
trim(#T-16'Recurring Entry line as a status of 'Posted'':255(999890104)T-16#)
oiReturnStatus = -1.
<M-15 run SetMessage
(input vcMessageRE (icMessage),
input '':U (icArguments),
input 't_sRecEntryLine.RecEntryLineStatus':U (icFieldName),
input t_sRecEntryLine.RecEntryLineStatus (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sRecEntryLine.tc_Rowid (icRowid),
input 'QadFin-8853':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BRecurringEntry>
leave PROCESSBLOCK.
end. /* if t_sRecEntryLine.RecEntryLineStatus = "P":U */
assign t_sRecEntryLine.RecEntry_ID = t_sRecEntry.RecEntry_ID.
find first tRecEntryLine where
tRecEntryLine.tc_ParentRowid = tRecEntry.tc_Rowid and
tRecEntryLine.RecEntryLineCode = t_sRecEntryLine.RecEntryLinecode and
tRecEntryLine.RecEntryLinePostingDate = t_sRecEntryLine.RecEntryLinePostingDate and
tRecEntryLine.RecEntryLineReversingDate = t_sRecEntryLine.RecEntryLineReversingDate
no-error.
if available tRecEntryLine
then assign t_sRecEntryLine.tc_Status = "C":U.
else do:
<M-10 run AddDetailLine
(input 'RecEntryLine':U (icTable),
input tRecEntry.tc_Rowid (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BRecurringEntry>
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then leave PROCESSBLOCK.
assign t_sRecEntryLine.tc_Status = "N":U.
end. /* else do: */
/* ================================================================= */
/* override value for identity fields in input (PostingLine) */
/* ================================================================= */
assign t_sRecEntryLine.RecEntryLine_ID = tRecEntryLine.RecEntryLine_ID
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
t_sRecEntryLine.RecEntry_ID = tRecEntryLine.RecEntry_ID
t_sRecEntryLine.tc_Rowid = tRecEntryLine.tc_Rowid
t_sRecEntryLine.tc_ParentRowid = tRecEntry.tc_Rowid.
end. /* for each t_sRecEntryLine */
/* ================================================================= */
/* override value for identity fields in input (RecEntry) */
/* ================================================================= */
assign t_sRecEntry.RecEntry_ID = tRecEntry.RecEntry_ID
t_sRecEntry.Company_ID = tRecEntry.Company_ID
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
t_sRecEntry.tc_Rowid = tRecEntry.tc_Rowid
t_sRecEntry.tc_ParentRowid = ""
opPrimeKey = (if opPrimeKey = "" then "" else opPrimeKey + chr(4))
+ string(tRecEntry.RecEntry_ID).
end. /* PROCESSBLOCK */
if oiReturnStatus = -98
then oiReturnStatus = 0.