project QadFinancials > class BDInvoice > method UpdateDInvoiceBankToPayTC
Parameters
iiDInvoiceId | input | integer | |
idOldBalanceDebitTC | input | decimal | |
idOldBalanceCreditTC | input | decimal | |
idMovementAmountDebitTC | input | decimal | |
idMovementAmountCreditTC | input | decimal | |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
program code (program4/bdinvoice.p)
assign vdTotalTC = 0.
/* ===================================== */
/* Get the CI and the currency-decimals */
/* Update the last Bank-record of the CI */
/* Updated method 02/11/2004 KriLae */
/* ===================================== */
find first tDInvoice where
tDInvoice.DInvoice_ID = iiDInvoiceId
no-error.
if not available tDInvoice
then do:
assign vcMessage = trim(#T-1'The system cannot define the bank amount. The customer invoice is invalid.':255(17141)t-1#) + chr(10) +
trim(substitute(#T-2'Customer Invoice ID: &1.':255(49412)T-2#,string(iiDInvoiceId)))
oiReturnStatus = -1.
<M-3 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-4209':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
end.
/* Allocate evenly across banks if there is no balance */
assign viInvoiceBankCount = 0.
if(idOldBalanceDebitTC = 0 and idOldBalanceCreditTc = 0) then do:
for each tDInvoiceBank where
tDInvoiceBank.DInvoice_ID = tDInvoice.DInvoice_ID and
tDInvoicebank.tc_status <> "D":U :
assign viInvoiceBankCount = viInvoiceBankCount + 1.
end.
end.
if not error-status:error
then do:
for each tDInvoiceBank where
tDInvoiceBank.DInvoice_ID = tDInvoice.DInvoice_ID and
tDInvoicebank.tc_status <> "D":U :
if(viInvoiceBankCount > 0) then do:
assign vdInvoiceBankAmount = if tDInvoice.DInvoiceType = {&INVOICETYPE-INVOICE} or tDInvoice.DInvoiceType = {&INVOICETYPE-INVOICECORRECTION}
then (idMovementAmountDebitTC - idMovementAmountCreditTC) / viInvoiceBankCount
else abs(idMovementAmountDebitTC - idMovementAmountCreditTC) / viInvoiceBankCount.
end.
else do:
assign vdInvoiceBankAmount = if tDInvoice.DInvoiceType = {&INVOICETYPE-INVOICE} or tDInvoice.DInvoiceType = {&INVOICETYPE-INVOICECORRECTION}
then tDInvoiceBank.DInvoiceBankToPayTC *
(idOldBalanceDebitTC - idOldBalanceCreditTC + idMovementAmountDebitTC - idMovementAmountCreditTC) /
(idOldBalanceDebitTC - idOldBalanceCreditTC)
else tDInvoiceBank.DInvoiceBankToPayTC *
abs(idOldBalanceDebitTC - idOldBalanceCreditTC + idMovementAmountDebitTC - idMovementAmountCreditTC) /
abs(idOldBalanceDebitTC - idOldBalanceCreditTC).
end.
assign tDInvoiceBank.DInvoiceBankToPayTC = <M-4 RoundAmount
(input vdInvoiceBankAmount (idUnroundedAmount),
input ? (iiCurrencyID),
input tDInvoice.tcCurrencyCode (icCurrencyCode)) in BApplicationProperty>
tDInvoiceBank.tc_Status = (if tDInvoiceBank.tc_Status = "":U then "C":U else tDInvoiceBank.tc_Status)
/* Dt/Cr segregation */
tDInvoiceBank.DInvoiceBankToPayTC = if tDInvoice.DInvoiceType = {&INVOICETYPE-INVOICECORRECTION} or
tDInvoice.DInvoiceType = {&INVOICETYPE-CREDITNOTECORRECTION}
then if tDInvoiceBank.DInvoiceBankToPayTC > 0
then - tDInvoiceBank.DInvoiceBankToPayTC
else tDInvoiceBank.DInvoiceBankToPayTC
else tDInvoiceBank.DInvoiceBankToPayTC
vdTotalTC = vdTotalTC + tDInvoiceBank.DInvoiceBankToPayTC.
end.
end.
if vdTotalTC > absolute(idOldBalanceDebitTC - idOldBalanceCreditTC + idMovementAmountDebitTC - idMovementAmountCreditTC)
then do:
assign vdTotalTC = vdTotalTC - absolute(idOldBalanceDebitTC - idOldBalanceCreditTC + idMovementAmountDebitTC - idMovementAmountCreditTC) .
if vdTotalTC <> 0
then do:
find last tDInvoiceBank where
tDInvoiceBank.DInvoice_ID = tDInvoice.DInvoice_ID and
tDInvoicebank.tc_status <> "D":U
no-error.
if available tDInvoiceBank
then do:
assign tDInvoiceBank.DInvoiceBankToPayTC = tDInvoiceBank.DInvoiceBankToPayTC - vdTotalTC
tDInvoiceBank.tc_status = (if tDInvoiceBank.tc_Status = "":U then "C":U else tDInvoiceBank.tc_Status).
end.
end.
end.