project QadFinancials > class BBankNumber > method CreateBankNumberAsCopy

Description

Create new supplier/customer bank accounts based on existing ones.


Parameters


tBankNumberToCreateinput-outputtemp-table
ilClearDatainputlogical
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BCDocument.ValidateComponentPreCInvoice
method BDDocument.ValidateComponentPreDInvoice
method BPaymentSelection.ValidateComponentPreBankPayFormat


program code (program3/bbanknumber.p)

if oiReturnStatus = 0
then oiReturnStatus = -98.

if ilClearData = true
then do:
    /* clear the class table */
    <M-2 run ClearData  (output viFcReturnSuper (oiReturnStatus)) in BBankNumber>
    if viFcReturnSuper <> 0 then assign oiReturnStatus = viFcReturnSuper.
    if viFcReturnSuper <  0 then return.
end. /* end of if ilClearData */

/* get data of existing bank numbers which are copied */
assign vcBankNumberIDList = '':U.
for each tBankNumberToCreate:
    if not can-find (first tBankNumber 
                     where tBankNumber.BankNumber_ID = tBankNumberToCreate.tiOldBankNumberId) 
    then assign vcBankNumberIDList = if vcBankNumberIDList = "":U
                                     then string(tBankNumberToCreate.tiOldBankNumberId)
                                     else
                                     if lookup(string(tBankNumberToCreate.tiOldBankNumberId), vcBankNumberIDList, chr(4)) = 0
                                     then vcBankNumberIDList + chr(4) + string (tBankNumberToCreate.tiOldBankNumberId)
                                     else vcBankNumberIDList.
end. /* end of for each tBankNumberToCreate */

