project QadFinancials > class BDDocument > method ApiGetDDocumentInvoiceXrefByDInvDet

Description

This Api method retrieves debtor documents linked to certain debtor invoice. In case of prepayment debtor invoice, there should be only one debtor document.
This method can be used to retrieve all payment details about one debtor invoice (payment due dates, status of payment ...)


Parameters


iiDInvoiceIdinputintegerID of the debtor invoice for which payment details are required.
tDDocumentInvoiceXrefByDInvDoutputtemp-tableTemporary table with debtor document details for required debtor invoice.

Fields list:
- tiDDocument_ID ID of the debtor document which is used for payment of Debtor Invoice
- ttDDocumentDueDate Due date of debtor document
- tlDDocumentIsOpen Is debtor document still opened (not payed or cancelled for whatever reason)
- tiDDocumentNumber Number of debtor document
- tcDDocumentReference Reference of debtor document
- tcDDocumentStatus Status of debtor document (Initial, Accepted, Portfolio, For collection, Disconto, Bounced, Paid, Paied conditionally)
- tcDDocumentSubType Indication of way, debtor document was created (Automatic, Manual)
- tcDDocumentType Type of payment (Check, Direct debit, Draft, Promissory note, Summary statement, Credit card)
- tiDDocumentYear Year of debtor document (together with number and type of debtor document makes unique identification of debtor document)
- tiDInvoice_ID ID of debtor invoice payed by debtor document
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


unused


program code (program6/bddocument.p)

/* ============================================================================================ */
/* Method:   ApiGetAPMatchingLnByPvo                                                            */
/* Desc:     This method returns all matching lines to certain pending voucher                  */
/* Input:    PvoId               Pending voucher Id                                             */
/* Output    APMatchingLnByPvo   Temporary table with all matching lines of pending voucher     */
/* ============================================================================================ */

assign oiReturnStatus = -98.
empty temp-table tDDocumentInvoiceXrefByDInvD.

/* Normalize input parameters */
if iiDInvoiceId = 0 then assign iiDInvoiceId = ?.

/* Validate input paramters */
if iiDInvoiceId = ?
then do:
    assign vcMessage = #T-1'You have not entered all the mandatory values.':255(63250)t-1#
           vcContext = substitute("iiDInvoiceId=&1", iiDInvoiceId).
    <M-2 run SetMessage
       (input  vcMessage (icMessage), 
        input  '':U (icArguments), 
        input  '':U (icFieldName), 
        input  '':U (icFieldValue), 
        input  'S':U (icType), 
        input  3 (iiSeverity), 
        input  '':U (icRowid), 
        input  'QadFin-7138':U (icFcMsgNumber), 
        input  '':U (icFcExplanation), 
        input  '':U (icFcIdentification), 
        input  vcContext (icFcContext), 
        output viFcReturnSuper (oiReturnStatus)) in BDDocument>
    assign oiReturnStatus = -1.
    return.
end.

/* Retrieve records from database */
<Q-3 run DDocumentInvoiceXrefByDInvDet (all) (Read) (NoCache)
   (input iiDInvoiceId, (DInvoiceId)
    input viCompanyId, (CompanyId)
    output dataset tqDDocumentInvoiceXrefByDInvDet) in BDDocument >

/* Copy retrieved data to resulting temp-table */
for each tqDDocumentInvoiceXrefByDInvDet:
    create tDDocumentInvoiceXrefByDInvD.
    buffer-copy tqDDocumentInvoiceXrefByDInvDet to tDDocumentInvoiceXrefByDInvD.
end.

/* return */
if oiReturnStatus = -98 then assign oiReturnStatus = 0.


Sample code: how to call this method through RPCRequestService (QXtend Inbound)

define temp-table ttContext no-undo
    field propertyQualifier as character
    field propertyName as character
    field propertyValue as character
    index entityContext is primary unique
        propertyQualifier
        propertyName
    index propertyQualifier
        propertyQualifier.

define dataset dsContext for ttContext.

define variable vhContextDS as handle no-undo.
define variable vhExceptionDS as handle no-undo.
define variable vhServer as handle no-undo.
define variable vhInputDS as handle no-undo.
define variable vhInputOutputDS as handle no-undo.
define variable vhOutputDS as handle no-undo.
define variable vhParameter as handle no-undo.

/* Create context */
create ttContext.
assign ttContext.propertyName = "programName"
       ttContext.propertyValue = "BDDocument".
create ttContext.
assign ttContext.propertyName = "methodName"
       ttContext.propertyValue = "ApiGetDDocumentInvoiceXrefByDInvDet".
create ttContext.
assign ttContext.propertyName = "applicationId"
       ttContext.propertyValue = "fin".
create ttContext.
assign ttContext.propertyName = "entity"
       ttContext.propertyValue = "1000".
create ttContext.
assign ttContext.propertyName = "userName"
       ttContext.propertyValue = "mfg".
create ttContext.
assign ttContext.propertyName = "password"
       ttContext.propertyValue = "".

/* Create input dataset */
create dataset vhInputDS.
vhInputDS:read-xmlschema("file", "xml/bddocument.apigetddocumentinvoicexrefbydinvdet.i.xsd", ?).
vhParameter = vhInputDS:get-buffer-handle("tParameterI").
vhParameter:buffer-create().
assign vhParameter::iiDInvoiceId = <parameter value>.

/* Connect the AppServer */
create server vhServer.
vhServer:connect("-URL <appserver-url>").

if not vhServer:connected()
then do:
    message "Could not connect AppServer" view-as alert-box error title "Error".
    return.
end.

/* Run */
assign vhContextDS = dataset dsContext:handle.

run program/rpcrequestservice.p on vhServer
    (input-output dataset-handle vhContextDS by-reference,
           output dataset-handle vhExceptionDS,
     input        dataset-handle vhInputDS by-reference,
     input-output dataset-handle vhInputOutputDS by-reference,
           output dataset-handle vhOutputDS).

/* Handle output however you want, in this example, we dump it to xml */
if valid-handle(vhExceptionDS)
then vhExceptionDS:write-xml("file", "Exceptions.xml", true).

if valid-handle(vhOutputDS)
then vhOutputDS:write-xml("file", "Output.xml", true).

/* Cleanup */
vhServer:disconnect().
assign vhServer = ?.

if valid-handle(vhInputDS)
then delete object vhInputDS.

if valid-handle(vhOutputDS)
then delete object vhOutputDS.

if valid-handle(vhExceptionDS)
then delete object vhExceptionDS.