| opPrimeKey | output | longchar | Primary Key field value of loaded record(s). Keys are chr(4) separated. Key fields are chr(2) separated. |
| oiReturnStatus | output | integer | Return status of the method. |
for each t_sUsr on error undo, throw:
/* ================================================================= */
/* Lookup user by login ID */
/* When in create mode, skip lookup. */
/* ================================================================= */
if vcActivityCode <> "Create":U
then do:
vcFreeform = "for each Usr where Usr.UsrLogin = '":U + t_sUsr.UsrLogin + "'":U.
<M-8 run DataLoad (input '' (icRowids),
input '' (icPkeys),
input '' (icObjectIds),
input vcFreeform (icFreeform),
input yes (ilKeepPrevious),
output viFcReturnSuper (oiReturnStatus)) in BUser>
if viFcReturnSuper >= 0
then find tUsr where tUsr.UsrLogin = t_sUsr.UsrLogin no-error.
end.
/* ================================================================= */
/* When in delete mode, ignore input data. */
/* When user not found, do not return an error. */
/* ================================================================= */
if vcActivityCode = "Delete":U
then do:
if viFcReturnSuper = -4
then delete t_susr.
else do:
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_sUsr.tc_Rowid = tUsr.tc_Rowid
t_sUsr.tc_ParentRowid = ""
opPrimeKey = (if opPrimeKey = "" then "" else opPrimeKey + chr(4))
+ string(tUsr.Usr_ID).
end.
next.
end.
if vcActivityCode = "Create":U
or viFcReturnSuper = -4
then do:
/* ================================================================= */
/* When user not found and in modify only mode, return an error. */
/* ================================================================= */
if vcActivityCode = "Modify":U
then do:
<M-11 run SetMessage (input #T-1'User with login $1 does not exist.':100(6797)T-1# (icMessage),
input t_sUsr.UsrLogin (icArguments),
input 'tUsr.UsrLogin':U (icFieldName),
input t_sUsr.UsrLogin (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sUsr.tc_Rowid (icRowid),
input 'BLF-235':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BUser>
assign oiReturnStatus = -1.
return.
end.
/* ================================================================= */
/* When user not found or in create mode, create it. */
/* ================================================================= */
<M-4 run AddDetailLine (input 'Usr':U (icTable),
input '' (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BUser>
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_sUsr.tc_Status = "N":U.
end.
else do:
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_sUsr.tc_Status = "C":U.
end.
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
/* #351 When Mfg is replication users to financials, they will not pass any usrcompany or usrdomain records.
* But these records may not be deleted.
* This is not standard behavior anymore.
* We will first copy the tUsrCompany and tUsrDomain records to the t_sUsrCompany and t_sUsrDomain tables
*/
if not can-find (first t_sUsrCompany where t_sUsrCompany.tc_ParentRowid = t_sUsr.tc_Rowid)
then
for each tUsrCompany where
tUsrCompany.tc_ParentRowid = tUsr.tc_Rowid on error undo, throw:
Create t_sUsrCompany.
Buffer-copy tUsrCompany To t_sUsrCompany.
Assign t_sUsrCompany.tc_ParentRowid = t_sUsr.tc_Rowid.
end.
if not can-find (first t_sUsrDomain where t_sUsrDomain.tc_ParentRowid = t_sUsr.tc_Rowid)
then
for each tUsrDomain where
tUsrDomain.tc_ParentRowid = tUsr.tc_Rowid on error undo, throw:
Create t_sUsrDomain.
Buffer-copy tUsrDomain To t_sUsrDomain.
Assign t_sUsrDomain.tc_ParentRowid = t_sUsr.tc_Rowid.
end.
/* ================================================================= */
/* Update company links : delete existing links */
/* ================================================================= */
for each tUsrCompany where
tUsrCompany.tc_ParentRowid = tUsr.tc_Rowid on error undo, throw:
assign tUsrCompany.tc_Status = "D":U.
end.
/* ================================================================= */
/* Update company links : add new links */
/* ================================================================= */
for each t_sUsrCompany where
t_sUsrCompany.tc_ParentRowid = t_sUsr.tc_Rowid on error undo, throw:
find first tUsrCompany where
tUsrCompany.tc_ParentRowid = tUsr.tc_Rowid and
tUsrCompany.tcCompanyCode = t_sUsrCompany.tcCompanyCode no-error.
if available tUsrCompany
then assign t_sUsrCompany.tc_Status = "C":U.
else do:
<M-5 run AddDetailLine (input 'UsrCompany':U (icTable),
input tUsr.tc_Rowid (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BUser>
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
assign t_sUsrCompany.tc_Status = "N":U.
end.
/* ================================================================= */
/* override value for identity fields in input */
/* ================================================================= */
assign t_sUsrCompany.UsrCompany_ID = tUsrCompany.UsrCompany_ID
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
t_sUsrCompany.Usr_ID = tUsr.Usr_ID
t_sUsrCompany.tc_Rowid = tUsrCompany.tc_Rowid
t_sUsrCompany.tc_ParentRowid = tUsr.tc_Rowid.
end.
/* ================================================================= */
/* Update domain links : delete existing links */
/* ================================================================= */
for each tUsrDomain where
tUsrDomain.tc_ParentRowid = tUsr.tc_Rowid on error undo, throw:
assign tUsrDomain.tc_Status = "D":U.
end.
/* ================================================================= */
/* Update domain links : add new links */
/* ================================================================= */
for each t_sUsrDomain where
t_sUsrDomain.tc_ParentRowid = t_sUsr.tc_Rowid on error undo, throw:
find first tUsrDomain where
tUsrDomain.tc_ParentRowid = tUsr.tc_Rowid and
tUsrDomain.tcDomainCode = t_sUsrDomain.tcDomainCode no-error.
if available tUsrDomain
then assign t_sUsrDomain.tc_Status = "C":U.
else do:
<M-10 run AddDetailLine (input 'UsrDomain':U (icTable),
input tUsr.tc_Rowid (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BUser>
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
assign t_sUsrDomain.tc_Status = "N":U.
end.
/* ================================================================= */
/* override value for identity fields in input */
/* ================================================================= */
assign t_sUsrDomain.UsrDomain_ID = tUsrDomain.UsrDomain_ID
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
t_sUsrDomain.Usr_ID = tUsr.Usr_ID
t_sUsrDomain.tc_Rowid = tUsrDomain.tc_Rowid
t_sUsrDomain.tc_ParentRowid = tUsr.tc_Rowid.
end.
/* ================================================================= */
/* override value for identity fields in input */
/* ================================================================= */
assign t_sUsr.Usr_ID = tUsr.Usr_ID
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
t_sUsr.tc_Rowid = tUsr.tc_Rowid
t_sUsr.tc_ParentRowid = ""
opPrimeKey = (if opPrimeKey = "" then "" else opPrimeKey + chr(4))
+ string(tUsr.Usr_ID).
end.