| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Inventory (stock) |
| Community Apps Dependencies | Show |
| Lines of code | 4222 |
| Technical Name |
grev_od_commodity_warehouse |
| License | OPL-1 |
| Website | https://www.grevlin.com |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Inventory (stock) |
| Community Apps Dependencies | Show |
| Lines of code | 4222 |
| Technical Name |
grev_od_commodity_warehouse |
| License | OPL-1 |
| Website | https://www.grevlin.com |
🌏 Commodity WarehouseSilo & Bin Management for Bulk Commodity Storage â Capacity Tracking, Fumigation Control, Temperature Monitoring & Odoo Inventory Integration
|
|
|
|
|
|
📞 Need Help?
|
|
Grevlin Agribusiness Suite Enterprise-Grade Commodity Procurement Solutions for Odoo © 2026 Grevlin Global Corp. All Rights Reserved. Compatible with Odoo 19.0 | Licensed under OPL-1 |
Commodity Warehouse
The Commodity Warehouse module extends Odoo's native stock.location model into purpose-built commodity silos and bins with real-time capacity utilization, fumigation lifecycle tracking, temperature monitoring with threshold alerts, and structured commodity intake that creates stock moves automatically. It is part of the Grevlin Agribusiness Suite.
Overview
This module adds commodity storage management on top of standard Odoo inventory locations. Silos and bins remain stock.location records, so all Odoo inventory reports, quant tracking, and picking workflows continue to work without modification.
Key Capabilities
- Silo & Bin Management -- silos and bins as native stock locations with dedicated commodity type, capacity in tons, and computed utilization percentage.
- Commodity Intake -- structured intake records with auto-generated sequence, batch number, grade, and operator tracking. Confirmation creates a stock.move from supplier to silo.
- Fumigation Tracking -- full fumigation lifecycle (scheduled, in progress, withholding, cleared) with chemical/dosage recording, withholding period enforcement, and certificate attachments.
- Temperature Monitoring -- temperature and humidity readings per silo with configurable thresholds and auto-computed alert flags.
- Silo Condition Engine -- computed condition (Good / Attention / Critical) based on temperature, utilization, and fumigation status.
- Inter-Silo Transfers -- one-click creation of internal stock.picking transfers between silos.
- Scheduled Crons -- daily temperature alert checks and 90-day fumigation schedule reminders for stocked silos.
Note
This module depends on grev_od_commodity_base for shared commodity types, grades, and centralized security groups. It integrates optionally with commodity_delivery for intake sourcing and agri_traceability for batch tracking.
Configuration
Creating Silos
- Go to :menuselection:`Inventory --> Configuration --> Warehouses` and select the warehouse where the silo is located.
- Navigate to :menuselection:`Inventory --> Configuration --> Locations`.
- Click :guilabel:`Create`.
- Enable :guilabel:`Is Commodity Silo`.
- Set:
- :guilabel:`Commodity Code` -- short identifier (e.g. S-001).
- :guilabel:`Dedicated Commodity` -- the commodity type stored.
- :guilabel:`Capacity (Tons)` -- maximum storage capacity.
- :guilabel:`Max Temperature Threshold` -- alert threshold in degrees Celsius (default 35.0).
- Click :guilabel:`Save`.
Creating Bins
Bins are child locations of a silo.
- Open the parent silo location.
- Click :guilabel:`Create` on a child location.
- Enable :guilabel:`Is Commodity Bin`.
- Set :guilabel:`Capacity (Tons)` for the bin.
- The :guilabel:`Dedicated Commodity` auto-fills from the parent silo when changed via the onchange handler.
- Click :guilabel:`Save`.
Tip
Bins inherit the commodity type from their parent silo automatically. You can override this on individual bins if needed.
Scheduled Actions
Two crons ship with the module. Both are active by default.
| Cron | Frequency | Purpose |
|---|---|---|
| Temperature Alert Check | Daily | Creates activity alerts on silos where the last temperature reading exceeds the configured threshold. |
| Fumigation Schedule Check | Daily | Creates activity reminders on stocked silos that have not been fumigated in over 90 days. |
Security Groups
This module uses the centralized commodity security groups defined in grev_od_commodity_base:
Commodity User (group_commodity_user)
- Read-only access to silos, bins, intakes, fumigation records, and temperature readings.
Commodity Officer (group_commodity_officer)
- Create and edit silos, bins, intakes, fumigation records, and temperature readings.
- Cannot delete records.
- Inherits Commodity User permissions.
Commodity Manager (group_commodity_manager)
- Full CRUD including delete on all warehouse models.
- 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
Recording a Commodity Intake
- Navigate to :menuselection:`Commodity --> Warehouse --> Intakes`.
- Click :guilabel:`Create`.
- Fill in:
- :guilabel:`Silo` -- the destination silo location.
- :guilabel:`Bin` -- optional child bin within the silo.
- :guilabel:`Commodity` -- the commodity type being received.
- :guilabel:`Quantity` -- weight in the commodity's unit of measure.
- :guilabel:`Grade` -- commodity grade (from commodity_base).
- :guilabel:`Batch Number` -- for traceability.
- Click :guilabel:`Confirm`. This creates a stock.move from the supplier location to the selected silo (or bin).
Managing Fumigations
- Open a silo location form.
- Click the :guilabel:`Fumigation Records` tab or navigate to :menuselection:`Commodity --> Warehouse --> Fumigations`.
- Click :guilabel:`Create`.
- Fill in :guilabel:`Chemical`, :guilabel:`Dosage` (e.g. 5g/m3), and :guilabel:`Withholding Period (Days)`.
- Use the workflow buttons:
- :guilabel:`Start` -- moves to In Progress.
- :guilabel:`Withhold` -- moves to Withholding.
- :guilabel:`Clear` -- moves to Cleared (blocked if before the computed clearance date).
- Optionally attach a fumigation certificate via the :guilabel:`Certificate` field.
Important
The system enforces the withholding period. Attempting to clear a fumigation before the clearance date raises a UserError.
Recording Temperature Readings
- Navigate to :menuselection:`Commodity --> Warehouse --> Temperature Readings`.
- Click :guilabel:`Create`.
- Select the :guilabel:`Silo`, enter :guilabel:`Temperature` and optionally :guilabel:`Humidity`.
- Click :guilabel:`Save`. The :guilabel:`Alert Triggered` flag computes automatically if the reading exceeds the silo threshold.
The silo form displays :guilabel:`Last Temperature` and :guilabel:`Condition` (Good / Attention / Critical) as computed fields.
Creating Inter-Silo Transfers
- Open the source silo location form.
- Click :guilabel:`Create Silo Transfer`.
- The system creates an internal stock.picking pre-filled with the silo as source location.
- Add stock move lines for the products to transfer.
- Validate the picking through the standard Odoo workflow.
Reading the Silo Condition
The :guilabel:`Condition` field on silos is computed automatically:
| Condition | Trigger |
|---|---|
| Critical | Temperature exceeds threshold OR utilization > 95%. |
| Attention | Temperature > 85% of threshold, utilization > 80%, or silo is under active fumigation. |
| Good | All parameters within normal range. |
Technical Details
Data Model
| Model | Type | Description |
|---|---|---|
| stock.location | Extended | Adds silo/bin flags, capacity, utilization, fumigation, and temperature fields. |
| grev.commodity.intake | Model + mail.thread | Commodity intake records with stock move creation. |
| grev.commodity.fumigation | Model + mail.thread | Fumigation lifecycle records with withholding enforcement. |
| grev.commodity.temperature.reading | Model | Temperature and humidity readings per silo. |
Dependencies
- base -- Odoo core.
- stock -- Odoo Inventory for stock.location, stock.move, stock.picking, and stock.quant.
- mail -- chatter and activity tracking.
- grev_od_commodity_base -- commodity types, grades, and security groups.
Troubleshooting
Utilization Shows 0% Despite Stock
Symptom: A silo contains stock but silo_utilization_pct shows 0.
Checks:
- Verify :guilabel:`Capacity (Tons)` is set to a value greater than 0 on the silo location.
- Confirm stock quants exist on the silo location (check :menuselection:`Inventory --> Reporting --> Inventory Valuation` or the stock.quant model directly).
- The field is compute + store=True and depends on quant_ids.quantity. If quants were created externally, trigger a recompute by saving the location record.
Fumigation Cannot Be Cleared
Symptom: Clicking :guilabel:`Clear` raises an error.
Checks:
- The clearance date is computed as fumigation date plus the withholding period in days. The system blocks clearance before this date.
- Verify the :guilabel:`Withholding Period (Days)` is correct.
- Wait until the clearance date or adjust the withholding period if it was set incorrectly.
Temperature Alerts Not Triggering
Symptom: No activity alerts despite high temperature readings.
Checks:
- Confirm the Temperature Alert Check scheduled action is active.
- Verify the silo has :guilabel:`Max Temperature Threshold` set.
- Check that :guilabel:`Last Temperature` on the silo exceeds the threshold -- the cron only alerts when last_temperature is greater than max_temperature_threshold.
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