project QadFinancials > class BBankImportLine > method GetBankNumberByNumber

Description

This method retrieves details about definition of bank number


Parameters


icBankNumberParentTypeinputcharacterType of parent object to which account is linked to
icBankNumberinputcharacterBank Number
oiBankNumberIdoutputintegerBank Number ID
ocBankNumberoutputcharacter
oiParentObjectIdoutputintegerId of the parent object (GL, Creditor, Debtor)
ocParentObjectCodeoutputcharacterCode of the parent object (GL, Creditor, Debtor)
oiCurrencyIdoutputintegerBank Account Currency ID
ocCurrencyCodeoutputcharacterBank Account Currency Code
oiTransactionCompanyIdoutputinteger
icBankImpCurrencyCodeinputcharacter
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BBankImportLine.GetCreditorByBankImpLine
method BBankImportLine.GetCurrencyByBankImpLine
method BBankImportLine.GetDebtorByBankImpLine
method BBankImportLine.GetOwnBankNumberByBankImpLine
method BBankImportLine.ProcessBankImpLineNewBankEntry
method BBankImportLine.CreateUnallocatedBankEntry


program code (program6/bbankimportline.p)

/* =================================================================================================== */
/* Method      : GetBankNumberInfoByNumber                                                             */
/* Desc        : This method retrieves basic information about bank number based on the number of the  */
/*               bank account                                                                          */
/* The bank number can be be defined in any entity !                                                   */
/* --------------------------------------------------------------------------------------------------- */
/* Params:  (I)  BankNumberParentType Type of parent object to which account is linked to              */
/*          (I)  BankNumber           Number of the bank account                                       */
/*          (O)  BankNumberId         Id of the bank number                                            */
/*          (O)  BankNumber           Number of the bank account as defined in the system              */
/*          (O)  ParentObjectId       Id of the parent object (GL, Creditor, Debtor)                   */
/*          (O)  ParentObjectCode     Code of the parent object (GL, Creditor, Debtor)                 */
/*          (O)  CurrencyId           Id of the currency of the bank account                           */
/*          (O)  CurrencyCode         Code of the currency of the bank account                         */
/* =================================================================================================== */

assign oiReturnStatus = -98.

/* =================================================================================================== */
/* Default output values                                                                               */
/* =================================================================================================== */
assign oiBankNumberId     = ?
       ocBankNumber       = ?
       oiParentObjectId   = ?
       ocParentObjectCode = ?
       oiCurrencyId       = ?
       ocCurrencyCode     = ?.

/* =================================================================================================== */
/* Normalize input parameters                                                                          */
/* =================================================================================================== */
if icBankNumber           = '':U then assign icBankNumber           = ?.
if icBankImpCurrencyCode  = '':U then assign icBankImpCurrencyCode  = ?. 
if icBankNumberParentType = '':U then assign icBankNumberParentType = ?.

/* =================================================================================================== */
/* Validate input parameters                                                                           */
/* =================================================================================================== */
if icBankNumber           = ?
then do:
    assign vcMessage = #T-1'You have not entered all the mandatory values.':255(63250)t-1#
           vcContext = 'BankNumber=&1':U
           vcContext = substitute(vcContext, icBankNumber)
           vcContext = replace(vcContext, '|':U, chr(2)).

    <M-3 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-7662':U (icFcMsgNumber), 
        input  '':U (icFcExplanation), 
        input  '':U (icFcIdentification), 
        input  '':U (icFcContext), 
        output viFcReturnSuper (oiReturnStatus)) in BBankImportLine>
    assign oiReturnStatus = -1.
    return.
end.

/* =================================================================================================== */
/* Get bank number                                                                                     */
/* We search for the bankNumber with a begins - we can not pass the ParentType for performance reasons */
/* =================================================================================================== */
<Q-4 run BankNumberByNumber (all) (Read) (Cache)
   (input '':U, (BankNumberParentType)
    input ?, (BankNumberMATCHES)
    input ?, (CompanyId)
    input true, (IsActive)
    input icBankNumber, (BankNumber1)
    output dataset tqBankNumberByNumber) in BBankNumber>
         
find first tqBankNumberByNumber where
           tqBankNumberByNumber.tcBankNumberParentType = icBankNumberParentType and
           tqBankNumberByNumber.tcBankNumber           begins icBankNumber
           no-error.

