| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Inventory (stock) • Purchase (purchase) • Quality (quality_control) • Invoicing (account) |
| Lines of code | 3283 |
| Technical Name |
grev_od_purchase_quality_check |
| License | OPL-1 |
| Website | https://www.grevlin.com |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Inventory (stock) • Purchase (purchase) • Quality (quality_control) • Invoicing (account) |
| Lines of code | 3283 |
| Technical Name |
grev_od_purchase_quality_check |
| License | OPL-1 |
| Website | https://www.grevlin.com |
Purchase Quality CheckFull Pre-Shipment Inspection Platform with ISO 2859-1 AQL Sampling, 8D NCR Tracking, and Shipment Release Control
|
|
|
|
|
|
📞 Support & Resources
|
|
Grevlin Enterprise Procurement Solutions
© 2024–2026 Grevlin Global Corp. All rights reserved. |
Purchase Quality Check
Table of Contents
- Overview
- Configuration
- Usage
- Technical Details
- Models
- grev.purchase.inspection.booking
- grev.purchase.quality.ncr
- grev.purchase.product.spec / grev.purchase.product.spec.line
- grev.purchase.quality.aql.table / grev.purchase.quality.aql.accept
- grev.purchase.shipment.release
- grev.purchase.regulatory.requirement
- grev.purchase.inspection.analytics
- grev.supplier.quality.kpi
- Security
- Models
- See Also
- Support
Important
Odoo Enterprise Exclusive — this module requires Odoo 19.0 Enterprise. It will not install or function on Odoo Community Edition.
Overview
Purchase Quality Check is a full Pre-Shipment Inspection (PSI) platform for Odoo 19.0 Enterprise. It adds ISO 2859-1 AQL sampling, inspection booking lifecycle, product specification enforcement, 8D-structured NCR tracking, and shipment hold/release control directly to the Odoo procurement workflow.
Key Capabilities
- ISO 2859-1 AQL Sampling — automatic code letter, sample size, and Ac/Re thresholds from embedded Annex A & B-1 lookup tables (levels I, II, III, S1–S4; AQL 0.065–10.0).
- Inspection Booking Lifecycle — draft → booked → confirmed → in_progress → report_submitted → approved, with factory email notification on confirmation.
- Third-Party Inspection Body Management — manage SGS, Bureau Veritas, QIMA, Intertek, and any other inspection company with country coverage, accreditations, cost, and rating.
- Product Specification Sheets — tolerance-based parameter definitions with auto-loaded measurement grids on quality checks; critical parameter failure fails the entire inspection.
- Shipment Hold / Release Control — release, hold (with reason), or conditional release (with conditions) tied directly to the inspection outcome.
- Regulatory Inspection Registry — country-specific mandatory inspection rules (PVOC, SONCAP, COC, Halal, Phytosanitary, Fumigation) that block shipment release when not satisfied.
- 8D NCR Problem Solving — structured eight-discipline format with defect line items, per-defect rate computation, cost impact, and evidence photos.
- Quality Certificate Registry — CoA, CoC, CoO, MSDS, Test Reports with validity tracking.
- Supplier Quality KPIs — per-period aggregated metrics with trend classification.
- Inspection Analytics — SQL-backed view for pivot and graph reporting with supplier and product drill-down.
- PDF Inspection Reports — AQL summary, checklist, measurements, defects, and release decision.
Configuration
Security Groups
Three-tier access model:
| Group | Access |
|---|---|
| Quality User | Read-only access to all inspection records; limited create on checklists. |
| Quality Officer | Full create/edit on inspections, NCRs, bookings, and spec sheets. No delete on NCRs. |
| Quality Manager | Full CRUD on all models including AQL tables, inspection bodies, and analytics. |
Inspection Bodies
Configure third-party inspection companies at :menuselection:`Purchase --> Quality --> Configuration --> Inspection Bodies`:
- Click :guilabel:`Create`.
- Enter the company :guilabel:`Name`, :guilabel:`Accreditations`, and :guilabel:`Specialty Notes`.
- Set :guilabel:`Cost per Inspection` and :guilabel:`Lead Time (days)`.
- Set :guilabel:`Rating`: Preferred, Approved, Probation, or Blacklisted.
- In :guilabel:`Country Coverage`, add all countries where this body can inspect.
- Click :guilabel:`Save`.
Tip
The inspection body's rating feeds into supplier quality recommendations in the AI Assistant module when it is installed.
Inspection Plans
Define inspection rules at :menuselection:`Purchase --> Quality --> Configuration --> Inspection Plans`:
- Set the scope: :guilabel:`Product`, :guilabel:`Product Category`, or :guilabel:`Supplier` (or any combination).
- Choose :guilabel:`Inspection Type`: pre-shipment, post-delivery, legal, or factory audit.
- Choose :guilabel:`Frequency`: every shipment, sampling (%), or periodic (days).
- Set :guilabel:`Default Inspection Level` and :guilabel:`Default AQL Level`.
- Optionally assign a :guilabel:`Default Inspection Body`.
- Add checklist template lines — mark critical lines with :guilabel:`Is Critical` and regulatory lines with :guilabel:`Is Regulatory`.
Product Specifications
Define measurable acceptance criteria at :menuselection:`Purchase --> Quality --> Configuration --> Product Specifications`:
- Select the :guilabel:`Product` and enter a :guilabel:`Spec Version` (e.g., 1.0).
- Set an :guilabel:`Effective Date`.
- Add specification lines — one per measurable parameter:
- :guilabel:`Parameter Name` (e.g., PCB Thickness)
- :guilabel:`Specification` — human-readable description (e.g., 1.6 ± 0.10 mm)
- :guilabel:`Min Value` / :guilabel:`Max Value` — numeric tolerance bounds
- :guilabel:`Unit of Measure`
- :guilabel:`Measurement Method`
- :guilabel:`Is Critical` — if checked, any out-of-spec measurement fails the entire inspection
Important
Only one spec version per product per company can be active at a time. The SQL constraint unique(product_id, spec_version, company_id) prevents duplicates.
Regulatory Requirements
Configure country-specific mandatory inspections at :menuselection:`Purchase --> Quality --> Configuration --> Regulatory Requirements`:
- Set the :guilabel:`Country` and optionally a :guilabel:`Product Category` or :guilabel:`HS Code`.
- Choose the :guilabel:`Inspection Type` (PVOC, SONCAP, COC, Halal, Phytosanitary, etc.).
- Enter :guilabel:`Regulatory Body`, :guilabel:`Required Documents`, and :guilabel:`Effective Date`.
- Enable :guilabel:`Mandatory` to block shipment release for non-compliant shipments.
Usage
Creating an Inspection Booking
- Open a confirmed :guilabel:`Purchase Order`.
- Click :guilabel:`Inspection Bookings` smart button (or go to :menuselection:`Purchase --> Quality --> Inspection Bookings`).
- Click :guilabel:`Create` and fill in:
- :guilabel:`Inspection Type`: pre-shipment, post-delivery, legal, or factory audit
- :guilabel:`Scheduled Date`
- :guilabel:`Factory Address`
- :guilabel:`Inspection Body` and :guilabel:`Inspector`
- Click :guilabel:`Book` to move to Booked state.
- Click :guilabel:`Confirm` — Odoo sends a factory notification email automatically.
- On inspection day, click :guilabel:`Start Inspection` → :guilabel:`Submit Report` → :guilabel:`Approve`.
Running a Quality Check
From the approved booking, open or create a quality check:
- Go to the :guilabel:`Quality Checks` tab on the booking.
- Set :guilabel:`Inspection Type`, :guilabel:`Inspection Date`, and :guilabel:`Inspector`.
AQL Sampling
- Enter the :guilabel:`Lot Size` (total shipment quantity).
- Choose :guilabel:`Inspection Level` (default: Level II).
- Choose :guilabel:`AQL Level` (default: 1.0).
- The system automatically computes :guilabel:`Code Letter`, :guilabel:`Sample Size`, :guilabel:`Accept Qty (Ac)`, and :guilabel:`Reject Qty (Re)`.
- After inspecting the sample, enter :guilabel:`Actual Defects`. The :guilabel:`AQL Result` (pass / fail) is computed automatically.
Measurements (Product Spec)
If a product specification exists for the inspected product:
- The :guilabel:`Measurements` tab auto-loads one row per spec parameter.
- Enter :guilabel:`Actual Value` for each parameter.
- :guilabel:`Within Spec` is computed automatically (True if min ≤ actual ≤ max).
- :guilabel:`Spec Pass Rate` and :guilabel:`Has Critical Failure` are computed across all rows.
Checklist
- Open the :guilabel:`Checklist` tab.
- For each item, set :guilabel:`Result` to Pass, Fail, or N/A and add notes.
- :guilabel:`Checklist Pass Rate` is computed automatically.
- When all data is entered, set :guilabel:`Inspection Result` to Pass, Fail, or Conditional.
Managing Non-Conformance Reports (NCRs)
NCRs can be raised from a quality check or created independently at :menuselection:`Purchase --> Quality --> Non-Conformance Reports`.
Workflow states: Draft → Open → Investigating → Corrective Action → Closed / Cancelled.
8D Problem Solving
Enable :guilabel:`Use 8D Problem Solving Format` on the NCR to unlock the structured fields:
- D1 — Team Formation: list team members and roles
- D3 — Containment Actions: immediate actions to contain the defect
- D5 — Permanent Corrective Actions: long-term fix validated
- D6 — Implementation & Verification: evidence of implementation
- D8 — Team Recognition & Closure: lessons learned and formal closure
Defect Lines
Add defect lines under the :guilabel:`Defects` tab:
- :guilabel:`Defect Type`: visual, dimensional, functional, packaging, labeling, contamination
- :guilabel:`Quantity Defective` / :guilabel:`Quantity Inspected`
- :guilabel:`Defect Rate` is computed per line; :guilabel:`Overall Defect Rate` is aggregated on the NCR.
Shipment Release
After a quality check is completed, manage the release at :menuselection:`Purchase --> Quality --> Shipment Releases` or from the :guilabel:`Shipment Releases` tab on the quality check.
Actions available:
- :guilabel:`Release` — authorise dispatch; records :guilabel:`Release Date` and :guilabel:`Released By`.
- :guilabel:`Hold` — blocks dispatch; requires :guilabel:`Hold Reason`.
- :guilabel:`Conditional Release` — allows dispatch with documented :guilabel:`Conditions`.
- :guilabel:`Reset to Pending` — reverts to pending for re-evaluation.
The :guilabel:`View Pickings` button opens the related stock receipts directly.
Supplier Quality KPIs
Compute supplier quality metrics at :menuselection:`Purchase --> Quality --> Supplier Quality KPIs`:
- Create a KPI record for a supplier and period.
- Click :guilabel:`Compute KPIs` to aggregate inspection and NCR data automatically.
- Review :guilabel:`Pass Rate`, :guilabel:`Avg Defect Rate`, :guilabel:`NCR Count`, :guilabel:`Avg Resolution Days`, and :guilabel:`Quality Trend`.
Technical Details
Models
grev.purchase.inspection.booking
Inspection booking lifecycle. Key fields: purchase_order_id, inspection_body_id, scheduled_date, state, estimated_cost, actual_cost, overall_result (computed).
grev.purchase.quality.ncr
Non-conformance reports. Key fields: ncr_type, severity, state, use_8d_format, defect_ids, overall_defect_rate (computed), cost_impact.
grev.purchase.product.spec / grev.purchase.product.spec.line
Product specification sheets and parameter lines. SQL constraint enforces one active version per product per company.
grev.purchase.quality.aql.table / grev.purchase.quality.aql.accept
ISO 2859-1 Annex A (code letter lookup) and Annex B-1 (sample size and Ac/Re) reference tables. Seeded with noupdate="1" — do not modify.
grev.purchase.shipment.release
Shipment release records. State: pending_inspection, on_hold, conditionally_released, released. The release_state on quality.check is computed from the latest release record.
grev.purchase.regulatory.requirement
Country-level mandatory inspection rules. is_active is computed from effective_date and expiry_date. mandatory=True blocks shipment release.
grev.purchase.inspection.analytics
SQL-backed read-only view (_auto = False) aggregating quality check, NCR, and defect data for pivot and graph reports. Refreshed on each query — no stored state.
grev.supplier.quality.kpi
Supplier quality KPI records per period. Populated by the action_compute_kpis() method, which aggregates quality.check and grev.purchase.quality.ncr records.
Security
Multi-company record rules apply to all primary models using the pattern:
[('|', ('company_id', '=', False), ('company_id', 'in', company_ids))]
The three-tier group hierarchy (User → Officer → Manager) uses implied_ids chains so each higher group inherits all lower group permissions.
See Also
- :doc:`/applications/inventory_and_mrp/purchase/index`
- Grevlin Procurement Suite
- Odoo Quality Control (Enterprise)
Support
- Email: odoo@grevlin.com
- Website: https://www.grevlin.com
- X: @GrevlinGlobal
30 days of free support is included with your purchase.
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