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
oiReturnStatus | output | integer | |
Internal usage
BLF
QadFinancials
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 */