project QadFinancials > class BMirroringGL > method ValidateComponentPostAnalysis1
Description
This method is used within validatecomponentPost. All validation against analytical dimension of mirror 2 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 2 Account and Source 2 Account*/
/* Please note, this method should only be invoked by ValidateComponentPost */
/*************************************************************************************/
assign oiReturnStatus = -98
viLocalStatus = 0.
if blGLByIdstarted <> true
then do:
<Q-1 run GLById (Start) in BGL >
assign blGLByIdstarted = true.
end.
if not blMirroringGLstarted
then do:
<Q-40 run MirroringGLBySourceGLAnalysis (Start) in BMirroringGL >
assign blMirroringGLstarted = true.
end.
/* If the mirror account has an analytical dimension,
then the mirror account must have a default value for that dimension. */
/* Lookup analytical information for source 1 account */
<Q-39 run GLById (all) (Read) (NoCache)
(input t_sMirroringGL.Company_ID, (CompanyId)
input t_sMirroringGL.Source2GL_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.Mirror2GL_ID, (GLId)
output dataset tqGLById) in BGL >
find first tqGLById no-error.
/*Make sure mirror 2 accont don't support SAF analysis */
if(tqGLById.tlGLIsSafAccount)
then do:
assign vcMsg = trim(substitute( #T-20'Mirror account &1 cannot support SAF analysis.':100(68003)t-20#,
trim(t_sMirroringGL.tcMirror2GLCode)))
viLocalStatus = -1.
<M-3 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input 'tMirroringGL.tcMirror2GLCode':U (icFieldName),
input t_sMirroringGL.tcMirror2GLCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sMirroringGL.tc_Rowid (icRowid),
input 'QadFin-7547':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
end. /* if(tqGLById.tlGLIsSafAccount) */
/* If mirror 2 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-21'Mirror 2 Account &1 is a cost center account. It must have a default cost center value.':255(69292)t-21#,
trim(t_sMirroringGL.tcMirror2GLCode)))
viLocalStatus = -1.
<M-5 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input 'tMirroringGL.tcMirror2GLCode':U (icFieldName),
input t_sMirroringGL.tcMirror2GLCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sMirroringGL.tc_Rowid (icRowid),
input 'QadFin-7548':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
end. /* if tqGLById.tlGLIsCostCentreAccount and */
/* If mirror 2 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-22'Mirror 2 Account &1 is a project account. A default project must be specified for it.':255(69293)t-22#,
trim(t_sMirroringGL.tcMirror2GLCode)))
viLocalStatus = -1.
<M-6 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input 'tMirroringGL.tcMirror2GLCode':U (icFieldName),
input t_sMirroringGL.tcMirror2GLCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sMirroringGL.tc_Rowid (icRowid),
input 'QadFin-7549':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
end. /* if tqGLById.tlGLIsProjectAccount and */
/* If mirror 2 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-23'Mirror 2 Account &1 is defined with sub-account analysis. You must define a default sub-account.':255(69294)t-23#,
trim(t_sMirroringGL.tcMirror2GLCode)))
viLocalStatus = -1.
<M-7 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input 'tMirroringGL.tcMirror2GLCode':U (icFieldName),
input t_sMirroringGL.tcMirror2GLCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sMirroringGL.tc_Rowid (icRowid),
input 'QadFin-7550':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
end. /* if tqGLById.tlGLIsDivisionAccount and */
/* If Source2GL is defined with costcentre and Source2CostCentre_ID is filled
Make sure we can't find any MirroringGL record with the same Source1GL and Source2GL that has Source2CostCentre_ID blank.
Vice versa */
if vlGLIsCostCentreAccount and
t_sMirroringGL.Source2CostCentre_ID <> 0 and
t_sMirroringGL.Source2CostCentre_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.Source2CostCentre_ID = 0 or
bMirroringGL.Source2CostCentre_ID = ?)
no-error.
<Q-8 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.tiSource2CostCentre_ID = 0 or
tqMirroringGLBySourceGLAnalysis.tiSource2CostCentre_ID = ? and
tqMirroringGLBySourceGLAnalysis.tiMirroringGL_ID <> t_sMirroringGL.MirroringGL_ID
no-error.
if available tqMirroringGLBySourceGLAnalysis or available bMirroringGL
then do:
assign vcMsg = trim( #T-24'Another record with the same source accounts is already created with a blank cost center.':100(68320)T-24#) + chr(10) +
trim( #T-25'You cannot specify a cost center when using wildcards.':100(67963)t-25#) + chr(10) +
trim( substitute(#T-26'Cost center code: &1':100(67964)T-26#, t_sMirroringGL.tcSource2CostCentreCode))
viLocalStatus = -1.
<M-9 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input 'tMirroringGL.tcSource2CostCentreCode':U (icFieldName),
input t_sMirroringGL.tcSource2CostCentreCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sMirroringGL.tc_Rowid (icRowid),
input 'QadFin-7551':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
end.
end. /* If Source2GL is defined with costcentre and Source2CostCentre_ID is filled */
/* If Source2GL is defined with costcentre and Source2CostCentre_ID is not filled */
if vlGLIsCostCentreAccount and
(t_sMirroringGL.Source2CostCentre_ID = 0 or
t_sMirroringGL.Source2CostCentre_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.Source2CostCentre_ID <> 0 and
bMirroringGL.Source2CostCentre_ID <> ?)
no-error.
<Q-10 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.tiSource2CostCentre_ID <> 0 and
tqMirroringGLBySourceGLAnalysis.tiSource2CostCentre_ID <> ? and
tqMirroringGLBySourceGLAnalysis.tiMirroringGL_ID <> t_sMirroringGL.MirroringGL_ID
no-error.
if available tqMirroringGLBySourceGLAnalysis or available bMirroringGL
then do:
assign vcMsg = trim(#T-27'Another record with the same source accounts is already created with a non-blank cost center':100(68321)T-27#) + chr(10) +
trim(#T-28'You cannot use wildcards for cost center when a specific cost center is already used.':100(67968)t-28#).
<M-11 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input 'tMirroringGL.tcSource2CostCentreCode':U (icFieldName),
input t_sMirroringGL.tcSource2CostCentreCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sMirroringGL.tc_Rowid (icRowid),
input 'QadFin-7552':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
assign viLocalStatus = -1.
end.
end. /* If Source2GL is defined with costcentre and Source2CostCentre_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.Source2Division_ID <> 0 and
t_sMirroringGL.Source2Division_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.MirroringGL_ID <> t_sMirroringGL.MirroringGL_ID and
(bMirroringGL.Source2Division_ID = 0 or
bMirroringGL.Source2Division_ID = ?)
no-error.
<Q-12 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.tiSource2Division_ID = 0 or
tqMirroringGLBySourceGLAnalysis.tiSource2Division_ID = ? )and
tqMirroringGLBySourceGLAnalysis.tiMirroringGL_ID <> t_sMirroringGL.MirroringGL_ID
no-error.
if available tqMirroringGLBySourceGLAnalysis or available bMirroringGL
then do:
assign vcMsg = trim( #T-29'Another record with the same source accounts is already created with a blank sub-account.':100(68322)T-29#) + chr(10) +
trim( #T-30'You cannot specify a sub-account when using wildcards.':100(67970)t-30#) + chr(10) +
trim( substitute(#T-31'Sub-account code: &1':100(67971)T-31#, t_sMirroringGL.tcSource2DivisionCode)).
<M-13 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input 'tMirroringGL.tcSource2DivisionCode':U (icFieldName),
input t_sMirroringGL.tcSource2DivisionCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sMirroringGL.tc_Rowid (icRowid),
input 'QadFin-7553':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
assign viLocalStatus = -1.
end.
end. /* If Source2GL is defined with division and Source2Division_ID is filled */
/* If Source2GL is defined with division and Source2Division_ID is not filled */
if vlGLIsDivisionAccount and
(t_sMirroringGL.Source2Division_ID = 0 or
t_sMirroringGL.Source2Division_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.Source2Division_ID <> 0 and
bMirroringGL.Source2Division_ID <> ?)
no-error.
<Q-14 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.tiSource2Division_ID <> 0 and
tqMirroringGLBySourceGLAnalysis.tiSource2Division_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 non-blank sub-account':100(68323)T-32#) + chr(10) +
trim(#T-33'You cannot use wildcards for the sub-account when a specific sub-account is already used.':100(67975)t-33#)
viLocalStatus = -1.
<M-15 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input 'tMirroringGL.tcSource2DivisionCode':U (icFieldName),
input t_sMirroringGL.tcSource2DivisionCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sMirroringGL.tc_Rowid (icRowid),
input 'QadFin-7554':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
end. /*if available tqMirroringGLBySourceGLAnalysis or available bMirroringGL */
end. /* If Source2GL is defined with division and Source2Division_ID is not filled */
/*
If Source2GL is defined with project and Source2project_ID is filled
Make sure we can?t find any MirroringGL record
with the same Source1GL and Source2GL that has Source2Project_ID blank.
*/
if vlGLIsProjectAccount and
t_sMirroringGL.Source2Project_ID <> 0 and
t_sMirroringGL.Source2Project_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.Source2Project_ID = 0 or
bMirroringGL.Source2Project_ID = ?)
no-error.
<Q-16 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.tiSource2Project_ID = 0 or
tqMirroringGLBySourceGLAnalysis.tiSource2Project_ID = ?) and
tqMirroringGLBySourceGLAnalysis.tiMirroringGL_ID <> t_sMirroringGL.MirroringGL_ID
no-error.
if available tqMirroringGLBySourceGLAnalysis or available bMirroringGL
then do:
assign vcMsg = trim( #T-34'Another record with the same source accounts is already created with a blank project.':100(68324)T-34#) + chr(10) +
trim( #T-35'You cannot specify a project when using wildcards.':100(67977)t-35#) + chr(10) +
trim( substitute(#T-36'Project code: &1':100(67978)T-36#, t_sMirroringGL.tcSource2ProjectCode)).
<M-17 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input 'tMirroringGL.tcSource2ProjectCode':U (icFieldName),
input t_sMirroringGL.tcSource2ProjectCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sMirroringGL.tc_Rowid (icRowid),
input 'QadFin-7555':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
assign viLocalStatus = -1.
end.
end. /* If Source2GL is defined with project and Source2Project_ID is filled */
/* If Source2GL is defined with project and Source2Project_ID is not filled */
if vlGLIsProjectAccount and
(t_sMirroringGL.Source2Project_ID = 0 or
t_sMirroringGL.Source2Project_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.Source2Project_ID <> 0 and
bMirroringGL.Source2Project_ID <> ?)
no-error.
<Q-18 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.tiSource2Project_ID <> 0 and
tqMirroringGLBySourceGLAnalysis.tiSource2Project_ID <> ? and
tqMirroringGLBySourceGLAnalysis.tiMirroringGL_ID <> t_sMirroringGL.MirroringGL_ID
no-error.
if available tqMirroringGLBySourceGLAnalysis or available bMirroringGL
then do:
assign vcMsg = trim(#T-37'Another record with the same source accounts is already created with a non-blank project.':100(68325)T-37#) + chr(10) +
trim(#T-38'You cannot specify wildcards for projecst when a specific project is already defined.':100(67980)t-38#)
viLocalStatus = -1.
<M-19 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input 'tMirroringGL.tcSource2ProjectCode':U (icFieldName),
input t_sMirroringGL.tcSource2ProjectCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sMirroringGL.tc_Rowid (icRowid),
input 'QadFin-7556':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
end. /* if available tqMirroringGLBySourceGLAnalysis or available bMirroringGL. */
end. /* If Source2GL is defined with project and Source2Project_ID is not filled */
assign oiReturnStatus = viLocalStatus.