KTM Cargo Management
Built for grain-storage operations. A truck arriving is a deposit, not a purchase — the grain stays the owner's until you actually buy it. Trucks are weighed and sampled, quality deductions are applied, and the owner is credited the net analyzed weight against a running custody balance.
⚖️ Weigh & analyze
Gross − Tare = Net; Net − Deductions = Net Analyzed. The deducted portion is your fee in kind.
📋 Deduction tables
Per product or category, scoped to receptions, sales and/or returns. Measured thresholds or fixed "kg per ton" rates.
📒 Custody ledger
Received, credited, purchased, returned, endorsed and available — per owner, per product. Overdrawing is blocked.
Five events, five documents
Reception (depósito)
No purchase order. The owner is credited the net analyzed weight; only the deduction is received into your stock.
Purchase (liquidación)
Buy part or all of an owner's custody balance. No truck. Creates a normal Purchase Order and receipt.
Sale
Your own grain. Sale Order at the full net weight; quality becomes a line discount, so your margin stays honest.
Return (retiro)
The owner withdraws his grain. It was never your stock, so nothing is delivered in Odoo — the ledger moves and the boleta prints.
Endorsement (endoso)
One owner signs his stored grain over to another. No truck, no fee — the grain never moves, only the balance does.
Each movement runs through New → In Progress → Validated → Done and captures the owner, driver, truck, addresses, weights and the live quality analysis. Once validated, the figures are frozen server-side — the owner has already been credited.
Deduction tables
Define quality deductions once and reuse them. Each table applies to product categories or specific products, is a measured table or a fixed rate, and expresses its rate as a real unit ratio (e.g. kg per ton).
Scope is three independent switches — Receptions, Sales, Returns — so an owner-facing handling fee can apply on the way in and on the way out, without touching your own sales.
A measured table maps a measured value to a deduction using lower-bound thresholds (the highest line whose measured value is ≤ the reading). Tick Rate per Measured Unit and the rate is multiplied by the reading instead (1 kg/ton per gram of impurities: 10.7 g deducts 10.7 kg/ton). The rate and its units are snapshotted onto the movement, so editing a table never rewrites history.
Owner balance
Custody grain never enters Odoo stock — it is not yours. This ledger, built from the cargo documents, is the record of what you owe each owner:
Credited
Net analyzed weight of the owner's done receptions.
Purchased
Custody grain you have bought — confirmed counts immediately.
Returned
Withdrawn by the owner: the net weight plus any withdrawal fee.
Endorsed
Signed over to another owner — down for him, up for the one receiving it.
Available
Credited − Purchased − Returned − Endorsed. Overdrawing it is blocked.
Browse it under Cargo Management → Owner Balance (list & pivot), or from the Grain Balance smart button on a contact. Every row can start a reception, a purchase or a return for that owner and product.
Printable tickets
Every movement prints a PDF Boleta — DE ENTRADA — DEPÓSITO, DE SALIDA, or DE SALIDA — RETIRO DE DEPÓSITO — with the reference, addresses, weight detail, quality analysis, the custody amount credited or charged, and signatures. Purchases print a Liquidación settlement note, and an owner can request a full statement of every movement on his balance at any time.
Setup notes
- Grain products must be storable, use kg as their unit of measure, and carry a cost — a zero-cost product blocks validation rather than letting a zero-value receipt drag its running cost down.
- Weigh trucks in kg, not tons. Odoo's weight precision is 2 decimals, so a weight entered in tons is quantized to 10 kg.
- Nothing to configure for the fee in kind — it enters your warehouse stock directly, against the company's standard Inventory Adjustment location.
- Because custody grain is off your books, do not run a naive physical count on the warehouse and do not set reordering rules on grain products.
- Two security groups: Cargo Movement User and Cargo Movement Management.
- Requires Purchase and Sales (with Inventory) already installed.
Kaitim · Odoo 19.0
Built for grain-storage operations. A truck arriving is a deposit, not a purchase — the grain stays the owner's until you actually buy it. Trucks are weighed and sampled, quality deductions are applied, and the owner is credited the net analyzed weight against a running custody balance.
⚖️ Weigh & analyze
Gross − Tare = Net; Net − Deductions = Net Analyzed. The deducted portion is your fee in kind.
📋 Deduction tables
Per product or category, scoped to receptions, sales and/or returns. Measured thresholds or fixed "kg per ton" rates.
📒 Custody ledger
Received, credited, purchased, returned, endorsed and available — per owner, per product. Overdrawing is blocked.
Five events, five documents
Reception (depósito)
No purchase order. The owner is credited the net analyzed weight; only the deduction is received into your stock.
Purchase (liquidación)
Buy part or all of an owner's custody balance. No truck. Creates a normal Purchase Order and receipt.
Sale
Your own grain. Sale Order at the full net weight; quality becomes a line discount, so your margin stays honest.
Return (retiro)
The owner withdraws his grain. It was never your stock, so nothing is delivered in Odoo — the ledger moves and the boleta prints.
Endorsement (endoso)
One owner signs his stored grain over to another. No truck, no fee — the grain never moves, only the balance does.
Each movement runs through New → In Progress → Validated → Done and captures the owner, driver, truck, addresses, weights and the live quality analysis. Once validated, the figures are frozen server-side — the owner has already been credited.
Deduction tables
Define quality deductions once and reuse them. Each table applies to product categories or specific products, is a measured table or a fixed rate, and expresses its rate as a real unit ratio (e.g. kg per ton).
Scope is three independent switches — Receptions, Sales, Returns — so an owner-facing handling fee can apply on the way in and on the way out, without touching your own sales.
A measured table maps a measured value to a deduction using lower-bound thresholds (the highest line whose measured value is ≤ the reading). Tick Rate per Measured Unit and the rate is multiplied by the reading instead (1 kg/ton per gram of impurities: 10.7 g deducts 10.7 kg/ton). The rate and its units are snapshotted onto the movement, so editing a table never rewrites history.
Owner balance
Custody grain never enters Odoo stock — it is not yours. This ledger, built from the cargo documents, is the record of what you owe each owner:
Credited
Net analyzed weight of the owner's done receptions.
Purchased
Custody grain you have bought — confirmed counts immediately.
Returned
Withdrawn by the owner: the net weight plus any withdrawal fee.
Endorsed
Signed over to another owner — down for him, up for the one receiving it.
Available
Credited − Purchased − Returned − Endorsed. Overdrawing it is blocked.
Browse it under Cargo Management → Owner Balance (list & pivot), or from the Grain Balance smart button on a contact. Every row can start a reception, a purchase or a return for that owner and product.
Printable tickets
Every movement prints a PDF Boleta — DE ENTRADA — DEPÓSITO, DE SALIDA, or DE SALIDA — RETIRO DE DEPÓSITO — with the reference, addresses, weight detail, quality analysis, the custody amount credited or charged, and signatures. Purchases print a Liquidación settlement note, and an owner can request a full statement of every movement on his balance at any time.
Setup notes
- Grain products must be storable, use kg as their unit of measure, and carry a cost — a zero-cost product blocks validation rather than letting a zero-value receipt drag its running cost down.
- Weigh trucks in kg, not tons. Odoo's weight precision is 2 decimals, so a weight entered in tons is quantized to 10 kg.
- Nothing to configure for the fee in kind — it enters your warehouse stock directly, against the company's standard Inventory Adjustment location.
- Because custody grain is off your books, do not run a naive physical count on the warehouse and do not set reordering rules on grain products.
- Two security groups: Cargo Movement User and Cargo Movement Management.
- Requires Purchase and Sales (with Inventory) already installed.
Kaitim · Odoo 19.0
Specifications
| Odoo Version | 19.0, 20.0 |