project QadFinancials > class BCOAMaskCC > method ValidateComponentPost

validation procedure

Description

This method does validation after ancestor codes


Parameters


oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BCOAMaskCC.ValidateComponent


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.