project QadFinancials > class BExpenseNote > method ExitInstance

Description

This method can be extended with code to execute when an instance of a business class is stopped.

Standard functionality in this method is
- Clean up instance data in the fcInstance table.
- Create or update a draft instance if applicable.

plus transaction handling
- Remove the instance from the transaction if it was added to a transaction in InitInstance.
- Abort the transaction if one was started from inside the business code.

PreCondition

This method is executed when :
- A business instance is stopped (release object + delete instance data)
(icDraftReference = "" + viCurrentDraftInstanceId = 0)
- A business instance is saved as a draft (release object + create draft)
(icDraftReference <> "")
- A draft instance is stopped (release object, delete copy of draft, release original draft)
(icDraftReference = "" + viCurrentDraftInstanceId <> 0)

This method is NOT run when a business instance is only closed (release object + keep instance data).


Parameters


icDraftReferenceinputcharacterDescription for the draft instance.
This parameter will have a value when creating a draft instance.
icDraftFormNameinputcharacterThis parameter will have a value when creating a draft instance.
ilDraftIsSharedinputlogicalThis parameter will have a value when creating a draft instance.
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


unused


program code (program/bexpensenote.p)

<ANCESTOR-CODE>

/* ================================================================= */
/* If the instance contains uncommitted cinvoices, do not wait for   */
/* housekeeping to release the reserved number. Release it now.      */
/* When saving a draft instance, store the number to protect it      */
/* from being released by housekeeping.                              */
/* (do not release numbr when cancelling a draft)                    */
/* ================================================================= */
if viCurrentDraftInstanceId = 0
then for each tExpNote where
         tExpNote.tc_Status = "N":U and
         tExpNote.ExpNoteNumber <> 0 and
         tExpNote.ExpNoteNumber <> ?:

    assign vhFcComponent = ?.
    if icDraftReference = ""
    then do:
        <M-2 run ReleaseNumber
           (input  viCompanyId (iiCompanyId), 
            input  tExpNote.ExpNoteYear (iiNumbrYear), 
            input  'EXPNOTE':U (icNumbrType), 
            input  tExpNote.ExpNoteNumber (iiNumbr), 
            input  viFcCurrentInstanceId (iiInstanceId), 
            input  vcFcComponentName (icClassName), 
            output viFcReturnSuper (oiReturnStatus)) in BNumber>
    end.
    else do:
        <M-3 run StoreNumber (input  viCompanyId (iiCompanyID), 
                      input  tExpNote.ExpNoteYear (iiNumbrYear), 
                      input  'EXPNOTE':U (icNumbrType), 
                      input  tExpNote.ExpNoteNumber (iiNumbr), 
                      output viFcReturnSuper (oiReturnStatus)) in BNumber>
    end.
    if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and oiReturnStatus = 0)
    then assign oiReturnStatus = viFcReturnSuper.
    if oiReturnStatus < 0
    then return.
end.