Description
This method retrieves details about definition of bank number
Parameters
icBankNumberParentType | input | character | Type of parent object to which account is linked to |
icBankNumber | input | character | Bank Number |
oiBankNumberId | output | integer | Bank Number ID |
ocBankNumber | output | character | |
oiParentObjectId | output | integer | Id of the parent object (GL, Creditor, Debtor) |
ocParentObjectCode | output | character | Code of the parent object (GL, Creditor, Debtor) |
oiCurrencyId | output | integer | Bank Account Currency ID |
ocCurrencyCode | output | character | Bank Account Currency Code |
oiTransactionCompanyId | output | integer | |
icBankImpCurrencyCode | input | character | |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
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.