if not available tqBankNumberByNumber
then do :
    assign vcBankNumber = icBankNumber
           vcBankNumber = replace(vcBankNumber, '/':U, '':U)
           vcBankNumber = replace(vcBankNumber, chr(92), '':U)	/* this is because unix compatibility */
           vcBankNumber = replace(vcBankNumber, '-':U, '':U)
           vcBankNumber = replace(vcBankNumber, ' ':U, '':U).

    if vcBankNumber <> icBankNumber
    then do :
        <Q-5 run BankNumberByNumber (all) (Read) (Cache)
           (input '':U, (BankNumberParentType)
            input ?, (BankNumberMATCHES)
            input ?, (CompanyId)
            input true, (IsActive)
            input vcBankNumber, (BankNumber1)
            output dataset tqBankNumberByNumber) in BBankNumber>
    
        find first tqBankNumberByNumber where
                   tqBankNumberByNumber.tcBankNumberParentType = icBankNumberParentType and
                   tqBankNumberByNumber.tcBankNumber           begins vcBankNumber
                   no-error.
        if not available tqBankNumberByNumber
        then
             <Q-15 run BankNumberByNumber (all) (Read) (NoCache)
                (input '':U, (BankNumberParentType)
                 input (vcBankNumber + '*'), (BankNumberMATCHES)
                 input ?, (CompanyId)
                 input true, (IsActive)
                 input ?, (BankNumber1)
                 output dataset tqBankNumberByNumber) in BBankNumber>
        find first tqBankNumberByNumber no-error.
    end. /* if vcBankNumber <> icBankNumber */

end. /* if not available tqBankNumberByNumber */

if not available tqBankNumberByNumber
then do :
    assign vcMessage = #T-70'The bank account number &1 is not linked to a GL bank account.':255(68521)T-70#
           vcMessage = substitute(vcMessage, icBankNumber).

    <M-59 run SetMessage
       (input  vcMessage (icMessage), 
        input  '':U (icArguments), 
        input  '':U (icFieldName), 
        input  '':U (icFieldValue), 
        input  'E':U (icType), 
        input  3 (iiSeverity), 
        input  '':U (icRowid), 
        input  'qadfin-854311':U (icFcMsgNumber), 
        input  '':U (icFcExplanation), 
        input  '':U (icFcIdentification), 
        input  '':U (icFcContext), 
        output viFcReturnSuper (oiReturnStatus)) in BBankImportLine>
    assign oiReturnStatus = -1.
    return.
end. /* if not available tqBankNumberByNumber */


