project QadFinancials > class BCInvoice > method ValidateComponentPostBank
Description
This method is a submethod of ValidateComponentAll.
This method validates the Creditor Invoice Bank fields.
Parameters
| ilDaemonLogicByPass | input | logical | DaemonLogicByPass; Indicates if the daemon-logic should be by-passed or not |
| blStart12 | input-output | logical | Is component BPaymentFormat already started or not ? |
| oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
program code (program5/bcinvoice.p)
assign vdBankToPayTC = 0.
for each t_sCInvoiceBank where
t_sCInvoiceBank.tc_ParentRowid = t_sCInvoice.tc_Rowid and
t_sCInvoiceBank.tc_Status <> "D":U:
if t_sCInvoiceBank.tc_Status <> "N":U
then do:
find t_iCInvoiceBank where
t_iCInvoiceBank.tc_Rowid = t_sCInvoiceBank.tc_Rowid
no-error.
if not available t_iCInvoiceBank
then do:
<M-1 run SetMessage
(input trim(#T-1'The system cannot find initial values for supplier invoice bank with bank number $1 (Supplier Invoice $2 $3 $4).':255(65483)t-1#) (icMessage),
input t_sCInvoiceBank.tcBankNumber + chr(2) + string(t_sCInvoice.CInvoicePostingYear) + chr(2) + t_sCInvoice.tcJournalCode + chr(2) + string(t_sCInvoice.CInvoiceVoucher) (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input '':U (iiSeverity),
input t_sCInvoiceBank.tc_Rowid (icRowid),
input 'QadFin-7085':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
assign oiReturnStatus = -1.
next.
end.
end.
/* Bank To Pay cannot be 0 for new Bank records if Invoice Amount is not 0 */
if ((t_sCInvoice.tc_Status = "N":U or
t_sCInvoice.tc_Status = "C":U and
((t_sCInvoice.CInvoiceIsTaxExcluded = false and t_sCInvoice.tdCInvoiceOriginalTC <> t_iCInvoice.tdCInvoiceOriginalTC) or
(t_sCInvoice.CInvoiceIsTaxExcluded = true and t_sCInvoice.tdCInvoiceVatBaseTC <> t_iCInvoice.tdCInvoiceVatBaseTC ))) or
t_sCInvoiceBank.tc_Status = "N":U) and
t_sCInvoice.tdCInvoiceOriginalTC <> 0 and
t_sCInvoice.tdCInvoiceOriginalTC <> ? and
(t_sCInvoiceBank.CInvoiceBankToPayTC = 0 or
t_sCInvoiceBank.CInvoiceBankToPayTC = ?)
then do:
<M-2 run SetMessage
(input trim(#T-4'The payment amount in the transaction currency cannot be zero for bank $1.':255(65484)t-4#) (icMessage),
input t_sCInvoiceBank.tcBankNumber (icArguments),
input 'tCInvoiceBank.CInvoiceBankToPayTC':U (icFieldName),
input t_sCInvoiceBank.CInvoiceBankToPayTC (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input '':U (icRowid),
input 'QadFin-7086':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
assign oiReturnStatus = -1.
end.
/* Bank To Pay cannot be changed if the invoice was selected and still is selected */
if (t_sCInvoice.tc_Status = "":U or
t_sCInvoice.tc_Status = "C":U) and
t_sCInvoice.CInvoiceIsSelected = true and
t_iCInvoice.CInvoiceIsSelected = true and
t_sCInvoiceBank.tc_Status = "C":U and
t_sCInvoiceBank.CInvoiceBankToPayTC <> t_iCInvoiceBank.CInvoiceBankToPayTC and
/* PWI only for the records that are modified by another program then payment selection */
t_sCInvoiceBank.tlValidatePayment = true and
/* This flag is to by-pass validation for payment selection un-confirm through a daemon */
ilDaemonLogicByPass = true
then do:
assign vcMessage = trim(#T-22'You cannot modify the payment accounts because the invoice is (partly) paid or included in a payment that is currently being processed.':150(1224)T-22#) + chr(10) +
trim(subst(#T-23'GL Calendar Year = &1; GL Period = &2; Daybook = &3; Voucher = &4.':255(969)T-23#, string(t_sCInvoice.CInvoicePostingYear), string(t_sCInvoice.CInvoicePostingPeriod), t_sCInvoice.tcJournalCode, string(t_sCInvoice.CInvoiceVoucher)))
oiReturnStatus = -1.
<M-21 run SetMessage
(input vcMessage (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sCInvoice.tc_Rowid (icRowid),
input 'QadFin-7118':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
end.
assign vdBankToPayTC = vdBankToPayTC + t_sCInvoiceBank.CInvoiceBankToPayTC.
for each t_sCInvoiceBankPayCode where
t_sCInvoiceBankPayCode.tc_ParentRowid = t_sCInvoiceBank.tc_Rowid and
(t_sCInvoiceBankPayCode.tc_Status = "N":U or
t_sCInvoiceBankPayCode.tc_Status = "C":U):
if t_sCInvoiceBankPayCode.tc_Status = "C":U
then do:
find t_iCInvoiceBankPayCode where
t_iCInvoiceBankPayCode.tc_Rowid = t_sCInvoiceBankPayCode.tc_Rowid
no-error.
if not available t_iCInvoiceBankPayCode
then do:
<M-17 run SetMessage
(input trim(#T-18'The system cannot find initial values for the supplier invoice bank pay code with bank number $1 (Supplier Invoice $2 $3 $4).':255(65524)t-18#) (icMessage),
input t_sCInvoiceBank.tcBankNumber + chr(2) + string(t_sCInvoice.CInvoicePostingYear) + chr(2) + t_sCInvoice.tcJournalCode + chr(2) + string(t_sCInvoice.CInvoiceVoucher) (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input '':U (iiSeverity),
input t_sCInvoiceBankPayCode.tc_Rowid (icRowid),
input 'QadFin-7114':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
assign oiReturnStatus = -1.
next.
end.
end.
if t_sCInvoiceBankPayCode.tc_Status = "C":U and
t_sCInvoiceBankPayCode.PayFormatCode_ID = t_iCInvoiceBankPayCode.PayFormatCode_ID
then next.
if not blStart12
then do:
<I-19 {bFcStartAndOpenInstance
&CLASS = "BPaymentFormat"}>
assign blStart12 = true.
end.
<M-20 run ValidatePayCode
(input t_sCInvoiceBankPayCode.PayFormatGroup_ID (iiPayFormatGroupId),
input t_sCInvoiceBankPayCode.PayFormatCode_ID (iiPayFormatCodeId),
input t_sCInvoiceBankPayCode.CInvoiceBankPayCodeValue (icPayCodeValue),
input true (ilCheckMandatory),
input t_sCInvoice.CInvoicePostingYear (iiYear),
input t_sCInvoice.tcJournalCode (icDaybook),
input t_sCInvoice.CInvoiceVoucher (iiVoucherNumber),
output viFcReturnSuper (oiReturnStatus)) in BPaymentFormat>
if viFcReturnSuper < 0 or
oiReturnStatus = 0
then assign oiReturnStatus = viFcReturnSuper.
end.
end.
/* The sum of the payment bank account lines must be equal to the invoice balance */
if (t_sCInvoice.tc_Status = "N":U or
t_sCInvoice.tc_Status = "C":U and
(t_sCInvoice.CInvoiceBalanceDebitTC <> t_iCInvoice.CInvoiceBalanceDebitTC or
t_sCInvoice.CInvoiceBalanceCreditTC <> t_iCInvoice.CInvoiceBalanceCreditTC) or
can-find(first t_sCInvoiceBank where
t_sCInvoiceBank.tc_ParentRowid = t_sCInvoice.tc_Rowid and
t_sCInvoiceBank.tc_Status <> "":U)) and
t_sCInvoice.CInvoiceType <> {&INVOICETYPE-PREPAYMENT} and
can-find(first t_sCInvoiceBank where
t_sCInvoiceBank.tc_ParentRowid = t_sCInvoice.tc_Rowid and
t_sCInvoiceBank.tc_status <> "D":U)
then do:
if t_sCInvoice.CInvoiceBalanceDebitTC <> 0 and
t_sCInvoice.CInvoiceBalanceDebitTC <> ? and
vdBankToPayTC <> t_sCInvoice.CInvoiceBalanceDebitTC or
t_sCInvoice.CInvoiceBalanceCreditTC <> 0 and
t_sCInvoice.CInvoiceBalanceCreditTC <> ? and
vdBankToPayTC <> t_sCInvoice.CInvoiceBalanceCreditTC
then do:
assign vcMessage = trim(subst(#T-12'The sum of all payment bank account lines must be equal to the TC invoice amount (&1).':150(1194)T-12#, string(t_sCInvoice.tdCInvoiceOriginalTC))) + chr(10) +
trim(subst(#T-13'The credit balance of the supplier invoice is &1.':255(1195)t-13#, string(t_sCInvoice.CInvoiceBalanceCreditTC))) + chr(10) +
trim(subst(#T-14'The debit balance of the supplier invoice is &1.':255(1196)t-14#, string(t_sCInvoice.CInvoiceBalanceDebitTC))) + chr(10) +
trim(subst(#T-15'The accumulated bank lines amount is &1.':255(1197)t-15#,string(vdBankToPayTC))) + chr(10) +
trim(subst(#T-16'GL Calendar Year = &1; GL Period = &2; Daybook = &3; Voucher = &4.':255(969)T-16#, string(t_sCInvoice.CInvoicePostingYear), string(t_sCInvoice.CInvoicePostingPeriod), t_sCInvoice.tcJournalCode, string(t_sCInvoice.CInvoiceVoucher)))
oiReturnStatus = -1.
<M-11 run SetMessage
(input vcMessage (icMessage),
input '':U (icArguments),
input 'tCInvoice.tdCInvoiceOriginalTC':U (icFieldName),
input string(t_sCInvoice.tdCInvoiceOriginalTC) (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sCInvoice.tc_Rowid (icRowid),
input 'QadFin-7109':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
end.
end.