| 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.