project QadFinancials > class BBankNumber > method CreateBankNumberAsCopyCreditorDebtor

Description

Create supplier/customer bank number from the copy of existing one. Different bank payment format is linked. The new bank number value and parent object id are passed in.


Parameters


iiOriginalBankNumberIDinputinteger
iiNewPayFormatIDinputinteger
oiNewBankNumberIDoutputinteger
icCreditorDebtorBankNumberinputcharacter
iiNewParentObjectIdinputinteger
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BCDocument.ValidateComponentPreCreditor
method BDDocument.ValidateComponentPreDebtor


program code (program3/bbanknumber.p)

/* =================================================================================================== */
/* Method      : CreateBankNumberAsCopyCreditorDebtor                                                  */
/* Desc        : This method creates a bank number for supplier / customer                             */
/* --------------------------------------------------------------------------------------------------- */
/* Params:  (I)  OriginalBankNumberID     ID of original bank number                                   */
/*          (I)  NewPayFormatID           New Payment format ID for new  bank number                   */
/*          (O)  NewBankNumberID          ID of new bank number                                        */
/*          (I)  CreditorDebtorBankNumber bank number value of the new bank number                     */
/* =================================================================================================== */

assign oiReturnStatus = -98.

if iiOriginalBankNumberID = ? or iiOriginalBankNumberID = 0
then do:
    assign oiReturnStatus = -1
           vcMsg          = #T-9'Original bank number cannot be empty.':255(70309)T-9#.
    <M-3 run SetMessage
       (input  vcMsg (icMessage), 
        input  '':U (icArguments), 
        input  '':U (icFieldName), 
        input  '':U (icFieldValue), 
        input  'S':U (icType), 
        input  3 (iiSeverity), 
        input  '':U (icRowid), 
        input  'QadFin-8680':U (icFcMsgNumber), 
        input  '':U (icFcExplanation), 
        input  '':U (icFcIdentification), 
        input  '':U (icFcContext), 
        output viFcReturnSuper (oiReturnStatus)) in BBankNumber>
    return.
end. /* if iiOriginalBankNumberID = ? or iiOriginalBankNumberID = 0 */

if not can-find (first tBankNumber where
                       tBankNumber.BankNumber_ID = iiOriginalBankNumberID)
then do:
    <M-4 run DataLoad
       (input  '':U (icRowids), 
        input  string(iiOriginalBankNumberID) (icPkeys), 
        input  '':U (icObjectIds), 
        input  '':U (icFreeform), 
        input  true (ilKeepPrevious), 
        output viFcReturnSuper (oiReturnStatus)) in BBankNumber>
    if viFcReturnSuper <> 0 then assign oiReturnStatus = viFcReturnSuper.
    if viFcReturnSuper < 0 then return.
end. /* if not can-find (first tBankNumber where */

find first bBankNumber where
           bBankNumber.BankNumber_ID = iiOriginalBankNumberID no-error.

if not available bBankNumber
then do:
    assign oiReturnStatus = -1
           vcMsg          = #T-10'The bank number specified is not defined in the system (ID: $1).':255(70311)t-10#
           vcMsg          = substitute(vcMsg, string(iiOriginalBankNumberID)).
    <M-5 run SetMessage
       (input  vcMsg (icMessage), 
        input  '':U (icArguments), 
        input  '':U (icFieldName), 
        input  '':U (icFieldValue), 
        input  'S':U (icType), 
        input  3 (iiSeverity), 
        input  '':U (icRowid), 
        input  'QadFin-8681':U (icFcMsgNumber), 
        input  '':U (icFcExplanation), 
        input  '':U (icFcIdentification), 
        input  '':U (icFcContext), 
        output viFcReturnSuper (oiReturnStatus)) in BBankNumber>
    return.
end. /* if not available bBankNumber */

/* Create copy from original bank number */
<M-6 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 bBankNumber
except bBankNumber.BankNumber_ID
       bBankNumber.tc_ParentRowid
       bBankNumber.tc_Rowid
       bBankNumber.tc_Status 
       bBankNumber.BankPayFormat_ID
    to tBankNumber.
assign tBankNumber.BankPayFormat_ID    = iiNewPayFormatID
       tBankNumber.BankNumber          = icCreditorDebtorBankNumber
       tBankNumber.BankNumberFormatted = icCreditorDebtorBankNumber
       tBankNumber.ParentObject_ID     = iiNewParentObjectId
       oiNewBankNumberID               = tBankNumber.BankNumber_ID.
/*if bBankNumber.BankNumberIsDefault = true
then assign bBankNumber.BankNumberIsDefault = false
            bBankNumber.tc_Status           = "C":U.*/
if tBankNumber.BankNumberIsDefault = true
then assign tBankNumber.BankNumberIsDefault = false
            /*tBankNumber.tc_Status           = "N":U*/.

/* Copy BankNumberPayCode records */
for each bBankNumberPayCode where
         bBankNumberPayCode.BankNumber_ID = bBankNumber.BankNumber_ID:
    <M-7 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 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
           tBankNumberPayCode.tc_ParentRowid = tBankNumber.tc_Rowid.
end. /* for each bBankNumberPayCode where */

<M-8 run ValidateBCAndAdditionalUpdates  (output viFcReturnSuper (oiReturnStatus)) in BBankNumber>
if viFcReturnSuper <> 0 then assign oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0 then return.

if oiReturnStatus = -98 then assign oiReturnStatus = 0.