| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Inventory (stock) • Purchase (purchase) • Invoicing (account) |
| Community Apps Dependencies | Show |
| Lines of code | 5156 |
| Technical Name |
grev_od_commodity_delivery |
| License | OPL-1 |
| Website | https://www.grevlin.com |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Inventory (stock) • Purchase (purchase) • Invoicing (account) |
| Community Apps Dependencies | Show |
| Lines of code | 5156 |
| Technical Name |
grev_od_commodity_delivery |
| License | OPL-1 |
| Website | https://www.grevlin.com |
⚖ Commodity Delivery & WeighbridgeGate Registration, Weighbridge Operations, Immutable Weight Records & Automatic Stock Receipt for Commodity Procurement
|
|
|
|
|
|
📞 Need Help?
|
|
Grevlin Procurement Suite Enterprise-Grade Commodity Procurement for Odoo © 2026 Grevlin Global Corp. All Rights Reserved. Compatible with Odoo 19.0 | Licensed under OPL-1 |
Commodity Delivery & Weighbridge
The Commodity Delivery & Weighbridge module manages the complete commodity delivery lifecycle from gate registration through weighbridge operations to stock receipt. It maintains immutable weighing records with scale calibration audit trails for regulatory compliance.
Overview
This module sits in the commodity procurement pipeline between supplier dispatch and warehouse intake. Gate operators register arriving trucks, weighbridge operators record gross and tare weights on calibrated scales, and the system auto-creates stock pickings on delivery completion.
Key Capabilities
- Multi-Step Delivery Workflow --- 11 states from draft through registered, gross weighed, sampling, quality testing, unload authorized, unloading, tare weighed, to done (or rejected / cancelled).
- Weighbridge Integration --- record gross and tare weights with scale reference, operator, timestamp, and optional photo evidence. Net weight computed automatically.
- Immutable Weighing Records --- write() override prevents modification except by delivery managers.
- Scale Calibration Tracking --- scale registry with calibration schedules, maintenance logs, and pass/fail audit records.
- Vehicle & Transporter Registry --- trucks, trailers, tippers, and containers with known tare weights for variance detection.
- Delivery Slot Scheduling --- time slots per warehouse with maximum delivery limits and real-time availability counters.
- Quality-Based Deductions --- moisture and foreign matter deductions auto-computed from quality test results.
- GPS & Photo Evidence --- GPS coordinates, load verification photos, and scale photos for complete evidence trails.
- Automatic Stock Receipt --- stock picking created on delivery completion with net weight and commodity product.
Note
This module uses centralized security groups from grev_od_commodity_base. It does not define its own groups.
Configuration
Scales
Before recording weights, configure your weighbridge scales.
- Go to :menuselection:`Commodity --> Configuration --> Scales`.
- Click :guilabel:`Create`.
- Fill in the scale details:
- :guilabel:`Scale Name` and :guilabel:`Code`.
- :guilabel:`Location` --- physical location of the scale.
- :guilabel:`Min Capacity` and :guilabel:`Max Capacity`.
- :guilabel:`Precision` --- scale precision in kg.
- :guilabel:`Last Calibration` and :guilabel:`Next Calibration` dates.
- Click :guilabel:`Save`.
Important
Scales without a current calibration date should not be used for weighing. Maintain regular calibration audits to ensure compliance.
Vehicles
Register vehicles to enable tare weight variance detection.
- Go to :menuselection:`Commodity --> Configuration --> Vehicles`.
- Click :guilabel:`Create`.
- Fill in the vehicle details:
- :guilabel:`Plate Number` --- unique per company.
- :guilabel:`Vehicle Type` --- truck, trailer, tipper, or container.
- :guilabel:`Known Tare Weight` --- empty weight for variance checks.
- :guilabel:`Transporter` --- linked transporter partner.
- :guilabel:`Insurance Expiry` and :guilabel:`Registration Expiry`.
- Click :guilabel:`Save`.
Delivery Slots
Define time slots to manage yard throughput.
- Go to :menuselection:`Commodity --> Configuration --> Delivery Slots`.
- Click :guilabel:`Create`.
- Set the :guilabel:`Date`, :guilabel:`From` and :guilabel:`To` times, :guilabel:`Warehouse`, and :guilabel:`Max Deliveries`.
- Click :guilabel:`Save`.
Tip
The available slots counter updates in real time as deliveries are booked or cancelled. Use this to prevent yard congestion.
Transporters
Register transporter partners for vehicle fleet tracking.
- Go to :menuselection:`Commodity --> Suppliers --> Transporters`.
- Enable :guilabel:`Is Commodity Transporter` on the partner form.
- Fill in :guilabel:`Transporter License` and :guilabel:`Fleet Size`.
Security Groups
The module uses the centralized three-tier security groups from grev_od_commodity_base:
Commodity User (group_commodity_user)
- Read-only access to deliveries, weighing records, scales, scale audits, vehicles, and delivery slots.
- Cannot create or modify records.
Commodity Officer (group_commodity_officer)
- Create and edit deliveries, record weights, manage vehicles, and configure delivery slots.
- Cannot delete records.
- Inherits Commodity User permissions.
Commodity Manager (group_commodity_manager)
- Full CRUD including delete on all delivery models.
- Can modify immutable weighing records (override).
- Can manage scale configurations and audit logs.
- Inherits Commodity Officer permissions.
Note
Multi-company record rules apply to all models using the pattern ['|', ('company_id', '=', False), ('company_id', 'in', company_ids)].
Usage
Registering a Delivery
- Navigate to :menuselection:`Commodity --> Deliveries --> Deliveries`.
- Click :guilabel:`Create`.
- Fill in the required fields:
- :guilabel:`Supplier` --- must be a commodity supplier.
- :guilabel:`Commodity` --- the commodity type being delivered.
- :guilabel:`Truck Plate` and :guilabel:`Driver Name`.
- Optionally link a :guilabel:`Contract`, :guilabel:`Purchase Order`, :guilabel:`Vehicle`, and :guilabel:`Delivery Slot`.
- Click :guilabel:`Register` to move to Registered state.
Recording Weights
- From a registered delivery, click :guilabel:`Record Gross Weight` to open the weighing form.
- Select the :guilabel:`Scale` and enter the :guilabel:`Weight`.
- Optionally attach a :guilabel:`Scale Photo`.
- Click :guilabel:`Save`, then :guilabel:`Record Gross` on the delivery to advance to Gross Weighed.
- After unloading, repeat the process for the tare weight.
- Click :guilabel:`Record Tare` to advance to Tare Weighed.
Tip
Net weight is automatically computed as gross minus tare from the weighing records. No manual entry is needed.
Quality Gate and Unloading
- After gross weighing, click :guilabel:`Start Sampling` to move to Sampling state.
- Click :guilabel:`Start Quality Testing` when the sample is sent to the lab.
- Once the linked quality test shows accepted, click :guilabel:`Authorize Unload`.
- Click :guilabel:`Start Unloading` to begin the unloading process.
Warning
Unloading cannot be authorized unless the linked quality test result is accepted. Rejected deliveries must follow the rejection workflow.
Completing a Delivery
- After tare weighing, click :guilabel:`Complete`.
- The system automatically:
- Records the departure time.
- Creates a stock picking (receipt) linked to the delivery.
- Moves the delivery to Done state.
- The stock picking uses the net weight as the product quantity and the commodity product from the commodity type.
Tare Weight Variance
When a vehicle with a known tare weight is linked to a delivery, the system computes the variance between the weighed tare and the known vehicle tare.
- If variance exceeds 500 kg, an automatic warning activity is scheduled for investigation.
- The variance field is visible on the delivery form for monitoring.
Scale Calibration Audits
- Navigate to :menuselection:`Commodity --> Configuration --> Scales`.
- Select a scale and open the :guilabel:`Audit Log` tab.
- Click :guilabel:`Add a line` to record an audit event.
- Set the :guilabel:`Action` (calibration, maintenance, or inspection), :guilabel:`Result` (pass/fail), and optionally attach a :guilabel:`Certificate`.
Technical Details
Data Model
| Model | Type | Description |
|---|---|---|
| grev.commodity.delivery | Model + mail.thread | Core delivery ticket with 11-step workflow. |
| grev.commodity.weighing | Model + mail.thread | Immutable weighing records (gross/tare). |
| grev.commodity.scale | Model | Weighbridge scale configuration. |
| grev.commodity.scale.audit | Model | Scale calibration and maintenance audit log. |
| grev.commodity.vehicle | Model | Transport vehicle registry with known tare. |
| grev.commodity.delivery.slot | Model | Delivery time slot with availability tracking. |
Immutability Enforcement
- grev.commodity.weighing
- Once created, only chatter-related fields can be modified. Only users in group_commodity_manager can bypass this restriction. This ensures weighing records maintain full audit integrity.
Computed Fields
- grev.commodity.delivery
- gross_weight, tare_weight, net_weight --- computed from linked weighing records.
- moisture_deduction_kg, foreign_matter_deduction_kg, adjusted_net_weight --- computed from quality test results.
- tare_weight_variance --- difference between weighed tare and known vehicle tare.
Integrations
Upstream --- Links to grev_od_commodity_base for commodity types and grev_od_commodity_warehouse for warehouse intake. Optionally references grev_od_commodity_contract for contract linkage.
Downstream --- Consumed by grev_od_commodity_quality for quality testing, grev_od_commodity_warehouse for silo intake, and grev_od_commodity_settlement for settlement pricing using adjusted net weights.
Stock --- Auto-creates stock.picking on delivery completion, moving goods from supplier location to warehouse using the commodity product and net weight.
Troubleshooting
Cannot Authorize Unloading
Symptom: Clicking :guilabel:`Authorize Unload` raises an error.
Checks:
- Verify a quality test is linked to the delivery.
- Confirm the quality test overall result is accepted.
- If the delivery was rejected at quality testing, use the :guilabel:`Reject` action instead.
No Stock Picking Created
Symptom: Delivery completed but no stock picking appears.
Checks:
- Verify the commodity type has a linked product (:guilabel:`Product` field on the commodity type).
- Confirm a warehouse exists for the delivery's company.
- Check that the delivery has a non-zero net weight.
Tare Weight Variance Alert
Symptom: A warning activity appears about tare weight variance.
Resolution: This is expected when the weighed tare differs from the vehicle's known tare by more than 500 kg. Investigate whether the truck was not fully unloaded or the known tare weight needs updating.
See Also
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