Three-Way Match for Odoo 19 Community – Vendor Bills vs Purchase Orders and Receipts, Tolerances and Approval
Pay only what you ordered and received in Odoo Community: every vendor bill line is matched with the purchase order and the receipts, the differences are shown in money and a bill that does not match is blocked until an approver accepts it with a reason.
Three-Way Match compares every vendor bill line with the purchase order and the goods received, and stops the bills that do not match.
On every bill line
Ordered, received and billed to date, with the order price next to the bill price
A badge: Matches, More than received, Price above the order or Qty and price
The amount at risk: the extra quantity at the bill price, plus the price difference
Tolerances
A percentage of quantity and a percentage of price that a bill may exceed without being flagged (2% on the price by default).
Blocked until accepted
A bill that needs a review cannot be posted; the message lists the lines and why
An approver accepts the difference with a reason, kept on the bill
The approval is void if a quantity or a price changes
And
Posted bills of the same order line count; credit notes lower the billed quantity
Vendors that must always bill against an order
A list of the bills to review and the differences by vendor
Tested
35 automated tests: quantities, prices, discounts, tolerances, services, several bills, credit notes, the approval and its voiding, the rights and the settings.
Documented
Illustrated guide in English and Arabic and an Arabic translation of the module.
What's included
taqnix_three_way_match.zip: the Odoo 19 module (with Arabic translation)
Illustrated documentation in English and Arabic (HTML and PDF)
Automated tests, licence file (OPL-1) and changelog
Requirements
Odoo 19.0 Community.
What's in the download
The files in the archive you can download after you buy.
No reviews yet. Bought this item? Be the first to review it.
Usage
Install and use it in a few lines.
bill = env['account.move'].browse(42)bill.tx_match_state # 'ok', 'review', 'approved' or 'na'bill.tx_match_excess # the amount at risk, in the currency of the billfor line in bill.invoice_line_ids: print(line.product_id.name, line.tx_match_ordered, line.tx_match_received, line.tx_match_billed, line.tx_match_status)bill.with_context(taqnix_skip_match=True).action_post() # post without the check (an integration, for instance)
Documentation
Setup, settings and troubleshooting, written by the author.
Match of each vendor bill line with the purchase order and the quantity received
Amount at risk; tolerances in percent per company
Posting of a bill that does not match is blocked until an approver accepts it
Approval with a reason, void when the bill changes; withdraw the approval
Posted bills and credit notes of the same order line; vendors that must match; services
Bills to review and differences lists; Arabic translation, automated tests
Frequently asked questions
What does three-way match mean?+
The purchase order (what you asked for), the receipt (what came) and the vendor bill (what you are charged) must agree before you pay. This module compares them line by line.
What is flagged?+
A bill line that bills more than was received (beyond the quantity tolerance) or at a price above the order (beyond the price tolerance). The amount at risk is shown in money.
Can I still post a bill that does not match?+
Yes: an approver accepts the difference and writes the reason. Or you can untick Block the bills that do not match in the settings and keep only the flags.
What happens if the bill is changed after the approval?+
The approval is void as soon as a quantity or a price of the bill changes; the bill goes back to To review.
What about services?+
A service is matched with the quantity ordered, because nothing is received.
Does it work with several bills for one order?+
Yes. The posted bills of the same order line count in the quantity billed to date, and credit notes lower it.
Are bills without a purchase order blocked?+
No, unless you tick Bills must match an order on the vendor. Rent or utilities are not flagged.
Does it work in Arabic?+
Yes. The module is translated and works right to left, and the documentation is in Arabic too.
More from TAQNIX
PluginNew
AI Alt Text Generator for WordPress – Image SEO & Accessibility in Bulk
Write alt text, titles and captions for your images with AI: on upload, in bulk or one by one, in your language, with a review step and a coverage report.
Interview Scorecards for Odoo 19 Community – Weighted Criteria, Independent Scores and Candidate Comparison
Interview every candidate the same way in Odoo Community: a scorecard with weighted criteria, each interviewer scores on his own, a weighted result and a recommendation, and a comparison of the candidates by criterion.
Visitor Management for Odoo 19 Community – Reception Board, Badges with QR, Invitations and Blacklist
Welcome visitors in Odoo Community: pre-register visits, send the invitation, check in and out at the reception, print a badge with a QR code, tell the host, refuse blacklisted visitors and keep the log.
Meeting Room Booking for Odoo 19 Community – Calendar, No Clashes, Recurring Meetings and Approval
Book meeting rooms in Odoo Community: a calendar of the rooms, no clashes, seats, equipment and opening hours, recurring meetings, an optional approval and a search for a free room.
Reorder Suggestions for Odoo 19 Community – What to Buy, How Much and When, with One-Click RFQs
Know what to order and how much in Odoo Community: from your sales, stock on hand and on order and vendor lead times, get days of stock left, urgency and the quantity to order, then create the RFQs by vendor in one click.
Purchase Requests for Odoo 19 – Internal Requests, Approval and RFQs per Vendor
Let everyone ask for what they need: purchase requests with approval, one RFQ per vendor created from the approved lines, and what was ordered and received followed on the request.
Purchase Order Approval Workflow for Odoo 19 – Multi-Level RFQ and PO Approval by Amount or Discount
Stop big purchase orders and big discounts from being confirmed without a manager's OK. Levels by amount or discount, approvers in sequence, reasons for rejection, tasks and a full history.
Interview Scorecards for Odoo 19 Community – Weighted Criteria, Independent Scores and Candidate Comparison
Interview every candidate the same way in Odoo Community: a scorecard with weighted criteria, each interviewer scores on his own, a weighted result and a recommendation, and a comparison of the candidates by criterion.