icDraftReference | input | character | Description for the draft instance. This parameter will have a value when creating a draft instance. |
icDraftFormName | input | character | This parameter will have a value when creating a draft instance. |
ilDraftIsShared | input | logical | This parameter will have a value when creating a draft instance. |
oiReturnStatus | output | integer | Return status of the method. |
if oiReturnStatus = 0 then oiReturnStatus = -98. publish "Logging.DeleteInstance" (vcFcComponentName, viFcCurrentInstanceId). if icDraftReference = "" then do: /* ================================================================= */ /* Delete normal instance data */ /* ================================================================= */ if vlInstanceDataIsLoaded then do: <M-1 run StartPersistence (output vhFcComponent (ohPersistence), output viFcReturnSuper (oiReturnStatus)) in business> if viFcReturnSuper <> 0 then oiReturnStatus = viFcReturnSuper. if viFcReturnSuper < 0 then return. <M-14 run DeleteInstance (input viFcCurrentInstanceId (iiInstanceID), input {&TARGETPROCEDURE} (ihClass), input vcFcComponentName (icClassName), output viFcReturnSuper (oiReturnStatus)) in persistence> if viFcReturnSuper <> 0 then oiReturnStatus = viFcReturnSuper. if viFcReturnSuper < 0 then return. end. /* ================================================================= */ /* When a draft instance was opened, release the draft instance */ /* ================================================================= */ if viCurrentDraftInstanceId <> 0 then do: <M-4 run StartPersistence (output vhFcComponent (ohPersistence), output viFcReturnSuper (oiReturnStatus)) in business> if viFcReturnSuper <> 0 then oiReturnStatus = viFcReturnSuper. if viFcReturnSuper < 0 then return. <M-10 run WriteDirect (input 'fcDraftInstance':U (icTableName), input 'for each fcDraftInstance where fcDraftInstance.DraftInstance_ID = ':U + string (viCurrentDraftInstanceId) (icPrepare), input 'IsInUse':U (icFieldList), input 'l':U (icFieldListDataTypes), input 'false':U (icAbsolute), input '' (icIncremental), input {&TARGETPROCEDURE} (ihClass), input vcUserLogin (icUserLogin), output viFcReturnSuper (oiReturnStatus)) in persistence> if viFcReturnSuper <> 0 then oiReturnStatus = viFcReturnSuper. if viFcReturnSuper < 0 then return. end. end. else do: if viTransactionID <> 0 then do: assign vlTransaction = yes viFcCount1 = 1. do while program-name(viFcCount1) <> ?: if program-name(viFcCount1) = "ExitInstance program/transaction.p":U then vlTransaction = no. viFcCount1 = viFcCount1 + 1. end. end. if vlTransaction then do: <M-6 run SetMessage (input #T-12'Only single instances (not part of a transaction) can be saved as a draft ($1).':255(6)T-12# (icMessage), input vcFcComponentName (icArguments), input '' (icFieldName), input '' (icFieldValue), input 'S':U (icType), input 3 (iiSeverity), input '' (icRowid), input 'BLF-258':U (icFcMsgNumber), input '' (icFcExplanation), input '' (icFcIdentification), input '' (icFcContext), output viFcReturnSuper (oiReturnStatus)) in business> assign oiReturnStatus = -3. return. end. /* prepare SaveState */ <I-13 {bFcRun &PROCEDURE = "gipr_SaveStateDataItems"}> <M-7 run StartPersistence (output vhFcComponent (ohPersistence), output viFcReturnSuper (oiReturnStatus)) in business> if viFcReturnSuper <> 0 then oiReturnStatus = viFcReturnSuper. if viFcReturnSuper < 0 then return. /* ================================================================= */ /* Create a draft. */ /* ================================================================= */ <M-11 run CreateDraftInstance (input viTransactionID (iiTransactionId), input viFcCurrentInstanceId (iiInstanceId), input (if vcDraftClass = '' or not vcFcComponentName = 'transaction':U then vcFcComponentName else vcDraftClass) (icBusiness), input vcActivityCode (icActivity), input icDraftReference (icReference), input vcUserLogin (icCreatedBy), input icDraftFormName (icFormName), input ilDraftIsShared (ilDraftIsShared), input viCompanyId (iiCompanyID), input vhFcStateDataSet (ihInstanceData), input viCurrentDraftInstanceId (iiOldInstanceId), input {&TARGETPROCEDURE} (ihClass), output viFcReturnSuper (oiReturnStatus)) in persistence> if viFcReturnSuper <> 0 then oiReturnStatus = viFcReturnSuper. if viFcReturnSuper < 0 then return. assign viCurrentDraftInstanceId = 0. end. if oiReturnStatus = -98 then oiReturnStatus = 0.