Skip to main content
Sale Invoice – Exclude Salesperson — A build-to-order Odoo module that prevents the salesperson linked to a sales order or cu — 1/1Illustrative preview

A build-to-order Odoo module that prevents the salesperson linked to a sales order or customer from being

automatically subscribed as a follower on the resulting invoice. ECOSIRE scopes, builds, installs, and supports it for your Odoo 17.0, 18.0, or 19.0 instance.

What is Sale Invoice – Exclude Salesperson?

A build-to-order Odoo module that prevents the salesperson linked to a sales order or customer from being automatically subscribed as a follower on the resulting invoice. ECOSIRE scopes, builds, installs, and supports it for your Odoo 17.0, 18.0, or 19.0 instance. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.

Key Features

Overrides `_message_auto_subscribe_followers` / `message_auto_subscribe` on `account.move` so the salesperson partner is never enrolled as a follower at creation time
Blocks propagation of the salesperson from `sale.order.user_id` into invoices generated via the Create Invoice / down-payment flow
Preserves all legitimate followers — customer contact, accounting managers, and anyone manually subscribed — so no genuine notifications are lost
Admin-facing `res.config.settings` toggle wired into the Invoicing settings page to enable, disable, or scope the exclusion without code changes
Optional company-level and invoice-type-level flags (customer invoice, vendor bill, credit note) for granular control in multi-entity setups
Respects the partner's assigned `user_id` path as well as the sales order salesperson, covering both order-driven and customer-driven subscription sources
Server-action / automated-action variant to catch invoices created outside the UI via XML-RPC or JSON-RPC integrations
Security enforced through `ir.model.access.csv` and record rules so new settings honour your existing user groups
Idempotent and non-destructive — alters only follower subscription, never invoice amounts, sequences, journal, or posting state
Clean model inheritance via `models.Model` with minimal `@api.depends` surface, avoiding heavy overrides that break on upgrade
Compatible with Odoo 17.0, 18.0, and 19.0, adapted to Community or Enterprise accounting flows as applicable
Optional one-time data cleanup to unsubscribe salespeople already following historical invoices, run as a controlled, logged batch
QWeb / chatter behaviour left untouched so audit history and message tracking on the invoice remain complete
Written to survive standard minor-version upgrades within a major release, with no monkey-patching of core sequence or accounting logic

Built to order, done for you

No DIY setup — a working app, built, installed and supported by ECOSIRE.

  1. 1

    You order

    Start with a one-time build price. We scope it with you at kickoff.

  2. 2

    We build & install

    ECOSIRE builds, configures and installs it on your Odoo.

  3. 3

    Go live + support

    You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.

Technical Specifications

Odoo Compatibility
Odoo 17, Odoo 18, Odoo 19
Editions
Enterprise & Community
License
Licence confirmation required
Python Requirement
Python 3.10+
Database
PostgreSQL 12+

About this Product

