project BLF > class Session > method FixEntityFilters


Parameters


icReportClassinputcharacter
icReferenceinputcharacter
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


BLF
method Session.GetBusinessFields


program code (program3/session.p)

assign vcEntityList = "".

if can-find(first tBusinessFields where
                  tBusinessFields.tcFcFieldType = "F"             and
                 (tBusinessFields.tcFcFieldName matches "*_CANDO" or
                  tBusinessFields.tcControlType = "ComboBox")     and
                  lookup("IsEntityCode", tBusinessFields.tcValidationMask, chr(2)) > 0)
then do:
    /* BLF-3888: first check QRF */
    vcQRef = "urn:qad-report:c1:QAD_" + icreportClass + "_" + icreference.
    <Q-93 run ResourceByURIUsr (all) (Read) (NoCache)
       (input ?, (CompanyId)
        input vcQRef, (ResourceURI)
        input viUsrId, (UsrId)
        input ?, (CompanyIsActive)
        output dataset tqResourceByURIUsr) in BResource>

    if not can-find (first tqResourceByURIUsr)
    then do:
        vcQRef = "urn:qad-report:c1:QAD_" + icreference.
        <Q-44 run ResourceByURIUsr (all) (Read) (NoCache)
           (input ?, (CompanyId)
            input vcQRef, (ResourceURI)
            input viUsrId, (UsrId)
            input ?, (CompanyIsActive)
            output dataset tqResourceByURIUsr) in BResource>
    end.

    if not can-find (first tqResourceByURIUsr)
    then do:
        /* When not QRF check Crystal */
        vcQRef = "urn:cbf:" + icReportClass + "." + icreference.
        <Q-90 run ResourceByURIUsr (all) (Read) (NoCache)
           (input ?, (CompanyId)
            input vcQRef, (ResourceURI)
            input viUsrId, (UsrId)
            input ?, (CompanyIsActive)
            output dataset tqResourceByURIUsr) in BResource>
    end.
    
    for each tqResourceByURIUsr where
             tqResourceByURIUsr.tiUsr_ID      = viUsrId and
             tqResourceByURIUsr.tcResourceURI = vcQRef
             break by tqResourceByURIUsr.tcCompanyCode:
        if first-of(tqResourceByURIUsr.tcCompanyCode)
        then do:
            if vcEntityList <> ""
            then assign vcEntityList = vcEntityList + chr(2).

            assign vcEntityList = vcEntityList +
                                  tqResourceByURIUsr.tcCompanyCode + " (" + tqResourceByURIUsr.tcDomainCode + ")" + chr(2) +
                                  tqResourceByURIUsr.tcCompanyCode.
        end.
    end.
end.

for each tBusinessFields where
         tBusinessFields.tcFcFieldType = "F" and
         lookup("IsEntityCode", tBusinessFields.tcValidationMask, chr(2)) > 0:
    if tBusinessFields.tcControlType = "ComboBox"
    then do:
        if tBusinessFields.tcValueList = "" or
           tBusinessFields.tcValueList = ?
        then assign tBusinessFields.tcValueList = vcEntityList.
        else do:
            assign vcEntityListToSet = "".

            do viFcCount1 = num-entries(tBusinessFields.tcValueList, chr(2)) to 2 by -2:
                assign vcEntityCode = entry(viFcCount1, tBusinessFields.tcValueList, chr(2)).

                do viFcCount2 = num-entries(vcEntityList, chr(2)) to 2 by -2:
                    if entry(viFcCount2, vcEntityList, chr(2)) = vcEntityCode
                    then do:
                        if vcEntityListToSet <> ""
                        then assign vcEntityListToSet = vcEntityListToSet + chr(2).

                        assign vcEntityListToSet = vcEntityListToSet +
                                                   entry(viFcCount1 - 1, tBusinessFields.tcValueList, chr(2)) + chr(2) +
                                                   entry(viFcCount1, tBusinessFields.tcValueList, chr(2)).
                    end.
                end.
            end.

            assign tBusinessFields.tcValueList = vcEntityListToSet.
        end.
    end.
    else assign tBusinessFields.tcLookupFilterField = "tCompany.CompanyCode"
                tBusinessFields.tcLookupQuery       = "BCompanySAO.SelectCompanyForUser"
                tBusinessFields.tcLookupReturnField = "tqSelectCompanyForUser.tcCompanyCode".
end.