| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Sales (sale_management) • Discuss (mail) |
| Community Apps Dependencies | Show |
| Lines of code | 4837 |
| Technical Name |
eh_log_quotation |
| License | LGPL-3 |
| Website | https://www.erpheritage.com.au/ |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Sales (sale_management) • Discuss (mail) |
| Community Apps Dependencies | Show |
| Lines of code | 4837 |
| Technical Name |
eh_log_quotation |
| License | LGPL-3 |
| Website | https://www.erpheritage.com.au/ |
Logistics Quotation
Turn the standard sale order into a freight quotation with live margin, credit, and KYC guards, lane charge templates, a preflight checklist, and an audited approval gate.
Why this module
Logistics Quotation
Margin and credit checked before the customer sees a number
Gross margin recomputes on every line edit against planned cost, with disbursement lines excluded so agency pass-throughs do not inflate the percentage. Customer exposure is read live from posted, unreconciled receivables and compared to the approved credit limit. Below the floor margin or over the limit, the order cannot confirm without a recorded decision.
Charge codes and templates the whole back office shares
Each line carries a charge code from the central catalogue plus a leg classification, so reports group cleanly and downstream forwarding jobs, customs declarations, and transport orders all trace back to one sale order. Lane templates load a full charge bundle, default quantities, unit prices, and planned costs in one click.
Every override is stamped, posted, and logged
When a guard pings, confirmation is gated until a logistics manager approves. The approval stamps the user and timestamp, posts the reasons to the chatter, and writes an entry to the operational event log so an auditor can reconstruct who approved what, when, and why.
Day in the life
A rate request lands at 9am
An operator opens a new quotation, picks the customer, and ticks Logistics. The form immediately surfaces the customer's credit posture. They apply the Sea FCL template, which drops in Origin THC, Ocean Freight, BAF, ISPS, Destination THC, and delivery as priced lines with planned costs attached, then set the mode, direction, and the origin and destination countries. The margin header shows amber: below the warning threshold but above the floor. They trim one cost line back to green, run the preflight checklist, clear two soft warnings about a missing Incoterm and an unset origin country, and confirm. No surprises reach the customer, and the whole decision trail is on the chatter.
Edge cases
The cases most modules quietly ignore.
In the shipped code today, each one a place where a cheaper module silently does the wrong thing.
Lines whose charge code is flagged as a disbursement are excluded from both planned cost and billable revenue, so agency-fee pass-throughs never distort the gross margin percentage the guard checks against.
Two company thresholds split margin into healthy, warning, and below-floor. The warning band only flags; below the floor sets requires-approval and blocks confirmation until a manager stamps the decision.
Exposure is summed from posted, unreconciled receivables in company currency. At or above 100 percent of the approved limit the confirm action raises a typed credit error offering to reduce the quote, request a credit review, or take a deposit.
When the customer has no approved limit, the guard reports healthy rather than dividing by zero or silently blocking, and the message states plainly that no limit is on file.
Applying a template appends by default. Replace mode deletes only existing lines that carry a charge code, so hand-entered non-logistics product lines are always preserved.
Disabling the logistics flag while charge-coded lines remain raises a warning, because doing so would skip the margin, credit, and KYC guards at confirmation.
Matching origin and destination countries nudge the operator to switch to cross trade, and cross-trade air is flagged because it needs forwarder presence in both countries.
The KYC guard is wired into confirm, preflight, and approval here, but the live document-expiry evaluation is delivered by the dedicated Logistics KYC module. Without it, KYC reads as not assessed rather than falsely passing.
What is inside
Built to do the job, end to end.
- Margin guard with company thresholds. Planned cost, billable revenue, gross margin, and margin percentage are stored computes on the sale order. A warning threshold and a floor threshold live on the company record, so multi-company groups configure tolerances independently. Below floor sets the requires-approval flag and the approval reasons text.
- Credit guard from live receivables. Exposure is read from posted, unreconciled receivable journal items in company currency and compared to res.partner.credit_limit. A company warning percentage drives the amber band; 100 percent of the limit blocks confirmation with an actionable message. The resolver method is the documented override point for richer credit modules.
- Charge templates and the apply wizard. A charge template is a named, company-scopable bundle of charge-code lines with default quantity, unit price, planned cost, and leg. The apply wizard turns each template line into a sale order line, pulls mode, direction, and the country pair onto the order when blank, and posts a chatter note recording the template and line count.
- Preflight checklist wizard. One button aggregates eleven checks, margin, credit, KYC, mode, direction, origin, destination, Incoterm, charge codes on every line, cost on every billable line, and approval state, each with a status, a message, and a suggested action. The overall status is the worst row, so the operator fixes everything in one pass.
- Gated approval with audit trail. action_eh_log_approve is restricted to the logistics manager group and only fires when a guard surfaces a blocking reason. It stamps approver and timestamp, posts the reasons to the chatter, and writes an entry to the operational event log in the approval category with margin and credit context attached.
- Mass actions and activity nudges. List-view wizards mass-approve eligible quotations, mass-cancel with a reason recorded to every chatter, and mass-send for review by assigning a follow-up activity with a deadline. Quotations awaiting approval can be nudged as activities on the responsible user.
Honest about the edges
What this does not do, so nothing surprises you.
- The KYC guard plumbing ships here, but live document-expiry evaluation requires the separate Logistics KYC module. Without it, KYC status reads as not assessed and does not block.
- This module prices and quotes. It does not create freight jobs, customs declarations, or transport orders itself. Those operational records are created by the separate freight forwarding, customs broker, and road transport modules built on top of it.
- Charge templates are static quick-pick bundles, not a rate engine. There is no time-bounded validity, surcharge schedule, or contract negotiation here; planned cost is the operator's estimate until real vendor quotes arrive.
- No customs EDI, regulator adapters, HS-code validation, dangerous-goods classification, container or seal tracking, or shipment-event ingest are part of this module. It extends the sale order only.
- Credit exposure uses the standard res.partner.credit_limit and posted receivables. It is not a real-time credit-bureau integration.
- Cost is sourced from the standard sale_margin purchase_price field on the line; sale_margin is a required dependency.
- Origin and destination locations are free text at this layer. Structured port and airport master data is introduced by the freight forwarding module.
odoo freight quotation, logistics sale order extension, freight forwarding quote odoo, charge code template odoo, shipment margin guard, customer credit guard odoo, 3PL quotation module, multi-leg freight pricing, logistics charge codes, preflight checklist sale order, manager approval matrix odoo, disbursement handling freight, NVOCC quotation, sea air road freight quote, odoo 19 community logistics
Please log in to comment on this module
There are no comments yet!