project QadFinancials > class BCOACrossRef > method ValidateComponentPost

Description

Validations done after the Ancestor class validations.


Parameters


oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BCOACrossRef.ValidateComponent


program code (program4/bcoacrossref.p)

assign oiReturnStatus      = -98
       viLocalReturnStatus = 0.

for each t_sCOACrossRef where
         t_sCOACrossRef.tc_Status <> "D":U:
    
    /* ===================================== */
    /* Get original record in case of modify */
    /* ===================================== */
    if t_sCOACrossRef.tc_Status = "C":U
    then do:
        find t_iCOACrossRef where
             t_iCOACrossRef.tc_Rowid = t_sCOACrossRef.tc_Rowid
             no-error.
        if not available t_iCOACrossRef
        then next.
    end. /* if t_sCOACrossRef.tc_Status = "C":U */

    /* ==================================================== */
    /* COA Cross Reference Type can't be changed after save */
    /* ==================================================== */
    if t_sCOACrossRef.tc_Status = "C":U and
       t_sCOACrossRef.COACrossRefType <> t_iCOACrossRef.COACrossRefType
    then do: 
        assign vcMessage           = trim(#T-22'The COA Cross Reference Type can't be changed for existing records.':255(71466)T-22#) + chr(10) + 
                                     trim(substitute(#T-23'Current Type: &1':255(71467)T-23#, trim(t_iCOACrossRef.COACrossRefType) )) + chr(10) + 
                                     trim(substitute(#T-24'Entered Type: &1':255(71468)T-24#, trim(t_sCOACrossRef.COACrossRefType) )) + chr(10) +
                                     trim(substitute(#T-35'Cross Reference Code: &1.':255(999890142)T-35#, trim(t_sCOACrossRef.COACrossRefCode) ))   
               viLocalReturnStatus = -1.
        <M-21 run SetMessage
           (input  vcMessage (icMessage), 
            input  '':U (icArguments), 
            input  'tCOACrossRef.COACrossRefType':U (icFieldName), 
            input  t_sCOACrossRef.COACrossRefType (icFieldValue), 
            input  'E':U (icType), 
            input  3 (iiSeverity), 
            input  t_sCOACrossRef.tc_Rowid (icRowid), 
            input  'QadFin-8721':U (icFcMsgNumber), 
            input  '':U (icFcExplanation), 
            input  '':U (icFcIdentification), 
            input  '':U (icFcContext), 
            output viFcReturnSuper (oiReturnStatus)) in BCOACrossRef> 
    end. /* if t_sCOACrossRef.tc_Status = "C":U and */

    /* ================================================================= */
    /* Target Domain can only be changed when using the same shared sets */
    /* ================================================================= */
    if t_sCOACrossRef.tc_Status = "C":U and
       t_sCOACrossRef.TargetDomain_ID <> t_iCOACrossRef.TargetDomain_ID
    then do: 
        /* =========================================== */
        /* Check Shared Sets for Current target Domain */
        /* =========================================== */
        <M-25 run GetTargetSharedSets
           (input  t_iCOACrossRef.tcTargetDomainCode (icTargetDomainCode), 
            output viOrigGLSharedSetID (oiGLSharedSetID), 
            output viOrigDivisionSharedSetID (oiDivisionSharedSetID), 
            output viOrigCostCentreSharedSetID (oiCostCentreSharedSetID), 
            output viOrigProjectSharedSetID (oiProjectSharedSetID), 
            output viFcReturnSuper (oiReturnStatus)) in BCOACrossRef>
        if viFcReturnSuper <> 0 and viLocalReturnStatus >= 0
        then assign viLocalReturnStatus = viFcReturnSuper.
        
        /* ======================================= */
        /* Check Shared Sets for new Target Domain */
        /* ======================================= */
        <M-26 run GetTargetSharedSets
           (input  t_sCOACrossRef.tcTargetDomainCode (icTargetDomainCode), 
            output viTargetGLSharedSetID (oiGLSharedSetID), 
            output viTargetDivisionSharedSetID (oiDivisionSharedSetID), 
            output viTargetCostCentreSharedSetID (oiCostCentreSharedSetID), 
            output viTargetProjectSharedSetID (oiProjectSharedSetID), 
            output viFcReturnSuper (oiReturnStatus)) in BCOACrossRef>
        if viFcReturnSuper <> 0 and viLocalReturnStatus >= 0
        then assign viLocalReturnStatus = viFcReturnSuper.
        
        if viOrigGLSharedSetID         <> viTargetGLSharedSetID         or
           viOrigDivisionSharedSetID   <> viTargetDivisionSharedSetID   or
           viOrigCostCentreSharedSetID <> viTargetCostCentreSharedSetID or
           viOrigProjectSharedSetID    <> viTargetProjectSharedSetID
        then do:
            assign vcMessage           = trim(#T-1'The Target Domain can only be changed to a domain that is using the same shared sets for COA.':255(999890042)T-1#) + chr(10) + 
                                         trim(substitute(#T-2'Current Target Domain: &1':255(71391)T-2#, trim(t_iCOACrossRef.tcTargetDomainCode) ))                   + chr(10) + 
                                         trim(substitute(#T-3'Entered Target Domain: &1':255(71387)T-3#, trim(t_sCOACrossRef.tcTargetDomainCode) ))                   + chr(10) +
                                         trim(substitute(#T-36'Cross Reference Code: &1.':255(999890142)T-36#, trim(t_sCOACrossRef.COACrossRefCode) ))   
                   viLocalReturnStatus = -1.
            <M-4 run SetMessage
               (input  vcMessage (icMessage), 
                input  '':U (icArguments), 
                input  'tCOACrossRef.tctargetDomainCode':U (icFieldName), 
                input  t_sCOACrossRef.tcTargetDomainCode (icFieldValue), 
                input  'E':U (icType), 
                input  3 (iiSeverity), 
                input  t_sCOACrossRef.tc_Rowid (icRowid), 
                input  'QadFin-8705':U (icFcMsgNumber), 
                input  '':U (icFcExplanation), 
                input  '':U (icFcIdentification), 
                input  '':U (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BCOACrossRef> 
        end. /* if viOrigGLSharedSetID         <> viTargetGLSharedSetID         or */
    end. /* if t_sCOACrossRef.tc_Status = "C":U and */

    /* =========================== */
    /* Validations on Detail Lines */
    /* =========================== */
    <M-75 run ValidateComponentPostLines  (output viFcReturnSuper (oiReturnStatus)) in BCOACrossRef>
    if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and viLocalReturnStatus >= 0)
    then assign viLocalReturnStatus = viFcReturnSuper.
end. /* for each t_sCOACrossRef where */

assign oiReturnStatus = viLocalReturnStatus.