| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Subscriptions (sale_subscription)
• Sales (sale_management) • Discuss (mail) • Invoicing (account) |
| Lines of code | 40 |
| Technical Name |
subscription_draft_invoice |
| License | OPL-1 |
| Website | https://www.logicaconsultores.com |
Subscription Draft Invoice
Keep auto-generated subscription invoices in Draft until you're ready to post them
Odoo 19 · EnterpriseOverview
Since Odoo 16, the subscription scheduler posts invoices automatically — with no way to review them first. This module brings back the control you had in Odoo 15 and earlier: a simple toggle on each Recurring Plan that keeps auto-invoices in Draft state, ready for your team to review and confirm manually.
Plans without the option enabled continue to work exactly as before — zero side effects.
Features
- Per-plan configuration — enable Draft Invoicing on any Recurring Plan independently.
- Non-destructive — plans without the flag behave exactly as native Odoo.
- Payment token compatible — draft invoices are skipped by the automatic payment flow, preventing unwanted charges.
- Visible at a glance — the Draft Invoicing column appears directly in the Recurring Plans list view.
- Odoo 19 native — built against the v19 EE codebase with correct constraints and list-view syntax.
How to use it
-
Open a Recurring Plan
Go to Subscriptions → Configuration → Recurring Plans and open the plan you want to configure.
-
Enable Draft Invoicing
Check the Draft Invoicing field in the Details section and save.
-
Run the scheduler (or wait for the cron)
The next time the subscription invoicing cron runs, invoices for subscriptions on this plan will be created in Draft state.
-
Review and confirm
Open each draft invoice, verify the amounts, and click Confirm when ready.
Technical notes
The module overrides SaleOrder._process_auto_invoice() — the dedicated
hook Odoo EE provides for exactly this kind of extension. When
plan_id.draft_invoicing is True, the override returns early
without calling super(), so invoice.action_post() is never
reached. The invoice is created normally by the upstream flow; only the final posting
step is skipped.
Compatible with Odoo 19 Enterprise. Requires the
sale_subscription module (included in Odoo Enterprise).
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Subscriptions (sale_subscription)
• Sales (sale_management) • Discuss (mail) • Invoicing (account) |
| Lines of code | 40 |
| Technical Name |
subscription_draft_invoice |
| License | OPL-1 |
| Website | https://www.logicaconsultores.com |
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