Shopfloor Base

shopfloor_base
REPOSITORY
REPOSITORYOCA/shopfloor-app
GIT
GIThttps://github.com/OCA/shopfloor-app.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/shopfloor-app/tree/18.0/shopfloor_base
VERSION
VERSION 1.1.1
CATEGORY
CATEGORYInventory
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Camptocamp, BCIM
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Camptocamp, BCIM
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, Simone Orsi, Michael Tietz, SilvioC2C, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/shopfloor-app
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:19
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/connector:
    - component
OCA/rest-framework:
    - base_rest
OCA/server-tools:
    - jsonifier
OCA/web-api:
    - endpoint_route_handler
odoo/odoo:
    - base
    - web
    - base_sparse_field
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES apispec
cerberus
parse-accept-language
pyquerystring
cachetools
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Shopfloor is a barcode scanner application.

This module provides REST APIs to support scenario. It needs a frontend
to consume the backend APIs and provide screens for users on barcode
devices. A default front-end application is provided by
`shopfloor_mobile_base`.

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
shopfloor_app_form_view shopfloor app form shopfloor.app form New
shopfloor_app_search_view shopfloor app search shopfloor.app search New
shopfloor_app_tree_view shopfloor app tree shopfloor.app list New
shopfloor_menu_form_view shopfloor menu form shopfloor.menu form New
shopfloor_menu_search_view shopfloor menu search shopfloor.menu search New
shopfloor_menu_tree_view shopfloor menu tree shopfloor.menu list New
shopfloor_profile_form_view shopfloor.profile form shopfloor.profile form New
shopfloor_profile_search_view shopfloor.profile search shopfloor.profile search New
shopfloor_profile_tree_view shopfloor.profile tree shopfloor.profile list New
shopfloor_scenario_form_view shopfloor.scenario form shopfloor.scenario form New
shopfloor_scenario_search_view shopfloor.scenario search shopfloor.scenario search New
shopfloor_scenario_tree_view shopfloor.scenario tree shopfloor.scenario list New
Models touched (5)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (16)
  • active Boolean
    default=True
  • api_docs_url Char
    compute='_compute_url' help='Public URL for api docs.'
  • api_route Char
    compute='_compute_api_route' compute_sudo=True help='Base route for endpoints attached to this app, public version.'
  • api_route Char
    compute='_compute_api_route' compute_sudo=True help='\n Base route for endpoints attached to this app,\n internal controller-ready version.\n '
  • app_version Char
    compute='_compute_app_version'
  • auth_type Selection
    default='user_endpoint' selection='_selection_auth_type'
  • category Selection
    selection=[('', 'None')]
  • lang_id Many2one → res.lang
    help='If set, the app will be first loaded with this lang.' string='Default language' args: 'res.lang'
  • lang_ids Many2many → res.lang
    string='Available languages' args: 'res.lang'
  • name Char
    required=True translate=True
  • profile_ids Many2many → shopfloor.profile
    comodel_name='shopfloor.profile' help="Profiles used by this app. This will determine menu items too.However this field is not required in case you don't need profiles and menu items from the backend." string='Profiles'
  • profile_required Boolean
    compute='_compute_profile_required' store=True
  • registered_routes Text
    compute='_compute_registered_routes' compute_sudo=True groups='base.group_no_one' help='Technical field to allow developers to check registered routes on the form'
  • short_name Char
    help='Needed for app manifest' required=True translate=True
  • tech_name Char
    index=True required=True
  • url Char
    compute='_compute_url' help='Public URL to use the app.'
Public methods (4)
  • action_open_app(self)
  • action_open_app_docs(self)
  • action_view_menu_items(self)
  • api_url_for_service(self, service_name, endpoint=None)
    Handy method to generate services' API URLs for current app.

New fields (6)
  • active Boolean
    default=True
  • name Char
    required=True translate=True
  • profile_id Many2one → shopfloor.profile
    help='Visible on this profile only' string='Profile' args: 'shopfloor.profile'
  • scenario_id Many2one → shopfloor.scenario
    auto_join=True comodel_name='shopfloor.scenario' ondelete='restrict' required=True
  • scenario_key Char
    related='scenario_id.key'
  • sequence Integer
Public methods (0)

No public methods.

