Stock Cycle Count

stock_cycle_count
REPOSITORY
REPOSITORYOCA/stock-logistics-warehouse
GIT
GIThttps://github.com/OCA/stock-logistics-warehouse.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/stock-logistics-warehouse/tree/18.0/stock_cycle_count
VERSION
VERSION 1.0.3
CATEGORY
CATEGORYWarehouse Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ForgeFlow
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ForgeFlow
COMMITTERS
COMMITTERSVíctor Martínez, Weblate, OCA-git-bot, oca-ci, ThiagoMForgeFlow, Arnau, Do Anh Duy
WEBSITE
WEBSITEhttps://github.com/OCA/stock-logistics-warehouse
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:06
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/stock-logistics-warehouse:
    - stock_inventory_discrepancy
    - stock_inventory
odoo/odoo:
    - stock_account
    - stock
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - uom
    - barcodes_gs1_nomenclature
    - barcodes
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
    - account
    - onboarding
    - analytic
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module provides the capability to execute a cycle count strategy in
a warehouse through different rules defined by the user. Cycle count is
an alternative to full wall-to-wall physical inventories in which little
portions (stock locations) of the stock are selected to count on a
regular basis.

The system propose locations in which to perform a inventory adjustment
every day based on a set of rules defined for the warehouse. In addition
the system can propose Zero-Confirmations which are simple and
opportunistic counts to check whether a locations has actually became
empty or not.

With this strategy it is possible to:

- Remove the need to perform full physical inventories and to stop the
  production in the warehouse.
- Measure the accuracy of the inventory records and improve it.
- Correct inventory errors earlier and prevent them to become bigger.

Code Analysis

Views touched (17)
XML IDNameModelTypeStatus
report_cyclecount report_cyclecount ir.ui.view qweb New
res_config_settings_view_form_cycle_adjustment res.config.settings.view.form.inherit.cycle.adjustment res.config.settings block Inherits stock.res_config_settings_view_form
stock_cycle_count_form_view stock.cycle.count.form stock.cycle.count form New
stock_cycle_count_rule_form_view stock.cycle.count.rule.form stock.cycle.count.rule form New
stock_cycle_count_rule_tree_view stock.cycle.count.rule.list stock.cycle.count.rule list New
stock_cycle_count_search_view stock.cycle.count.search stock.cycle.count search New
stock_cycle_count_tree_view stock.cycle.count.list stock.cycle.count list New
stock_location_accuracy stock_location_accuracy ir.ui.view qweb New
view_inventory_filter stock.inventory.filter - stock_cycle_count stock.inventory xpath Inherits stock_inventory.stock_inventory_search_view
view_inventory_form Inventory form view - cycle count extension stock.inventory field Inherits stock_inventory.view_inventory_group_form
view_inventory_graph stock.inventory.graph stock.inventory graph New
view_inventory_pivot stock.inventory.pivot stock.inventory pivot New
view_inventory_tree Inventory list view - cycle count extension stock.inventory field Inherits stock_inventory.view_inventory_group_tree
view_location_form Location form - cycle count extension stock.location xpath Inherits stock.view_location_form
view_stock_move_line_form Stock Move Line Form - cycle count extension stock.move.line field Inherits stock.view_move_line_form
view_stock_move_line_tree Stock Move Line List - cycle count extension stock.move.line field Inherits stock_inventory.view_stock_move_line_inventory_tree
view_warehouse_form Warehouse form - cycle count extension stock.warehouse notebook Inherits stock.view_warehouse
Models touched (11)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • auto_start_inventory_from_cycle_count Boolean
    help='If enabled, confirming a Cycle Count will start the related Inventory Adjustment.' string='Auto Start Inventory Adjustment from Cycle Count'
  • inventory_adjustment_counted_quantities Selection
    help='If enabled, confirming a Cycle Count will start the related Inventory Adjustment.' selection=[('counted', 'Default to stock on hand'), ('zero', 'Default to zero')] string='Inventory Adjustment Counted quantities from Cycle Count'
Public methods (0)

No public methods.

New fields (2)
  • auto_start_inventory_from_cycle_count Boolean
    help='If enabled, confirming a Cycle Count will start the related Inventory Adjustment.' readonly=False related='company_id.auto_start_inventory_from_cycle_count' string='Auto Start Inventory Adjustment from Cycle Count'
  • inventory_adjustment_counted_quantities Selection
    help='If enabled, confirming a Cycle Count will start the related Inventory Adjustment.' readonly=False related='company_id.inventory_adjustment_counted_quantities' string='Inventory Adjustment Counted quantities from Cycle Count'
Public methods (0)

No public methods.

New fields (11)
  • automatic_deadline_date Date
    string='Automatic Required Date' tracking=True
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True string='Company'
  • cycle_count_rule_id Many2one → stock.cycle.count.rule
    comodel_name='stock.cycle.count.rule' required=True string='Cycle count rule' tracking=True
  • date_deadline Date
    compute='_compute_date_deadline' inverse='_inverse_date_deadline' store=True string='Required Date' tracking=True
  • inventory_adj_count Integer
    compute='_compute_inventory_adj_count'
  • location_id Many2one → stock.location
    comodel_name='stock.location' domain="[('company_id', '=', company_id)]" required=True string='Location'
  • manual_deadline_date Date
    string='Manual Required Date' tracking=True
  • name Char
  • responsible_id Many2one → res.users
    comodel_name='res.users' string='Assigned to' tracking=True
  • state Selection
    default='draft' selection=[('draft', 'Planned'), ('open', 'Execution'), ('cancelled', 'Cancelled'), ('done', 'Done')] tracking=True
  • stock_adjustment_ids One2many → stock.inventory
    comodel_name='stock.inventory' inverse_name='cycle_count_id' string='Inventory Adjustment' tracking=True
Public methods (4)
  • action_create_inventory_adjustment(self)
  • action_view_inventory(self)
  • create(self, vals_list)
    @api.model_create_multi
  • do_cancel(self)

New fields (12)
  • accuracy_threshold Float
    digits=(3, 2) string='Minimum Accuracy Threshold'
  • active Boolean
    default=True
  • apply_in Selection
    default='warehouse' selection=[('warehouse', 'Selected warehouses'), ('location', 'Selected Location Zones.')] string='Apply this rule in:'
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_currency_id' string='Currency'
  • location_ids Many2many → stock.location
    column1='rule_id' column2='location_id' comodel_name='stock.location' relation='location_cycle_count_rule_rel' string='Zones where applied'
  • name Char
    required=True
  • periodic_count_period Integer
    string='Period in days'
  • periodic_qty_per_period Integer
    default=1 string='Counts per period'
  • rule_description Char
    compute='_compute_rule_description'
  • rule_type Selection
    required=True selection='_selection_rule_types' string='Type of rule'
  • turnover_inventory_value_threshold Float
  • warehouse_ids Many2many → stock.warehouse
    column1='rule_id' column2='warehouse_id' comodel_name='stock.warehouse' compute='_compute_warehouse_ids' readonly=False relation='warehouse_cycle_count_rule_rel' store=True string='Warehouses where applied'
Public methods (1)
  • compute_rule(self, locs)

New fields (4)
  • cycle_count_id Many2one → stock.cycle.count
    comodel_name='stock.cycle.count' ondelete='restrict' string='Stock Cycle Count'
  • inventory_accuracy Float
    aggregator='avg' default=False digits=(3, 2) store=True string='Accuracy'
  • prefill_counted_quantity Selection
    default='counted' help='Allows to start with a pre-filled counted quantity for each lines or with all counted quantities set to zero.' selection=[('counted', 'Default to stock on hand'), ('zero', 'Default to zero')] string='Counted Quantities'
  • responsible_id Many2one
    compute='_compute_responsible_id' inverse='_inverse_responsible_id' readonly=False store=True tracking=True
Public methods (5)
  • action_force_done(self)
  • action_state_to_done(self)
  • action_state_to_in_progress(self)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (4)
  • cycle_count_disabled Boolean
    help='Define whether the location is going to be cycle counted.' string='Exclude from Cycle Count'
  • loc_accuracy Float
    compute='_compute_loc_accuracy' digits=(3, 2) string='Inventory Accuracy'
  • qty_variance_inventory_threshold Float
    string='Acceptable Inventory Quantity Variance Threshold'
  • zero_confirmation_disabled Boolean
    help='Define whether this location will trigger a zero-confirmation validation when a rule for its warehouse is defined to perform zero-confirmations.' string='Disable Zero Confirmations'
