project QadFinancials > class BCOAMaskCC > method ValidateComponentPost
validation procedure
Description
This method does validation after ancestor codes
Parameters
| oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
program code (program7/bcoamaskcc.p)
assign oiReturnStatus = -98
viLocalReturnStatus = 0.
MAIN_BLOCK:
do on error undo, return:
/* get GLSharedSet_ID DivSharedSet_ID of current domain */
<I-31 {bFcOpenInstance
&CLASS = "Session"}>
<M-32 run GetIntegerValue
(input 'SharedSetForGL':U (icName),
output viGLSharedSetID (oiValue),
output viFcReturnSuper (oiReturnStatus)) in Session>
if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and viLocalReturnStatus = 0)
then assign viLocalReturnStatus = viFcReturnSuper.
<M-33 run GetIntegerValue
(input 'SharedSetForDIVISION':U (icName),
output viDivSharedSetID (oiValue),
output viFcReturnSuper (oiReturnStatus)) in Session>
if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and viLocalReturnStatus = 0)
then assign viLocalReturnStatus = viFcReturnSuper.
<I-34 {bFcCloseInstance
&CLASS = "Session"}>
if viFcReturnSuper < 0 or viLocalReturnStatus < 0 then leave MAIN_BLOCK.
end. /* MAIN_BLOCK */
for each t_sCOAMaskCC where
t_sCOAMaskCC.tc_Status <> "D":U:
/* Validation for overlap and for from<=to is always done for positive ranges */
/* For negative, only if the NEGATIVE functionality is activated */
/* ============================================== */
/* Validation for COAMaskCCGL */
/* ============================================== */
assign vcPreviousGLTo = ?.
for each t_sCOAMaskCCGL where
t_sCOAMaskCCGL.tc_ParentRowid = t_sCOAMaskCC.tc_Rowid and
t_sCOAMaskCCGL.tc_Status <> "D":U and
t_sCOAMaskCCGL.COAMaskCCGLIsNeg = false and
t_sCOAMaskCCGL.GLSharedSet_ID = viGLSharedSetID
by t_sCOAMaskCCGL.COAMaskCCGLFrom:
/* ================================================ */
/* From - To range have to be sequentially ordered */
/* ================================================ */
if t_sCOAMaskCCGL.COAMaskCCGLFrom > t_sCOAMaskCCGL.COAMaskCCGLTo and
t_sCOAMaskCCGL.COAMaskCCGLFrom <> "":U and
t_sCOAMaskCCGL.COAMaskCCGLTo <> "":U
then do:
<M-3 run SetMessage
(input #T-27'From - To range have to be sequentially ordered':255(733708147)T-27# (icMessage),
input '':U (icArguments),
input 'tCOAMaskCCGL.COAMaskCCGLFrom':U (icFieldName),
input t_sCOAMaskCCGL.COAMaskCCGLFrom (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sCOAMaskCCGL.tc_Rowid (icRowid),
input 'QadFin-9286':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCOAMaskCC>
assign viLocalReturnStatus = -1.
end. /* if t_sCOAMaskCCGL.COAMaskCCGLFrom > t_sCOAMaskCCGL.COAMaskCCGLTo */
/* ============================================================== */
/* Validate, there are no two non-negative ranges which overlap */
/* ============================================================== */
if t_sCOAMaskCCGL.COAMaskCCGLFrom <= vcPreviousGLTo or
vcPreviousGLTo = "":U
then do:
<M-4 run SetMessage
(input substitute(#T-15'There are no two ranges (&1 - &2, &3 - &4) which overlap.':255(999890676)T-15#, vcPreviousGLFrom, vcPreviousGLTo, t_sCOAMaskCCGL.COAMaskCCGLFrom, t_sCOAMaskCCGL.COAMaskCCGLTo) (icMessage),
input '':U (icArguments),
input 'tCOAMaskCCGL.COAMaskCCGLFrom':U (icFieldName),
input t_sCOAMaskCCGL.COAMaskCCGLFrom (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sCOAMaskCCGL.tc_Rowid (icRowid),
input 'QadFin-9287':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCOAMaskCC>
assign viLocalReturnStatus = -1.
end. /* if t_sCOAMaskDivRangeGL.COAMaskDivRangeGLFrom <= vcPreviousGLTo and */
assign vcPreviousGLFrom = t_sCOAMaskCCGL.COAMaskCCGLFrom
vcPreviousGLTo = t_sCOAMaskCCGL.COAMaskCCGLTo.
end. /* for each t_sCOAMaskCCGL where t_sCOAMaskCC.COAMaskCC_ID = t_sCOAMaskCC.COAMaskCC_ID */
/* ============================================== */
/* Validation for COAMaskCCDiv */
/* ============================================== */
assign vcPreviousDivTo = ?.
for each t_sCOAMaskCCDiv where
t_sCOAMaskCCDiv.tc_ParentRowid = t_sCOAMaskCC.tc_Rowid and
t_sCOAMaskCCDiv.tc_Status <> "D":U and
t_sCOAMaskCCDiv.COAMaskCCDivIsNeg = false and
t_sCOAMaskCCDiv.DivSharedSet_ID = viDivSharedSetID
by t_sCOAMaskCCDiv.COAMaskCCDivFrom:
/* ================================================ */
/* From - To range have to be sequentially ordered */
/* ================================================ */
if t_sCOAMaskCCDiv.COAMaskCCDivFrom > t_sCOAMaskCCDiv.COAMaskCCDivTo and
t_sCOAMaskCCDiv.COAMaskCCDivFrom <> "":U and
t_sCOAMaskCCDiv.COAMaskCCDivTo <> "":U
then do:
<M-5 run SetMessage
(input #T-30'From - To range have to be sequentially ordered':255(999890669)T-30# (icMessage),
input '':U (icArguments),
input 'tCOAMaskCC.COAMaskCCCode':U (icFieldName),
input t_sCOAMaskCC.COAMaskCCCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sCOAMaskCC.tc_Rowid (icRowid),
input 'QadFin-9288':U (icFcMsgNumber),
input #T-29'From - To range have to be sequentially ordered':255(999890669)T-29# (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCOAMaskCC>
assign viLocalReturnStatus = -1.
end. /* if t_sCOAMaskCCGL.COAMaskCCDivFrom > t_sCOAMaskCCGL.COAMaskCCDivTo */
/* ============================================================== */
/* Validate, there are no two non-negative ranges which overlap */
/* ============================================================== */
if t_sCOAMaskCCDiv.COAMaskCCDivFrom <= vcPreviousDivTo or
vcPreviousDivTo = "":U
then do:
<M-6 run SetMessage
(input substitute(#T-13'There are no two ranges (&1 - &2, &3 - &4) which overlap.':255(73428298)T-13#, vcPreviousDivFrom, vcPreviousDivTo, t_sCOAMaskCCDiv.COAMaskCCDivFrom, t_sCOAMaskCCDiv.COAMaskCCDivTo) (icMessage),
input '':U (icArguments),
input 'tCOAMaskCCDiv.COAMaskCCDivFrom':U (icFieldName),
input t_sCOAMaskCCDiv.COAMaskCCDivFrom (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sCOAMaskCCDiv.tc_Rowid (icRowid),
input 'QadFin-9289':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCOAMaskCC>
assign viLocalReturnStatus = -1.
end. /* if t_sCOAMaskDivRangeGL.COAMaskDivRangeGLFrom <= vcPreviousGLTo and */
assign vcPreviousDivFrom = t_sCOAMaskCCDiv.COAMaskCCDivFrom
vcPreviousDivTo = t_sCOAMaskCCDiv.COAMaskCCDivTo.
end. /* for each t_sCOAMaskCCDiv where t_sCOAMaskCC.COAMaskCC_ID = t_sCOAMaskCC.COAMaskCC_ID */
if {&COAMASK-ISNEGATIVERANGESACTIVE} = "YES":U
then do:
assign vcPreviousGLTo = ?.
for each t_sCOAMaskCCGL where
t_sCOAMaskCCGL.tc_ParentRowid = t_sCOAMaskCC.tc_Rowid and
t_sCOAMaskCCGL.tc_Status <> "D":U and
t_sCOAMaskCCGL.COAMaskCCGLIsNeg = true and
t_sCOAMaskCCGL.GLSharedSet_ID = viGLSharedSetID
by t_sCOAMaskCCGL.COAMaskCCGLFrom:
/* ================================================ */
/* From - To range have to be sequentially ordered */
/* ================================================ */
if t_sCOAMaskCCGL.COAMaskCCGLFrom > t_sCOAMaskCCGL.COAMaskCCGLTo and
t_sCOAMaskCCGL.COAMaskCCGLFrom <> "":U and
t_sCOAMaskCCGL.COAMaskCCGLTo <> "":U
then do:
<M-7 run SetMessage
(input #T-16'From - To range have to be sequentially ordered':255(733708147)T-16# (icMessage),
input '':U (icArguments),
input 'tCOAMaskCCGL.COAMaskCCGLFrom':U (icFieldName),
input t_sCOAMaskCCGL.COAMaskCCGLFrom (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sCOAMaskCCGL.tc_Rowid (icRowid),
input 'QadFin-9290':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCOAMaskCC>
assign viLocalReturnStatus = -1.
end. /* if t_sCOAMaskCCGL.COAMaskCCGLFrom > t_sCOAMaskCCGL.COAMaskCCGLTo */
/* ================================================= */
/* Validate, there are no two ranges which overlap */
/* ================================================= */
if t_sCOAMaskCCGL.COAMaskCCGLFrom <= vcPreviousGLTo or
vcPreviousGLTo = "":U
then do:
<M-8 run SetMessage
(input substitute(#T-19'There are no two ranges (&1 - &2, &3 - &4) which overlap.':255(999890676)T-19#, vcPreviousGLFrom, vcPreviousGLTo, t_sCOAMaskCCGL.COAMaskCCGLFrom, t_sCOAMaskCCGL.COAMaskCCGLTo) (icMessage),
input '':U (icArguments),
input 'tCOAMaskCCGL.COAMaskCCGLFrom':U (icFieldName),
input t_sCOAMaskCCGL.COAMaskCCGLFrom (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sCOAMaskCCGL.tc_Rowid (icRowid),
input 'QadFin-9291':U (icFcMsgNumber),
input #T-20'There are no two ranges which overlap.':255(999890677)T-20# (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCOAMaskCC>
assign viLocalReturnStatus = -1.
end. /* if t_sCOAMaskCCGL.COAMaskCCGLFrom <= vcPreviousGLTo and */
assign vcPreviousGLFrom = t_sCOAMaskCCGL.COAMaskCCGLFrom
vcPreviousGLTo = t_sCOAMaskCCGL.COAMaskCCGLTo.
end. /* for each t_sCOAMaskCCGL where t_sCOAMask */
assign vcPreviousDivTo = ?.
for each t_sCOAMaskCCDiv where
t_sCOAMaskCCDiv.tc_ParentRowid = t_sCOAMaskCC.tc_Rowid and
t_sCOAMaskCCDiv.tc_Status <> "D":U and
t_sCOAMaskCCDiv.COAMaskCCDivIsNeg = true and
t_sCOAMaskCCDiv.DivSharedSet_ID = viDivSharedSetID
by t_sCOAMaskCCDiv.COAMaskCCDivFrom:
/* ================================================ */
/* From - To range have to be sequentially ordered */
/* ================================================ */
if t_sCOAMaskCCDiv.COAMaskCCDivFrom > t_sCOAMaskCCDiv.COAMaskCCDivTo and
t_sCOAMaskCCDiv.COAMaskCCDivFrom <> "":U and
t_sCOAMaskCCDiv.COAMaskCCDivTo <> "":U
then do:
<M-9 run SetMessage
(input #T-23'From - To range have to be sequentially ordered'':255(413920693)T-23# (icMessage),
input '':U (icArguments),
input 'tCOAMaskCCDiv.COAMaskCCDivFrom':U (icFieldName),
input t_sCOAMaskCCDiv.COAMaskCCDivFrom (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sCOAMaskCCDiv.tc_Rowid (icRowid),
input 'QadFin-9292':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCOAMaskCC>
assign viLocalReturnStatus = -1.
end. /* if t_sCOAMaskCCGL.COAMaskCCDivFrom > t_sCOAMaskCCGL.COAMaskCCDivTo */
/* ================================================= */
/* Validate, there are no two ranges which overlap */
/* ================================================= */
if t_sCOAMaskCCDiv.COAMaskCCDivFrom <= vcPreviousDivTo or
vcPreviousDivTo = "":U
then do:
<M-10 run SetMessage
(input substitute(#T-25'There are no two ranges (&1 - &2, &3 - &4) which overlap.':255(73428298)T-25#, vcPreviousDivFrom, vcPreviousDivTo, t_sCOAMaskCCDiv.COAMaskCCDivFrom, t_sCOAMaskCCDiv.COAMaskCCDivTo) (icMessage),
input '':U (icArguments),
input 'tCOAMaskCCDiv.COAMaskCCDivFrom':U (icFieldName),
input t_sCOAMaskCCDiv.COAMaskCCDivFrom (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sCOAMaskCCDiv.tc_Rowid (icRowid),
input 'QadFin-9293':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCOAMaskCC>
assign viLocalReturnStatus = -1.
end. /* if t_sCOAMaskCCDiv.COAMaskCCDivFrom <= vcPreviousDivTo and */
assign vcPreviousDivFrom = t_sCOAMaskCCDiv.COAMaskCCDivFrom
vcPreviousDivTo = t_sCOAMaskCCDiv.COAMaskCCDivTo.
end. /* for each t_sCOAMaskCCDiv where t_sCOAMask */
end. /* if {&COAMASK-ISNEGATIVERANGESACTIVE} = "YES":U */
end. /* for each t_sCOAMaskCC */
/* assign blank values to real blank "" from ? */
for each t_sCOAMaskCC where
t_sCOAMaskCC.tc_Status <> "D":U:
for each t_sCOAMaskCCGL where
t_sCOAMaskCCGL.tc_Status <> "D":U and
t_sCOAMaskCCGL.tc_ParentRowid = t_sCOAMaskCC.tc_Rowid:
if t_sCOAMaskCCGL.COAMaskCCGLFrom = "":U
then assign t_sCOAMaskCCGL.COAMaskCCGLFrom = ?.
if t_sCOAMaskCCGL.COAMaskCCGLTo = "":U
then assign t_sCOAMaskCCGL.COAMaskCCGLTo = ?.
end. /* for each t_sCOAMaskCCGL where */
for each t_sCOAMaskCCDiv where
t_sCOAMaskCCDiv.tc_Status <> "D":U and
t_sCOAMaskCCDiv.tc_ParentRowid = t_sCOAMaskCC.tc_Rowid:
if t_sCOAMaskCCDiv.COAMaskCCDivFrom = "":U
then assign t_sCOAMaskCCDiv.COAMaskCCDivFrom = ?.
if t_sCOAMaskCCDiv.COAMaskCCDivTo = "":U
then assign t_sCOAMaskCCDiv.COAMaskCCDivTo = ?.
end. /* for each t_sCOAMaskCCDiv where */
end. /* for each t_sCOAMaskCC where */
assign oiReturnStatus = viLocalReturnStatus.