Stock Average Daily Sale

stock_average_daily_sale
REPOSITORY
REPOSITORYOCA/stock-logistics-reporting
GIT
GIThttps://github.com/OCA/stock-logistics-reporting.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/stock-logistics-reporting/tree/16.0/stock_average_daily_sale
VERSION
VERSION 3.0.2
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ACSONE SA/NV, BCIM
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ACSONE SA/NV, BCIM
COMMITTERS
COMMITTERSJacques-Etienne Baudoux, Laurent Mignon (ACSONE), Denis Roussel, Weblate, OCA-git-bot, oca-ci, twalter-c2c
WEBSITE
WEBSITEhttps://github.com/OCA/stock-logistics-reporting
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:58
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/product-attribute:
    - product_packaging_dimension
    - product_logistics_uom
    - product_route_mto
OCA/server-tools:
    - base_partition
OCA/stock-logistics-warehouse:
    - stock_location_fill_state
    - stock_location_pending_move
    - stock_storage_category_capacity_name
    - stock_route_mto
OCA/stock-logistics-workflow:
    - stock_move_line_reserved_quant
    - stock_putaway_hook
    - stock_quant_package_dimension
    - stock_quant_package_product_packaging
OCA/wms:
    - stock_storage_type_putaway_abc
    - stock_storage_type
odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - account_payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
    - stock
    - barcodes_gs1_nomenclature
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES freezegun
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
stock_average_daily_sale_config_form_view stock.average.daily.sale.config.form stock.average.daily.sale.config form New
stock_average_daily_sale_config_tree_view stock.average.daily.sale.config.tree stock.average.daily.sale.config tree New
stock_daily_sale_search_view stock.daily.sale.search (in stock_average_daily_sale) stock.average.daily.sale search New
stockdaily_sale_form_view stock.daily.sale.form (in stock_average_daily_sale) stock.average.daily.sale form New
stockdaily_sale_tree_view stock.daily.sale.tree (in stock_average_daily_sale) stock.average.daily.sale tree New
Models touched (3)

New fields (17)
  • abc_classification_level Selection
    index=True readonly=True required=True selection=ABC_SELECTION string='ABC'
  • average_daily_qty Float
    digits='Product Unit of Measure' help='The quantity delivered on average on one day for this product on the period.' required=True
  • average_daily_sales_count Float
    digits='Product Unit of Measure' help='How much deliveries on average for this product on the period.' required=True
  • average_qty_by_sale Float
    digits='Product Unit of Measure' help='The quantity delivered on average for one delivery of this product on the period.' required=True
  • config_id Many2one → stock.average.daily.sale.config
    comodel_name='stock.average.daily.sale.config' required=True string='Stock Average Daily Sale Configuration'
  • daily_standard_deviation Float
    required=True string='Daily Qty Standard Deviation'
  • date_from Date
    required=True string='From'
  • date_to Date
    required=True string='To'
  • is_mto Boolean
    index=True readonly=True store=True string='On Order'
  • location_id Many2one → stock.location
    comodel_name='stock.location' required=True
  • max_daily_qty Float
    digits='Product Unit of Measure' help='The max quantity delivered on one day for this product on the period.' required=True
  • nbr_sales Integer
    help='The total amount of deliveries for this product over the complete period' required=True string='Number of Sales'
  • product_id Many2one → product.product
    comodel_name='product.product' index=True required=True string='Product'
  • recommended_qty Float
    compute='_compute_recommended_qty' digits='Product Unit of Measure' help='Minimal recommended quantity in stock. Formula: average daily qty * number days in stock + safety' required=True
  • safety Float
    compute='_compute_safety' help='Safety stock to cover the variability of the quantity delivered each day. Formula: daily standard deviation * safety factor * sqrt(nbr days in the period)' required=True
  • sale_ok Boolean
    help='Specify if the product can be selected in a sales order line.' index=True readonly=True string='Can be Sold'
  • warehouse_id Many2one → stock.warehouse
    comodel_name='stock.warehouse' required=True
Public methods (5)
  • get_refresh_date(self)
    @api.model
  • init(self)
  • refresh_view(self)
    @api.model
  • search(self, domain, offset=0, limit=None, order=None, count=False)
    @api.model
  • set_refresh_date(self, date=None)
    @api.model

New fields (10)
  • abc_classification_level Selection
    default='b' required=True selection=ABC_SELECTION
  • active Boolean
    default=True
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True string='Company'
  • exclude_weekends Boolean
    help="Set to True only if you do not expect any orders/deliveries during the weekends. If set to True, stock moves done on weekends won't be taken into account to calculate the average daily usage"
  • location_id Many2one → stock.location
    check_company=True comodel_name='stock.location' compute='_compute_average_daily_sale_root_location_id' precompute=True readonly=False required=True store=True string='Location'
  • number_days_qty_in_stock Integer
    default=2 required=True string='Number of days of quantities in stock'
  • period_name Selection
    required=True selection=[('year', 'Years'), ('month', 'Months'), ('week', 'Weeks'), ('day', 'Days')] string='Period analyzed unit'
  • period_value Integer
    required=True args: 'Period analyzed value'
  • safety_factor Float
    digits=(2, 2) required=True
  • warehouse_id Many2one → stock.warehouse
    check_company=True comodel_name='stock.warehouse' default=<expr> ondelete='cascade' required=True string='Warehouse'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/stock-logistics-reporting
