Skip to main content
Product details are displayed in English. Translations coming soon.
Manual Currency Exchange Rate — A build-to-order Odoo module that lets finance teams manually set the currency exchange rate  — 1/1مثالی پیش منظر

A build-to-order Odoo module that lets finance teams manually set the currency exchange rate directly on

individual sales orders, purchase orders, and invoices — overriding the daily company rate per document when the deal was struck at a negotiated or contractual rate.

ECOSIRE builds, installs, and supports it for your Odoo 17, 18, or 19 database.

Manual Currency Exchange Rate کیا ہے؟

A build-to-order Odoo module that lets finance teams manually set the currency exchange rate directly on individual sales orders, purchase orders, and invoices — overriding the daily company rate per document when the deal was struck at a negotiated or contractual rate. ECOSIRE builds, installs, and supports it for your Odoo 17, 18, or 19 database. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.

اہم خصوصیات

Adds a per-document `manual_currency_rate` field plus a `manual_rate_active` toggle on `sale.order`, `purchase.order`, and `account.move` so each document can override the company rate independently
Overrides Odoo's automatic `res.currency.rate` lookup only when the toggle is on, leaving all other documents on the standard daily rate untouched
Recomputes company-currency amounts through inherited `_compute_amount`/`_compute_tax_totals` with correct `@api.depends` so totals refresh instantly when the rate or currency changes
Propagates the chosen rate from sales orders and purchase orders onto the generated `account.move` so quote-to-invoice and PO-to-bill flows keep one consistent rate
Writes the manual rate into `account.move.line` company-currency values (`amount_currency` vs `balance`) so the general ledger and tax lines post at the transacted rate
Access-controlled via `ir.model.access.csv` and record rules — only nominated groups (e.g. Billing Administrator) can set or edit an override
Full audit trail: every manual-rate change is logged to the document chatter (`mail.thread`) and shown on-screen with an active-override indicator
Clean view extensions via XML `xpath` inheritance — no core form is replaced, so the field sits next to the currency and survives upgrades
Optional QWeb report adjustments so the applied exchange rate prints on the invoice, order confirmation, or bill PDF
Manual rate readable and writable over the XML-RPC/JSON-RPC API for external billing or ERP integrations
Sensible guardrails: validation on the entered rate (positive, non-zero) and clear behavior when a document currency equals the company currency
Handles exchange-difference implications so reconciliation and currency revaluation reflect the manual rate rather than a masked variance
Built and tested against Odoo 17.0, 18.0, and 19.0, with Community vs Enterprise accounting differences accounted for
Optional default-rate rules (e.g. inherit a negotiated rate from the partner or a linked contract) scoped on request

آرڈر پر تیار، مکمل طور پر آپ کے لیے

خود سیٹ اپ کی ضرورت نہیں — ایک کام کرنے والی ایپ جو ECOSIRE بناتا، انسٹال اور سپورٹ کرتا ہے۔

  1. 1

    آپ آرڈر دیتے ہیں

    ایک بار کی تعمیر کی قیمت سے آغاز کریں۔ آغاز پر ہم آپ کے ساتھ مل کر دائرہ کار طے کرتے ہیں۔

  2. 2

    ہم بناتے اور انسٹال کرتے ہیں

    ECOSIRE اسے آپ کے Odoo پر بناتا، ترتیب دیتا اور انسٹال کرتا ہے۔

  3. 3

    لائیو + معاونت

    آپ تقریباً ایک کاروباری ہفتے میں لائیو ہو جاتے ہیں، گو لائیو کے بعد دو ہفتوں کی معاونت کے ساتھ۔ ہمارے فراہم کردہ کوڈ کی خرابیاں مفت درست کی جاتی ہیں۔

تکنیکی تفصیلات

Odoo ہم آہنگی
Odoo 17, Odoo 18, Odoo 19
ایڈیشنز
Enterprise اور Community
لائسنس
لائسنس کی تصدیق درکار ہے
Python کی ضرورت
Python 3.10+
ڈیٹابیس
PostgreSQL 12+

اس مصنوع کے بارے میں

Odoo applies a single company-wide exchange rate per currency per date, resolved automatically from res.currency.rate when a foreign-currency document is confirmed. That works until reality diverges from the rate table: a customer was quoted at a fixed contractual rate weeks ago, a purchase was hedged at a rate your bank locked in, or a payment cleared at a rate that differs from the day's official figure. In stock Odoo the finance user has no clean way to say "this specific invoice should convert at 3.75, not today's 3.71" — they end up editing the global rate (which corrupts every other document dated that day), booking manual exchange-difference journal entries, or reconciling the variance after the fact. Every one of those workarounds is error-prone and audit-unfriendly.

