project QadFinancials > class BRole > method AdditionalUpdates

Description

This empty method allows to do additional updates on class temp-tables after records were received (and validated) from outside, using method SetPublicTables.
You can start instances of other business classes to do those updates.


Parameters


oiReturnStatusoutputinteger


Internal usage


BLF
method BRole.ApiSynchronise
method BRole.CreateRolResource
method BRole.SaveRolePermissionsData
method BRole.ApiMaintainRolesForModuleURI

QadFinancials
method BRole.AddGenCodeGroupToRoles
method BRole.ApiCreateCIApproveRole


program code (program/brole.p)

<ANCESTOR-CODE>

/* Replicate to mfgpro in case something changed */
if can-find (first tRole where
                   tRole.tc_Status > '':U)
then do :
    If viBMfgRoleID = 0 Or
       viBMfgRoleID = ?
    Then Do:
        <I-1 {bFcStartAndOpenInstance
            &ADD-TO-TRANSACTION = "True"
            &CLASS              = "BMfgRole"}>
    End.
    Else Do:
        <I-2 {bFcOpenInstance
            &CLASS           = "BMfgRole"}>
    End.
    <M-3 run MaintainData
          (input  tRole (tCopyRole), 
           output viLocalReturnStatus (oiReturnStatus)) in BMfgRole>
    <I-4 {bFcCloseInstance
            &CLASS           = "BMfgRole"}>
    If viLocalReturnStatus <> 0
    Then Assign oiReturnStatus = viLocalReturnStatus.
    If viLocalReturnStatus < 0
    Then Do:
        <M-45 run StopExternalInstances
           (output viFcReturnSuper (oiReturnStatus)) in BRole>
        Return.
    End.
end. /* can-find */

/*Cascading deletions from role*/
Assign vcRoleNameList = '':U.
For Each tRole Where tRole.tc_Status = 'D':U:
    If vcRoleNameList = '':U
    Then Assign vcRoleNameList = tRole.RoleName.
    Else Assign vcRoleNameList = vcRoleNameList + ',':U + tRole.RoleName.
End.

If vcRoleNameList <> '':U
Then Do:
    /*If viBMfgControlWorkTableID = 0 Or
       viBMfgControlWorkTableID = ? 
    Then Do:
        <I-15 {bFcStartAndOpenInstance
            &ADD-TO-TRANSACTION = "True"
            &CLASS              = "BMfgControlWorkTable"}>
    End.
    Else Do:
        <I-16 {bFcOpenInstance
            &CLASS           = "BMfgControlWorkTable"}>
    End.
    <M-20 run DeleteRoleFromCanRun
          (input  vcRoleNameList (icRoleNameList), 
           output viLocalReturnStatus (oiReturnStatus)) in BMfgControlWorkTable>
    <I-18 {bFcCloseInstance
            &CLASS           = "BMfgControlWorkTable"}>
    If viLocalReturnStatus <> 0
    Then Assign oiReturnStatus = viLocalReturnStatus.
    If viLocalReturnStatus < 0
    Then Do:
        <M-46 run StopExternalInstances
           (output viFcReturnSuper (oiReturnStatus)) in BRole>
        Return.
    End.*/
    
    /*If viBMfgDataEntryProfileID = 0 Or
       viBMfgDataEntryProfileID = ?
    Then Do:
        <I-21 {bFcStartAndOpenInstance
            &ADD-TO-TRANSACTION = "True"
            &CLASS              = "BMfgDataEntryProfile"}>
    End.
    Else Do:
        <I-22 {bFcOpenInstance
            &CLASS           = "BMfgDataEntryProfile"}>
    End.
    <M-26 run DeleteRoleFromCanRun
          (input  vcRoleNameList (icRoleNameList), 
           output viLocalReturnStatus (oiReturnStatus)) in BMfgDataEntryProfile>
    <I-24 {bFcCloseInstance
            &CLASS           = "BMfgDataEntryProfile"}>
    If viLocalReturnStatus <> 0
    Then Assign oiReturnStatus = viLocalReturnStatus.
    If viLocalReturnStatus < 0
    Then Do:
        <M-47 run StopExternalInstances
           (output viFcReturnSuper (oiReturnStatus)) in BRole>
        Return.
    End.*/
    
    /*If viBMfgInventoryMovSiteID = 0 Or
       viBMfgInventoryMovSiteID = ?
    Then Do:
        <I-27 {bFcStartAndOpenInstance
            &ADD-TO-TRANSACTION = "True"
            &CLASS              = "BMfgInventoryMovSite"}>
    End.
    Else Do:
        <I-28 {bFcOpenInstance
            &CLASS           = "BMfgInventoryMovSite"}>
    End.
    <M-32 run DeleteRoleFromCanRun
          (input  vcRoleNameList (icRoleNameList), 
           output viLocalReturnStatus (oiReturnStatus)) in BMfgInventoryMovSite>
    <I-30 {bFcCloseInstance
            &CLASS           = "BMfgInventoryMovSite"}>
    If viLocalReturnStatus <> 0
    Then Assign oiReturnStatus = viLocalReturnStatus.
    If viLocalReturnStatus < 0
    Then Do:
        <M-48 run StopExternalInstances
           (output viFcReturnSuper (oiReturnStatus)) in BRole>
        Return.
    End.*/
    
    If viBMfgSiteID = 0 Or
       viBMfgSiteID = ?
    Then Do:
        <I-33 {bFcStartAndOpenInstance
            &ADD-TO-TRANSACTION = "True"
            &CLASS              = "BMfgSite"}>
    End.
    Else Do:
        <I-34 {bFcOpenInstance
            &CLASS           = "BMfgSite"}>
    End.

    /* Run Delete Method */
    <M-38 run DeleteRoleFromCanRun
          (input  vcRoleNameList (icRoleNameList), 
           output viLocalReturnStatus (oiReturnStatus)) in BMfgSite>
    
    <I-36 {bFcCloseInstance
            &CLASS           = "BMfgSite"}>
         
    If viLocalReturnStatus <> 0
    Then Assign oiReturnStatus = viLocalReturnStatus.
    If viLocalReturnStatus < 0
    Then Do:
        <M-49 run StopExternalInstances
           (output viFcReturnSuper (oiReturnStatus)) in BRole>
        Return.
    End.
    

    If viBMfgAccount6ID = 0 Or
       viBMfgAccount6ID = ?
    Then Do:
        <I-39 {bFcStartAndOpenInstance
            &ADD-TO-TRANSACTION = "True"
            &CLASS              = "BMfgAccount"}>
    End.
    Else Do:
        <I-40 {bFcOpenInstance
            &CLASS           = "BMfgAccount"}>
    End.
    
    /* Run Delete Method */
    <M-44 run DeleteRoleFromCanRun (input  vcRoleNameList (icRoleNameList), 
                                output viLocalReturnStatus (oiReturnStatus)) in BMfgAccount>
    
    <I-42 {bFcCloseInstance
            &CLASS           = "BMfgAccount"}>
    If viLocalReturnStatus <> 0
    Then Assign oiReturnStatus = viLocalReturnStatus.
    If viLocalReturnStatus < 0
    Then Do:
        <M-50 run StopExternalInstances
           (output viFcReturnSuper (oiReturnStatus)) in BRole>
        Return.
    End.
