Sale Product Classification

sale_product_classification
REPOSITORY
REPOSITORYOCA/sale-workflow
GIT
GIThttps://github.com/OCA/sale-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/sale-workflow/tree/12.0/sale_product_classification
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYSales
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSdavid, oca-travis, Weblate, OCA-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/sale-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:17
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - payment
    - account
    - product
    - decimal_precision
    - uom
    - analytic
    - portal
    - http_routing
    - digest
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
product_normal_form_view product.product field Inherits product.product_normal_form_view
product_template_only_form_view product.template field Inherits product.product_template_only_form_view
product_template_search_view product.template xpath Inherits product.product_template_search_view
res_config_settings_view_form_sale res.config.settings xpath Inherits sale.res_config_settings_view_form
Models touched (4)

New fields (2)
  • sale_classification Selection
    company_dependent=True default='d' help='How the product performs according to sales' selection=[('a', 'A'), ('b', 'B'), ('c', 'C'), ('d', 'D')] string='Sales classification'
  • seasonality_classification Selection
    company_dependent=True default='low' help='Whether this product is selled during very short periods of time or steadily across the whole year' selection=[('very high', 'Very high'), ('high', 'High'), ('medium', 'Medium'), ('low', 'Low')] string='Seasonility'
Public methods (2)
  • action_get_sales_classification(self)
    Compute every product classifications according to each company rules and sales
  • cron_sales_classification(self)
    @api.model
    Evaluate according company rules

New fields (2)
  • sale_classification Selection
    compute='_compute_sale_classification' inverse='_inverse_sale_classification' readonly=False search='_search_sale_classification' selection=[('a', 'A'), ('b', 'B'), ('c', 'C'), ('d', 'D')]
  • seasonality_classification Selection
    compute='_compute_seasonality_classification' inverse='_inverse_seasonality_classification' readonly=False search='_search_seasonality_classification' selection=[('very high', 'Very high'), ('high', 'High'), ('medium', 'Medium'), ('low', 'Low')]
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi
    Set given values to first variant after creation

New fields (5)
  • sale_classification_a Monetary
    default=10000 string='Sales equal or above this amount'
  • sale_classification_b Monetary
    default=5000 string='Sales equal or above this amount and below A'
  • sale_classification_c Monetary
    default=2500 string='Sales equal or above this amount and below B'
  • sale_classification_days_to_evaluate Integer
    default=365 string='From the date the action is run, evalute these days'
  • sale_classification_days_to_ignore Integer
    default=0 help='If set, the products created in these date ranges will be ignored in the classification compute' string='Ignore products newer than these days'
Public methods (0)

No public methods.

New fields (5)
  • sale_classification_a Monetary
    readonly=False related='company_id.sale_classification_a'
  • sale_classification_b Monetary
    readonly=False related='company_id.sale_classification_b'
  • sale_classification_c Monetary
    readonly=False related='company_id.sale_classification_c'
  • sale_classification_days_to_evaluate Integer
    readonly=False related='company_id.sale_classification_days_to_evaluate'
  • sale_classification_days_to_ignore Integer
    readonly=False related='company_id.sale_classification_days_to_ignore'
Public methods (0)

No public methods.