project QadFinancials > class BCInvoice > method CheckCInvoiceForPayment
Description
This method will check if there is a payment against an invoice.
Parameters
| iiCInvoiceID | input | integer | CInvoice ID |
| olCInvoiceHasPayment | output | logical | If the invoice has a payment this output parameter will be true otherwise it will be false. |
| oiReturnStatus | output | integer | Return status of the method. |
Internal usage
unused
program code (program1/bcinvoice.p)
assign oiReturnStatus = -98
viLocalReturnStatus = 0.
/* ==================== */
/* Default output value */
/* ==================== */
assign olCInvoiceHasPayment = false.
CHECKBLOCK:
do:
/* ========================== */
/* check if invoice is filled */
/* ========================== */
if iiCInvoiceID <> 0 and
iiCInvoiceID <> ?
then do:
/* =============================================================================== */
/* Check if Invoice exists: first check instance, otherwise check with query in db */
/* =============================================================================== */
find tCInvoice where
tCInvoice.CInvoice_ID = iiCInvoiceID
no-error.
if not available tCInvoice
then do:
<Q-90 run CInvoiceByID (all) (Read) (NoCache)
(input viCompanyId, (CompanyId)
input iiCInvoiceID, (CInvoiceID)
output dataset tqCInvoiceByID) in BCInvoice >
find tqCInvoiceByID where
tqCInvoiceByID.tiCInvoice_ID = iiCInvoiceID
no-error.
if not available tqCInvoiceByID
then do:
assign oiReturnStatus = -1
vcMessage = trim(#T-95'Cannot find selected invoice':255(907167146)T-95#).
<M-57 run SetMessage
(input vcMessage (icMessage),
input '':U (icArguments),
input 'CInvoiceID':U (icFieldName),
input string(iiCInvoiceID) (icFieldValue),
input 'E':U (icType),
input 1 (iiSeverity),
input '':U (icRowid),
input 'qadfin-734449':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
return.
end. /* if not available tqCInvoiceByID */
end. /* if not available tCInvoice */
/* ========================================== */
/* Check if a payment exists for the cinvoice */
/* ========================================== */
<Q-86 assign vlFcQueryRecordsAvailable = CDocumentInvoiceXrefByCInvoice (NoCache)
(input iiCInvoiceID, (CInvoiceId)) in BCDocument >
if vlFcQueryRecordsAvailable <> false
then do:
assign olCInvoiceHasPayment = true.
LEAVE CHECKBLOCK.
end. /* end if vlFcQueryRecordsAvailable <> false */
if available tCInvoice
then do:
if (abs(tCInvoice.CInvoiceBalanceTC) <> abs(tCInvoice.CInvoiceOriginalDebitTC - tCInvoice.CInvoiceOriginalCreditTC))
then do:
assign olCInvoiceHasPayment = true.
LEAVE CHECKBLOCK.
end. /* end if (abs(tCInvoice.CInvoiceBalanceTC) <> abs(tCInvoice.CInvoiceOriginalDebitTC - tCInvoice.CInvoiceOriginalCreditTC)) */
end. /* end if available tCInvoice */
else if available tqCInvoiceByID
then do:
if (abs(tqCInvoiceByID.tdCInvoiceBalanceDebitTC - tqCInvoiceByID.tdCInvoiceBalanceCreditTC) <>
abs(tqCInvoiceByID.tdCInvoiceOriginalDebitTC - tqCInvoiceByID.tdCInvoiceOriginalCreditTC))
then do:
assign olCInvoiceHasPayment = true.
LEAVE CHECKBLOCK.
end. /* end if (abs(tqCInvoiceByID.tdCInvoiceBalanceDebitTC - tqCInvoiceByID.tdCInvoiceBalanceCreditTC) <> .. */
end. /* end else */
end. /* if iiCInvoiceID <> ? */
else do:
assign oiReturnStatus = -1
vcMessage = trim(#T-68'Cannot find selected invoice':255(907167146)T-68#).
<M-81 run SetMessage
(input vcMessage (icMessage),
input '':U (icArguments),
input 'CInvoiceID':U (icFieldName),
input string(iiCInvoiceID) (icFieldValue),
input 'E':U (icType),
input 1 (iiSeverity),
input '':U (icRowid),
input 'qadfin-638765':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
return.
end. /* end else if iiCInvoiceID <> ? */
end. /* CHECKBLOCK */
assign oiReturnStatus = viLocalReturnStatus.