project BLF > class BWorkObject > method CreateDraftWorkObject

Description

Create a work object based on a draft instance


Parameters


icBusinessComponentinputcharacterBusiness Component
iiInstanceIdinputintegerid
icDocumentNameinputcharacterDocumentName
icCreatorUsrLogininputcharacter
icObjectReferenceinputcharacter
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


BLF
method BScanDaemonPerfWorkItem.ApiProcessSingleScanDaemonQueue


program code (program1/bworkobject.p)

/* Get a list of everybody with Create activity on the Business Component in the current company */
<Q-12 run BusCompByActivityUserComp (all) (Read) (NoCache)
   (input icBusinessComponent, (BusComponentCode)
    input 'Create', (BusActivityCode)
    input ?, (UsrName)
    input ?, (UsrLogin)
    input viCompanyId, (CompanyID)
    input ?, (UsrID)
    output dataset tqBusCompByActivityUserComp) in BBusinessComponent >

if not can-find(first tqBusCompByActivityUserComp where
                      tqBusCompByActivityUserComp.tcBusComponentCode = icBusinessComponent and
                      tqBusCompByActivityUserComp.tcBusActivityCode  = "Create"            and
                      tqBusCompByActivityUserComp.tiCompany_ID       = viCompanyId)
then do:
    <M-13 run SetMessage
       (input  trim(#T-8'No users found with Create privileges on component $1 in entity $2.':255(998716594)T-8#) (icMessage), 
        input  icBusinessComponent + chr(2) + vcCompanyCode (icArguments), 
        input  '' (icFieldName), 
        input  '' (icFieldValue), 
        input  'E' (icType), 
        input  3 (iiSeverity), 
        input  '' (icRowid), 
        input  'BLF-224':U (icFcMsgNumber), 
        input  '' (icFcExplanation), 
        input  '' (icFcIdentification), 
        input  '' (icFcContext), 
        output viFcReturnSuper (oiReturnStatus)) in BWorkObject>

    assign oiReturnStatus = -1.
    return.
end.

<M-4 run DataNew  (output viFcReturnSuper (oiReturnStatus)) in BWorkObject>

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

if oiReturnStatus < 0
then return.

find first tqBusCompByActivityUserComp where
           tqBusCompByActivityUserComp.tcBusComponentCode = icBusinessComponent and
           tqBusCompByActivityUserComp.tcBusActivityCode  = "Create"            and
           tqBusCompByActivityUserComp.tiCompany_ID       = viCompanyId
           no-error.

assign tWorkObject.WorkObjectInternal_ID      = - iiInstanceId
       tWorkObject.WorkObjectInstruction      = icDocumentName
       tWorkObject.WorkObjectIsInternalCtrl   = yes
       tWorkObject.WorkObjectIsReturnToSender = no
       tWorkObject.WorkObjectIsSendMail       = no
       tWorkObject.tcWorkObjectInternalRef    = icObjectReference
       tWorkObject.Role_ID                    = 0
       tWorkObject.BusComponent_ID            = tqBusCompByActivityUserComp.tiBusComponent_ID
       tWorkObject.tcBusComponentCode         = icBusinessComponent
       tWorkObject.tcBusActivityCode          = "Create"
       tWorkObject.BusActivity_ID             = tqBusCompByActivityUserComp.tiBusActivity_ID.

<Q-8 run UserPrim (all) (Read) (NoCache)
   (input ?, (UsrId)
    input icCreatorUsrLogin, (UsrLogin)
    output dataset tqUserPrim) in BUser >

find first tqUserPrim where
           tqUserPrim.tcUsrLogin = icCreatorUsrLogin
           no-error.

if available tqUserPrim
then assign tWorkObject.CreatorUsr_ID     = tqUserPrim.tiUsr_ID
            tWorkObject.tcCreatorUsrLogin = tqUserPrim.tcUsrLogin.

for each tqBusCompByActivityUserComp where
         tqBusCompByActivityUserComp.tcBusComponentCode = icBusinessComponent and
         tqBusCompByActivityUserComp.tcBusActivityCode  = "Create"            and
         tqBusCompByActivityUserComp.tiCompany_ID       = viCompanyId:
    if can-do(tWorkObject.tcTo, tqBusCompByActivityUserComp.tcUsrLogin)
    then next.

    if tWorkObject.tcTo <> ""
    then assign tWorkObject.tcTo = tWorkObject.tcTo + ",".

    assign tWorkObject.tcTo = tWorkObject.tcTo + tqBusCompByActivityUserComp.tcUsrLogin.
end.

/* No validations */
assign vlFcDataValidated = yes.
<M-5 run DataSave  (output viFcReturnSuper (oiReturnStatus)) in BWorkObject>

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

if oiReturnStatus < 0
then return.