TIP: You can type at any time to perform a new search.
Sale Missing Tracking
sale_missing_tracking · OCA/sale-workflow
- Repository
- OCA/sale-workflow · module folder · Try on Runboat
- Module version
- 1.0.2
- Category
- Sales
- Folder size
- 0.2 MB
- License
- AGPL-3
- Application
- No
- Auto-installable
- No
- Website
- https://github.com/OCA/sale-workflow
- Last tracking update
- 2026-08-07 07:56:58
- Authors
- Odoo Community Association (OCA), Tecnativa
- Maintainers
- Odoo Community Association (OCA), Tecnativa
- Committers
- Pedro M. Baeza, pilarvargas-tecnativa, Weblate, OCA-git-bot, oca-ci
Code Analysis ⓘ
Views touched (15)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
product_template_sale_form_view |
product.template | form | Inherits product.product_template_form_view | |
res_config_settings_view_form_sale |
res.config.settings | form | Inherits sale.res_config_settings_view_form | |
sale_missing_tracking_wiz |
Sale missing cart tracking wizard | sale.missing.tracking.wiz | form | New |
view_order_form |
sale.order | form | Inherits sale.view_order_form | |
view_partner_form |
res.partner | form | Inherits base.view_partner_form | |
view_sale_missing_tracking_exception_form |
sale.missing.tracking.exception.form | sale.missing.tracking.exception | form | New |
view_sale_missing_tracking_exception_search |
sale.missing.tracking.exception.search | sale.missing.tracking.exception | search | New |
view_sale_missing_tracking_exception_tree |
sale.missing.tracking.exception.tree | sale.missing.tracking.exception | tree | New |
view_sale_missing_tracking_form |
sale.missing.tracking.form | sale.missing.tracking | form | New |
view_sale_missing_tracking_kanban |
sale.missing.tracking.kanban | sale.missing.tracking | kanban | New |
view_sale_missing_tracking_pivot |
sale.missing.tracking.pivot | sale.missing.tracking | pivot | New |
view_sale_missing_tracking_reason_search |
sale.missing.tracking.reason.search | sale.missing.tracking.reason | search | New |
view_sale_missing_tracking_reason_tree |
sale.missing.tracking.reason.tree | sale.missing.tracking.reason | tree | New |
view_sale_missing_tracking_search |
sale.missing.tracking.search | sale.missing.tracking | search | New |
view_sale_missing_tracking_tree |
sale.missing.tracking.tree | sale.missing.tracking | tree | New |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (10)
New fields (1)
-
sale_missing_trackingBoolean
No public methods.
New fields (6)
-
sale_missing_days_fromIntegerdefault=45help='Number of days before to today to take into account the beginning of the period to obtain sold products'string='Days from' -
sale_missing_days_notificationIntegerdefault=30help='Number of days from the first advice to create a notification'string='Days notification' -
sale_missing_days_toIntegerdefault=15help='Number of days before to today to take into account the ending of the period to obtain sold products'string='Days to' -
sale_missing_max_delay_timesIntegerdefault=1help='Number of times that a salesperson can postpone the response to the follow-up'string='Max delay times' -
sale_missing_minimal_consumptionMonetarydefault=1000.0help='Minimal consumption in months consumption'string='Minimal consumption' -
sale_missing_months_consumptionIntegerdefault=12help='Number of months to compute product consumption'string='Months consumption'
No public methods.
New fields (6)
-
sale_missing_days_fromIntegerreadonly=Falserelated='company_id.sale_missing_days_from' -
sale_missing_days_notificationIntegerreadonly=Falserelated='company_id.sale_missing_days_notification' -
sale_missing_days_toIntegerreadonly=Falserelated='company_id.sale_missing_days_to' -
sale_missing_max_delay_timesIntegerreadonly=Falserelated='company_id.sale_missing_max_delay_times' -
sale_missing_minimal_consumptionMonetaryreadonly=Falserelated='company_id.sale_missing_minimal_consumption' -
sale_missing_months_consumptionIntegerreadonly=Falserelated='company_id.sale_missing_months_consumption'
No public methods.
New fields (1)
-
sale_missing_trackingBoolean
No public methods.
New fields (16)
-
activeBooleandefault=True -
commercial_partner_idMany2one → res.partnercomodel_name='res.partner'related='order_id.partner_id.commercial_partner_id'store=True -
company_idMany2one → res.companycomodel_name='res.company'related='order_id.company_id'store=True -
consumptionMonetary -
currency_idMany2one → res.currencycomodel_name='res.currency'related='order_id.currency_id'store=True -
date_orderDatetimeindex=Truerelated='order_id.date_order'store=True -
last_sale_line_idMany2one → sale.order.linecomodel_name='sale.order.line' -
order_idMany2one → sale.ordercomodel_name='sale.order'ondelete='cascade'required=Truestring='Sale order' -
partner_idMany2one → res.partnercomodel_name='res.partner'index=Truerelated='order_id.partner_id'store=True -
product_idMany2one → product.productcomodel_name='product.product'index=True -
reason_idMany2one → sale.missing.tracking.reasoncomodel_name='sale.missing.tracking.reason'index=True -
reason_noteTextcompute='_compute_reason_note'readonly=Falsestore=True -
stateSelectiondefault='draft' args: [('draft', 'Draft'), ('request', 'Requested'), ('approved', 'Approved'), ('refused', 'Refused'), ('recovered', 'Recovered'), ('cancel', 'Cancelled')] -
team_idMany2one → crm.teamcomodel_name='crm.team'related='order_id.team_id'store=True -
tracking_exception_idsMany2many → sale.missing.tracking.exceptioncolumn1='tracking_id'column2='exception_id'comodel_name='sale.missing.tracking.exception'relation='missing_tracking_exception_missing_tracking_rel'string='Missing sales tracking exceptions' -
user_idMany2one → res.userscomodel_name='res.users'related='order_id.user_id'store=True
-
action_create_exception(self) -
action_open_sale_order(self)Action to open sale order related -
missing_tracking_notification(self)@api.model -
name_get(self) -
send_notification(self, team_id)@api.model
New fields (13)
-
activeBooleandefault=True -
company_idMany2one → res.companycomodel_name='res.company'default=<expr>required=True -
consumptionMonetary -
currency_idMany2onerelated='company_id.currency_id' -
dateDatetime -
missing_tracking_idsMany2many → sale.missing.trackingcolumn1='exception_id'column2='tracking_id'comodel_name='sale.missing.tracking'relation='missing_tracking_exception_missing_tracking_rel'string='Missing sales tracking' -
partner_idMany2one → res.partnercomodel_name='res.partner'required=True -
product_idMany2one → product.productcomodel_name='product.product'required=True -
reason_idMany2one → sale.missing.tracking.reasoncomodel_name='sale.missing.tracking.reason'index=True -
reason_noteTextcompute='_compute_reason_note'readonly=Falsestore=True -
request_dateDatetimedefault=fields.Datetime.nowstring='Request date' -
stateSelectiondefault='request' args: [('request', 'Requested'), ('approved', 'Approved'), ('refused', 'Refused'), ('recovered', 'Recovered')] -
user_idMany2one → res.userscomodel_name='res.users'
-
action_approve(self) -
action_refuse(self) -
action_request(self)To extend in other modules -
create(self, vals)@api.model -
name_get(self) -
write(self, vals)
New fields (2)
-
nameCharrequired=True -
noteText
No public methods.
New fields (4)
-
has_pending_linesBooleancompute='_compute_has_pending_lines' -
missing_tracking_idsMany2many → sale.missing.trackingcomodel_name='sale.missing.tracking' -
reason_idMany2one → sale.missing.tracking.reasoncomodel_name='sale.missing.tracking.reason' -
reason_noteTextcompute='_compute_reason_note'readonly=Falsestore=True
-
action_mass_update(self) -
action_open_sale_order(self, sale_orders=None) -
missing_tracking_action_confirm(self)Check conditions to allow to confirm a sale order -
name_get(self)
New fields (1)
-
missing_tracking_countIntegercompute='_compute_missing_tracking_count'
-
action_cancel(self)Remove missing tracking linked -
action_confirm(self) -
action_open_missing_tracking(self) -
action_pending_missing_tracking_reason(self) -
recover_missing_tracking(self)
New fields (0)
No new fields.
Public methods (1)-
create(self, vals_list)@api.model_create_multi