New fields (4)
  • active Boolean
    default=True
  • menu_ids One2many → shopfloor.menu
    comodel_name='shopfloor.menu' help='Menus visible for this profile' inverse_name='profile_id' string='Menus'
  • name Char
    required=True translate=True
  • sequence Integer
    default=0
Public methods (0)

No public methods.

New fields (3)
  • key Char
    help="Identify scenario univocally. This value must match a service component's `usage`." required=True
  • name Char
    required=True translate=True
  • options_edit Text
    help='Configure options via JSON' inverse='_inverse_options_edit'
Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
  • has_option(self, key)
  • write(self, vals)
REPOSITORY
REPOSITORYOCA/wms
GIT
GIThttps://github.com/OCA/wms.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/wms/tree/16.0/shopfloor_base
VERSION
VERSION 1.2.2
CATEGORY
CATEGORYInventory
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Camptocamp, BCIM
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Camptocamp, BCIM
COMMITTERS
COMMITTERSLaurent Mignon (ACSONE), Denis Roussel, Weblate, OCA-git-bot, Simone Orsi, Michael Tietz, oca-ci, Nicolas Delbovier
WEBSITE
WEBSITEhttps://github.com/OCA/wms
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:59
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/connector:
    - component
OCA/rest-framework:
    - base_rest
OCA/server-tools:
    - jsonifier
OCA/web-api:
    - endpoint_route_handler
odoo/odoo:
    - base
    - web
    - base_sparse_field
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES apispec
cerberus
parse-accept-language
pyquerystring
cachetools
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
shopfloor_app_form_view shopfloor app form shopfloor.app form New
shopfloor_app_search_view shopfloor app search shopfloor.app search New
shopfloor_app_tree_view shopfloor app tree shopfloor.app tree New
shopfloor_menu_form_view shopfloor menu form shopfloor.menu form New
shopfloor_menu_search_view shopfloor menu search shopfloor.menu search New
shopfloor_menu_tree_view shopfloor menu tree shopfloor.menu tree New
shopfloor_profile_form_view shopfloor.profile form shopfloor.profile form New
shopfloor_profile_search_view shopfloor.profile search shopfloor.profile search New
shopfloor_profile_tree_view shopfloor.profile tree shopfloor.profile tree New
shopfloor_scenario_form_view shopfloor.scenario form shopfloor.scenario form New
shopfloor_scenario_search_view shopfloor.scenario search shopfloor.scenario search New
shopfloor_scenario_tree_view shopfloor.scenario tree shopfloor.scenario tree New
Models touched (5)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (16)
  • active Boolean
    default=True
  • api_docs_url Char
    compute='_compute_url' help='Public URL for api docs.'
  • api_route Char
    compute='_compute_api_route' compute_sudo=True help='Base route for endpoints attached to this app, public version.'
  • api_route Char
    compute='_compute_api_route' compute_sudo=True help='\n Base route for endpoints attached to this app,\n internal controller-ready version.\n '
  • app_version Char
    compute='_compute_app_version'
  • auth_type Selection
    default='user_endpoint' selection='_selection_auth_type'
  • category Selection
    selection=[('', 'None')]
  • lang_id Many2one → res.lang
    help='If set, the app will be first loaded with this lang.' string='Default language' args: 'res.lang'
  • lang_ids Many2many → res.lang
    string='Available languages' args: 'res.lang'
  • name Char
    required=True translate=True
  • profile_ids Many2many → shopfloor.profile
    comodel_name='shopfloor.profile' help="Profiles used by this app. This will determine menu items too.However this field is not required in case you don't need profiles and menu items from the backend." string='Profiles'
  • profile_required Boolean
    compute='_compute_profile_required' store=True
  • registered_routes Text
    compute='_compute_registered_routes' compute_sudo=True groups='base.group_no_one' help='Technical field to allow developers to check registered routes on the form'
  • short_name Char
    help='Needed for app manifest' required=True translate=True
  • tech_name Char
    index=True required=True
  • url Char
    compute='_compute_url' help='Public URL to use the app.'
Public methods (4)
  • action_open_app(self)
  • action_open_app_docs(self)
  • action_view_menu_items(self)
  • api_url_for_service(self, service_name, endpoint=None)
    Handy method to generate services' API URLs for current app.