In stock Odoo, whenever an invoice (account.move) is created from a sales order or against a customer, the salesperson on the record (user_id / the partner's assigned user_id) is silently pushed into the invoice's follower list via the mail.thread auto-subscription machinery. That means every posting, payment reminder, chatter note, and status change on that invoice fires a notification to a salesperson who has usually already handed the deal off to finance. Multiply that across hundreds of invoices a month and the sales team's Inbox becomes noise, accountants lose a clean audit trail of who is genuinely watching a document, and — in shared or brokered scenarios — a salesperson can end up seeing financial correspondence they should not. Odoo exposes no configuration switch to turn this behaviour off; the subscription is baked into the model's _creation_subtype, _track_subtype, and the message_auto_subscribe / _message_auto_subscribe_followers chain, so the only correct fix is code.

ECOSIRE builds a small, surgical module that intercepts exactly that auto-subscription path on account.move (and, where you invoice from sales, the propagation from sale.order). Rather than crudely stripping followers after the fact, we override _message_auto_subscribe_followers / message_auto_subscribe so the salesperson's partner is never enrolled in the first place, keeping the rest of Odoo's tracking intact — customers, accounting managers, and anyone manually added stay subscribed and keep getting the notifications they need. The behaviour is made configurable through a res.config.settings toggle (and, if you want finer control, a company-level or invoice-type-level flag) so administrators decide the scope without touching source again. Everything is delivered against your Odoo edition: on Community we work with the base account and sale modules; on Enterprise we account for the additional accounting and subscription flows so the exclusion holds consistently.

Technically, the build ships as a proper addon: a __manifest__.py declaring dependencies (account, and sale where relevant), a thin Python model layer using models.Model inheritance and @api.depends only where a computed helper is genuinely needed, ir.model.access.csv plus record rules so any new setting respects your security groups, and an XML settings view wired into the Invoicing configuration page. We include an optional automated-action / server-action variant for edge cases where invoices are generated by third-party integrations over XML-RPC or JSON-RPC, so records created outside the standard UI are covered too. The logic is idempotent and side-effect-free: it changes who is subscribed, never the invoice's amounts, sequence, or posting state, and it is written to survive standard Odoo upgrades within a major version.

Because this is a made-to-order build and not an existing download, delivery follows a short, predictable path. We start with a scoping call to confirm your edition, version, invoicing flows (sale-driven vs. manual vs. subscription vs. integration-created), and exactly which roles you want excluded. We then build against a copy of your configuration, validate on a staging database with UAT, and deploy with a rollback plan. Typical delivery is one working week from confirmed scope. Pricing starts from $999 (indicative, single-company base scope); multi-company rollout, additional invoicing sources (subscriptions, integrations, imported invoices), or migrating existing follower data increases the quoted scope. You receive a fixed written quote after the scoping call — never a surprise.

What you get

  • Installable, version-pinned source code for your Odoo edition (17.0, 18.0, or 19.0), packaged as a standard addon
  • Installation and configuration on your target instance, including the settings toggle wired into the Invoicing page
  • Technical documentation covering the manifest, model overrides, settings, and security rules
  • End-user guide plus a live training session for administrators and the finance team
  • Post-go-live support window for defect fixes and questions after deployment
  • UAT on a staging database with a documented, tested rollback plan before production cutover
  • Private git repository handover with full commit history and tagged release
  • Optional logged data-cleanup script to unsubscribe salespeople from existing historical invoices

Who this is for

Finance / Accounting Manager

Owns the invoicing process and wants a clean, trustworthy follower list on every `account.move` so notifications and the audit trail reflect who is genuinely responsible for a document, not whoever originally sold the deal.

Odoo Administrator / ERP Lead

Runs the Odoo instance and needs the behaviour changed the correct way — a maintainable addon with a settings toggle and proper security — rather than a hack that breaks on the next upgrade or leaks into other modules.

Sales Operations Manager

Tired of the sales team's Inbox filling with post-handoff invoice, payment, and dunning notifications, and wants salespeople focused on selling instead of muting accounting chatter document by document.

Multi-Company / Brokerage Controller

Operates several companies or handles brokered deals where a salesperson must not see another entity's financial correspondence, and needs the exclusion scoped per company and per invoice type.

How Sale Invoice – Exclude Salesperson Compares

CriterionECOSIRECustom BuildCompetitorOdoo Native
Fit to your invoicing flowsBuilt against your exact edition, version, and sale/manual/integration sourcesDepends entirely on your in-house developer's depthGeneric behaviour assumed for a typical customerNo option — salesperson always auto-subscribed
ConfigurabilitySettings toggle plus optional per-company and per-invoice-type flagsWhatever you specify and pay to buildUsually a single fixed on/off with little scope controlNone
Handling of API/integration-created invoicesOptional server-action variant covers XML-RPC/JSON-RPC recordsMust be designed and tested in-houseRarely addressed; often only the UI pathNot applicable — behaviour is always on
Security and access control`ir.model.access.csv` and record rules aligned to your groupsOnly as rigorous as your team makes itGeneric defaults, may not match your groupsStandard Odoo, unchanged
Upgrade safetyClean model inheritance, no core monkey-patching, survives minor upgradesRisk varies with developer disciplineUnknown; abandoned modules are commonN/A — you keep the unwanted behaviour
Delivery and validationStaging UAT, documented rollback, training, git handoverYou own the whole QA and delivery burdenDownload and self-install, self-supportNothing to deliver
Support after go-liveDefined support window plus full repository handoverInternal onlyBest-effort forum or ticket queueCommunity/Enterprise support won't change core behaviour
Total cost predictabilityIndicative from $999, fixed written quote after scopingOpen-ended developer timeLow sticker price, hidden fit and maintenance costFree, but the problem persists

Frequently Asked Questions about Sale Invoice

How long does delivery take?

This is a build-to-order module, not an instant download. After a short scoping call to confirm your edition, version, and invoicing flows, typical delivery is one working week from confirmed scope. That covers the build, staging UAT, and production deployment with a rollback plan.

How does pricing and scoping work?

Pricing starts from $999 as an indicative single-company base-scope figure. The exact cost depends on your edition, how many invoicing sources exist (sale-driven, manual, subscriptions, integrations), and whether you want historical follower data cleaned up. You receive a fixed written quote after the scoping call — no surprises.

What about support and future updates?

Every build includes a post-go-live support window for defect fixes and questions, and you get the full git repository so your team can maintain it. The module is written to survive standard minor upgrades within a major Odoo version; a move across major versions (e.g. 18.0 to 19.0) is a separate, quotable migration.

Will this remove legitimate followers or break my audit trail?

No. The module only prevents the salesperson from being auto-subscribed at invoice creation. Customers, accounting managers, and anyone manually added stay subscribed, and all chatter, message tracking, and audit history on the invoice remain fully intact.

Does it work on Odoo Community as well as Enterprise?

Yes. On Community we work with the base `account` and `sale` modules; on Enterprise we additionally account for the extra accounting and subscription flows so the exclusion holds consistently. We build against your specific edition and version — 17.0, 18.0, or 19.0.

What if invoices are created by an integration rather than in the Odoo UI?

We can include a server-action / automated-action variant so invoices generated over the XML-RPC or JSON-RPC API are covered too, not just those created through the standard interface. Tell us your integration sources at the scoping call and we scope for them.

Can you also clean up salespeople already following old invoices?

Yes, as an optional deliverable. We provide a controlled, logged batch script that unsubscribes salespeople from existing historical invoices, run against staging first and then production so the effect is reviewed before it touches live data.

Request a quote

Sale Invoice

A build-to-order Odoo module that prevents the salesperson linked to a sales order or customer from being automatically subscribed as a follower on the resulting invoice. ECOSIRE scopes, builds, installs, and supports it for your Odoo 17.0, 18.0, or 19.0 instance.

  • Overrides `_message_auto_subscribe_followers` / `message_auto_subscribe` on `account.move` so the salesperson partner is never enrolled as a follower at creation time
  • Blocks propagation of the salesperson from `sale.order.user_id` into invoices generated via the Create Invoice / down-payment flow
  • Preserves all legitimate followers — customer contact, accounting managers, and anyone manually subscribed — so no genuine notifications are lost
  • Admin-facing `res.config.settings` toggle wired into the Invoicing settings page to enable, disable, or scope the exclusion without code changes

Request a Quotation

Tell us about your Sale Invoice requirements and we'll send pricing, licensing options and a tailored proposal — usually within one business day.

No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.