project QadFinancials > class BConsolid > method ValidateComponentPost
Parameters
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
program code (program4/bconsolid.p)
/* CA776127 - Method needs only to be run when new or modify */
find first t_sConsolid where
t_sConsolid.tc_Status <> "D":U
no-error.
if not available t_sConsolid
then return.
assign oiReturnStatus = -98
viLocalReturnStatus = 0.
CONSOLIDBLOCK:
for each t_sConsolid where
t_sConsolid.tc_Status <> "D":U:
/* ============================= */
/* Get consolidation cycle */
/* ============================= */
<Q-1 run ConsolidCycleByCompanyID (all) (Read) (NoCache)
(input t_sConsolid.ConsolidCompany_ID, (CompanyId)
output dataset tqConsolidCycleByCompanyID) in BConsolidCycle>
find tqConsolidCycleByCompanyID where
tqConsolidCycleByCompanyID.tiCompany_ID = t_sConsolid.ConsolidCompany_ID
no-lock no-error.
if not available tqConsolidCycleByCompanyID
then do:
assign vcMessage = trim(#T-111'You first must set up the consolidation cycle for this entity.':255(999890358)T-111#) + chr(10) +
trim(substitute(#T-253'Entity ID: &1, Entity Code: &2':255(538814005)T-253#,trim(string(t_sConsolid.ConsolidCompany_ID)),trim(t_sConsolid.tcConsolidCompanyCode)))
viLocalReturnStatus = -1.
<M-2 run SetMessage
(input vcMessage (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input '':U (icRowid),
input 'QadFin-8913':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BConsolid>
next CONSOLIDBLOCK.
end. /* if not available tqConsolidCycleByCompanyID */
if tqConsolidCycleByCompanyID.tcConsolidCycleStatus <> {&CONSOLIDCYCLESTATUS-OPERATIONAL}
then do:
assign vcMessage = trim(substitute(#T-110'You can only create a consolidation record for consolidation cycles that have status &1.':200(999890343)T-110#, trim({&CONSOLIDCYCLESTATUS-OPERATIONAL-TR}))) + chr(10) +
trim(substitute(#T-68'Entity ID: &1, Entity Code: &2.':213(999890175)T-68#, trim(string(t_sConsolid.ConsolidCompany_ID)), trim(t_sConsolid.tcConsolidCompanyCode) ))
viLocalReturnStatus = -1.
<M-3 run SetMessage
(input vcMessage (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input '':U (icRowid),
input 'QadFin-8914':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BConsolid>
leave CONSOLIDBLOCK.
end. /* Consolidation cycle should be operational */
/* ================================================================================== */
/* Run ValidateComponentSub1 (Since ValidateComponent will become too big (30K limit) */
/* ================================================================================== */
<M-69 run ValidateComponentPostSub1 (output viFcReturnSuper (oiReturnStatus)) in BConsolid>
if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and viLocalReturnStatus = 0)
then assign viLocalReturnStatus = viFcReturnSuper.
/* ================= */
/* Retrieve mappings */
/* ================= */
<Q-83 run ConsolidCycleCompanyByCycle (all) (Read) (NoCache)
(input tqConsolidCycleByCompanyID.tiConsolidCycle_ID, (ConsolidCycleID)
input t_sConsolid.ConsolidCompany_ID, (CompanyId)
output dataset tqConsolidCycleCompanyByCycle) in BConsolidCycle>
find tqConsolidCycleCompanyByCycle where
tqConsolidCycleCompanyByCycle.tiConsolidCycle_ID = tqConsolidCycleCompanyByCycle.tiConsolidCycle_ID and
tqConsolidCycleCompanyByCycle.tiSourceCompany_ID = t_sConsolid.SourceCompany_ID
no-error.
if not available tqConsolidCycleCompanyByCycle
then do:
assign vcMessage = trim(substitute(#T-85'Could not find Consolidation Cycle entity for this source entity (&1).':255(999890423)T-85#, trim(t_sConsolid.tcSourceCompanyCode) ))
viLocalReturnStatus = -1.
<M-86 run SetMessage
(input vcMessage (icMessage),
input '':U (icArguments),
input 'tConsolid.tcSourceCompanyCode':U (icFieldName),
input t_sConsolid.tcSourceCompanyCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sConsolid.tc_Rowid (icRowid),
input 'QadFin-8933':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BConsolid>
end. /* if not available tqConsolidCycleCompanyByCycle */
<Q-82 run COACrossRefDetByIDParentID (all) (Read) (NoCache)
(input tqConsolidCycleCompanyByCycle.tiCOACrossRef_ID, (COACrossRefID)
input ?, (COACrossRefDetID)
input tqConsolidCycleByCompanyID.tiCompany_ID, (CompanyId)
output dataset tqCOACrossRefDetByIDParentID) in BCOACrossRef>
/* ======================================================= */
/* All GL's should be cross-referenced (for type SEPERATE) */
/* ======================================================= */
if tqConsolidCycleCompanyByCycle.tcCOACrossRefType = {&COACROSSREFTYPE-SEPERATE}
then do:
/* ================================================================ */
/* All GL Records from the source domain should be cross referenced */
/* ================================================================ */
<Q-9 run GLAnalysisSettings (all) (Read) (NoCache)
(input t_sConsolid.SourceCompany_ID, (CompanyId)
input '', (GLCode)
input ?, (GLID)
output dataset tqGLAnalysisSettings) in BGL>
assign vcListMissingGL = "":U.
for each tqGLAnalysisSettings:
if not can-find (first tqCOACrossRefDetByIDParentID where
tqCOACrossRefDetByIDParentID.tiCOACrossRef_ID = tqConsolidCycleCompanyByCycle.tiCOACrossRef_ID and
tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcGLFrom = tqGLAnalysisSettings.tcGLCode)
then do:
if not can-find(first tqCOACrossRefDetByIDParentID where
tqGLAnalysisSettings.tcGLCode matches tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcGLFrom or
(tqGLAnalysisSettings.tcGLCode >= tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcGLFrom and
tqGLAnalysisSettings.tcGLCode <= tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcGLTo))
then assign vcListMissingGL = vcListMissingGL + tqGLAnalysisSettings.tcGLCode + ", ":U.
end.
end. /* for each tqGLAnalysisSettings: */
if vcListMissingGL <> "":U
then do:
assign vcListMissingGL = substring(vcListMissingGL, 1, length(vcListMissingGL, "CHARACTER") - 2, "CHARACTER")
vcMessage = trim(#T-79'GL Cross-reference mappings are not complete.':200(999890162)T-79#) + chr(10) +
trim(substitute(#T-80'COA Cross Reference: &1':255(999890163)T-80#, trim(tqConsolidCycleCompanyByCycle.tcCOACrossRefCode) )) + chr(10) +
trim(substitute(#T-81'Missing GL Accounts: &1':255(999890164)T-81#, trim(vcListMissingGL) ))
viLocalReturnStatus = -1.
<M-78 run SetMessage
(input vcMessage (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sConsolid.tc_Rowid (icRowid),
input 'QadFin-8932':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BConsolid>
end. /* if vcListMissingGL <> "":U */
/* ====================================================================================== */
/* Check if analysis is needed - we can only do this when the target account is specified */
/* ====================================================================================== */
assign vcListGLWithDivision = "":U
vcListGLWithCostCentre = "":U
vcListGLWithProject = "":U.
if tqConsolidCycleByCompanyID.tlConsolidCycleIsWithDiv = false or
tqConsolidCycleByCompanyID.tlConsolidCycleIsWithCostCtr = false or
tqConsolidCycleByCompanyID.tlConsolidCycleIsWithProject = false
then do:
/* ============================== */
/* All GL Records from the Target */
/* ============================== */
<Q-22 run GLAnalysisSettings (all) (Read) (NoCache)
(input tqConsolidCycleByCompanyID.tiCompany_ID, (CompanyId)
input '', (GLCode)
input ?, (GLID)
output dataset tqGLAnalysisSettings) in BGL>
for each tqCOACrossRefDetByIDParentID where
tqCOACrossRefDetByIDParentID.tiCOACrossRef_ID = tqConsolidCycleCompanyByCycle.tiCOACrossRef_ID and
tqCOACrossRefDetByIDParentID.tiTargetGL_ID <> 0 and
tqCOACrossRefDetByIDParentID.tiTargetGL_ID <> ?:
find tqGLAnalysisSettings where
tqGLAnalysisSettings.tiGL_ID = tqCOACrossRefDetByIDParentID.tiTargetGL_ID
no-error.
if available tqGLAnalysisSettings
then do:
if tqConsolidCycleByCompanyID.tlConsolidCycleIsWithDiv = false and
tqGLAnalysisSettings.tlGLIsDivisionAccount = true
then assign vcListGLWithDivision = vcListGLWithDivision + tqGLAnalysisSettings.tcGLCode + ", ":U.
if tqConsolidCycleByCompanyID.tlConsolidCycleIsWithCostCtr = false and
tqGLAnalysisSettings.tlGLIsCostCentreAccount = true
then assign vcListGLWithCostCentre = vcListGLWithCostCentre + tqGLAnalysisSettings.tcGLCode + ", ":U.
if tqConsolidCycleByCompanyID.tlConsolidCycleIsWithProject = false and
tqGLAnalysisSettings.tlGLIsProjectAccount = true
then assign vcListGLWithProject = vcListGLWithProject + tqGLAnalysisSettings.tcGLCode + ", ":U.
end. /* if available tqGLAnalysisSettings */
end. /* for each tqCOACrossRefDetByIDParentID where */
end. /* if t_sConsolidCycle.ConsolidCycleIsWithDiv = false or */
if vcListGLWithDivision <> "":U
then do:
assign vcListMissingGL = substring(vcListGLWithDivision, 1, length(vcListGLWithDivision, "CHARACTER") - 2, "CHARACTER")
vcMessage = trim(#T-100'If Sub-Account is not included, consolidated GLs with Sub-Account enabled will use default values defined in the Consolidation Cycle.':200(999890165)T-100#) + chr(10) +
trim(substitute(#T-101'COA Cross Reference: &1':255(999890163)T-101#, trim(tqConsolidCycleCompanyByCycle.tcCOACrossRefCode) )) + chr(10) +
trim(substitute(#T-102'GL Accounts with Sub-Account: &1':255(999890166)T-102#, trim(vcListGLWithDivision) )).
if viLocalReturnStatus = 0 then viLocalReturnStatus = 1.
<M-97 run SetMessage
(input vcMessage (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'W':U (icType),
input 3 (iiSeverity),
input t_sConsolid.tc_Rowid (icRowid),
input 'QadFin-8934':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BConsolid>
end. /* if vcListGLWithDivision <> "":U */
if vcListGLWithCostCentre <> "":U
then do:
assign vcListMissingGL = substring(vcListGLWithCostCentre, 1, length(vcListGLWithCostCentre, "CHARACTER") - 2, "CHARACTER")
vcMessage = trim(#T-103'If Cost Center is not included, consolidated GLs with Cost Centers enabled will use default values defined in the Consolidation Cycle.':200(999890167)T-103#) + chr(10) +
trim(substitute(#T-104'COA Cross Reference: &1':255(999890163)T-104#, trim(tqConsolidCycleCompanyByCycle.tcCOACrossRefCode) )) + chr(10) +
trim(substitute(#T-105'GL Accounts with Cost Center: &1':255(999890171)T-105#, trim(vcListGLWithCostCentre) )).
if viLocalReturnStatus = 0 then viLocalReturnStatus = 1.
<M-98 run SetMessage
(input vcMessage (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'W':U (icType),
input 3 (iiSeverity),
input t_sConsolid.tc_Rowid (icRowid),
input 'QadFin-8935':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BConsolid>
end. /* if vcListGLWithCostCentre <> "":U */
if vcListGLWithProject <> "":U
then do:
assign vcListMissingGL = substring(vcListGLWithProject, 1, length(vcListGLWithProject, "CHARACTER") - 2, "CHARACTER")
vcMessage = trim(#T-106'If Projects is not included, consolidated GLs with Projects enabled will use default values defined in the Consolidation Cycle.':200(999890169)T-106#) + chr(10) +
trim(substitute(#T-107'COA Cross Reference: &1':255(999890163)T-107#, trim(tqConsolidCycleCompanyByCycle.tcCOACrossRefCode) )) + chr(10) +
trim(substitute(#T-108'GL Accounts with Project: &1':255(999890170)T-108#, trim(vcListGLWithProject) )).
if viLocalReturnStatus = 0 then viLocalReturnStatus = 1.
<M-99 run SetMessage
(input vcMessage (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'W':U (icType),
input 3 (iiSeverity),
input t_sConsolid.tc_Rowid (icRowid),
input 'QadFin-8936':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BConsolid>
end. /* if vcListGLWithProject <> "":U */
end. /* if tqCOACrossRefByAll.tcCOACrossRefType = {&COACROSSREFTYPE-SEPERATE} */
/* Retrieve the mapped periods */
<Q-114 run ConsolidPeriodXrefByPeriod (all) (Read) (NoCache)
(input t_sConsolid.SourceCompany_ID, (CompanyId)
input t_sConsolid.ConsolidCompany_ID, (ConsolidCompanyID)
input '':U, (ConsolidCompanyCode)
input ?, (SourceYear)
input ?, (SourcePeriod)
input ?, (TargetYear)
input ?, (TargetPeriod)
output dataset tqConsolidPeriodXrefByPeriod) in BConsolidPeriodXref>
/* Retrieve periods to consolidate in Consolidation Company */
<Q-112 run PeriodByPeriodRange (all) (Read) (NoCache)
(input t_sConsolid.ConsolidCompany_ID, (CompanyId)
input (t_sConsolid.tiFromPeriodYear * 100) + t_sConsolid.tiFromPeriodPeriod, (FromYearPeriod)
input (t_sConsolid.tiToPeriodYear * 100) + t_sConsolid.tiToPeriodPeriod, (ToYearPeriod)
output dataset tqPeriodByPeriodRange) in BPeriod >
for each tqPeriodByPeriodRange where
tqPeriodByPeriodRange.tiPeriodYearPeriod >= (t_sConsolid.tiFromPeriodYear * 100) + t_sConsolid.tiFromPeriodPeriod and
tqPeriodByPeriodRange.tiPeriodYearPeriod <= (t_sConsolid.tiToPeriodYear * 100) + t_sConsolid.tiToPeriodPeriod
no-lock:
/* ============================================================== */
/* The selected companies should be X-reffed (ConsolidPeriodXref) */
/* ============================================================== */
find first tqConsolidPeriodXrefByPeriod where
tqConsolidPeriodXrefByPeriod.tiCompany_ID = t_sConsolid.SourceCompany_ID and
tqConsolidPeriodXrefByPeriod.tiConsolidationCompany_ID = t_sConsolid.ConsolidCompany_ID and
tqConsolidPeriodXrefByPeriod.tiConsolidPeriodYear = tqPeriodByPeriodRange.tiPeriodYear and
tqConsolidPeriodXrefByPeriod.tiConsolidPeriodPeriod = tqPeriodByPeriodRange.tiPeriodPeriod
no-error.
if not available tqConsolidPeriodXrefByPeriod
then do:
assign vcMessage = trim(substitute(#T-116'No GL period cross-reference found for GL period &1/&2 and source entity &3.':200(1345)T-116#, trim(string(tqPeriodByPeriodRange.tiPeriodYear)), trim(string(tqPeriodByPeriodRange.tiPeriodPeriod)), trim(t_sConsolid.tcSourceCompanyCode) ))
viLocalReturnStatus = -1.
<M-115 run SetMessage
(input vcMessage (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sConsolid.tc_Rowid (icRowid),
input 'QadFin-9077':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BConsolid>
end. /* if not available tqConsolidPeriodXrefByPeriod */
else do:
/* =========================================================== */
/* The selected periods should be closed in the source company */
/* =========================================================== */
if tqConsolidPeriodXrefByPeriod.tlPeriodIsPostingGLAllowed = true
then do:
assign vcMessage = trim(substitute(#T-49'Source GL period &1/&2 is not closed for entity &3.':200(1344)T-49#, trim(string(tqPeriodByPeriodRange.tiPeriodYear)), trim(string(tqPeriodByPeriodRange.tiPeriodPeriod)), trim(t_sConsolid.tcSourceCompanyCode) ))
viLocalReturnStatus = -1.
<M-27 run SetMessage
(input vcMessage (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sConsolid.tc_Rowid (icRowid),
input 'QadFin-8918':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BConsolid>
end. /* if tqConsolidPeriodXrefByPeriod.tlPeriodIsPostingGLAllowed = true */
end. /* else do: */
end. /* for each tqPeriodByPeriodRange where */
/* ================================================================== */
/* The selected To-period should be open in the consolidation company */
/* ================================================================== */
<Q-29 run PeriodByYearPeriod (all) (Read) (NoCache)
(input t_sConsolid.ConsolidCompany_ID, (CompanyId)
input t_sConsolid.tiToPeriodYear, (PeriodYear)
input t_sConsolid.tiToPeriodPeriod, (PeriodPeriod)
input 0, (PeriodId)
output dataset tqPeriodByYearPeriod) in BPeriod >
find tqPeriodByYearPeriod where
tqPeriodByYearPeriod.tiCompany_ID = t_sConsolid.ConsolidCompany_ID and
tqPeriodByYearPeriod.tiPeriodYear = t_sConsolid.tiToPeriodYear and
tqPeriodByYearPeriod.tiPeriodPeriod = t_sConsolid.tiToPeriodPeriod
no-lock no-error.
if not available tqPeriodByYearPeriod
then do:
assign vcMessage = trim(substitute(#T-51'The consolidation period (&1/&2) specified is not defined in the system.':200(63349)T-51#, trim(string(t_sConsolid.tiToPeriodYear)), trim(string(t_sConsolid.tiToPeriodPeriod)) ))
viLocalReturnStatus = -1.
<M-30 run SetMessage
(input vcMessage (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sConsolid.tc_Rowid (icRowid),
input 'QadFin-8920':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BConsolid>
end. /* if not available tqPeriodByYearPeriod */
else do:
if tqPeriodByYearPeriod.tcPeriodStatus <> {&PERIODSTATUS-OPEN}
then do:
assign vcMessage = trim(substitute(#T-52'The consolidation period (&1/&2) specified is not an open period.':200(63350)T-52#, trim(string(t_sConsolid.tiToPeriodYear)), trim(string(t_sConsolid.tiToPeriodPeriod)) ))
viLocalReturnStatus = -1.
<M-31 run SetMessage
(input vcMessage (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sConsolid.tc_Rowid (icRowid),
input 'QadFin-8921':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BConsolid>
end. /* if tqPeriodByYearPeriod.tcPeriodStatus <> {&PERIODSTATUS-OPEN} */
end. /* else do: */
end. /* for each t_sConsolid where */
assign oiReturnStatus = viLocalReturnStatus.