New fields (7)
  • active Boolean
    default=True
  • name Char
    required=True translate=True
  • profile_id Many2one → shopfloor.profile
    help='Visible on this profile only' string='Profile' args: 'shopfloor.profile'
  • scenario Char
    string='Legacy scenario field'
  • scenario_id Many2one → shopfloor.scenario
    comodel_name='shopfloor.scenario' compute='_compute_scenario_id' inverse='_inverse_scenario_id' ondelete='cascade' readonly=False required=True store=True
  • scenario_key Char
    related='scenario_id.key'
  • sequence Integer
Public methods (0)

No public methods.

New fields (4)
  • active Boolean
    default=True
  • menu_ids One2many → shopfloor.menu
    comodel_name='shopfloor.menu' help='Menus visible for this profile' inverse_name='profile_id' string='Menus'
  • name Char
    required=True translate=True
  • sequence Integer
    default=0
Public methods (0)

No public methods.

New fields (3)
  • key Char
    help="Identify scenario univocally. This value must match a service component's `usage`." required=True
  • name Char
    required=True translate=True
  • options_edit Text
    help='Configure options via JSON' inverse='_inverse_options_edit'
Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
  • has_option(self, key)
  • write(self, vals)
REPOSITORY
REPOSITORYOCA/wms
GIT
GIThttps://github.com/OCA/wms.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/wms/tree/14.0/shopfloor_base
VERSION
VERSION 2.14.0
CATEGORY
CATEGORYInventory
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Camptocamp, BCIM
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Camptocamp, BCIM
COMMITTERS
COMMITTERSPierre Verkest, OCA Transbot, Sébastien Alix, Thierry Ducrest, oca-travis, Weblate, OCA-git-bot, Simone Orsi, hparfr, Michael Tietz, oca-ci, JuMiSanAr
WEBSITE
WEBSITEhttps://github.com/OCA/wms
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:12
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/connector:
    - component
OCA/rest-framework:
    - base_rest
OCA/server-tools:
    - jsonifier
OCA/web-api:
    - endpoint_route_handler
odoo/odoo:
    - base
    - base_sparse_field
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES apispec
cerberus
parse-accept-language
pyquerystring
cachetools
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
shopfloor_app_form_view shopfloor app form shopfloor.app form New
shopfloor_app_search_view shopfloor app search shopfloor.app search New
shopfloor_app_tree_view shopfloor app tree shopfloor.app tree New
shopfloor_menu_form_view shopfloor menu form shopfloor.menu form New
shopfloor_menu_search_view shopfloor menu search shopfloor.menu search New
shopfloor_menu_tree_view shopfloor menu tree shopfloor.menu tree New
shopfloor_profile_form_view shopfloor.profile form shopfloor.profile form New
shopfloor_profile_search_view shopfloor.profile search shopfloor.profile search New
shopfloor_profile_tree_view shopfloor.profile tree shopfloor.profile tree New
shopfloor_scenario_form_view shopfloor.scenario form shopfloor.scenario form New
shopfloor_scenario_search_view shopfloor.scenario search shopfloor.scenario search New
shopfloor_scenario_tree_view shopfloor.scenario tree shopfloor.scenario tree New
Models touched (5)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (16)
  • active Boolean
    default=True
  • api_docs_url Char
    compute='_compute_url' help='Public URL for api docs.'
  • api_route Char
    compute='_compute_api_route' compute_sudo=True help='Base route for endpoints attached to this app, public version.'
  • api_route Char
    compute='_compute_api_route' compute_sudo=True help='\n Base route for endpoints attached to this app,\n internal controller-ready version.\n '
  • app_version Char
    compute='_compute_app_version'
  • auth_type Selection
    default='user_endpoint' selection='_selection_auth_type'
  • category Selection
    selection=[('', 'None')]
  • lang_id Many2one → res.lang
    help='If set, the app will be first loaded with this lang.' string='Default language' args: 'res.lang'
  • lang_ids Many2many → res.lang
    string='Available languages' args: 'res.lang'
  • name Char
    required=True translate=True
  • profile_ids Many2many → shopfloor.profile
    comodel_name='shopfloor.profile' help="Profiles used by this app. This will determine menu items too.However this field is not required in case you don't need profiles and menu items from the backend." string='Profiles'
  • profile_required Boolean
    compute='_compute_profile_required' store=True
  • registered_routes Text
    compute='_compute_registered_routes' compute_sudo=True groups='base.group_no_one' help='Technical field to allow developers to check registered routes on the form'
  • short_name Char
    help='Needed for app manifest' required=True translate=True
  • tech_name Char
    index=True required=True
  • url Char
    compute='_compute_url' help='Public URL to use the app.'
