project QadFinancials > class BCInvoice > method CheckCInvoiceForPayment

Description

This method will check if there is a payment against an invoice.


Parameters


iiCInvoiceIDinputintegerCInvoice ID
olCInvoiceHasPaymentoutputlogicalIf the invoice has a payment this output parameter will be true otherwise it will be false.
oiReturnStatusoutputintegerReturn 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.