project QadFinancials > class BMirroringGL > method ValidateComponentPostAnalysis
Description
This method is used within validatecomponentPost. All validation against analytical dimension of mirror 1 account is included.
Parameters
blGLByIdStarted | input-output | logical | |
blMirroringGLstarted | input-output | logical | |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
program code (program4/bmirroringgl.p)
/*
Validation on Mirror 1 Account and Source 1 Account
This method should only be invoked by ValidateComponentPost
*/
assign oiReturnStatus = -98
viLocalStatus = 0.
if blGLByIdStarted <> true
then do:
<Q-25 run GLById (Start) in BGL >
assign blGLByIdStarted = true.
end.
if not blMirroringGLstarted
then do:
<Q-65 run MirroringGLBySourceGLAnalysis (Start) in BMirroringGL >
assign blMirroringGLstarted = true.
end.
/* If the mirror account has an analytical dimension then it must have a default value for that dimension. */
/* Lookup analytical information for source 1 account */
<Q-64 run GLById (all) (Read) (NoCache)
(input t_sMirroringGL.Company_ID, (CompanyId)
input t_sMirroringGL.Source1GL_ID, (GLId)
output dataset tqGLById) in BGL >
find first tqGLById no-error.
if available tqGLById
then
assign vlGLIsCostCentreAccount = tqGLById.tlGLIsCostCentreAccount
vlGLIsProjectAccount = tqGLById.tlGLIsProjectAccount
vlGLIsDivisionAccount = tqGLById.tlGLIsDivisionAccount.
/* Lookup analytical information for mirror 1 account */
<Q-2 run GLById (all) (Read) (NoCache)
(input t_sMirroringGL.Company_ID, (CompanyId)
input t_sMirroringGL.Mirror1GL_ID, (GLId)
output dataset tqGLById) in BGL >
find first tqGLById no-error.
/*Make sure mirror 1 accont don't support SAF analysis */
if(tqGLById.tlGLIsSafAccount)
then do:
assign vcMsg = trim(substitute( #T-26'Mirror account &1 cannot support SAF analysis.':100(68002)t-26#,
trim(t_sMirroringGL.tcMirror1GLCode))).
<M-3 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input 'tMirroringGL.tcMirror1GLCode':U (icFieldName),
input t_sMirroringGL.tcMirror1GLCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sMirroringGL.tc_Rowid (icRowid),
input 'QadFin-7496':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
assign viLocalStatus = -1.
end.
/* If mirror 1 account is a cost center account,then it should have default value for cost center*/
if tqGLById.tlGLIsCostCentreAccount and
(tqGLById.tiCostCentreProfile_ID = 0 or
tqGLById.tiCostCentreProfile_ID = ?)
then do:
assign vcMsg = trim(substitute( #T-27'Mirror 1 Account &1 has cost center analysis and must have a default cost center value.':255(69289)t-27#,
trim(t_sMirroringGL.tcMirror1GLCode))).
<M-16 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input 'tMirroringGL.tcMirror1GLCode':U (icFieldName),
input t_sMirroringGL.tcMirror1GLCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sMirroringGL.tc_Rowid (icRowid),
input 'QadFin-7504':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
assign viLocalStatus = -1.
end. /* if tqGLById.tlGLIsCostCentreAccount and */
/* If mirror 1 account is a project account,then it should have default value for project */
if tqGLById.tlGLIsProjectAccount and
(tqGLById.tiProjectProfile_ID = 0 or
tqGLById.tiProjectProfile_ID = ?)
then do:
assign vcMsg = trim(substitute( #T-29'Mirror 1 Account &1 has project analysis and must have a default project value.':255(69290)t-29#,
trim(t_sMirroringGL.tcMirror1GLCode)))
viLocalStatus = -1.
<M-28 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input 'tMirroringGL.tcMirror1GLCode':U (icFieldName),
input t_sMirroringGL.tcMirror1GLCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sMirroringGL.tc_Rowid (icRowid),
input 'QadFin-7533':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
end. /* if tqGLById.tlGLIsProjectAccount and */
/* If mirror 1 account is a sub-account account,then it should have default value for sub-account*/
if tqGLById.tlGLIsDivisionAccount and
(tqGLById.tiDivisionProfile_ID = 0 or
tqGLById.tiDivisionProfile_ID = ?)
then do:
assign vcMsg = trim(substitute( #T-31'Mirror 1 Account &1 has sub-account analysis and should have a default sub-account defined.':255(69291)t-31#,
trim(t_sMirroringGL.tcMirror1GLCode)))
viLocalStatus = -1.
<M-30 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input 'tMirroringGL.tcMirror1GLCode':U (icFieldName),
input t_sMirroringGL.tcMirror1GLCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sMirroringGL.tc_Rowid (icRowid),
input 'QadFin-7534':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
end. /* if tqGLById.tlGLIsDivisionAccount and */
/*
If Source1GL is defined with costcentre and Source1CostCentre_ID is filled
Make sure we can't find any MirroringGL record
with the same Source1GL and Source2GL that has Source1CostCentre_ID blank.
Vice versa.
*/
if vlGLIsCostCentreAccount and
t_sMirroringGL.Source1CostCentre_ID <> 0 and
t_sMirroringGL.Source1CostCentre_ID <> ?
then do:
find first bMirroringGL where
bMirroringGL.Source1GL_ID = t_sMirroringGL.Source1GL_ID and
bMirroringGL.Source2GL_ID = t_sMirroringGL.Source2GL_ID and
bMirroringGL.Company_ID = t_sMirroringGL.Company_ID and
bMirroringGL.Domain_ID = t_sMirroringGL.Domain_ID and
bMirroringGL.tc_Rowid <> t_sMirroringGL.tc_Rowid and
(bMirroringGL.Source1CostCentre_ID = 0 or
bMirroringGL.Source1CostCentre_ID = ?)
no-error.
<Q-19 run MirroringGLBySourceGLAnalysis (all) (Read) (NoCache)
(input t_sMirroringGL.Company_ID, (CompanyId)
input t_sMirroringGL.Domain_ID, (DomainId)
input t_sMirroringGL.Source1GL_ID, (Source1GLId)
input t_sMirroringGL.Source2GL_ID, (Source2GLId)
output dataset tqMirroringGLBySourceGLAnalysis) in BMirroringGL >
find first tqMirroringGLBySourceGLAnalysis where
(tqMirroringGLBySourceGLAnalysis.tiSource1CostCentre_ID = 0 or
tqMirroringGLBySourceGLAnalysis.tiSource1CostCentre_ID = ?) and
tqMirroringGLBySourceGLAnalysis.tiMirroringGL_ID <> t_sMirroringGL.MirroringGL_ID
no-error.
if available tqMirroringGLBySourceGLAnalysis or available bMirroringGL
then do:
assign vcMsg = trim( #T-32'Another record with the same source accounts is already created with a blank cost center.':255(68314)T-32#) + chr(10) +
trim( #T-33'You cannot specify a cost center when using wildcards.':100(67963)t-33#) + chr(10) +
trim( substitute(#T-34'Cost center code: &1':100(67964)T-34#, t_sMirroringGL.tcSource1CostCentreCode)).
<M-20 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input 'tMirroringGL.tcSource1CostCentreCode':U (icFieldName),
input t_sMirroringGL.tcSource1CostCentreCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sMirroringGL.tc_Rowid (icRowid),
input 'QadFin-7507':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
assign viLocalStatus = -1.
end. /* if available tqMirroringGLBySourceGLAnalysis or available bMirroringGL */
end. /* If Source1GL is defined with costcentre and Source1CostCentre_ID is filled */
/* If Source1GL is defined with costcentre and Source1CostCentre_ID is not filled */
if vlGLIsCostCentreAccount and
(t_sMirroringGL.Source1CostCentre_ID = 0 or
t_sMirroringGL.Source1CostCentre_ID = ?)
then do:
find first bMirroringGL where
bMirroringGL.Source1GL_ID = t_sMirroringGL.Source1GL_ID and
bMirroringGL.Source2GL_ID = t_sMirroringGL.Source2GL_ID and
bMirroringGL.Company_ID = t_sMirroringGL.Company_ID and
bMirroringGL.Domain_ID = t_sMirroringGL.Domain_ID and
bMirroringGL.tc_Rowid <> t_sMirroringGL.tc_Rowid and
(bMirroringGL.Source1CostCentre_ID <> 0 and
bMirroringGL.Source1CostCentre_ID <> ?)
no-error.
<Q-35 run MirroringGLBySourceGLAnalysis (all) (Read) (NoCache)
(input t_sMirroringGL.Company_ID, (CompanyId)
input t_sMirroringGL.Domain_ID, (DomainId)
input t_sMirroringGL.Source1GL_ID, (Source1GLId)
input t_sMirroringGL.Source2GL_ID, (Source2GLId)
output dataset tqMirroringGLBySourceGLAnalysis) in BMirroringGL >
find first tqMirroringGLBySourceGLAnalysis where
tqMirroringGLBySourceGLAnalysis.tiSource1CostCentre_ID <> 0 and
tqMirroringGLBySourceGLAnalysis.tiSource1CostCentre_ID <> ? and
tqMirroringGLBySourceGLAnalysis.tiMirroringGL_ID <> t_sMirroringGL.MirroringGL_ID
no-error.
if available tqMirroringGLBySourceGLAnalysis or available bMirroringGL
then do:
assign vcMsg = trim(#T-40'Another record with the same source accounts is already created with a non-blank cost center':100(68315)T-40#) + chr(10) +
trim(#T-41'You cannot use wildcards for cost center when a specific cost center is already used.':100(67968)t-41#).
<M-36 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input 'tMirroringGL.tcSource1CostCentreCode':U (icFieldName),
input t_sMirroringGL.tcSource1CostCentreCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sMirroringGL.tc_Rowid (icRowid),
input 'QadFin-7536':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
assign viLocalStatus = -1.
end. /* if available tqMirroringGLBySourceGLAnalysis or available bMirroringGL */
end. /* If Source1GL is defined with costcentre and Source1CostCentre_ID not is filled */
/*
If Source1GL is defined with division and Source1Division_ID is filled
Make sure we can?t find any MirroringGL record
with the same Source1GL and Source2GL that has Source1Division_ID blank.
*/
if vlGLIsDivisionAccount and
t_sMirroringGL.Source1Division_ID <> 0 and
t_sMirroringGL.Source1Division_ID <> ?
then do:
find first bMirroringGL where
bMirroringGL.Source1GL_ID = t_sMirroringGL.Source1GL_ID and
bMirroringGL.Source2GL_ID = t_sMirroringGL.Source2GL_ID and
bMirroringGL.Company_ID = t_sMirroringGL.Company_ID and
bMirroringGL.Domain_ID = t_sMirroringGL.Domain_ID and
bMirroringGL.tc_Rowid <> t_sMirroringGL.tc_Rowid and
(bMirroringGL.Source1Division_ID = 0 or
bMirroringGL.Source1Division_ID = ?)
no-error.
<Q-21 run MirroringGLBySourceGLAnalysis (all) (Read) (NoCache)
(input t_sMirroringGL.Company_ID, (CompanyId)
input t_sMirroringGL.Domain_ID, (DomainId)
input t_sMirroringGL.Source1GL_ID, (Source1GLId)
input t_sMirroringGL.Source2GL_ID, (Source2GLId)
output dataset tqMirroringGLBySourceGLAnalysis) in BMirroringGL >
find first tqMirroringGLBySourceGLAnalysis where
(tqMirroringGLBySourceGLAnalysis.tiSource1Division_ID = 0 or
tqMirroringGLBySourceGLAnalysis.tiSource1Division_ID = ?) and
tqMirroringGLBySourceGLAnalysis.tiMirroringGL_ID <> t_sMirroringGL.MirroringGL_ID
no-error.
if available tqMirroringGLBySourceGLAnalysis or available bMirroringGL
then do:
assign vcMsg = trim( #T-43'Another record exists with the same source accounts, but with a blank sub-account.':100(68316)t-43#) + chr(10) +
trim( #T-44'You cannot specify a sub-account when using wildcards.':100(67970)t-44#) + chr(10) +
trim( substitute(#T-45'Sub-account code: &1':100(67971)T-45#, t_sMirroringGL.tcSource1DivisionCode))
viLocalStatus = -1.
<M-42 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input 'tMirroringGL.tcSource1DivisionCode':U (icFieldName),
input t_sMirroringGL.tcSource1DivisionCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sMirroringGL.tc_Rowid (icRowid),
input 'QadFin-7540':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
end. /* if available tqMirroringGLBySourceGLAnalysis or available bMirroringGL */
end. /* If Source1GL is defined with division and Source1Division_ID is filled */
/* If Source1GL is defined with division and Source1Division_ID is not filled */
if vlGLIsDivisionAccount and
(t_sMirroringGL.Source1Division_ID = 0 or
t_sMirroringGL.Source1Division_ID = ?)
then do:
find first bMirroringGL where
bMirroringGL.Source1GL_ID = t_sMirroringGL.Source1GL_ID and
bMirroringGL.Source2GL_ID = t_sMirroringGL.Source2GL_ID and
bMirroringGL.Company_ID = t_sMirroringGL.Company_ID and
bMirroringGL.Domain_ID = t_sMirroringGL.Domain_ID and
bMirroringGL.tc_Rowid <> t_sMirroringGL.tc_Rowid and
(bMirroringGL.Source1Division_ID <> 0 and
bMirroringGL.Source1Division_ID <> ?)
no-error.
<Q-46 run MirroringGLBySourceGLAnalysis (all) (Read) (NoCache)
(input t_sMirroringGL.Company_ID, (CompanyId)
input t_sMirroringGL.Domain_ID, (DomainId)
input t_sMirroringGL.Source1GL_ID, (Source1GLId)
input t_sMirroringGL.Source2GL_ID, (Source2GLId)
output dataset tqMirroringGLBySourceGLAnalysis) in BMirroringGL >
find first tqMirroringGLBySourceGLAnalysis where
tqMirroringGLBySourceGLAnalysis.tiSource1Division_ID <> 0 and
tqMirroringGLBySourceGLAnalysis.tiSource1Division_ID <> ? and
tqMirroringGLBySourceGLAnalysis.tiMirroringGL_ID <> t_sMirroringGL.MirroringGL_ID
no-error.
if available tqMirroringGLBySourceGLAnalysis or available bMirroringGL
then do:
assign vcMsg = trim(#T-51'Another record exists with the same source accounts, but with a non-blank sub-account':100(68317)t-51#) + chr(10) +
trim(#T-52'You cannot use wildcards for the sub-account when a specific sub-account is already used.':100(67975)t-52#)
viLocalStatus = -1.
<M-47 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input 'tMirroringGL.tcSource1DivisionCode':U (icFieldName),
input t_sMirroringGL.tcSource1DivisionCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sMirroringGL.tc_Rowid (icRowid),
input 'QadFin-7543':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
end. /* if available tqMirroringGLBySourceGLAnalysis or available bMirroringGL */
end. /* If Source1GL is defined with division and Source1Division_ID is not filled */
/*
If Source1GL is defined with project and Source1project_ID is filled
Make sure we can?t find any MirroringGL record
with the same Source1GL and Source2GL that has Source1Project_ID blank.
*/
if vlGLIsProjectAccount and
t_sMirroringGL.Source1Project_ID <> 0 and
t_sMirroringGL.Source1Project_ID <> ?
then do:
find first bMirroringGL where
bMirroringGL.Source2GL_ID = t_sMirroringGL.Source1GL_ID and
bMirroringGL.Source1GL_ID = t_sMirroringGL.Source2GL_ID and
bMirroringGL.Company_ID = t_sMirroringGL.Company_ID and
bMirroringGL.Domain_ID = t_sMirroringGL.Domain_ID and
bMirroringGL.tc_Rowid <> t_sMirroringGL.tc_Rowid and
(bMirroringGL.Source1Project_ID = 0 or
bMirroringGL.Source1Project_ID = ?)
no-error.
<Q-23 run MirroringGLBySourceGLAnalysis (all) (Read) (NoCache)
(input t_sMirroringGL.Company_ID, (CompanyId)
input t_sMirroringGL.Domain_ID, (DomainId)
input t_sMirroringGL.Source1GL_ID, (Source1GLId)
input t_sMirroringGL.Source2GL_ID, (Source2GLId)
output dataset tqMirroringGLBySourceGLAnalysis) in BMirroringGL >
find first tqMirroringGLBySourceGLAnalysis where
(tqMirroringGLBySourceGLAnalysis.tiSource1Project_ID = 0 or
tqMirroringGLBySourceGLAnalysis.tiSource1Project_ID = ?) and
tqMirroringGLBySourceGLAnalysis.tiMirroringGL_ID <> t_sMirroringGL.MirroringGL_ID
no-error.
if available tqMirroringGLBySourceGLAnalysis or available bMirroringGL
then do:
assign vcMsg = trim( #T-54'Another record with the same source accounts is already created with a blank project.':100(68318)T-54#) + chr(10) +
trim( #T-55'You cannot specify a project when using wildcards.':100(67977)t-55#) + chr(10) +
trim( substitute(#T-56'Project code: &1':100(67978)T-56#, t_sMirroringGL.tcSource1ProjectCode)).
viLocalStatus = -1.
<M-53 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input 'tMirroringGL.tcSource1ProjectCode':U (icFieldName),
input t_sMirroringGL.tcSource1ProjectCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sMirroringGL.tc_Rowid (icRowid),
input 'QadFin-7544':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
end. /* if available tqMirroringGLBySourceGLAnalysis or available bMirroringGL */
end. /* If Source1GL is defined with project and Source1Project_ID is filled */
/* If Source1GL is defined with project and Source1Project_ID is not filled */
if vlGLIsProjectAccount and
(t_sMirroringGL.Source1Project_ID = 0 or
t_sMirroringGL.Source1Project_ID = ?)
then do:
find first bMirroringGL where
bMirroringGL.Source2GL_ID = t_sMirroringGL.Source1GL_ID and
bMirroringGL.Source1GL_ID = t_sMirroringGL.Source2GL_ID and
bMirroringGL.Company_ID = t_sMirroringGL.Company_ID and
bMirroringGL.Domain_ID = t_sMirroringGL.Domain_ID and
bMirroringGL.tc_Rowid <> t_sMirroringGL.tc_Rowid and
(bMirroringGL.Source1Project_ID <> 0 and
bMirroringGL.Source1Project_ID <> ?)
no-error.
<Q-57 run MirroringGLBySourceGLAnalysis (all) (Read) (NoCache)
(input t_sMirroringGL.Company_ID, (CompanyId)
input t_sMirroringGL.Domain_ID, (DomainId)
input t_sMirroringGL.Source1GL_ID, (Source1GLId)
input t_sMirroringGL.Source2GL_ID, (Source2GLId)
output dataset tqMirroringGLBySourceGLAnalysis) in BMirroringGL >
find first tqMirroringGLBySourceGLAnalysis where
tqMirroringGLBySourceGLAnalysis.tiSource1Project_ID <> 0 and
tqMirroringGLBySourceGLAnalysis.tiSource1Project_ID <> ? and
tqMirroringGLBySourceGLAnalysis.tiMirroringGL_ID <> t_sMirroringGL.MirroringGL_ID
no-error.
if available tqMirroringGLBySourceGLAnalysis or available bMirroringGL
then do:
assign vcMsg = trim(#T-62'Another record with the same source accounts is already created with a non-blank project.':100(68319)T-62#) + chr(10) +
trim(#T-63'You cannot specify wildcards for projecst when a specific project is already defined.':100(67980)t-63#)
viLocalStatus = -1.
<M-58 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input 'tMirroringGL.tcSource1ProjectCode':U (icFieldName),
input t_sMirroringGL.tcSource1ProjectCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sMirroringGL.tc_Rowid (icRowid),
input 'QadFin-7545':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
end. /* if available tqMirroringGLBySourceGLAnalysis or available bMirroringGL */
end.
/* If Source1GL is defined with project and Source1Project_ID is not filled */
assign oiReturnStatus = viLocalStatus.