End.

if can-find (first tRole where tRole.tc_Status = "N")
then ADDGCG: do:

    /* ================================================================= */
    /* Add gencode groups when all existing roles already give access to */
    /* all existing gencode groups (except SYSTEM).                      */
    /* ================================================================= */
    <Q-74 run RoleByNameId (all) (Read) (NoCache)
       (input 0, (RoleID)
        input '', (RoleName)
        output dataset tqRoleByNameId) in BRole>
    
    <Q-55 run ResourceInfo (all) (Read) (NoCache)
       (input 'urn:gencodegroup:*', (URImatches)
        output dataset tqResourceInfo) in BResource>
    
    for each tqRoleByNameId on error undo, throw:
    for each tqResourceInfo where tqResourceInfo.tcResourceURI <> "urn:gencodegroup:SYSTEM" on error undo, throw:
        <Q-52 run RolesForResource (all) (Read) (NoCache)
           (input tqResourceInfo.tiResource_ID, (ResourceID)
            input '', (ResourceURI)
            input tqRoleByNameId.tiRole_ID, (RoleID)
            output dataset tqRolesForResource) in BResource>
        if not can-find (first tqRolesForResource)
        then leave ADDGCG.
    end.
    end.
    
    for each tRole where tRole.tc_Status = "N" on error undo, throw:
    for each tqResourceInfo where tqResourceInfo.tcResourceURI <> "urn:gencodegroup:SYSTEM" on error undo, throw:
    
        if not can-find (first tRoleResource where
                               tRoleResource.Role_ID     = tRole.Role_ID and
                               tRoleResource.Resource_ID = tqResourceInfo.tiResource_ID)
        then do:
            <M-76 run AddDetailLine
               (input  'RoleResource' (icTable), 
                input  tRole.tc_Rowid (icParentRowid), 
                output viFcReturnSuper (oiReturnStatus)) in BRole>
            if viFcReturnSuper <> 0
            then oiReturnStatus = viFcReturnSuper.
            if viFcReturnSuper < 0
            then return.
    
            assign tRoleResource.Role_ID               = tRole.Role_ID
                   tRoleResource.Resource_ID           = tqResourceInfo.tiResource_ID
                   tRoleResource.tcResourceURI         = ""
                   tRoleResource.RoleResourceIsDefault = no.
        end.
    end.
    end.
end.     /* ADDGCG */