GIT
GIThttps://github.com/OCA/stock-logistics-reporting.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/stock-logistics-reporting/tree/14.0/stock_average_daily_sale
VERSION
VERSION 1.0.3
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ACSONE SA/NV, BCIM
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ACSONE SA/NV, BCIM
COMMITTERS
COMMITTERSSébastien Alix, Weblate, OCA-git-bot, oca-ci, twalter-c2c, Tomasz Walter
WEBSITE
WEBSITEhttps://github.com/OCA/stock-logistics-reporting
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:11
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/product-attribute:
    - product_packaging_dimension
    - product_logistics_uom
    - product_route_mto
OCA/server-tools:
    - base_m2m_custom_field
OCA/stock-logistics-warehouse:
    - stock_location_warehouse
    - stock_route_mto
OCA/stock-logistics-workflow:
    - stock_putaway_hook
    - stock_quant_package_dimension
    - stock_quant_package_product_packaging
OCA/web:
    - web_domain_field
OCA/wms:
    - stock_storage_type_putaway_abc
    - stock_storage_type
odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - utm
    - stock
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES freezegun
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
stock_average_daily_sale_config_form_view stock.average.daily.sale.config.form stock.average.daily.sale.config form New
stock_average_daily_sale_config_tree_view stock.average.daily.sale.config.tree stock.average.daily.sale.config tree New
stock_daily_sale_search_view stock.daily.sale.search (in stock_average_daily_sale) stock.average.daily.sale search New
stockdaily_sale_tree_view stock.daily.sale.tree (in stock_average_daily_sale) stock.average.daily.sale tree New
view_warehouse stock.warehouse stock.warehouse xpath Inherits stock.view_warehouse
Models touched (4)

New fields (17)
  • abc_classification_level Selection
    index=True readonly=True required=True selection=ABC_SELECTION
  • average_daily_qty Float
    digits='Product Unit of Measure' help='The quantity delivered on average on one day for this product on the period. The spikes are excluded from the average computation.' required=True
  • average_daily_sales_count Float
    digits='Product Unit of Measure' help='How much deliveries on average for this product on the period. The spikes are excluded from the average computation.' required=True
  • average_qty_by_sale Float
    digits='Product Unit of Measure' help='The quantity delivered on average for one delivery of this product on the period. The spikes are excluded from the average computation.' required=True
  • config_id Many2one → stock.average.daily.sale.config
    comodel_name='stock.average.daily.sale.config' required=True string='Stock Average Daily Sale Configuration'
  • daily_standard_deviation Float
    required=True string='Daily Qty Standard Deviation'
  • date_from Date
    required=True string='From'
  • date_to Date
    required=True string='To'
  • is_mto Boolean
    index=True readonly=True store=True string='On Order'
  • nbr_sales Integer
    help='The total amount of deliveries for this product over the complete period' required=True string='Number of Sales'
  • product_id Many2one → product.product
    comodel_name='product.product' index=True required=True string='Product'
  • qty_in_stock Float
    digits='Product Unit of Measure' help='All stock locations, reserved product included' required=True string='Quantity in stock'
  • recommended_qty Float
    digits='Product Unit of Measure' help='Minimal recommended quantity in stock. Formula: average daily qty * number days in stock + safety' required=True
  • safety Float
    help='Safety stock to cover the variability of the quantity delivered each day. Formula: daily standard deviation * safety factor * sqrt(nbr days in the period)' required=True
  • sale_ok Boolean
    help='Specify if the product can be selected in a sales order line.' index=True readonly=True string='Can be Sold'
  • standard_deviation Float
    required=True string='Qty Standard Deviation'
  • warehouse_id Many2one → stock.warehouse
    comodel_name='stock.warehouse' required=True
Public methods (5)
  • get_refresh_date(self)
    @api.model
  • init(self)
  • refresh_view(self)
    @api.model
  • search(self, args, offset=0, limit=None, order=None, count=False)
    @api.model
  • set_refresh_date(self, date=None)
    @api.model

New fields (9)
  • abc_classification_level Selection
    default='b' required=True selection=ABC_SELECTION
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True string='Company'
  • exclude_weekends Boolean
    help="Set to True only if you do not expect any orders/deliveries during the weekends. If set to True, stock moves done on weekends won't be taken into account to calculate the average daily usage"
  • number_days_qty_in_stock Integer
    default=2 required=True string='Number of days of quantities in stock'
  • period_name Selection
    required=True selection=[('year', 'Years'), ('month', 'Months'), ('week', 'Weeks'), ('day', 'Days')] string='Period analyzed unit'
  • period_value Integer
    required=True args: 'Period analyzed value'
  • safety_factor Float
    digits=(2, 2) required=True
  • standard_deviation_exclude_factor Float
    digits=(2, 2) required=True
  • warehouse_id Many2one → stock.warehouse
    comodel_name='stock.warehouse' default=<expr> ondelete='cascade' required=True string='Warehouse'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • average_daily_sale_root_location_id Many2one → stock.location
    check_company=True comodel_name='stock.location' compute='_compute_average_daily_sale_root_location_id' help='This is the root location for daily sale average stock computations' readonly=False store=True string='Average Daily Sale Root Location'
Public methods (1)
  • create(self, vals)
    @api.model