| 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 oiReturnStatus = -98
viLocalReturnStatus = 0.
<Q-10 run JournalPrim (Start) in BJournal >
<Q-11 run CompanyPrim (Start) in BCompany >
PROCESSBLOCK:
for each t_sTaxReg:
assign t_sTaxReg.Domain_ID = viDomainID.
/* ================================================================= */
/* Lookup object by logical key */
/* When in create mode, skip lookup. */
/* ================================================================= */
if vcActivityCode <> "Create":U
then do:
/* ================ */
/* Load TaxReg */
/* ================ */
assign vcFreeform = "for each TaxReg where TaxReg.TaxRegCode = '":U + t_sTaxReg.TaxRegCode + "'":U
+ " and TaxReg.Domain_ID = " + string(t_sTaxReg.Domain_ID).
<M-4 run DataLoad
(input '':U (icRowids),
input '':U (icPkeys),
input '':U (icObjectIds),
input vcFreeform (icFreeform),
input true (ilKeepPrevious),
output viFcReturnSuper (oiReturnStatus)) in BTaxRegister>
if viFcReturnSuper >= 0
then find first tTaxReg where
tTaxReg.TaxRegCode = t_sTaxReg.TaxRegCode and
tTaxReg.Domain_ID = viDomainID
no-error.
end. /* if vcActivityCode <> "Create":U */
/* ================================================================= */
/* 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_sTaxReg.
else do:
if viFcReturnSuper <> 0
then viLocalReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then leave PROCESSBLOCK.
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_sTaxReg.tc_Rowid = tTaxReg.tc_Rowid
t_sTaxReg.tc_ParentRowid = ""
opPrimeKey = (if opPrimeKey = "" then "" else opPrimeKey + chr(4))
+ string(tTaxReg.TaxReg_ID).
end.
next.
end. /* 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
vcMessage = trim(#T-1'Object with key $1 does not exist.':100(48021)T-1#).
<M-3 run SetMessage
(input vcMessage (icMessage),
input t_sTaxReg.TaxRegCode (icArguments),
input 'tTaxReg.TaxRegCode':U (icFieldName),
input t_sTaxReg.TaxRegCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sTaxReg.tc_Rowid (icRowid),
input 'QadFin-9466':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BTaxRegister>
assign viLocalReturnStatus = -1.
leave PROCESSBLOCK.
end. /* if vcActivityCode = "Modify":U */
/* ================================================================= */
/* When object not found or in create mode, create it. */
/* ================================================================= */
<M-2 run AddDetailLine
(input 'TaxReg':U (icTable),
input '' (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BTaxRegister>
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_sTaxReg.tc_Status = "N":U.
end. /* if vcActivityCode = "Create":U */
else do:
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_sTaxReg.tc_Status = "C":U.
end.
if viFcReturnSuper <> 0
then viLocalReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then leave PROCESSBLOCK.
assign t_sTaxReg.TaxReg_ID = tTaxReg.TaxReg_ID.
/* insert code for sub-tables here: tTaxRegJournal and tTaxRegCompany */
/* ================================================================= */
/* Delete existing detail */
/* ================================================================= */
for each tTaxRegJournal where
tTaxRegJournal.tc_ParentRowid = tTaxReg.tc_Rowid:
assign tTaxRegJournal.tc_Status = "D":U.
end.
for each tTaxRegCompany where
tTaxRegCompany.tc_ParentRowid = tTaxReg.tc_Rowid:
assign tTaxRegCompany.tc_Status = "D":U.
end.
/* ================================================================= */
/* Update / add detail */
/* ================================================================= */
for each t_sTaxRegJournal where
t_sTaxRegJournal.tc_ParentRowid = t_sTaxReg.tc_Rowid and
t_sTaxRegJournal.tc_Status <> "D":U:
assign t_sTaxRegJournal.TaxReg_ID = t_sTaxReg.TaxReg_ID.
/* ============================================== */
/* Get the TaxRegJournal_ID based on the logical key */
/* ============================================== */
if (t_sTaxRegJournal.Journal_ID = ? or
t_sTaxRegJournal.Journal_ID = 0) and
t_sTaxRegJournal.tcJournalCode <> ? and
t_sTaxRegJournal.tcJournalCode <> ""
then do:
<Q-5 run JournalPrim (all) (Read) (NoCache)
(input viCompanyId, (CompanyId)
input t_sTaxRegJournal.tcJournalCode, (JournalCode)
input ?, (JournalID)
output dataset tqJournalPrim) in BJournal >
find tqJournalPrim where
tqJournalPrim.tcJournalCode = t_sTaxRegJournal.tcJournalCode
no-lock no-error.
if available tqJournalPrim
then assign t_sTaxRegJournal.Journal_ID = tqJournalPrim.tiJournal_ID.
end. /* if (t_sTaxRegJournal.Journal_ID = ? */
find first tTaxRegJournal where tTaxRegJournal.tc_ParentRowid = tTaxReg.tc_Rowid
and tTaxRegJournal.TaxReg_ID = t_sTaxRegJournal.TaxReg_ID
and tTaxRegJournal.Journal_ID = t_sTaxRegJournal.Journal_ID
no-error.
if available tTaxRegJournal
then assign t_sTaxRegJournal.tc_Status = "C":U.
else do:
<M-7 run AddDetailLine
(input 'TaxRegJournal':U (icTable),
input tTaxReg.tc_Rowid (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BTaxRegister>
if viFcReturnSuper <> 0
then viLocalReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then leave PROCESSBLOCK.
assign t_sTaxRegJournal.tc_Status = "N":U.
end.
/* ================================================================= */
/* override value for identity fields in input */
/* ================================================================= */
assign t_sTaxRegJournal.TaxRegJournal_ID = tTaxRegJournal.TaxRegJournal_ID
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
t_sTaxRegJournal.TaxReg_ID = tTaxRegJournal.TaxReg_ID
t_sTaxRegJournal.tc_Rowid = tTaxRegJournal.tc_Rowid
t_sTaxRegJournal.tc_ParentRowid = tTaxReg.tc_Rowid.
end. /* for each t_sTaxRegJournal */
/* ================================================================= */
/* Update / add detail */
/* ================================================================= */
for each t_sTaxRegCompany where
t_sTaxRegCompany.tc_ParentRowid = t_sTaxReg.tc_Rowid and
t_sTaxRegCompany.tc_Status <> "D":U:
assign t_sTaxRegCompany.TaxReg_ID = t_sTaxReg.TaxReg_ID.
/* ============================================== */
/* Get the Company_ID based on the logical key */
/* ============================================== */
if (t_sTaxRegCompany.Company_ID = ? or
t_sTaxRegCompany.Company_ID = 0) and
t_sTaxRegCompany.tcCompanyCode <> ? and
t_sTaxRegCompany.tcCompanyCode <> ""
then do:
<Q-8 run CompanyPrim (all) (Read) (NoCache)
(input ?, (LookupCompanyId)
input t_sTaxRegCompany.tcCompanyCode, (CompanyCode)
output dataset tqCompanyPrim) in BCompany >
find tqCompanyPrim where
tqCompanyPrim.tcCompanyCode = t_sTaxRegCompany.tcCompanyCode
no-lock no-error.
if available tqCompanyPrim
then assign t_sTaxRegCompany.Company_ID = tqCompanyPrim.tiCompany_ID.
end. /* if (t_sTaxRegCompany.Company_ID = ? */
find first tTaxRegCompany where tTaxRegCompany.tc_ParentRowid = tTaxReg.tc_Rowid
and tTaxRegCompany.TaxReg_ID = t_sTaxRegCompany.TaxReg_ID
and tTaxRegCompany.Company_ID = t_sTaxRegCompany.Company_ID
no-error.
if available tTaxRegCompany
then assign t_sTaxRegCompany.tc_Status = "C":U.
else do:
<M-9 run AddDetailLine
(input 'TaxRegCompany':U (icTable),
input tTaxReg.tc_Rowid (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BTaxRegister>
if viFcReturnSuper <> 0
then viLocalReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then leave PROCESSBLOCK.
assign t_sTaxRegCompany.tc_Status = "N":U.
end.
/* ================================================================= */
/* override value for identity fields in input */
/* ================================================================= */
assign t_sTaxRegCompany.TaxRegCompany_ID = tTaxRegCompany.TaxRegCompany_ID
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
t_sTaxRegCompany.TaxReg_ID = tTaxRegCompany.TaxReg_ID
t_sTaxRegCompany.tc_Rowid = tTaxRegCompany.tc_Rowid
t_sTaxRegCompany.tc_ParentRowid = tTaxReg.tc_Rowid.
end. /* for each t_sTaxRegCompany */
<I-72 {UpdateTransString
&TABLE = "TaxReg"}>
/* ================================================================= */
/* override value for identity fields in input */
/* ================================================================= */
assign t_sTaxReg.TaxReg_ID = tTaxReg.TaxReg_ID
t_sTaxReg.Domain_ID = tTaxReg.Domain_ID
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
t_sTaxReg.tc_Rowid = tTaxReg.tc_Rowid
t_sTaxReg.tc_ParentRowid = ""
opPrimeKey = (if opPrimeKey = "" then "" else opPrimeKey + chr(4))
+ string(tTaxReg.TaxReg_ID).
end. /* PROCESSBLOCK: */
<Q-12 run JournalPrim (Stop) in BJournal >
<Q-13 run CompanyPrim (Stop) in BCompany >
assign oiReturnStatus = viLocalReturnStatus.