[Fusion] Checking AP Invoice Validation Status in Oracle Fusion via SQL in Oracle Fusion BIP

 


Objective

In Oracle Fusion Payables, verifying whether an invoice is "Validated" isn’t as simple as checking a single status column. The system determines this status dynamically based on distribution lines and active holds. This post provides a reliable SQL approach to identifying this status.


Key Logic for Validation
  • Validated: All invoice distributions must have MATCH_STATUS_FLAG = 'A' and there must be no unreleased holds.
  • Never Validated: All distributions have a MATCH_STATUS_FLAG of NULL or 'N'.
  • Needs Revalidation: Any distribution has a flag of 'T' (Tested), 'S' (Stopped), or if there is an unreleased row in the AP_HOLDS_ALL table.
Quick Table Reference for MATCH_STATUS_FLAG:



SQL Query

We can use the below query to get validation status:

SELECT
    aia.invoice_num,

    aia.invoice_date,
    aia.vendor_id,

    CASE
        -- Case 1: No distributions have been processed (All match_status_flag are NULL)

        WHEN NOT EXISTS (SELECT 1 FROM ap_invoice_distributions_all aid
                         WHERE aid.invoice_id = aia.invoice_id

                         AND aid.match_status_flag IS NOT NULL) THEN 'Never Validated'
       

        -- Case 2: There are active (unreleased) holds
        WHEN EXISTS (SELECT 1 FROM ap_holds_all ah

                     WHERE ah.invoice_id = aia.invoice_id
                     AND ah.release_lookup_code IS NULL) THEN 'Needs Revalidation (Hold)'

       
        -- Case 3: All distributions are marked as 'A' (Approved/Validated) and there is no match_status_flag as NULL

        WHEN NOT EXISTS (SELECT 1 FROM ap_invoice_distributions_all aid
                         WHERE aid.invoice_id = aia.invoice_id

                         AND (aid.match_status_flag <> 'A' OR aid.match_status_flag IS NULL)) THEN 'Validated'
       

        -- Case 4: Any other state
        ELSE 'Needs Revalidation'

    END AS validation_status
FROM

    ap_invoices_all aia
WHERE

    aia.invoice_num = :P_INVOICE_NUM;


Description

The validation status is a calculated value. In the backend, it relies on two primary data points:

  1. MATCH_STATUS_FLAG: Located in the AP_INVOICE_DISTRIBUTIONS_ALL table. A value of 'A' indicates the line is approved/validated.
  2. AP_HOLDS_ALL: If a record exists in this table without a RELEASE_LOOKUP_CODE, the invoice is on hold, even if the distributions look correct.


Now using this we can now extract all validated invoices using below query:

SELECT
    aia.invoice_num,

    aia.invoice_amount,
    aia.invoice_date,

    aia.vendor_id,
    'Validated' as validation_status

FROM
    ap_invoices_all aia

WHERE
    -- 1. Ensure all distributions are validated ('A')

    NOT EXISTS (
        SELECT 1

        FROM ap_invoice_distributions_all aid
        WHERE aid.invoice_id = aia.invoice_id

        AND (aid.match_status_flag <> 'A' OR aid.match_status_flag IS NULL)
    )

    -- 2. Ensure at least one distribution exists (prevents 'Never Validated' appearing)
    AND EXISTS (

        SELECT 1
        FROM ap_invoice_distributions_all aid

        WHERE aid.invoice_id = aia.invoice_id
    )

    -- 3. Ensure there are no active holds
    AND NOT EXISTS (

        SELECT 1
        FROM ap_holds_all ah

        WHERE ah.invoice_id = aia.invoice_id
        AND ah.release_lookup_code IS NULL

    );


Conclusion

By joining the headers, distributions, and holds tables, you can accurately replicate the "Validation Status" seen in the Oracle Fusion UI. Understanding the MATCH_STATUS_FLAG is the key to mastering AP reporting. Always ensure that both the distribution flags are set to 'A' and no unreleased holds exist before expecting an invoice to be eligible for payment.


Comments

All Categories

Call Fusion BIP Report2 Change Password1 Code Combinations2 Compute Instance2 CTE1 Customer1 Data Aggregation2 Database5 Date Conversion1 DB Adapter2 Decryption1 Development1 EBS4 Encryption1 ESS Jobs3 Examine1 FBDI3 Fusion APIs1 Fusion BIP7 GIT2 GL3 GL Journals1 GL_DAILY_CONVERSION_TYPES1 GL_DAILY_RATES1 ICS1 Identity Domain1 Integrations1 Java1 Journal Import1 Keys1 Legal Entity1 LookupTypeLOV1 LOV1 LOVs1 MultiPartAPIs1 Networking1 NVL2 NVL in OIC2 OCI11 OCI Billing1 OCI Compute5 OCI Cost Management1 OCI Events Service1 OCI Free Tier3 OCI Notifification Service1 OCI Security3 OIC4 OIC Mapper2 Oracle26 Oracle ADF17 Oracle APEX1 Oracle Apps59 Oracle Apps R126 Oracle ATP1 Oracle BIP8 Oracle Cloud12 Oracle Cloud Free Tier1 Oracle cloud Infrastructure9 Oracle Cloud Security2 Oracle Cloud VM1 Oracle DB4 oracle ebs5 Oracle ERP4 Oracle ERP Adapter2 Oracle ERP Cloud7 Oracle financials2 Oracle Forms1 Oracle Fusion57 Oracle Fusion BIP4 Oracle Fusion ERP17 Oracle Fusion Financials18 Oracle Integration Cloud3 Oracle OAF17 Oracle OCI14 Oracle OIC22 Oracle SOA 12c10 Oracle SQL17 Oracle VBCS1 Oracle VBS2 Oracle Visual Builder Cloud Service1 Oracle Visual Builder Studio2 Oracle Workflow Notifications1 Others10 Payables2 Payables Import1 Properties1 R121 Register BIP as ESS Job1 Reset Password1 Responsibility1 REST4 Security List1 Site Map1 SOAP2 SOAP API2 SOAP UI3 SQL16 SQL Functions3 SQL Queries14 SQL Query8 SQL Tips3 SSH1 TCA1 Value Sets1 VBCS1 Virtual Machine2 Virtual Machines1 XML1 XSLT1
Show more