/* get the old bank number record to be duplicated */
if vcBankNumberIDList <> '':U
then do:
    <M-1 run DataLoad
       (input  '':U (icRowids), 
        input  vcBankNumberIDList (icPkeys), 
        input  '':U (icObjectIds), 
        input  '':U (icFreeform), 
        input  not ilClearData (ilKeepPrevious), 
        output viFcReturnSuper (oiReturnStatus)) in BBankNumber>
    if viFcReturnSuper <> 0
    then do:
        assign oiReturnStatus = viFcReturnSuper.
        if viFcReturnSuper < 0
        then do :
            assign vcMessage      = trim(substitute(#T-7'Data could not be loaded: unable to load the list of Bank Number (&1).':100(65687)T-7#, replace(vcBankNumberIDList, chr(4), ",":U))).
            <M-5 run SetMessage
          (input  vcMessage (icMessage), 
           input  '':U (icArguments), 
           input  '':U (icFieldName), 
           input  '':U (icFieldValue), 
           input  'E':U (icType), 
           input  1 (iiSeverity), 
           input  '':U (icRowid), 
           input  'QadFin-7521':U (icFcMsgNumber), 
           input  '':U (icFcExplanation), 
           input  '':U (icFcIdentification), 
           input  '':U (icFcContext), 
           output viFcReturnSuper (oiReturnStatus)) in BBankNumber> 
            return. 
        end. /* end of if viFcReturnSuper < 0 */
    end. /* end of if vifcreturnsuper < 0 */
end. /* if vcBankNumberIDList <> '':U */

/* loop the input temp-table, to create new records */
for each tBankNumberToCreate:
    find first bBankNumber where 
               bBankNumber.BankNumber_ID = tBankNumberToCreate.tiOldBankNumberId 
               no-error.
    if not available bBankNumber
    then do:     
        assign vcMessage = trim(#T-8'The specified bank number is not defined in the system. The system cannot update it.':100(65688)t-8#).
        <M-9 run SetMessage
          (input  vcMessage (icMessage), 
           input  '':U (icArguments), 
           input  '':U (icFieldName), 
           input  '':U (icFieldValue), 
           input  'E':U (icType), 
           input  1 (iiSeverity), 
           input  '':U (icRowid), 
           input  'QadFin-7522':U (icFcMsgNumber), 
           input  '':U (icFcExplanation), 
           input  '':U (icFcIdentification), 
           input  '':U (icFcContext), 
           output viFcReturnSuper (oiReturnStatus)) in BBankNumber>   
        Next.
    end. /* if not available bBankNumber */

    /* check if new record doesn't exist already, check on logical key of banknumber */
    if can-find(first tBankNumber where
                      tBankNumber.BankNumber           = bBankNumber.BankNumber and
                      tBankNumber.BankNumberExtension  = bBankNumber.BankNumberExtension and
                      tBankNumber.BankNumberValidation = bBankNumber.BankNumberValidation and
                      tBankNumber.BankPayFormat_ID     = tBankNumberToCreate.tiBankPayFormatId and
                      tBankNumber.ParentObject_ID      = bBankNumber.ParentObject_ID )
    then next.

    /* create a new blank record */
    <M-3 run AddDetailLine
       (input  'BankNumber':U (icTable), 
        input  '':U (icParentRowid), 
        output viFcReturnSuper (oiReturnStatus)) in BBankNumber>
    if viFcReturnSuper <> 0 then assign oiReturnStatus = viFcReturnSuper.
    if viFcReturnSuper <  0 then return.

    /* buffer-copy */
    buffer-copy bBankNumber
    except bBankNumber.BankNumber_ID
           bBankNumber.tc_ParentRowid
           bBankNumber.tc_Rowid
           bBankNumber.tc_Status 
           bBankNumber.BankPayFormat_ID
        to tBankNumber.
    assign tBankNumberToCreate.tiNewBankNumberId = tBankNumber.BankNumber_ID
           tBankNumber.BankPayFormat_ID = tBankNumberToCreate.tiBankPayFormatId
           tBankNumber.BankNumberIsDefault = tBankNumberToCreate.tlIsBankNumberDefault.

    if tBankNumberToCreate.tlIsBankNumberDefault
    then do:
        <M-15 run ChangeDefaultBankNumber
           (input  tBankNumberToCreate.tiOldBankNumberId (iiNewDefaultBankNumberID), 
            output viFcReturnSuper (oiReturnStatus)) in BBankNumber>
        if viFcReturnSuper <> 0 then assign oiReturnStatus = viFcReturnSuper.
        if viFcReturnSuper <  0 then return.
        assign bBankNumber.BankNumberIsDefault = false
               bBankNumber.tc_Status           = "C":U.
    end.

    /* Create payment attributes if have any */
    if tBankNumberToCreate.tlIsFormatTypeChanged = false
    then do:         
        for each bBankNumberPayCode 
           where bBankNumberPayCode.BankNumber_ID = tBankNumberToCreate.tiOldBankNumberId:         
            <M-4 run AddDetailLine
               (input  'BankNumberPayCode':U (icTable), 
                input  tBankNumber.tc_Rowid (icParentRowid), 
                output viFcReturnSuper (oiReturnStatus)) in BBankNumber>
            if viFcReturnSuper <> 0 then assign oiReturnStatus = viFcReturnSuper.
            if viFcReturnSuper <  0 then return.           
            /* buffer-copy the attributes */            
            buffer-copy bBankNumberPayCode
            except bBankNumberPayCode.BankNumberPayCode_ID
                   bBankNumberPayCode.tc_Rowid
                   bBankNumberPayCode.tc_ParentRowid
                   bBankNumberPayCode.tc_Status
                   bBankNumberPayCode.BankNumber_ID
                to tBankNumberPayCode.
            /* assign tBankNumberPayCode.BankNumber_ID = tBankNumber.BankNumber_ID.  */
            assign tBankNumberPayCode.tc_ParentRowid = tBankNumber.tc_Rowid.            
        end. /* end of for each tBankNumberPayCode */   
    end. /* end of if tBankNumberToCreate.tlIsBankPayFormatChanged = true */
end. /* end of for each tBankNumberToCreate */

if oiReturnStatus = -98
then assign oiReturnStatus = 0.