Description
Validations after ancestor code
Parameters
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
program code (program4/bmirroringgl.p)
assign
oiReturnStatus = -98
viLocalStatus = 0
viLocalWarningStatus = 0
vlStartGLForExchangeMethod = false.
for each t_sMirroringGL where
t_sMirroringGL.tc_Status ='N':U or
t_sMirroringGL.tc_Status = 'C':U :
/* Validate if the tcDomainCode is the same as the domain we are currently logged into. */
if t_sMirroringGL.tcDomainCode <> vcDomainCode
then do:
assign
viLocalStatus = -1
vcMsg = trim(#T-67'You can only modify mirror accounting in the domain in which it has been defined.':255(69137)t-67#)
+ chr(10) + trim(#T-71'Mirror accounting has not been defined for the current domain.':255(69138)t-71#) .
<M-66 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input 'tMirroringGL.tcDomainCode':U (icFieldName),
input t_sMirroringGL.tcDomainCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sMirroringGL.tc_Rowid (icRowid),
input 'QadFin-7863':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
end. /* if t_sMirroringGL.tcDomainCode <> vcDomainCode */
/* Make sure when the company_id is filled, it belongs to the selected domain*/
if t_sMirroringGL.Company_ID <>? and t_sMirroringGL.Company_ID <> 0
then do:
<Q-68 assign vlFcQueryRecordsAvailable = CompanyByDomain (NoCache)
(input t_sMirroringGL.Company_ID, (CompanyId)
input t_sMirroringGL.Domain_ID, (DomainId)
input true, (Active)) in BCompany >
if not vlFcQueryRecordsAvailable
then do:
assign vcMsg = trim(substitute(#T-70'Entity &1 does not belong to domain &2.':255(68339)t-70#,
trim(t_sMirroringGL.tcCompanyCode),
trim(t_sMirroringGL.tcDomainCode)))
viLocalStatus = -1.
<M-69 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input 'tMirroringGL.tcCompanyCode':U (icFieldName),
input t_sMirroringGL.tcCompanyCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sMirroringGL.tc_Rowid (icRowid),
input 'QadFin-7864':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
end. /* if not vlFcQueryRecordsAvailable */
end. /* if tMirroringGL.Company_ID <>? and tMirroringGL.Company_ID <> 0 */
/* If the two source accounts are the same and mirror accounts are different, give an error.*/
if t_sMirroringGL.Source1GL_ID = t_sMirroringGL.Source2GL_ID and
t_sMirroringGL.Source1CostCentre_ID = t_sMirroringGL.Source2CostCentre_ID and
t_sMirroringGL.Source1Project_ID = t_sMirroringGL.Source2Project_ID and
t_sMirroringGL.Source1Division_ID = t_sMirroringGL.Source2Division_ID
then do:
if t_sMirroringGL.Mirror1GL_ID <> t_sMirroringGL.Mirror2GL_ID or
t_sMirroringGL.Mirror1CostCentre_ID <> t_sMirroringGL.Mirror2CostCentre_ID or
t_sMirroringGL.Mirror1Project_ID <> t_sMirroringGL.Mirror2Project_ID or
t_sMirroringGL.Mirror1Division_ID <> t_sMirroringGL.Mirror2Division_ID
then do:
assign vcMsg = trim(#T-47'If Source 1 Account and Source 2 Account are the same, Mirror 1 Account and Mirror 2 Account must be the same also.':255(68401)t-47#)
viLocalStatus = -1.
<M-48 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input 'tMirroringGL.tcSource1GLCode':U (icFieldName),
input t_sMirroringGL.tcSource1GLCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sMirroringGL.tc_Rowid (icRowid),
input 'QadFin-7603':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
end.
end. /* if t_sMirroringGL.Source1GL_ID = t_sMirroringGL.Source2GL_ID and*/
else do:
/* Make sure the comination of two source account are unique regardless of their sequence */
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
no-error.
<Q-27 assign vlFcQueryRecordsAvailable = MirroringGLBySourceGLAnalysis (NoCache)
(input t_sMirroringGL.Company_ID, (CompanyId)
input t_sMirroringGL.Domain_ID, (DomainId)
input t_sMirroringGL.Source2GL_ID, (Source1GLId)
input t_sMirroringGL.Source1GL_ID, (Source2GLId)) in BMirroringGL >
if vlFcQueryRecordsAvailable or available bMirroringGL
then do:
assign vcMsg = trim(substitute(#T-32'Records of the combination of the two source accounts &1 and &2 already exist.':255(68362)t-32#,
trim(t_sMirroringGL.tcSource2GLCode),
trim(t_sMirroringGL.tcSource1GLCode)))
vcMsg = vcMsg + chr(10) + trim(#T-51'Swap the two source accounts.':255(68312)t-51#).
<M-28 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input 'tMirroringGL.tcSource1GLCode':U (icFieldName),
input t_sMirroringGL.tcSource1GLCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sMirroringGL.tc_Rowid (icRowid),
input 'QadFin-7495':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
assign viLocalStatus = -1.
end. /* if vlFcQueryRecordsAvailable or available bMirroringGL */
/* if the two source accounts are not the same, but the mirror accounts are the same, then give a warning */
if t_sMirroringGL.Mirror1GL_ID = t_sMirroringGL.Mirror2GL_ID and
t_sMirroringGL.Mirror1CostCentre_ID = t_sMirroringGL.Mirror2CostCentre_ID and
t_sMirroringGL.Mirror1Project_ID = t_sMirroringGL.Mirror2Project_ID and
t_sMirroringGL.Mirror1Division_ID = t_sMirroringGL.Mirror2Division_ID
then do:
assign vcMsg = trim(#T-65'Mirror 1 Account and Mirror 2 Account are the same.':255(68309)T-65#)
viLocalStatus = 1.
<M-64 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input 'tMirroringGL.tcMirror1GLCode':U (icFieldName),
input t_sMirroringGL.tcMirror1GLCode (icFieldValue),
input 'W':U (icType),
input 4 (iiSeverity),
input t_sMirroringGL.tc_Rowid (icRowid),
input 'QadFin-7861':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
end. /*If the two mirror accounts are the same, give a warning */
end. /* else do */
/*Validation on account type and system type of source accounts */
if (
t_sMirroringGL.tcSource1GLCode <> '' and
t_sMirroringGL.tcSource1GLCode <> ? and
t_sMirroringGL.tcSource1GLTypeCode <> {&GLTYPECODE-STAN} and
t_sMirroringGL.tcSource1GLTypeCode <> {&GLTYPECODE-CROSS} and
t_sMirroringGL.tcSource1GLTypeCode <> {&GLTYPECODE-INVCTRL} and
t_sMirroringGL.tcSource1GLTypeCode <> {&GLTYPECODE-WIPCTRL} and
not (t_sMirroringGL.tcSource1GLTypeCode = {&GLTYPECODE-SYST} and
(t_sMirroringGL.tcSource1GLSystemType = {&GLSYSTEMTYPE-CIREC} or
t_sMirroringGL.tcSource1GLSystemType = {&GLSYSTEMTYPE-VOUPAY}) )
)
then do:
assign vcMsg = trim(substitute(#T-34'Source 1 Account &1 is not one of the valid types.':255(68011)t-34#,
trim(t_sMirroringGL.tcSource1GLCode)))
vcFieldName = 'tMirroringGL.tcSource1GLCode':U
vcFieldValue = t_sMirroringGL.tcSource1GLCODE
viLocalStatus = -1.
<M-53 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input vcFieldName (icFieldName),
input vcFieldValue (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sMirroringGL.tc_Rowid (icRowid),
input 'QadFin-7615':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
end.
if (
t_sMirroringGL.tcSource2GLCode <> '' and
t_sMirroringGL.tcSource2GLCode <> ? and
t_sMirroringGL.tcSource2GLTypeCode <> {&GLTYPECODE-STAN} and
t_sMirroringGL.tcSource2GLTypeCode <> {&GLTYPECODE-CROSS} and
t_sMirroringGL.tcSource2GLTypeCode <> {&GLTYPECODE-INVCTRL} and
t_sMirroringGL.tcSource2GLTypeCode <> {&GLTYPECODE-WIPCTRL} and
not ( t_sMirroringGL.tcSource2GLTypeCode = {&GLTYPECODE-SYST} and
(t_sMirroringGL.tcSource2GLSystemType = {&GLSYSTEMTYPE-CIREC} or
t_sMirroringGL.tcSource2GLSystemType = {&GLSYSTEMTYPE-VOUPAY}) )
)
then do:
assign vcMsg = trim(substitute(#T-35'Source 2 Account &1 is not one of the valid types.':255(68012)t-35#,
trim(t_sMirroringGL.tcSource2GLCode)))
vcFieldName = 'tMirroringGL.tcSource2GLCode':U
vcFieldValue = t_sMirroringGL.tcSource2GLCODE
viLocalStatus = -1.
<M-9 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input vcFieldName (icFieldName),
input vcFieldValue (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sMirroringGL.tc_Rowid (icRowid),
input 'QadFin-7479':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
end. /*end of Validation on account type and system type of source accounts */
/* Validation on account type and system type of mirror accounts */
if t_sMirroringGL.tcMirror1GLCode <> '' and
t_sMirroringGL.tcMirror1GLCode <> ? and
t_sMirroringGL.tcMirror1GLTypeCode <> {&GLTYPECODE-STAN}
then do:
assign vcMsg = trim(#T-37'You must specify a standard account in the Mirror 1 field.':255(68342)t-37#)
vcFieldName = 'tMirroringGL.tcMirror1GLCode':U
vcFieldValue = t_sMirroringGL.tcMirror1GLCode
viLocalStatus = -1.
<M-54 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input vcFieldName (icFieldName),
input vcFieldValue (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sMirroringGL.tc_Rowid (icRowid),
input 'QadFin-7616':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
end. /* validation on mirror 1 account type */
if t_sMirroringGL.tcMirror2GLCode <> '' and
t_sMirroringGL.tcMirror2GLCode <> ? and
t_sMirroringGL.tcMirror2GLTypeCode <> {&GLTYPECODE-STAN}
then do:
assign vcMsg =trim(#T-38'You must specify a standard GL account in the Mirror 2 Account field.':255(68340)t-38#)
vcFieldName = 'tMirroringGL.tcMirror2GLCode':U
vcFieldValue = t_sMirroringGL.tcMirror2GLCode
viLocalStatus = -1.
<M-10 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input vcFieldName (icFieldName),
input vcFieldValue (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sMirroringGL.tc_Rowid (icRowid),
input 'QadFin-7480':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
end. /* validation on mirror 1 account type */
/* If the Split GL Type is NOSPLIT, then Trans1Journal should be SOURCE
and Trans2Journal should be NOSPLIT */
if t_sMirroringGL.MirroringGLSplitGLType = {&MIRRORINGGLSPLITGLTYPE-NOSPLIT}
then do:
if t_sMirroringGL.MirroringGLTrans1Journal <> {&MIRRORINGGLTRANS1JOURNAL-SOURCE} or
t_sMirroringGL.MirroringGLTrans2Journal <> {&MIRRORINGGLTRANS2JOURNAL-NOSPLIT}
then do:
assign vcMsg = trim(#T-43'When Account Split Type is no split, Transaction 1 Journal must be source daybook and Transaction 2 Journal must be no split.':255(68305)t-43#)
viLocalStatus = -1.
<M-25 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input 'tMirroringGL.MirroringGLSplitGLType':U (icFieldName),
input t_sMirroringGL.MirroringGLSplitGLType (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sMirroringGL.tc_Rowid (icRowid),
input 'QadFin-7493':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
end. /* t_sMirroringGL.MirroringGLTrans1Journal <> {&MIRRORINGGLTRANS1JOURNAL-SOURCE} */
end. /* if(t_sMirroringGL.MirroringGLSplitGLType = {&MIRRORINGGLSPLITGLTYPE-NOSPLIT} */
/* If the Split GL Type is different than NOSPLIT */
else do:
if t_sMirroringGL.MirroringGLTrans2Journal = {&MIRRORINGGLTRANS2JOURNAL-NOSPLIT}
then do:
assign vcMsg = trim(#T-55'When Account Split Type is different than no split, Transaction 2 daybook cannot be no split.':255(68343)t-55#)
viLocalStatus = -1.
<M-56 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input 'tMirroringGL.MirroringGLSplitGLType':U (icFieldName),
input t_sMirroringGL.MirroringGLSplitGLType (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sMirroringGL.tc_Rowid (icRowid),
input 'QadFin-7627':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
end.
if t_sMirroringGL.MirroringGLTrans1Journal <> {&MIRRORINGGLTRANS1JOURNAL-SOURCE} and
t_sMirroringGL.MirroringGLTrans2Journal <> {&MIRRORINGGLTRANS2JOURNAL-SOURCE}
then do:
assign vcMsg = trim(#T-52'At least one of Transaction 1 daybook and transaction 2 daybook should be source daybook.':255(68344)t-52#)
viLocalStatus = -1.
<M-44 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input 'tMirroringGL.MirroringGLSplitGLType':U (icFieldName),
input t_sMirroringGL.MirroringGLSplitGLType (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sMirroringGL.tc_Rowid (icRowid),
input 'QadFin-7562':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
end. /* if t_sMirroringGL.MirroringGLTrans2Journal = {&MIRRORINGGLTRANS2JOURNAL-NOSPLIT} or */
end. /* If the Split GL Type is different than NOSPLIT */
/*Make sure the two mirror accounts have the same exchange method
If not, raise a warning
*/
if not vlStartGLForExchangeMethod
then do:
<Q-59 run GLForExchangeMethod (Start) in BGL >
assign vlStartGLForExchangeMethod = false.
end.
<Q-60 run GLForExchangeMethod (all) (Read) (Cache)
(input ?, (CompanyId)
input t_sMirroringGL.Mirror1GL_ID, (GLId)
output dataset tqGLForExchangeMethod) in BGL >
find first tqGlForExchangeMethod no-error.
if available tqGLForExchangeMethod then
assign vcExchangeMethod = tqGLForExchangeMethod.tcGLExchangeMethod.
<Q-61 run GLForExchangeMethod (all) (Read) (Cache)
(input ?, (CompanyId)
input t_sMirroringGL.Mirror2GL_ID, (GLId)
output dataset tqGLForExchangeMethod) in BGL >
find first tqGlForExchangeMethod no-error.
if available tqGLForExchangeMethod and
vcExchangeMethod <> tqGLForExchangeMethod.tcGLExchangeMethod
then do:
assign vcMsg = trim( #T-62'Mirror 1 account and mirror 2 account should have same exchange method.':255(68402)T-62#)
viLocalWarningStatus = 1.
<M-63 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input 'tMirroringGL.tcMirror1GLCode':U (icFieldName),
input t_sMirroringGL.tcMirror1GLCode (icFieldValue),
input 'W':U (icType),
input 4 (iiSeverity),
input t_sMirroringGL.tc_Rowid (icRowid),
input 'QadFin-7658':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
end. /* Make sure the two mirror accounts have the same exchange method */
<M-31 run ValidateComponentPostAnalysis
(input-output vlGLByIDstarted (blGLByIdStarted),
input-output vlMirroringGLstarted (blMirroringGLstarted),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
if viFcReturnSuper < 0 or
viFcReturnSuper <> 0 and
viLocalStatus = 0
then assign viLocalStatus = viFcReturnSuper.
<M-41 run ValidateComponentPostAnalysis1
(input-output vlGLByIDstarted (blGLByIDstarted),
input-output vlMirroringGLstarted (blMirroringGLstarted),
output viFcReturnSuper (oiReturnStatus)) in BMirroringGL>
if viFcReturnSuper < 0 or
viFcReturnSuper <> 0 and
viLocalStatus = 0
then assign viLocalStatus = viFcReturnSuper.
end. /* for each tMirroringGL */
if vlGLByIDstarted
then do:
<Q-30 run GLById (Stop) in BGL >
end.
if vlMirroringGLstarted
then do:
<Q-57 run MirroringGLBySourceGLAnalysis (Stop) in BMirroringGL >
end.
if vlStartGLForExchangeMethod
then do:
<Q-58 run GLForExchangeMethod (Stop) in BGL >
end.
assign oiReturnstatus = viLocalStatus.
if oiReturnstatus = 0 and viLocalWarningStatus <> 0 then
oiReturnstatus = viLocalWarningStatus.