Purchase Order Split| Product Category| Individual Lines
by Odoo DevHouse https://apps.odoo.com/apps/modules/browse?author=Odoo%20DevHouse$ 99.00
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Purchase (purchase)
• Invoicing (account) • Discuss (mail) |
| Lines of code | 748 |
| Technical Name |
purchase_split_dv |
| License | OPL-1 |
| Website | https://apps.odoo.com/apps/modules/browse?author=Odoo%20DevHouse |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Purchase (purchase)
• Invoicing (account) • Discuss (mail) |
| Lines of code | 748 |
| Technical Name |
purchase_split_dv |
| License | OPL-1 |
| Website | https://apps.odoo.com/apps/modules/browse?author=Odoo%20DevHouse |
Purchase Order Split| Product Category| Individual Lines
Split a single RFQ into multiple Purchase Orders - by Product Category or by Individual Line Items - in seconds. Full traceability, vendor assignment, and original order snapshot included.
Procurement teams often receive consolidated requirements from multiple departments - electronics, furniture, consumables - all in one RFQ. Standard Odoo offers no built-in way to divide a single Purchase Order into separate orders for different vendors or categories.
- Procurement must manually recreate POs for each vendor - slow and error-prone
- No traceability between manually created POs and the original consolidated request
- Different categories require different suppliers - impossible to handle in one PO
- Partial line splits are not supported in standard Odoo - all or nothing
- Finance cannot reconcile back to the original request without manual notes
This module adds a Split PO button to every RFQ (draft and sent states). A smart wizard lets you choose between Split by Product Category (one PO per category, vendor assignable per group) or Split by Individual Line Items (cherry-pick specific lines, adjust quantities, assign any vendor per line). Every new PO is automatically linked back to the original via smart buttons, source document, split date, and user. The original PO retains a permanent Original Products snapshot so the full picture is always visible.
- Split by Product Category: Automatically groups PO lines by product category - one new PO per category, each with its own vendor
- Split by Individual Line Items: Select specific lines to move to a new PO with full quantity control per line
- Per-group vendor assignment: Assign a different vendor to each category group or line selection before any PO is created
- Partial quantity split: Move only part of a line's quantity - the remainder stays on the original PO automatically
- Multi-vendor line split: Assign different vendors per selected line - creates one PO per vendor in a single wizard step
- Full traceability: Every split PO shows Source PO (smart button), split origin chain, split date, and who performed the split
- Split POs smart button: On the original PO, instantly see how many child POs were created and navigate to them
- Original Products snapshot: A permanent tab on the original PO preserves all pre-split products and quantities
- Auto-cancel original PO: When all lines are split out, the original PO is automatically cancelled with a chatter log
- Chatter integration: Every new split PO and the original PO get chatter messages with full split details
- RFQ state only: Splitting is restricted to Draft and Sent states - confirmed POs cannot be accidentally split
- No core modifications: Pure inheritance - safe to install alongside any other Odoo modules
Manufacturing
Consolidated MRP-generated POs covering raw materials, packaging, and tooling from different suppliers. Split instantly to route each category to the right vendor.
Construction & Real Estate
Project procurement bundles materials from multiple trades. Split PO by category to assign each trade's materials to a dedicated subcontractor PO.
IT & Technology
Hardware, software licenses, and peripherals often come from separate vendors. One combined RFQ -> split into focused supplier orders in one wizard step.
Distribution & Wholesale
Large consolidated purchase orders covering multiple product lines and brands. Split by category to maintain accurate per-vendor order tracking.
Healthcare & Pharma
Medical devices, pharmaceuticals, and consumables require separate regulated suppliers. Split PO ensures each regulated category goes to its approved vendor.
Retail & e-Commerce
Seasonal buying events create large multi-category orders. Quickly split into vendor-specific orders without losing the buying event reference.
Open a Purchase Order in RFQ or RFQ Sent State
Navigate to Purchase -> Orders -> Requests for Quotation. Open any RFQ that has at least two order lines. The Split PO button is visible in the form header (only shown for Purchase Users in draft or sent state - not visible on confirmed POs).
Click the Split PO Button
Click â Split PO in the form header. The wizard opens as a dialog showing the PO reference and current vendor. You see two split modes to choose from: Split by Product Category and Split by Individual Line Items.
Choose Split Mode A - Split by Product Category
Select Split by Product Category. The wizard instantly auto-groups all PO lines by their product category and displays one row per category with the line count, total quantity, and subtotal. Assign a vendor to each category row - this vendor will be used for the new PO created from that category's lines.
- OR - Choose Split Mode B - Split by Individual Line Items
Select Split by Individual Line Items. All PO lines are listed with their product, quantity, price, and subtotal. Tick the checkbox on any line to select it for the split. You can adjust the split quantity per line (partial split) and assign a specific vendor per selected line. Lines with different vendors will automatically produce separate POs per vendor.
Confirm the Split
Click Confirm Split. The system validates all quantities, creates the new POs, moves the specified lines, and posts chatter messages on every order. You are immediately redirected to a list of all newly created split POs for review.
Review Results and Traceability
Each new child PO shows a Source PO smart button linking back to the original. The original PO shows a Split POs smart button with the count of created children. The Original Products tab permanently records what the PO looked like before splitting - essential for audit trails and finance reconciliation.
Step 1 - Purchase Requests for Quotation List
Navigate to Purchase -> Orders -> Requests for Quotation. All open RFQs are listed here. Click any RFQ with at least 2 lines to begin the split process.
Step 2 - RFQ Form with 3 Lines Across 2 Categories
This RFQ contains PS Laptop Pro and PS Wireless Mouse (Electronics category) plus PS Office Chair (Furniture category). The Split PO button appears in the header next to Cancel. It's only visible in RFQ / RFQ Sent state.
Step 3 - Split PO Wizard Opened
Clicking â Split PO opens the wizard dialog. The PO reference and current vendor are shown at the top. Select your preferred split mode using the radio buttons.
Step 4 - Split by Product Category Mode
Selecting Split by Product Category auto-populates the wizard with one row per distinct product category. Each row shows the category name, number of lines, total quantity, and subtotal. Assign the target vendor for each category group - this vendor will receive the new PO for that category.
Step 5 - Split by Individual Line Items Mode
Switching to Split by Individual Line Items lists every order line with its product, original quantity, unit price, subtotal, and an optional vendor field. Use the Select checkbox to mark lines for splitting. The quantity field is editable for partial splits.
Step 6 - Lines Selected for Split
Selected lines are highlighted in green for visual confirmation. You can adjust the split quantity per selected line (must not exceed the original quantity). Assign specific vendors per line - lines with different vendors will produce separate child POs.
Step 7 - Original PO After Split (Cancelled + Smart Button)
When all lines are moved out, the original PO is automatically cancelled. The Split POs smart button appears in the top bar showing the count of child POs created. A chatter message records the split event with full details.
Step 8 - Original Products Tab
The Original Products tab on the original PO preserves a permanent, read-only snapshot of all products and quantities as they were before the split. This serves as the single source of truth for finance reconciliation and audit purposes.
Step 9 - Child PO 1: Electronics Category
The first child PO contains only the Electronics lines (Laptop Pro + Wireless Mouse). The Source PO smart button links back to the original PO. The Split Origin field records the full chain for complete traceability.
Step 10 - Child PO 2: Furniture Category
The second child PO contains only the Furniture category line (Office Chair). Both child POs share the same split metadata: is_split_po = True, source_split_id pointing to the original, split date, and split user.
Step 11 - Line Split: Two Lines Selected
In line-item mode, two lines are selected (highlighted in green). Each selected line can have a different vendor - the module automatically groups them and creates one PO per vendor. A helpful warning banner explains the behaviour when all lines are selected.
Mode A - Split by Product Category
- Auto-groups lines by product category
- One new PO per distinct category
- Vendor assigned per category group
- Best for: structured buying events, MRP-generated POs
- Requires at least 2 different categories
Mode B - Split by Individual Line Items
- Cherry-pick any specific lines
- Adjust split quantity per line (partial split)
- Vendor assigned per selected line
- Best for: ad-hoc splits, partial restocking, spot purchases
- Lines with same vendor merge into one child PO
Can I split a confirmed or locked PO?
No. The Split PO button is only visible and active for POs in RFQ (draft) or RFQ Sent state. Once a PO is confirmed or locked, it cannot be split. This prevents accidental modification of already-confirmed purchasing commitments.
What happens to the original PO when all lines are split?
When all lines are moved to new child POs, the original PO is automatically cancelled and a chatter message lists all new POs created. The original PO remains in the system for reference - it is never deleted.
Can I split only part of a line's quantity?
Yes. In line-item mode, the quantity field is editable per selected line. Enter a quantity less than the original - the remainder stays on the original PO. The split quantity cannot exceed the original quantity.
Can I split a PO that has only one line?
No. The wizard validates that the source PO has at least 2 order lines. A PO with a single line cannot be split - a user-friendly error message is shown.
Does category split work if all products share the same category?
No. If all lines share the same product category, a category split cannot produce more than one PO. The wizard raises a clear error. Use Split by Individual Line Items in this case.
Are taxes, dates, and analytic distributions preserved in child POs?
Yes. Each child PO line inherits the product, quantity, unit price, UoM, planned date, and analytic distribution from the source line. The child PO header inherits currency, company, and order date from the original PO.
Does this module modify any Odoo core files?
No. The module uses Odoo's standard model and view inheritance mechanism exclusively. No core Python or XML files are overwritten. It is safe to install alongside any other customizations.
Save Hours of Manual Work
One wizard replaces the manual process of creating separate POs, copying lines, and referencing the original - what used to take 20 minutes now takes 20 seconds.
Complete Audit Trail
Every split records who did it, when, and what the original order looked like - essential for procurement audits, approvals, and finance reconciliation.
Better Vendor Management
Route each product category to its approved supplier in one operation. Vendor-specific pricing, terms, and lead times are automatically applied to each new PO.
Eliminate Data Entry Errors
The wizard copies all line data (product, qty, price, dates, analytics) programmatically. No risk of typos, missing lines, or incorrect vendor assignments from manual re-entry.
Installation & Configuration
- Prerequisites: Odoo 19 with the Purchase app installed (no other dependencies)
- Install: Go to Apps -> Update App List -> Search "Purchase Order Split" -> Install
- No configuration required: The Split PO button appears immediately on any RFQ with 2+ lines
- Permissions: Purchase Users can access the wizard; no additional security groups needed
- Test: Open any draft PO with at least 2 lines, click Split PO, choose a mode, assign vendors, confirm
Tip: The module only depends on the core purchase module - it works on Odoo Community and Enterprise, Odoo Online, Odoo.sh, and on-premise installations.
Need Help or Have a Feature Request?
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module