We build a focused module that adds a per-document manual_currency_rate field (with a manual_rate_active boolean toggle) to sale.order, purchase.order, and account.move. When the toggle is on, the document's currency conversion uses your entered rate instead of the company rate pulled from res.currency.rate. Technically this means extending the relevant models via models.Model inheritance, overriding the _compute_amount/_compute_tax_totals and currency_rate computations (with correct @api.depends so amounts recompute the moment the rate or currency changes), and propagating the chosen rate through the sale-to-invoice and purchase-to-bill flows so the manually set rate carries onto the generated account.move. The company amount (amount_total_signed, amount_currency vs balance on account.move.line) is derived from your rate, so the general ledger, tax lines, and currency-exchange postings all reflect the number you actually transacted at — not the table default.

The implementation ships with proper access control and an audit trail. Editing the manual rate is gated through ir.model.access.csv and record rules so only the groups you nominate (typically Accounting / Billing Administrator) can override a rate, and every override is visible on the document and captured in the chatter/mail.thread log for auditors. Views are extended cleanly via XML inheritance (xpath into the existing order and invoice forms) so the field appears next to the currency with an on-screen indicator when a manual rate is in effect, and QWeb report templates are optionally adjusted so the applied rate prints on the PDF invoice or order confirmation. The manually set rate is also exposed through the standard XML-RPC/JSON-RPC API, so external systems that create or read these documents can set and audit the rate programmatically. We target Odoo 17.0, 18.0, and 19.0 and account for Community vs Enterprise differences in the accounting layer where they matter.

Because this is a productized service, nothing is downloaded and switched on instantly. After a short scoping call we confirm exactly which documents need the override, which user groups may set it, how it should behave on the sale/purchase-to-invoice handoff, and whether reports and API access are in scope. We then build against a copy of your Odoo version, deliver on a staging database for your UAT, and go live with a rollback plan. Typical delivery is one working week from confirmed scope. Pricing starts from $999 (indicative, single-company base scope); multi-company setups, deeper accounting/localization requirements (e.g. specific exchange-difference posting rules), extra documents, and integration or data-migration work increase the quoted scope.

What you get

  • Installable module source code built specifically for your Odoo major version (17.0, 18.0, or 19.0)
  • Installation and configuration on your environment, including user-group and access-rule setup for who may override rates
  • Technical documentation: model/field reference, `__manifest__.py`, dependencies, and extension points
  • End-user guide plus a live training session for your finance/billing team
  • UAT on a staging database with a documented rollback plan before any production change
  • A defined post-go-live support window for fixes and questions
  • Git repository handover with tagged release and commit history
  • Optional QWeb report and XML-RPC/JSON-RPC integration notes where those are in scope

Who this is for

Finance / Accounting Manager

Runs multi-currency AR/AP in Odoo and needs invoices and bills to book at the rate actually agreed or paid, not the daily table rate — without corrupting the global `res.currency.rate` or piling up manual journal corrections.

Odoo Administrator / Internal Consultant

Owns the Odoo instance and wants a clean, upgrade-safe module (proper model inheritance, access rules, XML view extensions) rather than a fragile in-house patch, plus a git handover they can maintain.

Import/Export or Cross-Border Sales Operation

Quotes customers and buys from suppliers at negotiated or contractual FX rates that differ from the market rate, and needs each order and invoice to carry its own locked rate through to the ledger.

External Integrator / Systems Team

Pushes and pulls sales, purchase, and invoice data via XML-RPC/JSON-RPC and needs the manual rate to be a first-class, auditable field they can set and read programmatically.

How Manual Currency Exchange Rate Compares

CriterionECOSIRECustom BuildCompetitorOdoo نیٹو
Delivery modelBuild-to-order for your exact version; installed and supported by usBespoke in-house build from scratchInstant download, generic implementationNo such feature to deliver
Per-document rate overrideToggle + rate field on SO, PO, and invoice, scoped to your flowsWhatever you have time to build and testUsually a fixed set of documents, take it or leave itNot possible — one company rate per date
Global rate safetyOverride is isolated per document; `res.currency.rate` untouchedDepends on the developer's careVaries; often does isolate correctlyOnly workaround is editing the global rate — corrupts other docs
Ledger accuracyRate drives `account.move.line` balances, tax, and FX postingsMust be engineered and verified by youTypically covers invoices; edge cases uncertainRequires manual exchange-difference journal entries
Access control & auditGroup-gated via record rules + chatter log of every changeAs designed, if you prioritize itOften minimal or absentN/A
Upgrade safetyClean model + XML `xpath` inheritance, git handoverOnly as clean as the in-house codeYou depend on the vendor's upgrade cadenceN/A
Support & sourceSupport window + full git repo handoverYou own and staff all maintenanceVendor support terms, source may be obfuscatedStandard Odoo support only
Total cost profileFrom $999 indicative; fixed quote after scopingHigh developer time and QA costLow sticker price, poor fit risk$0 but the gap stays unsolved