Public methods (3)
  • action_accuracy_stats(self)
  • check_zero_confirmation(self)
  • create_zero_confirmation_cycle_count(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • counted_qty Float
    string='Counted Quantity'
  • line_accuracy Float
    string='Accuracy'
  • theoretical_qty Float
    string='Theoretical Quantity'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • counts_for_accuracy_qty Integer
    default=1 help='Number of latest inventories used to calculate location accuracy' string='Inventories for location accuracy calculation'
  • cycle_count_planning_horizon Integer
    help='Cycle Count planning horizon in days. Only the counts inside the horizon will be created.' string='Cycle Count Planning Horizon (in days)'
  • cycle_count_rule_ids Many2many → stock.cycle.count.rule
    column1='warehouse_id' column2='rule_id' comodel_name='stock.cycle.count.rule' relation='warehouse_cycle_count_rule_rel' string='Cycle Count Rules'
Public methods (3)
  • action_compute_cycle_count_rules(self)
    Apply the rule in all the sublocations of a given warehouse(s) and returns a list with required dates for the cycle count of each location
  • cron_cycle_count(self)
    @api.model
  • get_horizon_date(self)
REPOSITORY
REPOSITORYOCA/stock-logistics-warehouse
GIT
GIThttps://github.com/OCA/stock-logistics-warehouse.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/stock-logistics-warehouse/tree/16.0/stock_cycle_count
VERSION
VERSION 2.2.1
CATEGORY
CATEGORYWarehouse Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ForgeFlow
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ForgeFlow
COMMITTERS
COMMITTERSDenis Roussel, Weblate, OCA-git-bot, oca-ci, CristianoMafraJunior, ArnauCForgeFlow, Duy (Đỗ Anh)
WEBSITE
WEBSITEhttps://github.com/OCA/stock-logistics-warehouse
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:44
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/stock-logistics-warehouse:
    - stock_inventory_discrepancy
    - stock_inventory
odoo/odoo:
    - stock_account
    - stock
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - barcodes_gs1_nomenclature
    - barcodes
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
    - account
    - analytic
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (17)
XML IDNameModelTypeStatus
report_cyclecount report_cyclecount ir.ui.view qweb New
res_config_settings_view_form_cycle_adjustment res.config.settings.view.form.inherit.cycle.adjustment res.config.settings div Inherits stock.res_config_settings_view_form
stock_cycle_count_form_view stock.cycle.count.form stock.cycle.count form New
stock_cycle_count_rule_form_view stock.cycle.count.rule.form stock.cycle.count.rule form New
stock_cycle_count_rule_tree_view stock.cycle.count.rule.tree stock.cycle.count.rule tree New
stock_cycle_count_search_view stock.cycle.count.search stock.cycle.count search New
stock_cycle_count_tree_view stock.cycle.count.tree stock.cycle.count tree New
stock_location_accuracy stock_location_accuracy ir.ui.view qweb New
view_inventory_filter stock.inventory.filter - stock_cycle_count stock.inventory xpath Inherits stock_inventory.stock_inventory_search_view
view_inventory_form Inventory form view - cycle count extension stock.inventory field Inherits stock_inventory.view_inventory_group_form
view_inventory_graph stock.inventory.graph stock.inventory graph New
view_inventory_pivot stock.inventory.pivot stock.inventory pivot New
view_inventory_tree Inventory tree view - cycle count extension stock.inventory field Inherits stock_inventory.view_inventory_group_tree
view_location_form Location form - cycle count extension stock.location xpath Inherits stock.view_location_form
view_stock_move_line_form Stock Move Line Form - cycle count extension stock.move.line field Inherits stock.view_move_line_form
view_stock_move_line_tree Stock Move Line Tree - cycle count extension stock.move.line field Inherits stock_inventory.view_stock_move_line_inventory_tree
view_warehouse_form Warehouse form - cycle count extension stock.warehouse notebook Inherits stock.view_warehouse
Models touched (11)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • auto_start_inventory_from_cycle_count Boolean
    help='If enabled, confirming a Cycle Count will start the related Inventory Adjustment.' string='Auto Start Inventory Adjustment from Cycle Count'
  • inventory_adjustment_counted_quantities Selection
    help='If enabled, confirming a Cycle Count will start the related Inventory Adjustment.' selection=[('counted', 'Default to stock on hand'), ('zero', 'Default to zero')] string='Inventory Adjustment Counted quantities from Cycle Count'
Public methods (0)

No public methods.

New fields (2)
  • auto_start_inventory_from_cycle_count Boolean
    help='If enabled, confirming a Cycle Count will start the related Inventory Adjustment.' readonly=False related='company_id.auto_start_inventory_from_cycle_count' string='Auto Start Inventory Adjustment from Cycle Count'
  • inventory_adjustment_counted_quantities Selection
    help='If enabled, confirming a Cycle Count will start the related Inventory Adjustment.' readonly=False related='company_id.inventory_adjustment_counted_quantities' string='Inventory Adjustment Counted quantities from Cycle Count'
Public methods (0)

No public methods.

New fields (11)
  • automatic_deadline_date Date
    readonly=True states={'draft': [('readonly', False)]} string='Automatic Required Date' tracking=True
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> readonly=True required=True string='Company'
  • cycle_count_rule_id Many2one → stock.cycle.count.rule
    comodel_name='stock.cycle.count.rule' readonly=True required=True states={'draft': [('readonly', False)]} string='Cycle count rule' tracking=True
  • date_deadline Date
    compute='_compute_date_deadline' inverse='_inverse_date_deadline' readonly=True states={'draft': [('readonly', False)]} store=True string='Required Date' tracking=True
  • inventory_adj_count Integer
    compute='_compute_inventory_adj_count'
  • location_id Many2one → stock.location
    comodel_name='stock.location' readonly=True required=True states={'draft': [('readonly', False)]} string='Location'
  • manual_deadline_date Date
    readonly=True states={'draft': [('readonly', False)]} string='Manual Required Date' tracking=True
  • name Char
    readonly=True
  • responsible_id Many2one → res.users
    comodel_name='res.users' readonly=True states={'draft': [('readonly', False)], 'open': [('readonly', False)]} string='Assigned to' tracking=True
  • state Selection
    default='draft' selection=[('draft', 'Planned'), ('open', 'Execution'), ('cancelled', 'Cancelled'), ('done', 'Done')] tracking=True
  • stock_adjustment_ids One2many → stock.inventory
    comodel_name='stock.inventory' inverse_name='cycle_count_id' string='Inventory Adjustment' tracking=True
Public methods (4)
  • action_create_inventory_adjustment(self)
  • action_view_inventory(self)
  • create(self, vals_list)
    @api.model_create_multi
  • do_cancel(self)

New fields (12)
  • accuracy_threshold Float
    digits=(3, 2) string='Minimum Accuracy Threshold'
  • active Boolean
    default=True
  • apply_in Selection
    default='warehouse' selection=[('warehouse', 'Selected warehouses'), ('location', 'Selected Location Zones.')] string='Apply this rule in:'
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_currency_id' string='Currency'
  • location_ids Many2many → stock.location
    column1='rule_id' column2='location_id' comodel_name='stock.location' relation='location_cycle_count_rule_rel' string='Zones where applied'
  • name Char
    required=True
  • periodic_count_period Integer
    string='Period in days'
  • periodic_qty_per_period Integer
    default=1 string='Counts per period'
  • rule_description Char
    compute='_compute_rule_description'
  • rule_type Selection
    required=True selection='_selection_rule_types' string='Type of rule'
  • turnover_inventory_value_threshold Float
  • warehouse_ids Many2many → stock.warehouse
    column1='rule_id' column2='warehouse_id' comodel_name='stock.warehouse' compute='_compute_warehouse_ids' readonly=False relation='warehouse_cycle_count_rule_rel' store=True string='Warehouses where applied'
Public methods (1)
  • compute_rule(self, locs)

New fields (4)
  • cycle_count_id Many2one → stock.cycle.count
    comodel_name='stock.cycle.count' ondelete='restrict' readonly=True string='Stock Cycle Count'
  • inventory_accuracy Float
    default=False digits=(3, 2) group_operator='avg' store=True string='Accuracy'
  • prefill_counted_quantity Selection
    default='counted' help='Allows to start with a pre-filled counted quantity for each lines or with all counted quantities set to zero.' selection=[('counted', 'Default to stock on hand'), ('zero', 'Default to zero')] string='Counted Quantities'
  • responsible_id Many2one
    compute='_compute_responsible_id' inverse='_inverse_responsible_id' readonly=False store=True tracking=True
Public methods (5)
  • action_force_done(self)
  • action_state_to_done(self)
  • action_state_to_in_progress(self)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (4)
  • cycle_count_disabled Boolean
    help='Define whether the location is going to be cycle counted.' string='Exclude from Cycle Count'
  • loc_accuracy Float
    compute='_compute_loc_accuracy' digits=(3, 2) string='Inventory Accuracy'
  • qty_variance_inventory_threshold Float
    string='Acceptable Inventory Quantity Variance Threshold'
  • zero_confirmation_disabled Boolean
    help='Define whether this location will trigger a zero-confirmation validation when a rule for its warehouse is defined to perform zero-confirmations.' string='Disable Zero Confirmations'
Public methods (3)
  • action_accuracy_stats(self)
  • check_zero_confirmation(self)
  • create_zero_confirmation_cycle_count(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • counted_qty Float
    store=True string='Counted Quantity'
  • line_accuracy Float
    store=True string='Accuracy'
  • theoretical_qty Float
    store=True string='Theoretical Quantity'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • counts_for_accuracy_qty Integer
    default=1 help='Number of latest inventories used to calculate location accuracy' string='Inventories for location accuracy calculation'
  • cycle_count_planning_horizon Integer
    help='Cycle Count planning horizon in days. Only the counts inside the horizon will be created.' string='Cycle Count Planning Horizon (in days)'
  • cycle_count_rule_ids Many2many → stock.cycle.count.rule
    column1='warehouse_id' column2='rule_id' comodel_name='stock.cycle.count.rule' relation='warehouse_cycle_count_rule_rel' string='Cycle Count Rules'
Public methods (3)
  • action_compute_cycle_count_rules(self)
    Apply the rule in all the sublocations of a given warehouse(s) and returns a list with required dates for the cycle count of each location
  • cron_cycle_count(self)
    @api.model
  • get_horizon_date(self)
REPOSITORY
REPOSITORYOCA/stock-logistics-warehouse
GIT
GIThttps://github.com/OCA/stock-logistics-warehouse.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/stock-logistics-warehouse/tree/15.0/stock_cycle_count
VERSION
VERSION 2.2.0
CATEGORY
CATEGORYWarehouse Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ForgeFlow
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ForgeFlow
COMMITTERS
COMMITTERSLois Rilo, Weblate, OCA-git-bot, oca-ci, Joan Sisquella, ArnauCForgeFlow
WEBSITE
WEBSITEhttps://github.com/OCA/stock-logistics-warehouse
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:33
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/stock-logistics-warehouse:
    - stock_inventory_discrepancy
    - stock_inventory
odoo/odoo:
    - stock_account
    - stock
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - barcodes
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
    - account
    - analytic
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (17)
XML IDNameModelTypeStatus
report_cyclecount report_cyclecount ir.ui.view qweb New
res_config_settings_view_form_cycle_adjustment res.config.settings.view.form.inherit.cycle.adjustment res.config.settings div Inherits stock.res_config_settings_view_form
stock_cycle_count_form_view stock.cycle.count.form stock.cycle.count form New
stock_cycle_count_rule_form_view stock.cycle.count.rule.form stock.cycle.count.rule form New
stock_cycle_count_rule_tree_view stock.cycle.count.rule.tree stock.cycle.count.rule tree New
stock_cycle_count_search_view stock.cycle.count.search stock.cycle.count search New
stock_cycle_count_tree_view stock.cycle.count.tree stock.cycle.count tree New
stock_location_accuracy stock_location_accuracy ir.ui.view qweb New
view_inventory_filter stock.inventory.filter - stock_cycle_count stock.inventory xpath Inherits stock_inventory.stock_inventory_search_view
view_inventory_form Inventory form view - cycle count extension stock.inventory field Inherits stock_inventory.view_inventory_group_form
view_inventory_graph stock.inventory.graph stock.inventory graph New
view_inventory_pivot stock.inventory.pivot stock.inventory pivot New
view_inventory_tree Inventory tree view - cycle count extension stock.inventory field Inherits stock_inventory.view_inventory_group_tree
view_location_form Location form - cycle count extension stock.location xpath Inherits stock.view_location_form
view_stock_move_line_form Stock Move Line Form - cycle count extension stock.move.line field Inherits stock.view_move_line_form
view_stock_move_line_tree Stock Move Line Tree - cycle count extension stock.move.line field Inherits stock_inventory.view_stock_move_line_inventory_tree
view_warehouse_form Warehouse form - cycle count extension stock.warehouse notebook Inherits stock.view_warehouse
Models touched (11)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • auto_start_inventory_from_cycle_count Boolean
    help='If enabled, confirming a Cycle Count will start the related Inventory Adjustment.' string='Auto Start Inventory Adjustment from Cycle Count'
  • inventory_adjustment_counted_quantities Selection
    help='If enabled, confirming a Cycle Count will start the related Inventory Adjustment.' selection=[('counted', 'Default to stock on hand'), ('zero', 'Default to zero')] string='Inventory Adjustment Counted quantities from Cycle Count'
Public methods (0)

No public methods.

New fields (2)
  • auto_start_inventory_from_cycle_count Boolean
    help='If enabled, confirming a Cycle Count will start the related Inventory Adjustment.' readonly=False related='company_id.auto_start_inventory_from_cycle_count' string='Auto Start Inventory Adjustment from Cycle Count'
  • inventory_adjustment_counted_quantities Selection
    help='If enabled, confirming a Cycle Count will start the related Inventory Adjustment.' readonly=False related='company_id.inventory_adjustment_counted_quantities' string='Inventory Adjustment Counted quantities from Cycle Count'
Public methods (0)

No public methods.

New fields (11)
  • automatic_deadline_date Date
    readonly=True states={'draft': [('readonly', False)]} string='Automatic Required Date' tracking=True
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> readonly=True required=True string='Company'
  • cycle_count_rule_id Many2one → stock.cycle.count.rule
    comodel_name='stock.cycle.count.rule' readonly=True required=True states={'draft': [('readonly', False)]} string='Cycle count rule' tracking=True
  • date_deadline Date
    compute='_compute_date_deadline' inverse='_inverse_date_deadline' readonly=True states={'draft': [('readonly', False)]} store=True string='Required Date' tracking=True
  • inventory_adj_count Integer
    compute='_compute_inventory_adj_count'
  • location_id Many2one → stock.location
    comodel_name='stock.location' readonly=True required=True states={'draft': [('readonly', False)]} string='Location'
  • manual_deadline_date Date
    readonly=True states={'draft': [('readonly', False)]} string='Manual Required Date' tracking=True
  • name Char
    readonly=True
  • responsible_id Many2one → res.users
    comodel_name='res.users' readonly=True states={'draft': [('readonly', False)], 'open': [('readonly', False)]} string='Assigned to' tracking=True
  • state Selection
    default='draft' selection=[('draft', 'Planned'), ('open', 'Execution'), ('cancelled', 'Cancelled'), ('done', 'Done')] tracking=True
  • stock_adjustment_ids One2many → stock.inventory
    comodel_name='stock.inventory' inverse_name='cycle_count_id' string='Inventory Adjustment' tracking=True
Public methods (4)
  • action_create_inventory_adjustment(self)
  • action_view_inventory(self)
  • create(self, vals_list)
    @api.model_create_multi
  • do_cancel(self)

New fields (12)
  • accuracy_threshold Float
    digits=(3, 2) string='Minimum Accuracy Threshold'
  • active Boolean
    default=True
  • apply_in Selection
    default='warehouse' selection=[('warehouse', 'Selected warehouses'), ('location', 'Selected Location Zones.')] string='Apply this rule in:'
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_currency_id' string='Currency'
  • location_ids Many2many → stock.location
    column1='rule_id' column2='location_id' comodel_name='stock.location' relation='location_cycle_count_rule_rel' string='Zones where applied'
  • name Char
    required=True
  • periodic_count_period Integer
    string='Period in days'
  • periodic_qty_per_period Integer
    default=1 string='Counts per period'
  • rule_description Char
    compute='_compute_rule_description'
  • rule_type Selection
    required=True selection='_selection_rule_types' string='Type of rule'
  • turnover_inventory_value_threshold Float
  • warehouse_ids Many2many → stock.warehouse
    column1='rule_id' column2='warehouse_id' comodel_name='stock.warehouse' compute='_compute_warehouse_ids' readonly=False relation='warehouse_cycle_count_rule_rel' store=True string='Warehouses where applied'
Public methods (1)
  • compute_rule(self, locs)

New fields (4)
  • cycle_count_id Many2one → stock.cycle.count
    comodel_name='stock.cycle.count' ondelete='restrict' readonly=True string='Stock Cycle Count'
  • inventory_accuracy Float
    default=False digits=(3, 2) group_operator='avg' store=True string='Accuracy'
  • prefill_counted_quantity Selection
    default='counted' help='Allows to start with a pre-filled counted quantity for each lines or with all counted quantities set to zero.' selection=[('counted', 'Default to stock on hand'), ('zero', 'Default to zero')] string='Counted Quantities'
  • responsible_id Many2one
    compute='_compute_responsible_id' inverse='_inverse_responsible_id' readonly=False store=True tracking=True
Public methods (5)
  • action_force_done(self)
  • action_state_to_done(self)
  • action_state_to_in_progress(self)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (4)
  • cycle_count_disabled Boolean
    help='Define whether the location is going to be cycle counted.' string='Exclude from Cycle Count'
  • loc_accuracy Float
    compute='_compute_loc_accuracy' digits=(3, 2) string='Inventory Accuracy'
  • qty_variance_inventory_threshold Float
    string='Acceptable Inventory Quantity Variance Threshold'
  • zero_confirmation_disabled Boolean
    help='Define whether this location will trigger a zero-confirmation validation when a rule for its warehouse is defined to perform zero-confirmations.' string='Disable Zero Confirmations'
Public methods (3)
  • action_accuracy_stats(self)
  • check_zero_confirmation(self)
  • create_zero_confirmation_cycle_count(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • counted_qty Float
    store=True string='Counted Quantity'
  • line_accuracy Float
    store=True string='Accuracy'
  • theoretical_qty Float
    store=True string='Theoretical Quantity'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • counts_for_accuracy_qty Integer
    default=1 help='Number of latest inventories used to calculate location accuracy' string='Inventories for location accuracy calculation'
  • cycle_count_planning_horizon Integer
    help='Cycle Count planning horizon in days. Only the counts inside the horizon will be created.' string='Cycle Count Planning Horizon (in days)'
  • cycle_count_rule_ids Many2many → stock.cycle.count.rule
    column1='warehouse_id' column2='rule_id' comodel_name='stock.cycle.count.rule' relation='warehouse_cycle_count_rule_rel' string='Cycle Count Rules'
Public methods (3)
  • action_compute_cycle_count_rules(self)
    Apply the rule in all the sublocations of a given warehouse(s) and returns a list with required dates for the cycle count of each location
  • cron_cycle_count(self)
    @api.model
  • get_horizon_date(self)
REPOSITORY
REPOSITORYOCA/stock-logistics-warehouse
GIT
GIThttps://github.com/OCA/stock-logistics-warehouse.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/stock-logistics-warehouse/tree/14.0/stock_cycle_count
VERSION
VERSION 1.4.3
CATEGORY
CATEGORYWarehouse Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ForgeFlow
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ForgeFlow
COMMITTERS
COMMITTERSDenis Roussel, Daniel Reis, Enric Tobella, Jordi Ballester Alomar, Florent Xicluna, OCA Transbot, oca-travis, Weblate, OCA-git-bot, oca-ci, Mateu Griful, DavidJForgeFlow
WEBSITE
WEBSITEhttps://github.com/OCA/stock-logistics-warehouse
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:56
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/stock-logistics-warehouse:
    - stock_inventory_discrepancy
    - stock_inventory_exclude_sublocation
odoo/odoo:
    - stock_account
    - stock
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - barcodes
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
    - account
    - analytic
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (15)
XML IDNameModelTypeStatus
report_cyclecount report_cyclecount ir.ui.view qweb New
res_config_settings_view_form_cycle_adjustment res.config.settings.view.form.inherit.cycle.adjustment res.config.settings div Inherits stock.res_config_settings_view_form
stock_cycle_count_form_view stock.cycle.count.form stock.cycle.count form New
stock_cycle_count_rule_form_view stock.cycle.count.rule.form stock.cycle.count.rule form New
stock_cycle_count_rule_tree_view stock.cycle.count.rule.tree stock.cycle.count.rule tree New
stock_cycle_count_search_view stock.cycle.count.search stock.cycle.count search New
stock_cycle_count_tree_view stock.cycle.count.tree stock.cycle.count tree New
stock_location_accuracy stock_location_accuracy ir.ui.view qweb New
view_inventory_filter stock.inventory.filter - stock_cycle_count stock.inventory field Inherits stock.view_inventory_filter
view_inventory_form Inventory form view - cycle count extension stock.inventory field Inherits stock.view_inventory_form
view_inventory_graph stock.inventory.graph stock.inventory graph New
view_inventory_pivot stock.inventory.pivot stock.inventory pivot New
view_inventory_tree Inventory tree view - cycle count extension stock.inventory field Inherits stock.view_inventory_tree
view_location_form Location form - cycle count extension stock.location xpath Inherits stock.view_location_form
view_warehouse_form Warehouse form - cycle count extension stock.warehouse notebook Inherits stock.view_warehouse
Models touched (9)

New fields (0)

No new fields.

Public methods (1)
  • render_html(self, data=None)

New fields (2)
  • auto_start_inventory_from_cycle_count Boolean
    help='If enabled, confirming a Cycle Count will start the related Inventory Adjustment.' string='Auto Start Inventory Adjustment from Cycle Count'
  • inventory_adjustment_counted_quantities Selection
    help='If enabled, confirming a Cycle Count will start the related Inventory Adjustment.' selection=[('counted', 'Default to stock on hand'), ('zero', 'Default to zero')] string='Inventory Adjustment Counted quantities from Cycle Count'
Public methods (0)

No public methods.

New fields (2)
  • auto_start_inventory_from_cycle_count Boolean
    help='If enabled, confirming a Cycle Count will start the related Inventory Adjustment.' readonly=False related='company_id.auto_start_inventory_from_cycle_count' string='Auto Start Inventory Adjustment from Cycle Count'
  • inventory_adjustment_counted_quantities Selection
    help='If enabled, confirming a Cycle Count will start the related Inventory Adjustment.' readonly=False related='company_id.inventory_adjustment_counted_quantities' string='Inventory Adjustment Counted quantities from Cycle Count'
Public methods (0)

No public methods.

New fields (9)
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> readonly=True required=True string='Company'
  • cycle_count_rule_id Many2one → stock.cycle.count.rule
    comodel_name='stock.cycle.count.rule' readonly=True required=True states={'draft': [('readonly', False)]} string='Cycle count rule' tracking=True
  • date_deadline Date
    readonly=True states={'draft': [('readonly', False)]} string='Required Date' tracking=True
  • inventory_adj_count Integer
    compute='_compute_inventory_adj_count'
  • location_id Many2one → stock.location
    comodel_name='stock.location' readonly=True required=True states={'draft': [('readonly', False)]} string='Location'
  • name Char
    readonly=True string='Name'
  • responsible_id Many2one → res.users
    comodel_name='res.users' readonly=True states={'draft': [('readonly', False)]} string='Assigned to' tracking=True
  • state Selection
    default='draft' selection=[('draft', 'Planned'), ('open', 'Execution'), ('cancelled', 'Cancelled'), ('done', 'Done')] string='State' tracking=True
  • stock_adjustment_ids One2many → stock.inventory
    comodel_name='stock.inventory' inverse_name='cycle_count_id' string='Inventory Adjustment' tracking=True
Public methods (4)
  • action_create_inventory_adjustment(self)
  • action_view_inventory(self)
  • create(self, vals)
    @api.model
  • do_cancel(self)

New fields (12)
  • accuracy_threshold Float
    digits=(3, 2) string='Minimum Accuracy Threshold'
  • active Boolean
    default=True
  • apply_in Selection
    default='warehouse' selection=[('warehouse', 'Selected warehouses'), ('location', 'Selected Location Zones.')] string='Apply this rule in:'
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_currency_id' string='Currency'
  • location_ids Many2many → stock.location
    column1='rule_id' column2='location_id' comodel_name='stock.location' relation='location_cycle_count_rule_rel' string='Zones where applied'
  • name Char
    required=True
  • periodic_count_period Integer
    string='Period in days'
  • periodic_qty_per_period Integer
    default=1 string='Counts per period'
  • rule_description Char
    compute='_compute_rule_description' string='Rule Description'
  • rule_type Selection
    required=True selection='_selection_rule_types' string='Type of rule'
  • turnover_inventory_value_threshold Float
    string='Turnover Inventory Value Threshold'
  • warehouse_ids Many2many → stock.warehouse
    column1='rule_id' column2='warehouse_id' comodel_name='stock.warehouse' relation='warehouse_cycle_count_rule_rel' string='Warehouses where applied'
Public methods (1)
  • compute_rule(self, locs)

New fields (4)
  • cycle_count_id Many2one → stock.cycle.count
    comodel_name='stock.cycle.count' ondelete='restrict' readonly=True string='Stock Cycle Count'
  • inventory_accuracy Float
    compute='_compute_inventory_accuracy' digits=(3, 2) group_operator='avg' store=True string='Accuracy'
  • prefill_counted_quantity Selection
    default=_get_default_counted_quantitites
  • responsible_id Many2one → res.users
    comodel_name='res.users' help='Specific responsible of Inventory Adjustment.' tracking=True
Public methods (3)
  • action_force_done(self)
  • action_validate(self)
  • create(self, vals)
    @api.model

New fields (4)
  • cycle_count_disabled Boolean
    help='Define whether the location is going to be cycle counted.' string='Exclude from Cycle Count'
  • loc_accuracy Float
    compute='_compute_loc_accuracy' digits=(3, 2) string='Inventory Accuracy'
  • qty_variance_inventory_threshold Float
    string='Acceptable Inventory Quantity Variance Threshold'
  • zero_confirmation_disabled Boolean
    help='Define whether this location will trigger a zero-confirmation validation when a rule for its warehouse is defined to perform zero-confirmations.' string='Disable Zero Confirmations'
Public methods (3)
  • action_accuracy_stats(self)
  • check_zero_confirmation(self)
  • create_zero_confirmation_cycle_count(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • counts_for_accuracy_qty Integer
    default=1 help='Number of latest inventories used to calculate location accuracy' string='Inventories for location accuracy calculation'
  • cycle_count_planning_horizon Integer
    help='Cycle Count planning horizon in days. Only the counts inside the horizon will be created.' string='Cycle Count Planning Horizon (in days)'
  • cycle_count_rule_ids Many2many → stock.cycle.count.rule
    column1='warehouse_id' column2='rule_id' comodel_name='stock.cycle.count.rule' relation='warehouse_cycle_count_rule_rel' string='Cycle Count Rules'
Public methods (3)
  • action_compute_cycle_count_rules(self)
    Apply the rule in all the sublocations of a given warehouse(s) and returns a list with required dates for the cycle count of each location
  • cron_cycle_count(self)
    @api.model
  • get_horizon_date(self)
REPOSITORY
REPOSITORYOCA/stock-logistics-warehouse
GIT
GIThttps://github.com/OCA/stock-logistics-warehouse.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/stock-logistics-warehouse/tree/13.0/stock_cycle_count
VERSION
VERSION 1.2.1
CATEGORY
CATEGORYWarehouse Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ForgeFlow
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ForgeFlow
COMMITTERS
COMMITTERSmreficent, Lois Rilo, Carlos Lopez, OCA Transbot, oca-travis, Weblate, OCA-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/stock-logistics-warehouse
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:12
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/stock-logistics-warehouse:
    - stock_inventory_discrepancy
    - stock_inventory_exclude_sublocation
odoo/odoo:
    - stock_account
    - stock
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - barcodes
    - account
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
report_cyclecount report_cyclecount ir.ui.view qweb New
stock_cycle_count_form_view stock.cycle.count.form stock.cycle.count form New
stock_cycle_count_rule_form_view stock.cycle.count.rule.form stock.cycle.count.rule form New
stock_cycle_count_rule_tree_view stock.cycle.count.rule.tree stock.cycle.count.rule tree New
stock_cycle_count_search_view stock.cycle.count.search stock.cycle.count search New
stock_cycle_count_tree_view stock.cycle.count.tree stock.cycle.count tree New
stock_location_accuracy stock_location_accuracy ir.ui.view qweb New
view_inventory_filter stock.inventory.filter - stock_cycle_count stock.inventory field Inherits stock.view_inventory_filter
view_inventory_form Inventory form view - cycle count extension stock.inventory field Inherits stock.view_inventory_form
view_inventory_graph stock.inventory.graph stock.inventory graph New
view_inventory_pivot stock.inventory.pivot stock.inventory pivot New
view_inventory_tree Inventory tree view - cycle count extension stock.inventory field Inherits stock.view_inventory_tree
view_location_form Location form - cycle count extension stock.location xpath Inherits stock.view_location_form
view_warehouse_form Warehouse form - cycle count extension stock.warehouse notebook Inherits stock.view_warehouse
Models touched (7)

New fields (0)

No new fields.

Public methods (1)
  • render_html(self, data=None)

New fields (9)
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> readonly=True required=True string='Company'
  • cycle_count_rule_id Many2one → stock.cycle.count.rule
    comodel_name='stock.cycle.count.rule' readonly=True required=True states={'draft': [('readonly', False)]} string='Cycle count rule' track_visibility='onchange'
  • date_deadline Date
    readonly=True states={'draft': [('readonly', False)]} string='Required Date' track_visibility='onchange'
  • inventory_adj_count Integer
    compute='_compute_inventory_adj_count'
  • location_id Many2one → stock.location
    comodel_name='stock.location' readonly=True required=True states={'draft': [('readonly', False)]} string='Location'
  • name Char
    readonly=True string='Name'
  • responsible_id Many2one → res.users
    comodel_name='res.users' readonly=True states={'draft': [('readonly', False)]} string='Assigned to' track_visibility='onchange'
  • state Selection
    default='draft' selection=[('draft', 'Planned'), ('open', 'Execution'), ('cancelled', 'Cancelled'), ('done', 'Done')] string='State' track_visibility='onchange'
  • stock_adjustment_ids One2many → stock.inventory
    comodel_name='stock.inventory' inverse_name='cycle_count_id' string='Inventory Adjustment' track_visibility='onchange'
Public methods (4)
  • action_create_inventory_adjustment(self)
  • action_view_inventory(self)
  • create(self, vals)
    @api.model
  • do_cancel(self)

New fields (12)
  • accuracy_threshold Float
    digits=(3, 2) string='Minimum Accuracy Threshold'
  • active Boolean
    default=True
  • apply_in Selection
    default='warehouse' selection=[('warehouse', 'Selected warehouses'), ('location', 'Selected Location Zones.')] string='Apply this rule in:'
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_currency_id' string='Currency'
  • location_ids Many2many → stock.location
    column1='rule_id' column2='location_id' comodel_name='stock.location' relation='location_cycle_count_rule_rel' string='Zones where applied'
  • name Char
    required=True
  • periodic_count_period Integer
    string='Period in days'
  • periodic_qty_per_period Integer
    default=1 string='Counts per period'
  • rule_description Char
    compute='_compute_rule_description' string='Rule Description'
  • rule_type Selection
    required=True selection='_selection_rule_types' string='Type of rule'
  • turnover_inventory_value_threshold Float
    string='Turnover Inventory Value Threshold'
  • warehouse_ids Many2many → stock.warehouse
    column1='rule_id' column2='warehouse_id' comodel_name='stock.warehouse' relation='warehouse_cycle_count_rule_rel' string='Warehouses where applied'
Public methods (1)
  • compute_rule(self, locs)

New fields (2)
  • cycle_count_id Many2one → stock.cycle.count
    comodel_name='stock.cycle.count' ondelete='restrict' readonly=True string='Stock Cycle Count'
  • inventory_accuracy Float
    compute='_compute_inventory_accuracy' digits=(3, 2) group_operator='avg' store=True string='Accuracy'
Public methods (4)
  • action_force_done(self)
  • action_validate(self)
  • create(self, vals)
    @api.model
  • write(self, vals)

New fields (4)
  • cycle_count_disabled Boolean
    help='Define whether the location is going to be cycle counted.' string='Exclude from Cycle Count'
  • loc_accuracy Float
    compute='_compute_loc_accuracy' digits=(3, 2) string='Inventory Accuracy'
  • qty_variance_inventory_threshold Float
    string='Acceptable Inventory Quantity Variance Threshold'
  • zero_confirmation_disabled Boolean
    help='Define whether this location will trigger a zero-confirmation validation when a rule for its warehouse is defined to perform zero-confirmations.' string='Disable Zero Confirmations'
Public methods (3)
  • action_accuracy_stats(self)
  • check_zero_confirmation(self)
  • create_zero_confirmation_cycle_count(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • counts_for_accuracy_qty Integer
    default=1 help='Number of latest inventories used to calculate location accuracy' string='Inventories for location accuracy calculation'
  • cycle_count_planning_horizon Integer
    help='Cycle Count planning horizon in days. Only the counts inside the horizon will be created.' string='Cycle Count Planning Horizon (in days)'
  • cycle_count_rule_ids Many2many → stock.cycle.count.rule
    column1='warehouse_id' column2='rule_id' comodel_name='stock.cycle.count.rule' relation='warehouse_cycle_count_rule_rel' string='Cycle Count Rules'
Public methods (3)
  • action_compute_cycle_count_rules(self)
    Apply the rule in all the sublocations of a given warehouse(s) and returns a list with required dates for the cycle count of each location
  • cron_cycle_count(self)
    @api.model
  • get_horizon_date(self)
REPOSITORY
REPOSITORYOCA/stock-logistics-warehouse
GIT
GIThttps://github.com/OCA/stock-logistics-warehouse.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/stock-logistics-warehouse/tree/12.0/stock_cycle_count
VERSION
VERSION 1.1.1
CATEGORY
CATEGORYWarehouse
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Eficent
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Eficent
COMMITTERS
COMMITTERSmreficent, Denis Roussel, Lois Rilo, OCA Transbot, Sergio Teruel, oca-travis, Weblate, OCA-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/stock-logistics-warehouse
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:16
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/stock-logistics-warehouse:
    - stock_inventory_discrepancy
    - stock_inventory_exclude_sublocation
odoo/odoo:
    - stock_account
    - stock
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - barcodes
    - account
    - analytic
    - portal
    - http_routing
    - digest
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
report_cyclecount report_cyclecount ir.ui.view qweb New
stock_cycle_count_form_view stock.cycle.count.form stock.cycle.count form New
stock_cycle_count_rule_form_view stock.cycle.count.rule.form stock.cycle.count.rule form New
stock_cycle_count_rule_tree_view stock.cycle.count.rule.tree stock.cycle.count.rule tree New
stock_cycle_count_search_view stock.cycle.count.search stock.cycle.count search New
stock_cycle_count_tree_view stock.cycle.count.tree stock.cycle.count tree New
stock_location_accuracy stock_location_accuracy ir.ui.view qweb New
view_inventory_filter stock.inventory.filter - stock_cycle_count stock.inventory field Inherits stock.view_inventory_filter
view_inventory_form Inventory form view - cycle count extension stock.inventory field Inherits stock.view_inventory_form
view_inventory_graph stock.inventory.graph stock.inventory graph New
view_inventory_pivot stock.inventory.pivot stock.inventory pivot New
view_inventory_tree Inventory tree view - cycle count extension stock.inventory field Inherits stock.view_inventory_tree
view_location_form Location form - cycle count extension stock.location xpath Inherits stock.view_location_form
view_warehouse_form Warehouse form - cycle count extension stock.warehouse notebook Inherits stock.view_warehouse
Models touched (7)

New fields (0)

No new fields.

Public methods (1)
  • render_html(self, data=None)
    @api.multi

New fields (9)
  • company_id Many2one → res.company
    comodel_name='res.company' default=_default_company readonly=True required=True string='Company'
  • cycle_count_rule_id Many2one → stock.cycle.count.rule
    comodel_name='stock.cycle.count.rule' readonly=True required=True states={'draft': [('readonly', False)]} string='Cycle count rule' track_visibility='onchange'
  • date_deadline Date
    readonly=True states={'draft': [('readonly', False)]} string='Required Date' track_visibility='onchange'
  • inventory_adj_count Integer
    compute='_compute_inventory_adj_count'
  • location_id Many2one → stock.location
    comodel_name='stock.location' readonly=True required=True states={'draft': [('readonly', False)]} string='Location'
  • name Char
    readonly=True string='Name'
  • responsible_id Many2one → res.users
    comodel_name='res.users' readonly=True states={'draft': [('readonly', False)]} string='Assigned to' track_visibility='onchange'
  • state Selection
    default='draft' selection=[('draft', 'Planned'), ('open', 'Execution'), ('cancelled', 'Cancelled'), ('done', 'Done')] string='State' track_visibility='onchange'
  • stock_adjustment_ids One2many → stock.inventory
    comodel_name='stock.inventory' inverse_name='cycle_count_id' string='Inventory Adjustment' track_visibility='onchange'
Public methods (4)
  • action_create_inventory_adjustment(self)
    @api.multi
  • action_view_inventory(self)
    @api.multi
  • create(self, vals)
    @api.model
  • do_cancel(self)
    @api.multi

New fields (12)
  • accuracy_threshold Float
    digits=(3, 2) string='Minimum Accuracy Threshold'
  • active Boolean
    default=True
  • apply_in Selection
    default='warehouse' selection=[('warehouse', 'Selected warehouses'), ('location', 'Selected Location Zones.')] string='Apply this rule in:'
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_currency_id' string='Currency'
  • location_ids Many2many → stock.location
    column1='rule_id' column2='location_id' comodel_name='stock.location' relation='location_cycle_count_rule_rel' string='Zones where applied'
  • name Char
    required=True
  • periodic_count_period Integer
    string='Period in days'
  • periodic_qty_per_period Integer
    default=1 string='Counts per period'
  • rule_description Char
    compute='_compute_rule_description' string='Rule Description'
  • rule_type Selection
    required=True selection='_selection_rule_types' string='Type of rule'
  • turnover_inventory_value_threshold Float
    string='Turnover Inventory Value Threshold'
  • warehouse_ids Many2many → stock.warehouse
    column1='rule_id' column2='warehouse_id' comodel_name='stock.warehouse' relation='warehouse_cycle_count_rule_rel' string='Warehouses where applied'
Public methods (1)
  • compute_rule(self, locs)

New fields (2)
  • cycle_count_id Many2one → stock.cycle.count
    comodel_name='stock.cycle.count' ondelete='restrict' readonly=True string='Stock Cycle Count'
  • inventory_accuracy Float
    compute='_compute_inventory_accuracy' digits=(3, 2) group_operator='avg' store=True string='Accuracy'
Public methods (4)
  • action_force_done(self)
    @api.multi
  • action_validate(self)
    @api.multi
  • create(self, vals)
    @api.model
  • write(self, vals)
    @api.multi

New fields (4)
  • cycle_count_disabled Boolean
    help='Define whether the location is going to be cycle counted.' string='Exclude from Cycle Count'
  • loc_accuracy Float
    compute='_compute_loc_accuracy' digits=(3, 2) string='Inventory Accuracy'
  • qty_variance_inventory_threshold Float
    string='Acceptable Inventory Quantity Variance Threshold'
  • zero_confirmation_disabled Boolean
    help='Define whether this location will trigger a zero-confirmation validation when a rule for its warehouse is defined to perform zero-confirmations.' string='Disable Zero Confirmations'
Public methods (3)
  • action_accuracy_stats(self)
    @api.multi
  • check_zero_confirmation(self)
    @api.multi
  • create_zero_confirmation_cycle_count(self)
    @api.multi

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • counts_for_accuracy_qty Integer
    default=1 help='Number of latest inventories used to calculate location accuracy' string='Inventories for location accuracy calculation'
  • cycle_count_planning_horizon Integer
    help='Cycle Count planning horizon in days. Only the counts inside the horizon will be created.' string='Cycle Count Planning Horizon (in days)'
  • cycle_count_rule_ids Many2many → stock.cycle.count.rule
    column1='warehouse_id' column2='rule_id' comodel_name='stock.cycle.count.rule' relation='warehouse_cycle_count_rule_rel' string='Cycle Count Rules'
Public methods (3)
  • action_compute_cycle_count_rules(self)
    @api.multi
    Apply the rule in all the sublocations of a given warehouse(s) and returns a list with required dates for the cycle count of each location
  • cron_cycle_count(self)
    @api.model
  • get_horizon_date(self)
    @api.multi
REPOSITORY
REPOSITORYOCA/stock-logistics-warehouse
GIT
GIThttps://github.com/OCA/stock-logistics-warehouse.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/stock-logistics-warehouse/tree/11.0/stock_cycle_count
VERSION
VERSION 1.0.2
CATEGORY
CATEGORYWarehouse Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Eficent
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Eficent
COMMITTERS
COMMITTERSPedro M. Baeza, GitHub, Denis Roussel, Jordi Ballester Alomar, OCA Transbot, oca-travis, Weblate, OCA-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/stock-logistics-warehouse
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:23:56
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/stock-logistics-warehouse:
    - stock_inventory_discrepancy
    - stock_inventory_exclude_sublocation
odoo/odoo:
    - stock_account
    - stock
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - barcodes
    - web_planner
    - account
    - analytic
    - portal
    - http_routing
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
report_cyclecount report_cyclecount ir.ui.view qweb New
stock_cycle_count_form_view stock.cycle.count.form stock.cycle.count form New
stock_cycle_count_rule_form_view stock.cycle.count.rule.form stock.cycle.count.rule form New
stock_cycle_count_rule_tree_view stock.cycle.count.rule.tree stock.cycle.count.rule tree New
stock_cycle_count_search_view stock.cycle.count.search stock.cycle.count search New
stock_cycle_count_tree_view stock.cycle.count.tree stock.cycle.count tree New
stock_location_accuracy stock_location_accuracy ir.ui.view qweb New
view_inventory_filter stock.inventory.filter - stock_cycle_count stock.inventory field Inherits stock.view_inventory_filter
view_inventory_form Inventory form view - cycle count extension stock.inventory field Inherits stock.view_inventory_form
view_inventory_graph stock.inventory.graph stock.inventory graph New
view_inventory_pivot stock.inventory.pivot stock.inventory pivot New
view_inventory_tree Inventory tree view - cycle count extension stock.inventory field Inherits stock.view_inventory_tree
view_location_form Location form - cycle count extension stock.location xpath Inherits stock.view_location_form
view_warehouse_form Warehouse form - cycle count extension stock.warehouse notebook Inherits stock.view_warehouse
Models touched (7)

New fields (0)

No new fields.

Public methods (1)
  • render_html(self, data=None)
    @api.multi

New fields (9)
  • company_id Many2one → res.company
    comodel_name='res.company' default=_default_company readonly=True required=True string='Company'
  • cycle_count_rule_id Many2one → stock.cycle.count.rule
    comodel_name='stock.cycle.count.rule' readonly=True required=True states={'draft': [('readonly', False)]} string='Cycle count rule' track_visibility='onchange'
  • date_deadline Date
    readonly=True states={'draft': [('readonly', False)]} string='Required Date' track_visibility='onchange'
  • inventory_adj_count Integer
    compute='_compute_inventory_adj_count'
  • location_id Many2one → stock.location
    comodel_name='stock.location' readonly=True required=True states={'draft': [('readonly', False)]} string='Location'
  • name Char
    readonly=True string='Name'
  • responsible_id Many2one → res.users
    comodel_name='res.users' readonly=True states={'draft': [('readonly', False)]} string='Assigned to' track_visibility='onchange'
  • state Selection
    default='draft' selection=[('draft', 'Planned'), ('open', 'Execution'), ('cancelled', 'Cancelled'), ('done', 'Done')] string='State' track_visibility='onchange'
  • stock_adjustment_ids One2many → stock.inventory
    comodel_name='stock.inventory' inverse_name='cycle_count_id' string='Inventory Adjustment' track_visibility='onchange'
Public methods (4)
  • action_create_inventory_adjustment(self)
    @api.multi
  • action_view_inventory(self)
    @api.multi
  • create(self, vals)
    @api.model
  • do_cancel(self)
    @api.multi

New fields (12)
  • accuracy_threshold Float
    digits=(3, 2) string='Minimum Accuracy Threshold'
  • active Boolean
    default=True
  • apply_in Selection
    default='warehouse' selection=[('warehouse', 'Selected warehouses'), ('location', 'Selected Location Zones.')] string='Apply this rule in:'
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_currency_id' string='Currency'
  • location_ids Many2many → stock.location
    column1='rule_id' column2='location_id' comodel_name='stock.location' relation='location_cycle_count_rule_rel' string='Zones where applied'
  • name Char
    required=True
  • periodic_count_period Integer
    string='Period in days'
  • periodic_qty_per_period Integer
    default=1 string='Counts per period'
  • rule_description Char
    compute='_compute_rule_description' string='Rule Description'
  • rule_type Selection
    required=True selection='_selection_rule_types' string='Type of rule'
  • turnover_inventory_value_threshold Float
    string='Turnover Inventory Value Threshold'
  • warehouse_ids Many2many → stock.warehouse
    column1='rule_id' column2='warehouse_id' comodel_name='stock.warehouse' relation='warehouse_cycle_count_rule_rel' string='Warehouses where applied'
Public methods (1)
  • compute_rule(self, locs)

New fields (2)
  • cycle_count_id Many2one → stock.cycle.count
    comodel_name='stock.cycle.count' ondelete='restrict' readonly=True string='Stock Cycle Count'
  • inventory_accuracy Float
    compute='_compute_inventory_accuracy' digits=(3, 2) group_operator='avg' store=True string='Accuracy'
Public methods (3)
  • action_done(self)
    @api.multi
  • action_force_done(self)
    @api.multi
  • write(self, vals)
    @api.multi

New fields (4)
  • cycle_count_disabled Boolean
    help='Define whether the location is going to be cycle counted.' string='Exclude from Cycle Count'
  • loc_accuracy Float
    compute='_compute_loc_accuracy' digits=(3, 2) string='Inventory Accuracy'
  • qty_variance_inventory_threshold Float
    string='Acceptable Inventory Quantity Variance Threshold'
  • zero_confirmation_disabled Boolean
    help='Define whether this location will trigger a zero-confirmation validation when a rule for its warehouse is defined to perform zero-confirmations.' string='Disable Zero Confirmations'
Public methods (3)
  • action_accuracy_stats(self)
    @api.multi
  • check_zero_confirmation(self)
    @api.multi
  • create_zero_confirmation_cycle_count(self)
    @api.multi

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • counts_for_accuracy_qty Integer
    default=1 help='Number of latest inventories used to calculate location accuracy' string='Inventories for location accuracy calculation'
  • cycle_count_planning_horizon Integer
    help='Cycle Count planning horizon in days. Only the counts inside the horizon will be created.' string='Cycle Count Planning Horizon (in days)'
  • cycle_count_rule_ids Many2many → stock.cycle.count.rule
    column1='warehouse_id' column2='rule_id' comodel_name='stock.cycle.count.rule' relation='warehouse_cycle_count_rule_rel' string='Cycle Count Rules'
Public methods (3)
  • action_compute_cycle_count_rules(self)
    @api.multi
    Apply the rule in all the sublocations of a given warehouse(s) and returns a list with required dates for the cycle count of each location
  • cron_cycle_count(self)
    @api.model
  • get_horizon_date(self)
    @api.multi
REPOSITORY
REPOSITORYOCA/stock-logistics-warehouse
GIT
GIThttps://github.com/OCA/stock-logistics-warehouse.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/stock-logistics-warehouse/tree/10.0/stock_cycle_count
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYWarehouse Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Eficent
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Eficent
COMMITTERS
COMMITTERSLois Rilo, oca-travis, Weblate
WEBSITE
WEBSITEhttps://github.com/OCA/stock-logistics-warehouse
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:19:55
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/stock-logistics-warehouse:
    - stock_inventory_discrepancy
    - stock_inventory_exclude_sublocation
    - stock_inventory_chatter
odoo/odoo:
    - stock
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - web_tour
    - report
    - procurement
    - barcodes
    - web_planner
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES numpy
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
report_cyclecount report_cyclecount ir.ui.view qweb New
stock_cycle_count_form_view stock.cycle.count.form stock.cycle.count form New
stock_cycle_count_rule_form_view stock.cycle.count.rule.form stock.cycle.count.rule form New
stock_cycle_count_rule_tree_view stock.cycle.count.rule.tree stock.cycle.count.rule tree New
stock_cycle_count_search_view stock.cycle.count.search stock.cycle.count search New
stock_cycle_count_tree_view stock.cycle.count.tree stock.cycle.count tree New
stock_location_accuracy stock_location_accuracy ir.ui.view qweb New
view_inventory_filter stock.inventory.filter - stock_cycle_count stock.inventory field Inherits stock.view_inventory_filter
view_inventory_form Inventory form view - cycle count extension stock.inventory field Inherits stock.view_inventory_form
view_inventory_graph stock.inventory.graph stock.inventory graph New
view_inventory_pivot stock.inventory.pivot stock.inventory pivot New
view_inventory_tree Inventory tree view - cycle count extension stock.inventory field Inherits stock.view_inventory_tree
view_location_form Location form - cycle count extension stock.location xpath Inherits stock.view_location_form
view_warehouse_form Warehouse form - cycle count extension stock.warehouse notebook Inherits stock.view_warehouse
Models touched (7)

New fields (0)

No new fields.

Public methods (1)
  • render_html(self, data=None)
    @api.multi

New fields (9)
  • company_id Many2one → res.company
    comodel_name='res.company' default=_default_company readonly=True required=True string='Company'
  • cycle_count_rule_id Many2one → stock.cycle.count.rule
    comodel_name='stock.cycle.count.rule' readonly=True required=True states={'draft': [('readonly', False)]} string='Cycle count rule' track_visibility='onchange'
  • date_deadline Date
    readonly=True states={'draft': [('readonly', False)]} string='Required Date' track_visibility='onchange'
  • inventory_adj_count Integer
    compute='_compute_inventory_adj_count'
  • location_id Many2one → stock.location
    comodel_name='stock.location' readonly=True required=True states={'draft': [('readonly', False)]} string='Location'
  • name Char
    readonly=True string='Name'
  • responsible_id Many2one → res.users
    comodel_name='res.users' readonly=True states={'draft': [('readonly', False)]} string='Assigned to' track_visibility='onchange'
  • state Selection
    default='draft' selection=[('draft', 'Planned'), ('open', 'Execution'), ('cancelled', 'Cancelled'), ('done', 'Done')] string='State' track_visibility='onchange'
  • stock_adjustment_ids One2many → stock.inventory
    comodel_name='stock.inventory' inverse_name='cycle_count_id' string='Inventory Adjustment' track_visibility='onchange'
Public methods (4)
  • action_create_inventory_adjustment(self)
    @api.multi
  • action_view_inventory(self)
    @api.multi
  • create(self, vals)
    @api.model
  • do_cancel(self)
    @api.multi

New fields (12)
  • accuracy_threshold Float
    digits=(3, 2) string='Minimum Accuracy Threshold'
  • active Boolean
    default=True
  • apply_in Selection
    default='warehouse' selection=[('warehouse', 'Selected warehouses'), ('location', 'Selected Location Zones.')] string='Apply this rule in:'
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_currency_id' string='Currency'
  • location_ids Many2many → stock.location
    column1='rule_id' column2='location_id' comodel_name='stock.location' relation='location_cycle_count_rule_rel' string='Zones where applied'
  • name Char
    required=True
  • periodic_count_period Integer
    string='Period in days'
  • periodic_qty_per_period Integer
    default=1 string='Counts per period'
  • rule_description Char
    compute='_compute_rule_description' string='Rule Description'
  • rule_type Selection
    required=True selection='_selection_rule_types' string='Type of rule'
  • turnover_inventory_value_threshold Float
    string='Turnover Inventory Value Threshold'
  • warehouse_ids Many2many → stock.warehouse
    column1='rule_id' column2='warehouse_id' comodel_name='stock.warehouse' relation='warehouse_cycle_count_rule_rel' string='Warehouses where applied'
Public methods (1)
  • compute_rule(self, locs)

New fields (2)
  • cycle_count_id Many2one → stock.cycle.count
    comodel_name='stock.cycle.count' ondelete='restrict' readonly=True string='Stock Cycle Count'
  • inventory_accuracy Float
    compute='_compute_inventory_accuracy' digits=(3, 2) group_operator='avg' store=True string='Accuracy'
Public methods (3)
  • action_done(self)
    @api.multi
  • action_force_done(self)
    @api.multi
  • write(self, vals)
    @api.multi

New fields (4)
  • cycle_count_disabled Boolean
    help='Define whether the location is going to be cycle counted.' string='Exclude from Cycle Count'
  • loc_accuracy Float
    compute='_compute_loc_accuracy' digits=(3, 2) string='Inventory Accuracy'
  • qty_variance_inventory_threshold Float
    string='Acceptable Inventory Quantity Variance Threshold'
  • zero_confirmation_disabled Boolean
    help='Define whether this location will trigger a zero-confirmation validation when a rule for its warehouse is defined to perform zero-confirmations.' string='Disable Zero Confirmations'
Public methods (3)
  • action_accuracy_stats(self)
    @api.multi
  • check_zero_confirmation(self)
    @api.multi
  • create_zero_confirmation_cycle_count(self)
    @api.multi

New fields (0)

No new fields.

Public methods (1)
  • action_done(self)
    @api.multi

New fields (3)
  • counts_for_accuracy_qty Integer
    default=1 help='Number of latest inventories used to calculate location accuracy' string='Inventories for location accuracy calculation'
  • cycle_count_planning_horizon Integer
    help='Cycle Count planning horizon in days. Only the counts inside the horizon will be created.' string='Cycle Count Planning Horizon (in days)'
  • cycle_count_rule_ids Many2many → stock.cycle.count.rule
    column1='warehouse_id' column2='rule_id' comodel_name='stock.cycle.count.rule' relation='warehouse_cycle_count_rule_rel' string='Cycle Count Rules'
Public methods (3)
  • action_compute_cycle_count_rules(self)
    @api.multi
    Apply the rule in all the sublocations of a given warehouse(s) and returns a list with required dates for the cycle count of each location
  • cron_cycle_count(self)
    @api.model
  • get_horizon_date(self)
    @api.multi
REPOSITORY
REPOSITORYOCA/stock-logistics-warehouse
GIT
GIThttps://github.com/OCA/stock-logistics-warehouse.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/stock-logistics-warehouse/tree/9.0/stock_cycle_count
VERSION
VERSION 1.2.0
CATEGORY
CATEGORYWarehouse Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Eficent
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Eficent
COMMITTERS
COMMITTERSAlexandre Fayolle, GitHub, Lois Rilo, Jordi Ballester Alomar, OCA Transbot, oca-travis, Weblate, lreficent
WEBSITE
WEBSITEhttps://github.com/OCA/stock-logistics-warehouse
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:20
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/stock-logistics-warehouse:
    - stock_inventory_discrepancy
    - stock_inventory_exclude_sublocation
odoo/odoo:
    - stock
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - report
    - procurement
    - barcodes
    - web_planner
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES numpy
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
report_cyclecount report_cyclecount ir.ui.view qweb New
stock_cycle_count_form_view stock.cycle.count.form stock.cycle.count form New
stock_cycle_count_rule_form_view stock.cycle.count.rule.form stock.cycle.count.rule form New
stock_cycle_count_rule_tree_view stock.cycle.count.rule.tree stock.cycle.count.rule tree New
stock_cycle_count_search_view stock.cycle.count.search stock.cycle.count search New
stock_cycle_count_tree_view stock.cycle.count.tree stock.cycle.count tree New
stock_location_accuracy stock_location_accuracy ir.ui.view qweb New
view_inventory_filter stock.inventory.filter - stock_cycle_count stock.inventory field Inherits stock.view_inventory_filter
view_inventory_form Inventory form view - cycle count extension stock.inventory field Inherits stock.view_inventory_form
view_inventory_graph stock.inventory.graph stock.inventory graph New
view_inventory_pivot stock.inventory.pivot stock.inventory pivot New
view_inventory_tree Inventory tree view - cycle count extension stock.inventory field Inherits stock.view_inventory_tree
view_location_form Location form - cycle count extension stock.location xpath Inherits stock.view_location_form
view_warehouse_form Warehouse form - cycle count extension stock.warehouse notebook Inherits stock.view_warehouse
Models touched (7)

New fields (0)

No new fields.

Public methods (1)
  • render_html(self, data=None)
    @api.multi

New fields (9)
  • company_id Many2one → res.company
    comodel_name='res.company' default=_company_get readonly=True required=True string='Company'
  • cycle_count_rule_id Many2one → stock.cycle.count.rule
    comodel_name='stock.cycle.count.rule' readonly=True required=True states={'draft': [('readonly', False)]} string='Cycle count rule' track_visibility='onchange'
  • date_deadline Date
    readonly=True states={'draft': [('readonly', False)]} string='Required Date' track_visibility='onchange'
  • inventory_adj_count Integer
    compute=_count_inventory_adj
  • location_id Many2one → stock.location
    comodel_name='stock.location' readonly=True required=True states={'draft': [('readonly', False)]} string='Location'
  • name Char
    readonly=True string='Name'
  • responsible_id Many2one → res.users
    comodel_name='res.users' readonly=True states={'draft': [('readonly', False)]} string='Assigned to' track_visibility='onchange'
  • state Selection
    default='draft' selection=[('draft', 'Planned'), ('open', 'Execution'), ('cancelled', 'Cancelled'), ('done', 'Done')] string='State' track_visibility='onchange'
  • stock_adjustment_ids One2many → stock.inventory
    comodel_name='stock.inventory' inverse_name='cycle_count_id' string='Inventory Adjustment' track_visibility='onchange'
Public methods (4)
  • action_create_inventory_adjustment(self)
    @api.multi
  • action_view_inventory(self)
    @api.multi
  • create(self, vals)
    @api.model
  • do_cancel(self)
    @api.multi

New fields (12)
  • accuracy_threshold Float
    digits=(3, 2) string='Minimum Accuracy Threshold'
  • active Boolean
    default=True string='Active'
  • apply_in Selection
    default='warehouse' selection=[('warehouse', 'Selected warehouses'), ('location', 'Selected Location Zones.')] string='Apply this rule in:'
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute=_compute_currency string='Currency'
  • location_ids Many2many → stock.location
    column1='rule_id' column2='location_id' comodel_name='stock.location' relation='location_cycle_count_rule_rel' string='Zones where applied'
  • name Char
    required=True args: 'Name'
  • periodic_count_period Integer
    string='Period in days'
  • periodic_qty_per_period Integer
    default=1 string='Counts per period'
  • rule_description Char
    compute=_get_rule_description string='Rule Description'
  • rule_type Selection
    required=True selection='_selection_rule_types' string='Type of rule'
  • turnover_inventory_value_threshold Float
    string='Turnover Inventory Value Threshold'
  • warehouse_ids Many2many → stock.warehouse
    column1='rule_id' column2='warehouse_id' comodel_name='stock.warehouse' relation='warehouse_cycle_count_rule_rel' string='Warehouses where applied'
Public methods (1)
  • compute_rule(self, locs)

New fields (2)
  • cycle_count_id Many2one → stock.cycle.count
    comodel_name='stock.cycle.count' ondelete='cascade' readonly=True string='Stock Cycle Count'
  • inventory_accuracy Float
    compute=_compute_inventory_accuracy digits=(3, 2) group_operator='avg' store=True string='Accuracy'
Public methods (2)
  • action_done(self)
    @api.multi
  • write(self, vals)
    @api.multi

New fields (4)
  • cycle_count_disabled Boolean
    default=False help='Define whether the location is going to be cycle counted.' string='Exclude from Cycle Count'
  • loc_accuracy Float
    compute=_compute_loc_accuracy digits=(3, 2) string='Inventory Accuracy'
  • qty_variance_inventory_threshold Float
    args: 'Acceptable Inventory Quantity Variance Threshold'
  • zero_confirmation_disabled Boolean
    default=False help='Define whether this location will trigger a zero-confirmation validation when a rule for its warehouse is defined to perform zero-confirmations.' string='Disable Zero Confirmations'
Public methods (3)
  • action_accuracy_stats(self)
    @api.multi
  • check_zero_confirmation(self)
    @api.multi
  • create_zero_confirmation_cycle_count(self)

New fields (0)

No new fields.

Public methods (1)
  • action_done(self)
    @api.multi

New fields (3)
  • counts_for_accuracy_qty Integer
    default=1 help='Number of latest inventories used to calculate location accuracy' string='Inventories for location accuracy calculation'
  • cycle_count_planning_horizon Integer
    help='Cycle Count planning horizon in days. Only the counts inside the horizon will be created.' string='Cycle Count Planning Horizon (in days)'
  • cycle_count_rule_ids Many2many → stock.cycle.count.rule
    column1='warehouse_id' column2='rule_id' comodel_name='stock.cycle.count.rule' relation='warehouse_cycle_count_rule_rel' string='Cycle Count Rules'
Public methods (3)
  • action_compute_cycle_count_rules(self)
    @api.multi
    Apply the rule in all the sublocations of a given warehouse(s) and returns a list with required dates for the cycle count of each location
  • cron_cycle_count(self)
    @api.model
  • get_horizon_date(self)
    @api.multi
REPOSITORY
REPOSITORYOCA/stock-logistics-warehouse
GIT
GIThttps://github.com/OCA/stock-logistics-warehouse.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/stock-logistics-warehouse/tree/8.0/stock_cycle_count
VERSION
VERSION 1.2.0
CATEGORY
CATEGORYWarehouse Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Eficent
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Eficent
COMMITTERS
COMMITTERSLois Rilo, OCA Transbot, oca-travis, Weblate
WEBSITE
WEBSITEhttps://github.com/OCA/stock-logistics-warehouse
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:21
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/stock-logistics-warehouse:
    - stock_inventory_discrepancy
    - stock_inventory_exclude_sublocation
odoo/odoo:
    - stock
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web_kanban
    - web
    - report
    - procurement
    - board
    - web_kanban_gauge
    - web_kanban_sparkline
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES numpy
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
report_cyclecount report_cyclecount ir.ui.view qweb New
stock_cycle_count_form_view stock.cycle.count.form stock.cycle.count form New
stock_cycle_count_rule_form_view stock.cycle.count.rule.form stock.cycle.count.rule form New
stock_cycle_count_rule_tree_view stock.cycle.count.rule.tree stock.cycle.count.rule tree New
stock_cycle_count_search_view stock.cycle.count.search stock.cycle.count search New
stock_cycle_count_tree_view stock.cycle.count.tree stock.cycle.count tree New
stock_location_accuracy stock_location_accuracy ir.ui.view qweb New
view_inventory_filter stock.inventory.filter - stock_cycle_count stock.inventory field Inherits stock.view_inventory_filter
view_inventory_form Inventory form view - cycle count extension stock.inventory field Inherits stock.view_inventory_form
view_inventory_graph stock.inventory.graph stock.inventory graph New
view_inventory_pivot stock.inventory.pivot stock.inventory graph New
view_inventory_tree Inventory tree view - cycle count extension stock.inventory field Inherits stock.view_inventory_tree
view_location_form Location form - cycle count extension stock.location xpath Inherits stock.view_location_form
view_warehouse_form Warehouse form - cycle count extension stock.warehouse notebook Inherits stock.view_warehouse
Models touched (7)

New fields (0)

No new fields.

Public methods (1)
  • render_html(self, data=None)
    @api.multi

New fields (9)
  • company_id Many2one → res.company
    comodel_name='res.company' default=_company_get readonly=True required=True string='Company'
  • cycle_count_rule_id Many2one → stock.cycle.count.rule
    comodel_name='stock.cycle.count.rule' readonly=True required=True states={'draft': [('readonly', False)]} string='Cycle count rule' track_visibility='onchange'
  • date_deadline Date
    readonly=True states={'draft': [('readonly', False)]} string='Required Date' track_visibility='onchange'
  • inventory_adj_count Integer
    compute=_count_inventory_adj
  • location_id Many2one → stock.location
    comodel_name='stock.location' readonly=True required=True states={'draft': [('readonly', False)]} string='Location'
  • name Char
    readonly=True string='Name'
  • responsible_id Many2one → res.users
    comodel_name='res.users' readonly=True states={'draft': [('readonly', False)]} string='Assigned to' track_visibility='onchange'
  • state Selection
    default='draft' selection=[('draft', 'Planned'), ('open', 'Execution'), ('cancelled', 'Cancelled'), ('done', 'Done')] string='State' track_visibility='onchange'
  • stock_adjustment_ids One2many → stock.inventory
    comodel_name='stock.inventory' inverse_name='cycle_count_id' string='Inventory Adjustment' track_visibility='onchange'
Public methods (4)
  • action_create_inventory_adjustment(self)
    @api.one
  • action_view_inventory(self)
    @api.multi
  • create(self, vals)
    @api.model
  • do_cancel(self)
    @api.one

New fields (12)
  • accuracy_threshold Float
    digits=(3, 2) string='Minimum Accuracy Threshold'
  • active Boolean
    default=True string='Active'
  • apply_in Selection
    default='warehouse' selection=[('warehouse', 'Selected warehouses'), ('location', 'Selected Location Zones.')] string='Apply this rule in:'
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute=_compute_currency string='Currency'
  • location_ids Many2many → stock.location
    column1='rule_id' column2='location_id' comodel_name='stock.location' relation='location_cycle_count_rule_rel' string='Zones where applied'
  • name Char
    required=True args: 'Name'
  • periodic_count_period Integer
    string='Period in days'
  • periodic_qty_per_period Integer
    default=1 string='Counts per period'
  • rule_description Char
    compute=_get_rule_description string='Rule Description'
  • rule_type Selection
    required=True selection='_selection_rule_types' string='Type of rule'
  • turnover_inventory_value_threshold Float
    string='Turnover Inventory Value Threshold'
  • warehouse_ids Many2many → stock.warehouse
    column1='rule_id' column2='warehouse_id' comodel_name='stock.warehouse' relation='warehouse_cycle_count_rule_rel' string='Warehouses where applied'
Public methods (1)
  • compute_rule(self, locs)

New fields (2)
  • cycle_count_id Many2one → stock.cycle.count
    comodel_name='stock.cycle.count' ondelete='cascade' readonly=True string='Stock Cycle Count'
  • inventory_accuracy Float
    compute=_compute_inventory_accuracy digits=(3, 2) group_operator='avg' store=True string='Accuracy'
Public methods (2)
  • action_done(self)
    @api.multi
  • write(self, vals)
    @api.multi

New fields (4)
  • cycle_count_disabled Boolean
    default=False help='Define whether the location is going to be cycle counted.' string='Exclude from Cycle Count'
  • loc_accuracy Float
    compute=_compute_loc_accuracy digits=(3, 2) string='Inventory Accuracy'
  • qty_variance_inventory_threshold Float
    args: 'Acceptable Inventory Quantity Variance Threshold'
  • zero_confirmation_disabled Boolean
    default=False help='Define whether this location will trigger a zero-confirmation validation when a rule for its warehouse is defined to perform zero-confirmations.' string='Disable Zero Confirmations'
Public methods (3)
  • action_accuracy_stats(self)
    @api.multi
  • check_zero_confirmation(self)
    @api.one
  • create_zero_confirmation_cycle_count(self)

New fields (0)

No new fields.

Public methods (1)
  • action_done(self)
    @api.multi

New fields (3)
  • counts_for_accuracy_qty Integer
    default=1 help='Number of latest inventories used to calculate location accuracy' string='Inventories for location accuracy calculation'
  • cycle_count_planning_horizon Integer
    help='Cycle Count planning horizon in days. Only the counts inside the horizon will be created.' string='Cycle Count Planning Horizon (in days)'
  • cycle_count_rule_ids Many2many → stock.cycle.count.rule
    column1='warehouse_id' column2='rule_id' comodel_name='stock.cycle.count.rule' relation='warehouse_cycle_count_rule_rel' string='Cycle Count Rules'
Public methods (3)
  • action_compute_cycle_count_rules(self)
    @api.one
    Apply the rule in all the sublocations of a given warehouse(s) and returns a list with required dates for the cycle count of each location
  • cron_cycle_count(self)
    @api.model
  • get_horizon_date(self)
    @api.one
STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/stock-logistics-warehouse
PULL REQUEST
PULL REQUEST[17.0][MIG] stock_cycle_count: Migration to 17.0 (#2475)