Public methods (4)
  • action_open_app(self)
  • action_open_app_docs(self)
  • action_view_menu_items(self)
  • api_url_for_service(self, service_name, endpoint=None)
    Handy method to generate services' API URLs for current app.

New fields (7)
  • active Boolean
    default=True
  • name Char
    required=True translate=True
  • profile_id Many2one → shopfloor.profile
    help='Visible on this profile only' string='Profile' args: 'shopfloor.profile'
  • scenario Char
    string='Legacy scenario field'
  • scenario_id Many2one → shopfloor.scenario
    comodel_name='shopfloor.scenario' compute='_compute_scenario_id' inverse='_inverse_scenario_id' ondelete='cascade' readonly=False required=True store=True
  • scenario_key Char
    related='scenario_id.key'
  • sequence Integer
Public methods (0)

No public methods.

New fields (4)
  • active Boolean
    default=True
  • menu_ids One2many → shopfloor.menu
    comodel_name='shopfloor.menu' help='Menus visible for this profile' inverse_name='profile_id' string='Menus'
  • name Char
    required=True translate=True
  • sequence Integer
    default=0
Public methods (0)

No public methods.

New fields (3)
  • key Char
    help="Identify scenario univocally. This value must match a service component's `usage`." required=True
  • name Char
    required=True translate=True
  • options_edit Text
    help='Configure options via JSON' inverse='_inverse_options_edit'
Public methods (3)
  • create(self, vals)
    @api.model
  • has_option(self, key)
  • write(self, vals)
REPOSITORY
REPOSITORYOCA/wms
GIT
GIThttps://github.com/OCA/wms.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/wms/tree/13.0/shopfloor_base
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYInventory
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Camptocamp, BCIM
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Camptocamp, BCIM
COMMITTERS
COMMITTERSOCA Transbot, Sébastien Alix, oca-travis, Weblate, OCA-git-bot, Simone Orsi
WEBSITE
WEBSITEhttps://github.com/OCA/wms
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:20
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/connector:
    - component
OCA/rest-framework:
    - base_rest
OCA/server-auth:
    - auth_api_key
OCA/server-env:
    - server_environment
OCA/server-tools:
    - base_jsonify
odoo/odoo:
    - base
    - base_sparse_field
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES apispec
cerberus
parse-accept-language
pyquerystring
cachetools
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
shopfloor_menu_form_view shopfloor menu form shopfloor.menu form New
shopfloor_menu_search_view shopfloor menu search shopfloor.menu search New
shopfloor_menu_tree_view shopfloor menu tree shopfloor.menu tree New
shopfloor_profile_form_view shopfloor.profile form shopfloor.profile form New
shopfloor_profile_search_view shopfloor.profile search shopfloor.profile search New
shopfloor_profile_tree_view shopfloor.profile tree shopfloor.profile tree New
shopfloor_scenario_form_view shopfloor.scenario form shopfloor.scenario form New
shopfloor_scenario_search_view shopfloor.scenario search shopfloor.scenario search New
shopfloor_scenario_tree_view shopfloor.scenario tree shopfloor.scenario tree New
Models touched (3)

New fields (6)
  • active Boolean
    default=True
  • name Char
    required=True translate=True
  • profile_id Many2one → shopfloor.profile
    help='Visible on this profile only' string='Profile' args: 'shopfloor.profile'
  • scenario Char
    string='Legacy scenario field'
  • scenario_id Many2one → shopfloor.scenario
    comodel_name='shopfloor.scenario' compute='_compute_scenario_id' inverse='_inverse_scenario_id' ondelete='cascade' readonly=False required=True store=True
  • sequence Integer
Public methods (0)

No public methods.

New fields (3)
  • active Boolean
    default=True
  • menu_ids One2many → shopfloor.menu
    comodel_name='shopfloor.menu' help='Menus visible for this profile' inverse_name='profile_id' string='Menus'
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (3)
  • key Char
    help="Identify scenario univocally. This value must match a service component's `usage`." required=True
  • name Char
    required=True translate=True
  • options_edit Text
    help='Configure options via JSON' inverse='_inverse_options_edit'
Public methods (3)
  • create(self, vals)
    @api.model
  • has_option(self, key)
  • write(self, vals)