project QadFinancials > class BCOACrossRef > method GetCOACrossRefAltCombined3

Description

Get the correct mapping record for COA Cross Reference Types Alternate & Combined. This is the 3rd step using reading it all. This method only needs to be executed when there are wildcards in the AccountSourceFrom field.


Parameters


olMappingFoundoutputlogical
iiCOACrossRefIDinputinteger
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BCOACrossRef.GetCOACrossRef


program code (program6/bcoacrossref.p)

/* ==================================== */
/* Use following sequence to check      */
/* 1. GL, Division, CostCentre, Project */
/* 2. GL, Division, CostCentre          */
/* 3. GL, Division,           , Project */
/* 4. GL, Division,           ,         */
/* 5. GL,         ,           ,         */
/* ==================================== */
assign viLocalReturnStatus = 0
       oiReturnStatus      = -98.

STEPSBLOCK:    
do viSteps = 1 to 5:

    DETAILBLOCK:
    for each tqCOACrossRefDetByIDParentID where
             tqCOACrossRefDetByIDParentID.tiCOACrossRef_ID = iiCOACrossRefID
             use-index SortOrder:
        
        /* Only the matches */
        if not tCOACrossRefResult.tcGLCode matches tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcGLFrom or
           tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcGLFrom = tCOACrossRefResult.tcGLCode           or 
           tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcGLTo   <> ''
        then next DETAILBLOCK.
        
        /* =============================== */              
        /* Skip the line with only the '*' */
        /* =============================== */                      
        if tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcGLFrom = '*' and
           tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcGLTo   = ''  and
           tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcCCFrom = '' and
           tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcCCTo   = '' and
           tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcDivFrom = '' and
           tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcDivTo   = '' and
           tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcProjFrom = '' and
           tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcProjTo = ''
        then next DETAILBLOCK.
                
        /* ======== */
        /* Check GL */
        /* ======== */
        if can-do("1,2,3,4,5", string(viSteps))    
        then do:
            if not (((tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcGLTo = ? or 
                     tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcGLTo = '':U) and
                     tCOACrossRefResult.tcGLCode matches tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcGLFrom) or
                    ((tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcGLTo <> ? and 
                      tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcGLTo <> '':U) and
                     tCOACrossRefResult.tcGLCode >= tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcGLFrom and
                     tCOACrossRefResult.tcGLCode <= tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcGLTo))
            then next DETAILBLOCK.
        end. /* if tCOACrossRefResult.tcGLCode <> ? */               
    
        /* ============== */
        /* Check Division */
        /* ============== */
        if can-do("1,2,3,4", string(viSteps))      
        then do:
            if not (((tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcDivTo = ? or 
                     tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcDivTo = '':U) and
                     tCOACrossRefResult.tcDivisionCode matches tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcDivFrom) or
                    ((tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcDivTo <> ? and 
                      tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcDivTo <> '':U) and
                     tCOACrossRefResult.tcDivisionCode >= tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcDivFrom and
                     tCOACrossRefResult.tcDivisionCode <= tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcDivTo))
            then next DETAILBLOCK.
        end. /* if tCOACrossRefResult.tcDivisionCode <> ? */ 

        if viSteps = 5 and
          ((tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcDivFrom <> '':U and
            tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcDivFrom <> ?)       or
           (tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcDivTo   <> '':U and
            tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcDivTo   <> ?))
        then next DETAILBLOCK.
    
        /* ================= */
        /* Check Cost Centre */
        /* ================= */
        if can-do("1,2", string(viSteps))                 
        then do:
            if not (((tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcCCTo = ? or 
                     tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcCCTo = '':U) and
                     tCOACrossRefResult.tcCostCentreCode matches tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcCCFrom) or
                    ((tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcCCTo <> ? and 
                      tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcCCTo <> '':U) and
                     tCOACrossRefResult.tcCostCentreCode >= tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcCCFrom and
                     tCOACrossRefResult.tcCostCentreCode <= tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcCCTo))
            then next DETAILBLOCK.
        end. /* if tCOACrossRefResult.tcCostCentreCode <> ? */ 

        if can-do("3,4,5", string(viSteps)) and
          ((tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcCCFrom <> '':U and
            tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcCCFrom <> ?)       or
           (tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcCCTo   <> '':U and
            tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcCCTo   <> ?))
        then next DETAILBLOCK.    
                                                            
        /* ============= */
        /* Check Project */
        /* ============= */
        if can-do("1,3", string(viSteps))  
        then do:
            if not (((tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcProjTo = ? or 
                     tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcProjTo = '':U) and
                     tCOACrossRefResult.tcProjectCode matches tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcProjFrom) or
                    ((tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcProjTo <> ? and 
                      tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcProjTo <> '':U) and
                     tCOACrossRefResult.tcProjectCode >= tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcProjFrom and
                     tCOACrossRefResult.tcProjectCode <= tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcProjTo))
            then next DETAILBLOCK.
        end. /* if tCOACrossRefResult.tcProjectCode <> ? */ 

        if can-do("2,4,5", string(viSteps)) and
          ((tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcProjFrom <> '':U and
            tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcProjFrom <> ?)       or
           (tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcProjTo   <> '':U and
            tqCOACrossRefDetByIDParentID.tcCOACrossRefDetSrcProjTo   <> ?))
        then next DETAILBLOCK.
            
        assign olMappingFound                                 = yes
               tCOACrossRefResult.tcTargetGLCode              = tqCOACrossRefDetByIDParentID.tcTargetGLCode
               tCOACrossRefResult.tiTargetGL_ID               = tqCOACrossRefDetByIDParentID.tiTargetGL_ID
               tCOACrossRefResult.tcTargetDivisionCode        = tqCOACrossRefDetByIDParentID.tcTargetDivisionCode
               tCOACrossRefResult.tiTargetDivision_ID         = tqCOACrossRefDetByIDParentID.tiTargetDivision_ID
               tCOACrossRefResult.tcTargetCostCentreCode      = tqCOACrossRefDetByIDParentID.tcTargetCostCentreCode
               tCOACrossRefResult.tiTargetCostCentre_ID       = tqCOACrossRefDetByIDParentID.tiTargetCostCentre_ID
               tCOACrossRefResult.tcTargetProjectCode         = tqCOACrossRefDetByIDParentID.tcTargetProjectCode
               tCOACrossRefResult.tiTargetProject_ID          = tqCOACrossRefDetByIDParentID.tiTargetProject_ID
               tCOACrossRefResult.tcTargetAltCOAStructDetCode = tqCOACrossRefDetByIDParentID.tcTargetAltCOAStructDetCode
               tCOACrossRefResult.tiTargetAltCOAStructDet_ID  = tqCOACrossRefDetByIDParentID.tiTargetAltCOAStructDet_ID
               tCOACrossRefResult.tlGLIsDivisionAccount       = tqCOACrossRefDetByIDParentID.tlGLIsDivisionAccount
               tCOACrossRefResult.tlGLIsCostCentreAccount     = tqCOACrossRefDetByIDParentID.tlGLIsCostCentreAccount
               tCOACrossRefResult.tlGLIsProjectAccount        = tqCOACrossRefDetByIDParentID.tlGLIsProjectAccount
               tCOACrossRefResult.tlGLIsSafAccount             = tqCOACrossRefDetByIDParentID.tlGLIsSafAccount
               tCOACrossRefResult.tlCostCentreIsWithSaf        = tqCOACrossRefDetByIDParentID.tlCostCentreIsWithSaf
               tCOACrossRefResult.tlProjectIsWithSaf           = tqCOACrossRefDetByIDParentID.tlProjectIsWithSaf
               tCOACrossRefResult.tcGLExchangeMethod          = tqCOACrossRefDetByIDParentID.tcGLExchangeMethod
               tCOACrossRefResult.tcExchangeRateTypeCode      = tqCOACrossRefDetByIDParentID.tcExchangeRateTypeCode
               tCOACrossRefResult.tcAltCOAStructDetDescription = tqCOACrossRefDetByIDParentID.tcAltCOAStructDetDescription
               tCOACrossRefResult.tcAltCOAStructDetSeq         = tqCOACrossRefDetByIDParentID.tcAltCOAStructDetSeq
               tCOACrossRefResult.tiAltCOAStruct_ID            = tqCOACrossRefDetByIDParentID.tiAltCOAStruct_ID.             

        leave STEPSBLOCK.

    end. /* DETAILBLOCK: */

end. /* STEPSBLOCK */

assign oiReturnStatus = viLocalReturnStatus.