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 icDraftReference = "" then do: if viCurrentDraftInstanceId = 0 and viTransactionLevel > 0 then do: <M-1 run SetMessage (input 'Transaction not closed.':U (icMessage), input '' (icArguments), input '' (icFieldName), input '' (icFieldValue), input 'S':U (icType), input 3 (iiSeverity), input '' (icRowid), input 'BLF-418':U (icFcMsgNumber), input '' (icFcExplanation), input '' (icFcIdentification), input '' (icFcContext), output viFcReturnSuper (oiReturnStatus)) in Transaction> assign oiReturnStatus = -3. return. end. /* ================================================================= */ /* Release draft instance */ /* ================================================================= */ /*refs #600 when you press cancel on an opened draft instance, the draft instance should not go away, so do not stop the instances within the transaction I will leave this code commented untill after the code review.*/ /* 3.5.2007 uncomment code */ if viCurrentDraftInstanceId <> 0 then for each tInstances on error undo, throw: assign vhDatabaseInst = ? viDatabaseId = tInstances.tiInstanceNr vcClassShortName = entry(1, tInstances.tcInsName). if num-entries(vcClassShortName, "[") = 1 then assign vcUserDefinedContext = "". else assign vcUserDefinedContext = entry(1, entry(2, vcClassShortName, "["), "]") vcClassShortName = entry(1, vcClassShortName, "["). <M-3 run BusinessClassActions (input vcClassShortName (icClassShortname), input 'STOP':U (icAction), input no (ilSubtransaction), input-output tInstances.tiOpenCount (biClassOpenCount), input-output vhdatabaseInst (bhClassInstanceHandle), input-output vidatabaseID (biClassInstanceId), input '' (icDraftReference), input vcUserDefinedContext (icUserDefinedContext), output viFcReturnSuper (oiReturnStatus)) in Transaction> end. end. else do: /* ================================================================= */ /* Save all instances in the transation as a draft */ /* ================================================================= */ assign vlTransactionActive = yes vcDraftClass = "" vcDraftClassTemp = "". for each tInstances by tInstances.tiPriority on error undo, throw: assign vhDatabaseInst = ? viDatabaseId = tInstances.tiInstanceNr vlTransactionOpen = yes vcClassShortName = entry(1, tInstances.tcInsName). if num-entries(vcClassShortName, "[") = 1 then assign vcUserDefinedContext = "". else assign vcUserDefinedContext = entry(1, entry(2, vcClassShortName, "["), "]") vcClassShortName = entry(1, vcClassShortName, "["). <M-4 run BusinessClassActions (input vcClassShortName (icClassShortname), input 'OPEN':U (icAction), input no (ilSubtransaction), input-output tInstances.tiOpenCount (biClassOpenCount), input-output vhdatabaseInst (bhClassInstanceHandle), input-output vidatabaseID (biClassInstanceId), input '' (icDraftReference), input vcUserDefinedContext (icUserDefinedContext), output oiReturnStatus (oiReturnStatus)) in Transaction> if oiReturnStatus < 0 then leave. <M-5 run GetPublicData (input 'vcActivityCode':U (icDataList), output vcFcMaskList (ocValues), output viFcReturnSuper (oiReturnStatus)) in database> if vcDraftClass = "" or vcDraftActivity = "" then Assign vcDraftClass = entry (1,tInstances.tcInsName) vcDraftClassTemp = vcDraftClass. if vcDraftActivity = "" then vcDraftActivity = vcFcMaskList. if viBSessionID = 0 then do: <M-7 run GetPublicData (input 'viSessionId,viCompanyId':U (icDataList), output vcFcMaskList (ocValues), output viFcReturnSuper (oiReturnStatus)) in database> assign viBSessionID = integer(entry(1,vcFcMaskList,chr(3))) viCYID = integer(entry(2,vcFcMaskList,chr(3))). end. <M-2 run BusinessClassActions (input vcClassShortName (icClassShortname), input 'STORE':U (icAction), input no (ilSubtransaction), input-output tInstances.tiOpenCount (biClassOpenCount), input-output vhdatabaseInst (bhClassInstanceHandle), input-output vidatabaseID (biClassInstanceId), input icDraftReference (icDraftReference), input vcUserDefinedContext (icUserDefinedContext), output oiReturnStatus (oiReturnStatus)) in Transaction> if oiReturnStatus < 0 then leave. Assign vcDraftClass = vcDraftClassTemp. end. /*get current user */ <M-6 run StartCacher (output vhFcComponent (ohCacher), output viFcReturnSuper (oiReturnStatus)) in Transaction> <M-8 run GetCharacterValueFromSession (input viBSessionID (iiSessionId), input 'UserLogin':U (icDataItemName), output vcUserLogin (ocValue), output viFcReturnSuper (oiReturnStatus)) in Cacher> assign vlTransactionActive = no viTransactionID = viFcCurrentInstanceId viCompanyId = viCYID vcActivityCode = vcDraftActivity. end. <ANCESTOR-CODE>