project QadFinancials > class BCMask > method Copy

Description

This method can be used for creation of new Daybook closing mask based on existing one


Parameters


iiOriginalCMask_IDinputintegerID of the original Daybook closing mask from which new one is created.
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


unused


program code (program3/bcmask.p)

/* ====================================================================================== *
 * Method       : Copy                                                                    *
 * Description  : This method creates new Daybook closing mask as copy of existing one    *
 * -------------------------------------------------------------------------------------- *
 * Parameters   : (i)  OriginalCMask_ID    Original Daybook closing mask                  *
 * ====================================================================================== */
 
MAIN_BLOCK:
do on error undo, throw:
    
    /* Pre-validation block */
    if iiOriginalCMask_ID = 0 or 
       iiOriginalCMask_ID = ?
    then do:
        assign vcMessage = #T-90'Not all mandatory input parameters are populated or they have wrong value.':255(999890330)T-90#
               vcContext = "OriginalCMask_ID=&1":U
               vcContext = substitute(vcContext, iiOriginalCMask_ID).
        <M-37 run SetMessage
           (input  vcMessage (icMessage), 
            input  '':U (icArguments), 
            input  '':U (icFieldName), 
            input  '':U (icFieldValue), 
            input  'S':U (icType), 
            input  3 (iiSeverity), 
            input  '':U (icRowid), 
            input  'qadfin-349052':U (icFcMsgNumber), 
            input  '':U (icFcExplanation), 
            input  '':U (icFcIdentification), 
            input  vcContext (icFcContext), 
            output viFcReturnSuper (oiReturnStatus)) in BCMask>
        assign oiReturnStatus = -1.
        leave MAIN_BLOCK.
    end.
    
    
    /* Clear instance data first */
    <M-40 run ClearData  (output viFcReturnSuper (oiReturnStatus)) in BCMask>
    if viFcReturnSuper < 0 or viFcReturnSuper > 0 and oiReturnStatus = 0 then assign oiReturnStatus = viFcReturnSuper.
    if oiReturnStatus < 0 then leave MAIN_BLOCK.

    
    /* Read data of original Daybook closing mask */
    <M-33 run DataLoad
       (input  ? (icRowids), 
        input  ? (icPkeys), 
        input  string(iiOriginalCMask_ID) (icObjectIds), 
        input  ? (icFreeform), 
        input  true (ilKeepPrevious), 
        output viFcReturnSuper (oiReturnStatus)) in BCMask>
    if viFcReturnSuper < 0 or viFcReturnSuper > 0 and oiReturnStatus = 0 then assign oiReturnStatus = viFcReturnSuper.
    if oiReturnStatus < 0 then leave MAIN_BLOCK.
    
    /* Change the data to get "New" status */
    <M-67 run SetNewStatus  (output viFcReturnSuper (oiReturnStatus)) in BCMask>
    if viFcReturnSuper < 0 or viFcReturnSuper > 0 and oiReturnStatus = 0 then assign oiReturnStatus = viFcReturnSuper.
    if oiReturnStatus < 0 then leave MAIN_BLOCK.
    
    find tCMask no-error.
    if not available tCMask
    then do:
        assign vcMessage = #T-87'Missing record':255(69247)T-87#
               vcContext = "OriginalCMask_ID=&1":U
               vcContext = substitute(vcContext, iiOriginalCMask_ID).
        <M-70 run SetMessage
           (input  vcMessage (icMessage), 
            input  '':U (icArguments), 
            input  '':U (icFieldName), 
            input  '':U (icFieldValue), 
            input  'S':U (icType), 
            input  3 (iiSeverity), 
            input  '':U (icRowid), 
            input  'qadfin-253071':U (icFcMsgNumber), 
            input  '':U (icFcExplanation), 
            input  '':U (icFcIdentification), 
            input  vcContext (icFcContext), 
            output viFcReturnSuper (oiReturnStatus)) in BCMask>
        assign oiReturnStatus = -1.
        leave MAIN_BLOCK.
    end.
    
    /* Adjust code to indicate, it is copy */
    assign tCMask.CMaskCode = substitute(#T-9'Copy of &1':20(715)T-9#, tCMask.CMaskCode).
    
    
    /* Copy also all documents to new Daybook closing mask */
    if viBDocumentLinkBCMID = 0 or
       viBDocumentLinkBCMID = ?
    then do:
        <I-77 {bFcStartAndOpenInstance
             &ADD-TO-TRANSACTION   = "true"
             &CLASS                = "BDocumentLink"}> 
    end.
    else if not valid-handle(vhBDocumentLinkBCMInst)
    then do:
        <I-92 {bFcOpenInstance
             &CLASS           = "BDocumentLink"}>
    end.
    
    /* Copy the Link from the Original Invoice to the Replacement invoice */
    <M-27 run CopyObjectsDocuments
       (input  'BCMask':U (icSourceComponent), 
        input  iiOriginalCMask_ID (iiSourceObjectId), 
        input  'BCMask':U (icDestinationComponent), 
        input  tCMask.CMask_ID (iiDestinationObjectId), 
        output viFcReturnSuper (oiReturnStatus)) in BDocumentLink>
    if viFcReturnSuper < 0 or viFcReturnSuper > 0 and oiReturnStatus = 0 then assign oiReturnStatus = viFcReturnSuper.
    if oiReturnStatus < 0 then leave MAIN_BLOCK.
    
    
    /* Clean up resoruces */
    finally:
        /* Close communication with BDocumentLink */
        if valid-handle(vhBDocumentLinkBCMInst)
        then do:
            <I-23 {bFcCloseInstance
                 &CLASS           = "BDocumentLink"}>
        end.                                         
    end.
end. /* MAIN_BLOCK */