project QadFinancials > class BCInvoiceJournalEntry > method MaintainByDatasetWithOutput

Description

This method uses contents of the input class temp-tables (prefix t_s) to perform the action specified in icAction. (if icAction is empty, it gets the default value of "SAVE")
SAVE : validate contents and write to database if correct
SAVEDRAFT : validate contents, write to database if correct, copy the data to the class tables (prefix t_o) and create draft instance if incorrect
DRAFT : copy data to the class tables (prefix t_o) and create draft instance
VALIDATE : only validate data

It returns the object dataset if required (if ilProvideOutput = true).

See method ApiStdMaintainTTInitialDefaulting for all further details


Parameters


icActioninputcharacterSAVE
SAVEDRAFT
DRAFT
VALIDATE
ilReturnDatasetinputlogicalIndication whether the logic should return the official dataset of the object that has just been created/modified.
ilPartialUpdateinputlogicalIndication whether the input dataset is a full object or only a partial one.
icPartialUpdateExceptionListinputcharacterComma separated list with fields that need to be skipped in the test logic for partial update.
Fields in the list are specified as t<table>.<field>.
opPrimaryKeyoutputlongchar
opRowidoutputlongchar
oiDraftInstanceoutputinteger
ocPrimaryKeyNameoutputcharacterThe name of the field(s) in the primary key of the object. Normally this is the name of the object ID of the main table. (like creditor_ID)
ozObjectRepresentationoutputdataset-handleThe dataset containing the official representation of the object dataset. It should always be passed by-reference, meaning, the dataset handle should be created before the call.
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


unused


program code (program1/bcinvoicejournalentry.p)

    
    /* ================================================================================================== */
    /* As this class has got a dataset in the class tables but CB does not provide the option to indicate */
    /* in this case which table is the primary and as such we cannot return a dataset for this method by  */
    /* using the default mechanism in the ancestor-class.                                                 */
    /* Therefore we define a local handle to the dataset in this class, fill it in the processing and     */
    /* then assign the the inheritted one after the ancestor-code again                                   */
    /* ================================================================================================== */
    assign vlReturnCIInstanceDataCIJE  = ilReturnDataset
           vhBCInvoiceInstanceDataCIJE  = ?
           ilReturnDataset             = false.
    
    /* ================== */
    /* Exception handling */
    /* ================== */
    assign oiReturnStatus = -98.
    
    /* ================== */
    /* Call the API       */
    /* ================== */
    <M-29 run ApiStdMaintainTTV01
       (input  t_sApiCInvoiceCIJE (t_sApiCInvoiceCIJE), 
        input  t_sApiCInvoiceBankCIJE (t_sApiCInvoiceBankCIJE), 
        input  t_sApiCInvoiceBankPayCodeCIJE (t_sApiCInvoiceBankPayCodeCIJE), 
        input  t_sApiCInvoiceMovementCIJE (t_sApiCInvoiceMovementCIJE), 
        input  t_sApiCInvoicePOCIJE (t_sApiCInvoicePOCIJE), 
        input  t_sApiCInvoicePostingCIJE (t_sApiCInvoicePostingCIJE), 
        input  t_sApiCInvoiceVatCIJE (t_sApiCInvoiceVatCIJE), 
        input  t_sApiCInvoiceStageCIJE (t_sApiCInvoiceStageCIJE), 
        input  t_sApiCInvoiceWHTCIJE (t_sApiCInvoiceWHTCIJE), 
        input  t_sApiPostingCIJE (t_sApiPostingCIJE), 
        input  t_sApiPostingLineCIJE (t_sApiPostingLineCIJE), 
        input  t_sApiPostingSafCIJE (t_sApiPostingSafCIJE), 
        input  t_sApiPostingVatCIJE (t_sApiPostingVatCIJE), 
        input  t_sApiPostingVatDelayCIJE (t_sApiPostingVatDelayCIJE), 
        input  icAction (icAction), 
        output opPrimaryKey (ocLstPrimKey), 
        output vcDummy (ocLstReturn), 
        output opRowid (ocLstRowid), 
        output viFcReturnSuper (oiReturnStatus)) in BCInvoiceJournalEntry>
    if viFcReturnSuper <> 0
    then do: 
        assign oiReturnStatus = viFcReturnSuper.
        if oiReturnStatus < 0 
        then return.
    end. /* if viFcReturnSuper <> 0 */
    
    /* ================================================================================================================================== */
    /* vhBCInvoiceInstanceDatafill is filled in the ancestor-code when requested and now we use it to assign the inheritted output param  */
    /* ================================================================================================================================== */
    if vlReturnCIInstanceDataCIJE = true and 
       valid-handle (vhBCInvoiceInstanceDataCIJE) 
    then do :
        /* Create a new dataset like the class-dataset but with no data in it: the output dataset and the input dataset of this method needs to have the same structure as class-dataset */
        ozObjectRepresentation:create-like(dataset BCInvoiceJournalEntryO:handle).
        /* Copy the content of the CInvoice-instance (stored in vhBCInvoiceInstanceDataCIJE) into the new dataset vhBCInvoiceJournalEntryDSetCIJE that is defined like the class-dataset: state the table-names as they are different in the two datasets */
        /* So the output dataset will have the same structure as the class dataset although only the pure invoice data will be filled - and the posting-data will be empty */
        ozObjectRepresentation:copy-dataset(vhBCInvoiceInstanceDataCIJE, /* handle to the source DATASET from which to copy */
                                            true, /* Append-mode */
                                            false, /* Replace-mode */ 
                                            true, /* Loose-copy-mode; it relaxes the requirement that the metaschema for the source and target temp-tables be the same */
                                            "tApiCInvoiceCIJE,tCInvoice,tApiCInvoiceBankCIJE,tCInvoiceBank,tApiCInvoiceBankPayCodeCIJE,tCInvoiceBankPayCode,tApiCInvoiceMovementCIJE,tCInvoiceMovement,tApiCInvoicePOCIJE,tCInvoicePO,tApiCInvoicePostingCIJE,tCInvoicePosting,tApiCInvoiceStageCIJE,tCInvoiceStage,tApiCInvoiceVatCIJE,tCInvoiceVat,tApiCInvoiceWHTCIJE,tCInvoiceWHT":U, /* pairs-list; comma-separated list of the target and source temp-table pairs to be copied */
                                            false, /* Current-only: copy only the current record of every table? */
                                            "Out":U). /* Name-prefix: optional character expression used as the prefix for naming the target ProDataSet */
        /* Delete the object with the dataset of BCInvoice (vhBCInvoiceInstanceDataCIJE) as we have copied it already and thus no longer need it */
        delete object vhBCInvoiceInstanceDataCIJE.        
    end. /* if valid-handle (vhBCInvoiceInstanceData)  */
    
    
    
    /* ================== */
    /* Exception handling */
    /* ================== */
    if oiReturnStatus = -98 
    then assign oiReturnStatus = 0.