project QadFinancials > class BSharedSetMerge > method MergeBeforeMerge

Description

Provide extra operations before real merge of the element


Parameters


icSharedSetTypeCodeinputcharacter
iiMasterObjectIdinputinteger
iiRedundantObjectIdinputintegerID of redundant element
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BSharedSetMerge.Merge


program code (program6/bsharedsetmerge.p)

/* ====================================================================================== *
 * Method       : MergeBeforeMerge                                                        *
 * Description  : Provide extra operations before real merge of element                   *
 * -------------------------------------------------------------------------------------- *
 * Parameters   : SharedSetTypeCode     Type of shared set                                *
 *                MasterObjectId        ID of master object                               *
 *                RedundantObjectId     ID of redundant object to be removed at the end   *
 * ====================================================================================== */
 
assign oiReturnStatus = -98
       viLocalReturn  = 0.

MAIN_BLOCK:
do on error undo, return:
    case icSharedSetTypeCode:
        when {&SHAREDSETTYPECODE-COSTCENTRE}
        then do:
        end.
        
        when {&SHAREDSETTYPECODE-CREDITOR}
        then do:
            /* Both redundant and master creditors can have bank numbers as default     *
             * therefore ensure all banks linked to redundant creditors are not default */
            assign vcStatement = 'for each BankNumber where ':U + 
                                          'BankNumber.ParentObject_ID     = &1 and ':U +
                                          'BankNumber.BankNumberIsDefault = true':U
                   vcStatement = substitute(vcStatement, iiRedundantObjectId).

            <M-1 run StartPersistence
               (output vhFcComponent (ohPersistence), 
                output viFcReturnSuper (oiReturnStatus)) in BSharedSetMerge>
            if viFcReturnSuper <> 0 then assign viLocalReturn = viFcReturnSuper.
            if viFcReturnSuper <  0 then leave MAIN_BLOCK.
            
            <M-2 run WriteDirect
               (input  'BankNumber':U (icTableName), 
                input  vcStatement (icPrepare), 
                input  'BankNumberIsDefault':U (icFieldList), 
                input  'l':U (icFieldListDataTypes), 
                input  'false':U (icAbsolute), 
                input  '':U (icIncremental), 
                input  {&TARGETPROCEDURE} (ihClass), 
                input  vcUserLogin (icUserLogin), 
                output viFcReturnSuper (oiReturnStatus)) in Progress>
            if viFcReturnSuper = -4 then assign viFcReturnSuper = 0.
            if viFcReturnSuper <> 0 then assign viLocalReturn = viFcReturnSuper.
            if viFcReturnSuper <  0 then leave MAIN_BLOCK.
        end.
        
        when {&SHAREDSETTYPECODE-DEBTOR}
        then do:
            /* Both redundant and master debtors can have bank numbers as default     *
             * therefore ensure all banks linked to redundant debtors are not default */
            assign vcStatement = 'for each BankNumber where ':U + 
                                          'BankNumber.ParentObject_ID     = &1 and ':U +
                                          'BankNumber.BankNumberIsDefault = true':U
                   vcStatement = substitute(vcStatement, iiRedundantObjectId).

            <M-3 run StartPersistence
               (output vhFcComponent (ohPersistence), 
                output viFcReturnSuper (oiReturnStatus)) in BSharedSetMerge>
            if viFcReturnSuper <> 0 then assign viLocalReturn = viFcReturnSuper.
            if viFcReturnSuper <  0 then leave MAIN_BLOCK.
            
            <M-4 run WriteDirect
               (input  'BankNumber':U (icTableName), 
                input  vcStatement (icPrepare), 
                input  'BankNumberIsDefault':U (icFieldList), 
                input  'l':U (icFieldListDataTypes), 
                input  'false':U (icAbsolute), 
                input  '':U (icIncremental), 
                input  {&TARGETPROCEDURE} (ihClass), 
                input  vcUserLogin (icUserLogin), 
                output viFcReturnSuper (oiReturnStatus)) in Progress>
            if viFcReturnSuper = -4 then assign viFcReturnSuper = 0.
            if viFcReturnSuper <> 0 then assign viLocalReturn = viFcReturnSuper.
            if viFcReturnSuper <  0 then leave MAIN_BLOCK.
        end.
        
        when {&SHAREDSETTYPECODE-DIVISION}
        then do:
        end.
    
        when {&SHAREDSETTYPECODE-EXCHANGERATE}
        then do:
        end.
    
        when {&SHAREDSETTYPECODE-GL}
        then do:
            
           <M-32 run MergeBeforeMergeGL
              (input  iiMasterObjectId (iiMasterObjectID), 
               input  iiRedundantObjectId (iiRedundantObjectId), 
               output viFcReturnSuper (oiReturnStatus)) in BSharedSetMerge>

    
        
        end.
        
        when {&SHAREDSETTYPECODE-JOURNAL}
        then do:
        end.
    
        when {&SHAREDSETTYPECODE-PROJECT}
        then do:
        end.
    end case.
end. /* MAIN_BLOCK */

assign oiReturnStatus = viLocalReturn.