Overview
Old quotations pile up in Sales and clutter the pipeline. This module adds a scheduled action that finds draft and sent quotations whose validity date has passed and cancels them. It plugs into the Sales app and uses the standard cancel action, so history stays in the chatter. Sales managers get a clean quotation list without manual clean-up.
Usage steps
- 1
Set the validity date
On each quotation the salesperson sets the Expiration date (validity_date). Without it the quotation is never touched by the cron.
- Field: Expiration
- Only draft or sent quotes are candidates
- 2
Scheduled action runs
The ir.cron record Delete Expired Order calls _cron_delete_expired_order on its interval. The method compares each quotation validity date with today.
- Configurable under Settings > Technical > Scheduled Actions
- Interval editable by admin
- 3
Expired quotes cancelled in batches
The matching orders are processed in batches of 100 and each one gets action_cancel. A commit follows each order so a failure does not lose earlier work.
- Batch helper in tools.py
- Commit per order
- Standard cancel logic
- 4
Review cancelled quotations
Managers filter the quotation list by Cancelled status to review what was removed. Cancelled quotations can be set back to draft if needed.
- Filter by status Cancelled
- Reset to quotation if mistaken
Screens
Illustrative mockups with placeholder data.
Roles
| Role |
|---|
| Sales manager |
| System administrator |
Dependencies
Want to know more or try this app? Contact us
We can arrange a demo or a trial and answer your questions about Expired Quotation Cleanup.