Frequently Asked Questions about Manual Currency Exchange Rate

How long does delivery take?

This is a build-to-order module, not an instant download. Typical delivery is one working week from the moment scope is confirmed on our scoping call. Simple single-company scope lands toward the shorter end; multi-company, extra documents, report changes, or integration work extends it. We agree the timeline in writing before starting.

How does pricing and scoping work?

Pricing starts from $999 as an indicative figure for a single-company base scope. After a short scoping call we confirm exactly which documents, user groups, report changes, and integrations are in scope, then send a fixed written quote. The from-price is a starting point, not a firm quote — the fixed number is set once scope is agreed.

What about support and Odoo version updates?

Every build includes a defined post-go-live support window for fixes and questions. Because we hand over the git repository, you can maintain it yourself afterwards, or we can carry it forward under a support arrangement. When you upgrade Odoo (e.g. 18 to 19), we can quote a compatibility pass — the module is written with clean inheritance to make that straightforward.

Will this corrupt the company's global exchange rates?

No. The override is strictly per-document and only takes effect when the manual-rate toggle is switched on. The shared `res.currency.rate` table and every other document that relies on it are left completely untouched. That is the entire point of the module versus the workaround of editing the global rate.

Does the manual rate flow through to the accounting entries?

Yes. The rate you set drives the company-currency amounts on the invoice or bill, so `account.move.line` balances, tax lines, and any exchange-difference postings reflect the rate you actually transacted at. It also carries from a sales order or purchase order onto the generated invoice or vendor bill.

Which Odoo versions and editions are supported?

We build for Odoo 17.0, 18.0, and 19.0, on either Community or Enterprise. We account for the accounting-layer differences between editions during scoping and target the exact version and edition your database runs.

Can external systems set the rate through the API?

Yes. The manual rate is a standard model field, so it is readable and writable over Odoo's XML-RPC/JSON-RPC API. Integrations that create sales orders, purchase orders, or invoices can set the rate programmatically, and audits can read the applied rate back out.

آرڈر پر تیار
Mailchimp Two-Way Sync
Odoo

Mailchimp Two-Way Sync

Two-way sync of Odoo contacts and segments with Mailchimp audiences, pulling campaign opens and clicks back into your CRM.

From $999.00ابتدائی قیمت — آپ کے دائرۂ کار کے مطابق مقرر کی جائے گی
آرڈر پر تیار
Marketing Automation Workflow Builder
Odoo

Marketing Automation Workflow Builder

Visual multi-step campaign workflows coordinating email, SMS and CRM actions on Odoo Community 17/18/19. Built to order.

From $999.00ابتدائی قیمت — آپ کے دائرۂ کار کے مطابق مقرر کی جائے گی
قیمت کا تخمینہ طلب کریں

Manual Currency Exchange Rate

A build-to-order Odoo module that lets finance teams manually set the currency exchange rate directly on individual sales orders, purchase orders, and invoices — overriding the daily company rate per document when the deal was struck at a negotiated or contractual rate. ECOSIRE builds, installs, and supports it for your Odoo 17, 18, or 19 database.

  • Adds a per-document `manual_currency_rate` field plus a `manual_rate_active` toggle on `sale.order`, `purchase.order`, and `account.move` so each document can override the company rate independently
  • Overrides Odoo's automatic `res.currency.rate` lookup only when the toggle is on, leaving all other documents on the standard daily rate untouched
  • Recomputes company-currency amounts through inherited `_compute_amount`/`_compute_tax_totals` with correct `@api.depends` so totals refresh instantly when the rate or currency changes
  • Propagates the chosen rate from sales orders and purchase orders onto the generated `account.move` so quote-to-invoice and PO-to-bill flows keep one consistent rate

قیمت کا تخمینہ طلب کریں

ہمیں Manual Currency Exchange Rate کے لیے اپنی ضروریات بتائیں اور ہم آپ کو قیمتیں، لائسنس کے اختیارات اور ایک مخصوص تجویز بھیجیں گے — عام طور پر ایک کاروباری دن میں۔

ابھی کوئی ادائیگی نہیں۔ یہ ہماری ٹیم کو قیمت کی درخواست بھیجتا ہے — ہم قیمت اور اگلے اقدامات کے ساتھ ای میل کے ذریعے رابطہ کریں گے۔