POXPOIV, Pay on Receipt, also known as ERS (Evaluated Receipt Settlement), or Self-Billing, is an Oracle Purchasing concurrent program, which automatically creates invoices in Payables and matches them with Purchase Orders for the received amount.
When Pay on Receipt Autoinvoice (PRA) program is ran, it in turn launches Payables Interface Import (PII) program. PRA updates invoice_status_code of rcv_transactions to INVOICED, then populates records in ap_invoices_interface and ap_invoice_lines_interface. Then the interface data is committed and PII is invoked to create the invoices.
If PII program errors out for some reason during the validation of AP interface data then the records stay in interface tables with REJECTED status and the associated error information will be stored in AP_INTERAFACE_REJECTIONS table. PRA sets invoice_status_code of rcv_transactions, for transaction_type RECEIVE, to INVOICED for both successfully imported invoices and for invoices rejected by PII.
If Pay on Receipt AutoInvoice is ran again later then it will pick only those records which have invoice_status_code as ‘PENDING. It will not pick/process the records which have invoice_status_code = INVOICED.
The Pay on Receipt program populates data in ap_invoices_interface and ap_invoice_lines_interface. Then Payables Import program is kicked off, which in turn processes these records and creates an invoice by populating the final tables of ap_invoices_all and ap_invoice_distributions_all
At the time invoice_status_code is inserted into rcv_transactions, the system checks for the value of the Vendor Site’s Pay On Code. If Pay On Code is set to ‘Receipt’, then invoice_status_code is inserted into rcv_transactions as ‘PENDING’, otherwise it will be inserted as null
PRA launches PII, and PII completes with error. This will cause records to be stuck in AP Interface tables, and an Invoice is not created. To determine if records are stuck in status of NULL or REJECTED in ap_invoices_interface, to determine those records:
select AP.invoice_id, AP.invoice_num,AP.vendor_id,AP.vendor_site_id, AP.po_number, AP.status,AP.source,AP.group_id, APL.invoice_id, APL.po_header_id,APL.po_line_id,APL.po_line_location_id, APL.po_distribution_id,APL.po_release_id, APL.release_num, APL.org_id,APL.rcv_transaction_id,APL.receipt_number, RT.transaction_type,RT.transaction_id,RT.parent_transaction_id, RT.quantity,RT.invoice_status_code,RT.quantity_billed from ap_invoices_interface AP, ap_invoice_lines_interface APL, rcv_transactions RT where AP.source = 'ERS' and AP.invoice_id = APL.invoice_id and rt.po_header_id = APL.po_header_id and APL.rcv_transaction_id is not null and APL.rcv_transaction_id = rt.transaction_id and (rt.vendor_id is null or rt.vendor_site_id is null);
To verify if Vendor is enabled to Pay on Receipt, retrieve the following:
select pv.vendor_name, pvs.last_update_date, pvs.creation_date, pvs.purchasing_site flag, pvs.pay_site_flag, pvs.default_pay_site_id, pvs.pay_on_code, pvs.inactive_date, pvs.hold_all_payments_flag
from po_vendor_sites_all pvs, po_vendors_all pv
where pv.vendor_name in <‘Enter the vendor name’>
and pv.vendor_id = pvs.vendor_id;
Verify the receipt is available for Pay on Receipt. If the invoice_status_code is NULL in RCV_TRANSACTIONS, the record is not eligible for Pay on Receipt.
select rt.quantity, rt.source_document_code, rt.invoice_status_code, rt.match_option, rt.match_flag, rt.shipment_header_id,
rt.po_header_id, rsh.invoice_status_code, rsh.last_update_date
from rcv_transactions rt, rcv_shipment_headers.rsh
where rt.shipment_header_id = rsh.shipment_header_id
and rsh.receipt_num = <’enter receipt number’>
and rsh.ship_to_or_id = <enter the ship_to_org_id>;