project QadFinancials > class BDInvoice > method StdMaintainTTCalcAmounts
Description
calculate the lc, cc and balance amounts
Parameters
| oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
program code (program7/bdinvoice.p)
if tApiDInvoice.DInvoiceCurrency_ID = viCompanyLCId or
tApiDInvoice.tcCurrencyCode = vcCompanyLC
then assign tApiDInvoice.DInvoiceExchangeRate = 1
tApiDInvoice.DInvoiceRateScale = 1
tApiDInvoice.DInvoiceOriginalDebitLC = tApiDInvoice.DInvoiceOriginalDebitTC
tApiDInvoice.DInvoiceOriginalCreditLC = tApiDInvoice.DInvoiceOriginalCreditTC.
else
if (tApiDInvoice.DInvoiceOriginalCreditLC = 0 or tApiDInvoice.DInvoiceOriginalCreditLC = ?) and
(tApiDInvoice.DInvoiceOriginalDebitLC = 0 or tApiDInvoice.DInvoiceOriginalDebitLC = ?)
then do :
assign vhFcComponent = ?.
if tApiDInvoice.DInvoiceExchangeRate = 0 or
tApiDInvoice.DInvoiceExchangeRate = ?
then do :
<M-42 run GetExRateByEntityInvoiceFlag
(input tApiDInvoice.DInvoicePostingDate (itDInvoicePostingDate),
input tApiDInvoice.DInvoiceTaxPointDate (itDInvoiceTaxPointDate),
input tApiDInvoice.DInvoiceCurrency_ID (iiFromCurrencyId),
input tApiDInvoice.tcCurrencyCode (icFromCurrencyCode),
input viCompanyLCId (iiToCurrencyId),
input ? (icToCurrencyCode),
input 0 (iiExchangeRateTypeId),
input {&EXCHANGERATETYPE-ACCOUNTING} (icExchangeRateTypeCode),
output tApiDInvoice.DInvoiceExchangeRate (odDInvoiceExchangeRate),
output tApiDInvoice.DInvoiceRateScale (odDInvoiceRateScale),
output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
end.
if viFcReturnSuper < 0 or
(viFcReturnSuper > 0 and
oiReturnStatus = 0)
then assign oiReturnStatus = viFcReturnSuper.
assign tApiDInvoice.DInvoiceOriginalDebitLC = <M-9 RoundAmount
(input tApiDInvoice.DInvoiceOriginalDebitTC * tApiDInvoice.DInvoiceExchangeRate * tApiDInvoice.DInvoiceRateScale (idUnroundedAmount),
input viCompanyLCId (iiCurrencyID),
input vcCompanyLC (icCurrencyCode)) in BApplicationProperty>
tApiDInvoice.DInvoiceOriginalCreditLC = <M-10 RoundAmount
(input tApiDInvoice.DInvoiceOriginalCreditTC * tApiDInvoice.DInvoiceExchangeRate * tApiDInvoice.DInvoiceRateScale (idUnroundedAmount),
input viCompanyLCId (iiCurrencyID),
input vcCompanyLC (icCurrencyCode)) in BApplicationProperty>.
end.
else do:
if ((tApiDInvoice.DInvoiceOriginalDebitLC <> 0 and tApiDInvoice.DInvoiceOriginalDebitLC <> ?) or
(tApiDInvoice.DInvoiceOriginalCreditLC <> 0 and tApiDInvoice.DInvoiceOriginalCreditLC <> ?)) and
((tApiDInvoice.DInvoiceOriginalDebitTC <> 0 and tApiDInvoice.DInvoiceOriginalDebitTC <> ?) or
(tApiDInvoice.DInvoiceOriginalCreditTC <> 0 and tApiDInvoice.DInvoiceOriginalCreditTC <> ?))
then assign tApiDInvoice.DInvoiceRateScale = 1
tApiDInvoice.DInvoiceExchangeRate =
((if tApiDInvoice.DInvoiceOriginalDebitLC = ? then 0 else tApiDInvoice.DInvoiceOriginalDebitLC) -
(if tApiDInvoice.DInvoiceOriginalCreditLC = ? then 0 else tApiDInvoice.DInvoiceOriginalCreditLC))
/
((if tApiDInvoice.DInvoiceOriginalDebitTC = ? then 0 else tApiDInvoice.DInvoiceOriginalDebitTC) -
(if tApiDInvoice.DInvoiceOriginalCreditTC = ? then 0 else tApiDInvoice.DInvoiceOriginalCreditTC)) no-error.
end.
if tApiDInvoice.DInvoiceRateScale = 0 then assign tApiDInvoice.DInvoiceRateScale = 1.
if viCompanyCCId <> 0 and viCompanyCCId <> ?
then do:
if tApiDInvoice.tcCurrencyCode = vcCompanyCC
then assign tApiDInvoice.DInvoiceOriginalDebitCC = tApiDInvoice.DInvoiceOriginalDebitTC
tApiDInvoice.DInvoiceOriginalCreditCC = tApiDInvoice.DInvoiceOriginalCreditTC
tApiDInvoice.DInvoiceCCRate = 1
tApiDInvoice.DInvoiceCCScale = 1.
else if vlDomainIsStatutory = false
then assign tApiDInvoice.DInvoiceOriginalDebitCC = tApiDInvoice.DInvoiceOriginalDebitLC
tApiDInvoice.DInvoiceOriginalCreditCC = tApiDInvoice.DInvoiceOriginalCreditLC
tApiDInvoice.DInvoiceCCRate = tApiDInvoice.DInvoiceExchangeRate
tApiDinvoice.DInvoiceCCSCale = tApiDInvoice.DInvoiceRateScale.
else do:
<M-79 run GetExRateByEntityInvoiceFlag
(input tApiDInvoice.DInvoicePostingDate (itDInvoicePostingDate),
input tApiDInvoice.DInvoiceTaxPointDate (itDInvoiceTaxPointDate),
input 0 (iiFromCurrencyId),
input tApiDInvoice.tcCurrencyCode (icFromCurrencyCode),
input viCompanyCCId (iiToCurrencyId),
input vcCompanyCC (icToCurrencyCode),
input 0 (iiExchangeRateTypeId),
input {&EXCHANGERATETYPE-STATUTORY} (icExchangeRateTypeCode),
output vdDInvoiceExchangeRate (odDInvoiceExchangeRate),
output vdDInvoiceExchangeRateScale (odDInvoiceRateScale),
output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
if viFcReturnSuper < 0 or
(viFcReturnSuper > 0 and
oiReturnStatus = 0)
then assign oiReturnStatus = viFcReturnSuper.
/* Check if the invoice is a correction invoice from the operationals. */
<M-28 run CheckExternalInvoiceApiCC
(input tApiDInvoice.tc_Rowid (icApiInvoiceRowId),
input-output vdDInvoiceExchangeRate (bdExchangeRate),
input-output vdDInvoiceExchangeRateScale (bdRateScale),
output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
if viFcReturnSuper < 0 or
(viFcReturnSuper > 0 and
oiReturnStatus = 0)
then assign oiReturnStatus = viFcReturnSuper.
assign tApiDInvoice.DInvoiceOriginalDebitCC = <M-11 RoundAmount
(input tApiDInvoice.DInvoiceOriginalDebitTC * vdDInvoiceExchangeRate * vdDInvoiceExchangeRateScale (idUnroundedAmount),
input viCompanyCCId (iiCurrencyID),
input vcCompanyCC (icCurrencyCode)) in business>
tApiDInvoice.DInvoiceOriginalCreditCC = <M-12 RoundAmount
(input tApiDInvoice.DInvoiceOriginalCreditTC * vdDInvoiceExchangeRate * vdDInvoiceExchangeRateScale (idUnroundedAmount),
input viCompanyCCId (iiCurrencyID),
input vcCompanyCC (icCurrencyCode)) in business>
tApiDInvoice.DInvoiceCCRate = vdDInvoiceExchangeRate
tApiDinvoice.DInvoiceCCSCale = vdDInvoiceExchangeRateScale .
end.
end.
/* fill balance fields */
assign tApiDInvoice.DInvoiceBalanceDebitTC = tApiDInvoice.DInvoiceBalanceDebitTC + tApiDInvoice.DInvoiceOriginalDebitTC
tApiDInvoice.DInvoiceBalanceDebitLC = tApiDInvoice.DInvoiceBalanceDebitLC + tApiDInvoice.DInvoiceOriginalDebitLC
tApiDInvoice.DInvoiceBalanceDebitCC = tApiDInvoice.DInvoiceBalanceDebitCC + tApiDInvoice.DInvoiceOriginalDebitCC
tApiDInvoice.DInvoiceBalanceCreditTC = tApiDInvoice.DInvoiceBalanceCreditTC + tApiDInvoice.DInvoiceOriginalCreditTC
tApiDInvoice.DInvoiceBalanceCreditLC = tApiDInvoice.DInvoiceBalanceCreditLC + tApiDInvoice.DInvoiceOriginalCreditLC
tApiDInvoice.DInvoiceBalanceCreditCC = tApiDInvoice.DInvoiceBalanceCreditCC + tApiDInvoice.DInvoiceOriginalCreditCC.
assign tApiDInvoice.DInvoiceBalanceTC = tApiDInvoice.DInvoiceBalanceDebitTC - tApiDInvoice.DInvoiceBalanceCreditTC
tApiDInvoice.DInvoiceBalanceLC = tApiDInvoice.DInvoiceBalanceDebitLC - tApiDInvoice.DInvoiceBalanceCreditLC
tApiDInvoice.DInvoiceBalanceCC = tApiDInvoice.DInvoiceBalanceDebitCC - tApiDInvoice.DInvoiceBalanceCreditCC
tApiDInvoice.DInvoiceIsOpen = (tApiDInvoice.DInvoiceBalanceTC <> 0 or tApiDInvoice.DInvoiceBalanceLC <> 0 or tApiDInvoice.DInvoiceBalanceCC <> 0)
tApiDInvoice.tc_status = (if tApiDInvoice.tc_Status = "":U then "C":U else tApiDInvoice.tc_Status).