if available tqBankNumberByNumber
then do :
    /* just to check if there are multiple ones */
    find tqBankNumberByNumber where
         tqBankNumberByNumber.tcBankNumberParentType = icBankNumberParentType and
        (if tqBankNumberByNumber.tcCurrencyCode  <> '':U and 
         tqBankNumberByNumber.tcCurrencyCode  <> ?       and
         icBankImpCurrencyCode <> ?
         then tqBankNumberByNumber.tcCurrencyCode = icBankImpCurrencyCode
         else true)
         no-error. 

    if ambiguous tqBankNumberByNumber
    then do:
        assign vcMessage = trim(substitute(#T-76'Bank account number &1 is linked to multiple GL bank accounts.':255(153582072)T-76#,icBankNumber))
               oiReturnStatus = -1.
        <M-18 run SetMessage
           (input  vcMessage (icMessage), 
            input  '':U (icArguments), 
            input  '':U (icFieldName), 
            input  '':U (icFieldValue), 
            input  'E':U (icType), 
            input  3 (iiSeverity), 
            input  '':U (icRowid), 
            input  'qadfin-385273':U (icFcMsgNumber), 
            input  '':U (icFcExplanation), 
            input  '':U (icFcIdentification), 
            input  '':U (icFcContext), 
            output viFcReturnSuper (oiReturnStatus)) in BBankImportLine>
        return.
    end. /* if ambiguous tqBankNumberByNumber */

    if (length(tqBankNumberByNumber.tcBankNumber,"CHARACTER") - length(icBankNumber,"CHARACTER")) > 3
    then do:   
        assign vcMessage = #T-65'The bank account number &1 is not linked to a GL bank account.':255(741127770)T-65#
               vcMessage = substitute(vcMessage, icBankNumber).
        <M-26 run SetMessage
           (input  vcMessage (icMessage), 
            input  '':U (icArguments), 
            input  '':U (icFieldName), 
            input  '':U (icFieldValue), 
            input  'E':U (icType), 
            input  3 (iiSeverity), 
            input  '':U (icRowid), 
            input  'qadfin-915024':U (icFcMsgNumber), 
            input  '':U (icFcExplanation), 
            input  '':U (icFcIdentification), 
            input  '':U (icFcContext), 
            output viFcReturnSuper (oiReturnStatus)) in BBankImportLine>
        assign oiReturnStatus = -1.
        return.
    end. /* if (length(tqBankNumberByNumber.tcBankNumber,"CHARACTER") ... */

end. /* if available tqBankNumberByNumber */                    

/* =================================================================================================== */
/* Store values of bank number                                                                         */
/* =================================================================================================== */
assign oiBankNumberId         = tqBankNumberByNumber.tiBankNumber_ID
       ocBankNumber           = tqBankNumberByNumber.tcBankNumber
       oiCurrencyId           = tqBankNumberByNumber.tiCurrency_ID
       ocCurrencyCode         = tqBankNumberByNumber.tcCurrencyCode.
       oiTransactionCompanyId = tqBankNumberByNumber.tiCompany_ID.

/* =================================================================================================== */
/* Get details about company own bank account - note this can be in any entity                         */
/* =================================================================================================== */
if tqBankNumberByNumber.tiParentObject_ID <> 0 and tqBankNumberByNumber.tiParentObject_ID <> ?
then do:

    if icBankNumberParentType = {&BANKNUMBERPARENTTYPE-GL}
    then do:
         <Q-7 run GLForCurrency (all) (Read) (NoCache)
            (input ?, (CompanyId)
             input tqBankNumberByNumber.tiParentObject_ID, (GLId)
             input ?, (GLCode)
             output dataset tqGLForCurrency) in BGL>
        
        find first tqGLForCurrency where
                   tqGLForCurrency.tiGL_ID = tqBankNumberByNumber.tiParentObject_ID
                   no-error.
        
        if available tqGLForCurrency
        then assign oiParentObjectId   = tqGLForCurrency.tiGL_ID
                    ocParentObjectCode = tqGLForCurrency.tcGLCode
                    oiCurrencyId       = tqGLForCurrency.tiCurrency_ID
                    ocCurrencyCode     = tqGLForCurrency.tcCurrencyCode.
    end.
    
    /* =================================================================================================== */
    /* Get details about creditor's bank account                                                           */
    /* =================================================================================================== */
    else 
    if icBankNumberParentType = {&BANKNUMBERPARENTTYPE-CREDITOR}
    then do:
         <Q-8 run CreditorPrim (all) (Read) (NoCache)
            (input ?, (CompanyId)
             input tqBankNumberByNumber.tiParentObject_ID, (CreditorId)
             input ?, (CreditorCode)
             output dataset tqCreditorPrim) in BCreditor>
    
         find first tqCreditorPrim where
                    tqCreditorPrim.tiCreditor_ID = tqBankNumberByNumber.tiParentObject_ID
                    no-error.
         if available tqCreditorPrim
         then assign oiParentObjectId   = tqCreditorPrim.tiCreditor_ID
                     ocParentObjectCode = tqCreditorPrim.tcCreditorCode.
    end.
    
    /* =================================================================================================== */
    /* Get details about creditor's bank account                                                           */
    /* =================================================================================================== */
    else 
    if icBankNumberParentType = {&BANKNUMBERPARENTTYPE-DEBTOR}
    then do:
        <Q-9 run DebtorPrim (all) (Read) (NoCache)
           (input ?, (CompanyId)
            input ?, (DebtorCode)
            input tqBankNumberByNumber.tiParentObject_ID, (Debtor_ID)
            output dataset tqDebtorPrim) in BDebtor>
    
        find first tqDebtorPrim  where
                   tqDebtorPrim.tiDebtor_ID = tqBankNumberByNumber.tiParentObject_ID
                   no-error.
    
        if available tqDebtorPrim
        then assign oiParentObjectId   = tqDebtorPrim.tiDebtor_ID
                    ocParentObjectCode = tqDebtorPrim.tcDebtorCode.
    end.

end. /* if tqBankNumberByNumber.tiParentObject_ID <> 0 and tqBankNumberByNumber.tiParentObject_ID <> ? */

/* =================================================================================================== */
/* Return                                                                                              */
/* =================================================================================================== */
if oiReturnStatus = -98 then assign oiReturnStatus = 0.