Description
Write here all tests on database update (new / modify / delete) that cannot be coded with a validation mask.
The type of update can be found in tc_status (N/C/D).
If you find incorrect data, you must write an entry in tFcMessages (using SetMessage) and set the return status of this method to either +1 or -1.
Return status +1 = data will still be accepted.
Return status -1 = data will not be accepted.
This method is run from SetPublicTables, before transferring the received data into the class temp-tables.
Parameters
oiReturnStatus | output | integer | |
Internal usage
unused
program code (program/bconsolidperiodxref.p)
assign oiReturnStatus = -98.
/*=============================================================================================*/
/* Place all (Consolidation)Companies in a temp-table for faster access when filling */
/* read-only RKBF ConsolidationCompany_ID in instance temp-table. */
/*=============================================================================================*/
<Q-15 run CompanyPrim (all) (Read) (NoCache)
(input ?, (LookupCompanyId)
input ?, (CompanyCode)
output dataset tqCompanyPrim) in BCompany >
/*=============================================================================================*/
/* Manually fill read-only RKBFs (ConsolidationCompany_ID and ConsolidationPeriod_ID) */
/*=============================================================================================*/
for each t_sConsolidPeriodXref:
/* Fill ConsolidationCompany_ID */
find first tqCompanyPrim where
tqCompanyPrim.tcCompanyCode = t_sConsolidPeriodXref.tcConsolidCompanyCode
no-lock no-error.
if not available(tqCompanyPrim)
then do:
assign vcConsPerXrefMsg = substitute(#T-25'Consolidation entity &1 not found.':200(1363)t-25#,
trim(t_sConsolidPeriodXref.tcConsolidCompanyCode))
oiReturnStatus = -1.
<M-16 run SetMessage
(input trim(vcConsPerXrefMsg) (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input '':U (icRowid),
input 'QADFIN-2286':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BConsolidPeriodXref>
return.
end.
else do:
assign t_sConsolidPeriodXref.ConsolidationCompany_ID = tqCompanyPrim.tiCompany_ID.
end.
/* Fill ConsolidationPeriod_ID */
<Q-18 run PeriodPrim (all) (Read) (NoCache)
(input t_sConsolidPeriodXref.ConsolidationCompany_ID, (CompanyId)
input ?, (PeriodId)
input t_sConsolidPeriodXref.tiConsolidPeriodYear, (PeriodYear)
input t_sConsolidPeriodXref.tiConsolidPeriodPeriod, (PeriodPeriod)
output dataset tqPeriodPrim) in BPeriod >
find first tqPeriodPrim where
tqPeriodPrim.tiCompany_ID = t_sConsolidPeriodXref.ConsolidationCompany_ID and
tqPeriodPrim.tiPeriodYear = t_sConsolidPeriodXref.tiConsolidPeriodYear and
tqPeriodPrim.tiPeriodPeriod = t_sConsolidPeriodXref.tiConsolidPeriodPeriod
no-lock no-error.
if not available(tqPeriodPrim)
then do:
assign vcConsPerXrefMsg = substitute(#T-26'Consolidation period (&1/&2) is not defined in the consolidation entity (&3).':200(1385)t-26#,
trim(string(t_sConsolidPeriodXref.tiConsolidPeriodYear)),
trim(string(t_sConsolidPeriodXref.tiConsolidPeriodPeriod)),
trim(string(t_sConsolidPeriodXref.tcConsolidCompanyCode)))
oiReturnStatus = -1.
<M-19 run SetMessage
(input trim(vcConsPerXrefMsg) (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input '':U (icRowid),
input 'QADFIN-2287':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BConsolidPeriodXref>
next.
end.
else do:
assign t_sConsolidPeriodXref.ConsolidationPeriod_ID = tqPeriodPrim.tiPeriod_ID.
end.
end.
empty temp-table tqCompanyPrim.
empty temp-table tqPeriodPrim.
/*=============================================================================================*/
/* No point in doing further validation when Consolidation Company or Consolidation Period(s) */
/* do not exist. */
/*=============================================================================================*/
if (oiReturnStatus < 0 and oiReturnStatus <> -98)
then return.
<ANCESTOR-CODE>
for each t_sConsolidPeriodXref:
/*==========================================================================================*/
/* Verify that Consolidation Company has a Consolidation Cycle record */
/*==========================================================================================*/
<Q-24 assign vlFcQueryRecordsAvailable = ConsolidCycleByCompanyID (NoCache)
(input t_sConsolidPeriodXref.ConsolidationCompany_ID, (CompanyId)) in BConsolidCycle >
if (vlFcQueryRecordsAvailable <> true)
then do:
assign vcConsPerXrefMsg = substitute(#T-27'The consolidation entity &1 has no consolidation cycle.':200(1366)t-27#,
trim(t_sConsolidPeriodXref.tcConsolidCompanyCode))
oiReturnStatus = -1.
<M-23 run SetMessage
(input trim(vcConsPerXrefMsg) (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input ? (icRowid),
input 'QADFIN-2411':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BConsolidPeriodXref>
return.
end.
/*==========================================================================================*/
/* Source Company must differ from Consolidation Company. */
/*==========================================================================================*/
if (t_sConsolidPeriodXref.ConsolidationCompany_ID = viCompanyId)
then do:
assign vcConsPerXrefMsg = substitute(#T-28'The consolidation entity must match the source entity.':200(1367)t-28#)
oiReturnStatus = -1.
<M-1 run SetMessage
(input trim(vcConsPerXrefMsg) (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sConsolidPeriodXref.tc_Rowid (icRowid),
input 'QADFIN-2269':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BConsolidPeriodXref>
return.
end.
end.
for each t_sConsolidPeriodXref where
t_sConsolidPeriodXref.tc_Status = 'C':U OR
t_sConsolidPeriodXref.tc_Status = 'N':U:
/*================================================================================== */
/* Start and End dates of the selected Periods should be the same */
/* in the Source Company and the Consolidation Company. */
/*================================================================================== */
/* Get the Source Period */
<Q-3 run PeriodByYearPeriod (all) (Read) (NoCache)
(input viCompanyId, (CompanyId)
input t_sConsolidPeriodXref.tiPeriodYear, (PeriodYear)
input t_sConsolidPeriodXref.tiPeriodPeriod, (PeriodPeriod)
input ?, (PeriodId)
output dataset tqPeriodByYearPeriod) in BPeriod >
find first tqPeriodByYearPeriod no-lock no-error.
if not available(tqPeriodByYearPeriod)
then do:
assign vcConsPerXrefMsg = substitute(#T-31'Period &1/&2 is not defined in the source entity.':100(65133)t-31#,
trim(string(t_sConsolidPeriodXref.tiPeriodYear)),
trim(string(t_sConsolidPeriodXref.tiPeriodPeriod)))
oiReturnStatus = -1.
<M-11 run SetMessage
(input trim(vcConsPerXrefMsg) (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sConsolidPeriodXref.ConsolidPeriodXref_ID (icRowid),
input 'QADFIN-2272':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BConsolidPeriodXref>
next.
end.
else do:
assign viPeriodYear = tqPeriodByYearPeriod.tiPeriodYear
viPeriodPeriod = tqPeriodByYearPeriod.tiPeriodPeriod
vtPeriodStartDate = tqPeriodByYearPeriod.ttPeriodStartDate
vtPeriodEndDate = tqPeriodByYearPeriod.ttPeriodEndDate.
end.
/* Get the Consolidation Period */
<Q-5 run PeriodByYearPeriod (all) (Read) (NoCache)
(input t_sConsolidPeriodXref.ConsolidationCompany_ID, (CompanyId)
input t_sConsolidPeriodXref.tiConsolidPeriodYear, (PeriodYear)
input t_sConsolidPeriodXref.tiConsolidPeriodPeriod, (PeriodPeriod)
input ?, (PeriodId)
output dataset tqPeriodByYearPeriod) in BPeriod >
find first tqPeriodByYearPeriod where
tqPeriodByYearPeriod.tiCompany_ID = t_sConsolidPeriodXref.ConsolidationCompany_ID and
tqPeriodByYearPeriod.tiPeriodYear = t_sConsolidPeriodXref.tiConsolidPeriodYear and
tqPeriodByYearPeriod.tiPeriodPeriod = t_sConsolidPeriodXref.tiConsolidPeriodPeriod
no-lock no-error.
if not available(tqPeriodByYearPeriod)
then do:
assign vcConsPerXrefMsg = substitute(#T-29'Consolidation period &1/&2 is not defined in the consolidation entity.':200(1386)t-29#,
trim(string(t_sConsolidPeriodXref.tiConsolidPeriodYear)),
trim(string(t_sConsolidPeriodXref.tiConsolidPeriodPeriod)))
oiReturnStatus = -1.
<M-12 run SetMessage
(input trim(vcConsPerXrefMsg) (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sConsolidPeriodXref.ConsolidPeriodXref_ID (icRowid),
input 'QADFIN-2273':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BConsolidPeriodXref>
next.
end.
else do:
/*==========================================================================================*/
/* Start and End dates of Source Period must fall between */
/* Start and End dates of Consolidation Period. */
/*==========================================================================================*/
if (vtPeriodStartDate < tqPeriodByYearPeriod.ttPeriodStartDate or
vtPeriodStartDate > tqPeriodByYearPeriod.ttPeriodEndDate or
vtPeriodEndDate < tqPeriodByYearPeriod.ttPeriodStartDate or
vtPeriodEndDate > tqPeriodByYearPeriod.ttPeriodEndDate)
then do:
assign vcConsPerXrefMsg = substitute(#T-30'Starting and end date of the source period (&1/&2) must fall between starting and end date of the consolidation period (&3/&4).':200(1387)T-30#,
trim(string(viPeriodYear)),
trim(string(viPeriodPeriod)),
trim(string(tqPeriodByYearPeriod.tiPeriodYear)),
trim(string(tqPeriodByYearPeriod.tiPeriodPeriod))).
if (oiReturnStatus >= 0)
then assign oiReturnStatus = -1.
<M-7 run SetMessage
(input trim(vcConsPerXrefMsg) (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input '':U (icRowid),
input 'QADFIN-2270':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BConsolidPeriodXref>
end.
end.
end.
if oiReturnStatus = -98
then oiReturnStatus = 0.