project BLF > class BSetting > method DataLoadCompany

Description

Load all system settings that are scoped to an entity into the class temp-tables.


Parameters


iiCompanyIdinputinteger
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


unused


program code (program6/bsetting.p)

define buffer bSelectConfig for tqSelectConfig.

/* Load config */
<Q-1 run SelectConfig (all) (Read) (NoCache)
   (output dataset tqSelectConfig) in BSettingConfiguration >

/* Load setting */
assign vcLoad = "for each fcSetting where fcSetting.SettingScope = '":U + string(iiCompanyId) + "'":U.

<M-2 run DataLoad
   (input  '':U (icRowids), 
    input  '':U (icPkeys), 
    input  '':U (icObjectIds), 
    input  vcLoad (icFreeform), 
    input  false (ilKeepPrevious), 
    output viFcReturnSuper (oiReturnStatus)) in BSetting>

if viFcReturnSuper = -4

then assign viFcReturnSuper = 0.

if viFcReturnSuper < 0 or
   oiReturnStatus  = 0
then assign oiReturnStatus = viFcReturnSuper.

if oiReturnStatus < 0
then return.

/* Remove irrelevant setting */
for each tqSelectConfig where
         tqSelectConfig.tcSettingConfigLevel <> {&SETTINGCONFIG-LEVEL-COMPANY},
    each tfcSetting where
         tfcSetting.SettingConfig_ID = tqSelectConfig.tiSettingConfig_ID:
    delete tfcSetting.
end.

/* Add missing setting */
for each tqSelectConfig where
         tqSelectConfig.tcSettingConfigLevel = {&SETTINGCONFIG-LEVEL-COMPANY}:
    find first tfcSetting where
               tfcSetting.SettingConfig_ID = tqSelectConfig.tiSettingConfig_ID
               no-error.

    if not available tfcSetting
    then do:
        /* Only settings already active on domain level can be activated on company level */
        find first bSelectConfig where
                   bSelectConfig.tcSettingConfigName  = tqSelectConfig.tcSettingConfigName and
                   bSelectConfig.tcSettingConfigLevel = {&SETTINGCONFIG-LEVEL-DOMAIN}
                   no-error.

        if available bSelectConfig
        then do:
            <Q-5 assign vlFcQueryRecordsAvailable = CheckSettingbyID (NoCache)
               (input bSelectConfig.tiSettingConfig_ID, (ConfigID)
                input string(viDomainID), (Scope)
                input true, (Active)) in BSetting >

            if not vlFcQueryRecordsAvailable
            then next.
        end.

        <M-3 run AddDetailLine
           (input  'fcSetting':U (icTable), 
            input  '':U (icParentRowid), 
            output viFcReturnSuper (oiReturnStatus)) in BSetting>

        if viFcReturnSuper < 0 or
           oiReturnStatus  = 0
        then assign oiReturnStatus = viFcReturnSuper.

        if oiReturnStatus < 0
        then return.

        assign tfcSetting.SettingConfig_ID = tqSelectConfig.tiSettingConfig_ID
               tfcSetting.SettingIsActive  = false
               tfcSetting.SettingScope     = string(iiCompanyId).
    end.

    <M-4 run GetConfigLabel
       (input  tqSelectConfig.tcSettingConfigName (icConfigCode), 
        output tfcSetting.tcSettingConfigLabel (ocConfigLabel), 
        output viFcReturnSuper (oiReturnStatus)) in BSetting>
end.

empty temp-table tqSelectConfig.