Weighing assistant

stock_weighing
REPOSITORY
REPOSITORYOCA/stock-weighing
GIT
GIThttps://github.com/OCA/stock-weighing.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/stock-weighing/tree/18.0/stock_weighing
VERSION
VERSION 1.2.0
CATEGORY
CATEGORYInventory
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSGitHub, Weblate, OCA-git-bot, oca-ci, Carlos Roca, Andrii9090-tecnativa
WEBSITE
WEBSITEhttps://github.com/OCA/stock-weighing
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:15
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/web:
    - web_quick_start_screen
    - web_filter_header_button
    - web_widget_numeric_step
    - web_ir_actions_act_multi
odoo/odoo:
    - 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
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
A shopfloor assistant for weighing on stock operations.

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
report_delivery_document report_delivery_document ir.ui.view qweb Inherits stock.report_delivery_document
report_weight_record_label report_weight_record_label ir.ui.view qweb New
stock_move_line_weight_kanban_view stock.move.line kanban New
stock_move_weight_form_view stock.move form New
stock_picking_type_kanban stock.picking.type xpath Inherits stock.stock_picking_type_kanban
stock_report_delivery_has_serial_move_line stock_report_delivery_has_serial_move_line ir.ui.view qweb Inherits stock.stock_report_delivery_has_serial_move_line
view_move_line_tree_detailed stock.move.line field Inherits stock.view_move_line_tree_detailed
view_move_search stock.move filter Inherits stock.view_move_search
view_move_weight_kanban_view stock.move kanban New
view_picking_form stock.picking div Inherits stock.view_picking_form
view_picking_type_form stock.picking.type xpath Inherits stock.view_picking_type_form
view_stock_move_line_detailed_operation_tree stock.move.line field Inherits stock.view_stock_move_line_detailed_operation_tree
view_stock_move_line_operation_tree stock.move.line field Inherits stock.view_stock_move_line_operation_tree
weighing_wizard_form_view weighing.wizard form New
Models touched (7)

New fields (0)

No new fields.

Public methods (1)
  • run_action(self)

New fields (12)
  • is_weighing_operation_locked Boolean
    compute='_compute_is_weighing_operation_locked'
  • lot_names Char
    compute='_compute_lot_names'
  • move_lines_weighed Boolean
    compute='_compute_recorded_weight'
  • origin_names Char
    compute='_compute_origin_names'
  • qty_picked Float
    compute='_compute_qty_picked' digits='Product Unit of Measure' readonly=False store=True
  • recorded_weight Float
    compute='_compute_recorded_weight' digits='Product Unit of Measure'
  • self_move_ids Many2many → stock.move
    comodel_name='stock.move' compute='_compute_self_move_ids'
  • show_weighing_print_button Boolean
    compute='_compute_show_weighing_print_button'
  • weighing_label_report_id Many2one
    related='picking_type_id.weighing_label_report_id'
  • weighing_state Selection
    compute='_compute_weighing_state' selection=[('weighed', 'Weighed'), ('weighing', 'Weighing'), ('to_weigh', 'To weigh')] store=True
  • weighing_state_color Integer
    compute='_compute_weighing_state_color'
  • weighing_user_id Many2one → res.users
    comodel_name='res.users' help="This user is weighing the record, so it's locked by him"
Public methods (10)
  • action_add_move_line(self)
    Open the weight wizard to add a new operation weight
  • action_force_weighed(self)
  • action_lock_weighing_operation(self)
    Avoid other that other user to modify the weight operation
  • action_print_weight_record_label(self)
    Get operations labels
  • action_reset_weights(self)
    Restore stock move lines weights
  • action_unlock_weigh_operation(self)
    Unlock the weigh operation
  • action_weighing(self)
    Open the wizard to record weights
  • action_weight_detailed_operations(self)
    Weight detailed operations for this picking
  • search_fetch(self, domain, field_names, offset=0, limit=None, order=None)
  • set_product_uom_qty_to_qty_done_from_weighing(self)

New fields (5)
  • has_recorded_weight Boolean
    help='The weight was set from the wizard'
  • qty_picked Float
    digits='Product Unit of Measure' readonly=False store=True
  • recorded_weight Float
    digits='Product Unit of Measure'
  • weighing_date Datetime
  • weighing_user_id Many2one → res.users
    comodel_name='res.users'
Public methods (3)
  • action_print_weight_record_label(self)
    Get detailed operations weighing labels
  • action_reset_weights(self)
    Restore stock move lines weights
  • action_weighing(self)
    Open the wizard to record weights

New fields (2)
  • has_weighing_operations Boolean
    compute='_compute_has_weighing_operations'
  • weighing_operations Boolean
    related='picking_type_id.weighing_operations'
Public methods (2)
  • action_weighing_operations(self)
    Weighing operations for this picking
  • button_validate(self)

New fields (5)
  • print_weighing_label Boolean
    help='Print the weight operation label automatically'
  • to_do_weights Integer
    compute='_compute_to_do_weights'
  • weighing_label_report_id Many2one → ir.actions.report
    comodel_name='ir.actions.report' domain=[('model', '=', 'stock.move.line')] help='Choose a custom label template for this operation type'
  • weighing_operations Boolean
    help='Weighed products are done from weighing operations'
  • weight_move_ids Many2many → stock.move
    comodel_name='stock.move' compute='_compute_weight_move_ids'
Public methods (1)
  • action_weighing_operations(self)
    Weighing operations for this picking

New fields (1)
  • has_weight Boolean
    compute='_compute_has_weight' search='_search_has_weight'
Public methods (0)

No public methods.

New fields (14)
  • available_lot_ids Many2many → stock.lot
    comodel_name='stock.lot' compute='_compute_available_lot_ids'
  • available_result_package_ids Many2many → stock.quant.package
    comodel_name='stock.quant.package' compute='_compute_available_result_package_ids'
  • has_weight Boolean
    compute='_compute_has_weight' readonly=False
  • label_report_id Many2one → ir.actions.report
    comodel_name='ir.actions.report'
  • lot_id Many2one → stock.lot
    comodel_name='stock.lot' domain="[('id', 'in', available_lot_ids)]"
  • move_id Many2one → stock.move
    comodel_name='stock.move'
  • move_line_ids Many2many → stock.move.line
    comodel_name='stock.move.line'
  • print_label Boolean
    help='Print label after the weight record'
  • product_id Many2one → product.product
    comodel_name='product.product' related='move_id.product_id' store=True
  • product_tracking Selection
    related='product_id.tracking'
  • result_package_id Many2one → stock.quant.package
    domain="[('id', 'in', available_result_package_ids)]" help='If set, the operations are packed into this package' args: 'stock.quant.package', 'Destination Package'
  • selected_move_line_id Many2one → stock.move.line
    comodel_name='stock.move.line'
  • weight Float
    digits='Product Unit of Measure'
  • wizard_state Selection
    default='weight' selection=[('weight', 'Weight'), ('new_move_line', 'Add Operation')]
Public methods (5)
  • action_close(self)
    Close but unlock the operation
  • add_operation_and_record(self)
    New detailed operation from the kanban card
  • record_weight(self)
    Register the operation weight
  • reload_action_wizard(self)
    Helper method to be called by buttons in weighing wizard
  • unlink(self)
    Ensure that the wizard cleanup releases the weighing operations
REPOSITORY
REPOSITORYOCA/stock-weighing
GIT
GIThttps://github.com/OCA/stock-weighing.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/stock-weighing/tree/15.0/stock_weighing
VERSION
VERSION 2.5.0
CATEGORY
CATEGORYInventory
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSPedro M. Baeza, Carlos Dauden, sergio-teruel, Weblate, OCA-git-bot, David, oca-ci, Carlos Roca, CarlosRoca13, Andrii9090-tecnativa
WEBSITE
WEBSITEhttps://github.com/OCA/stock-weighing
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:00:39
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/web:
    - web_filter_header_button
    - web_widget_numeric_step
    - web_ir_actions_act_multi
odoo/odoo:
    - stock
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - barcodes
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
A shopfloor assistant for weighing on stock operations.

Code Analysis

Views touched (11)
XML IDNameModelTypeStatus
report_weight_record_label report_weight_record_label ir.ui.view qweb New
stock_move_line_weight_kanban_view stock.move.line kanban New
stock_move_weight_form_view stock.move form New
stock_picking_type_kanban stock.picking.type field Inherits stock.stock_picking_type_kanban
stock_weighing_start_screen Weighing Start Screen ir.ui.view qweb New
view_move_search stock.move filter Inherits stock.view_move_search
view_move_weight_kanban_view stock.move kanban New
view_move_weight_start_screen_form_view weigh.operation.selection form New
view_picking_form stock.picking div Inherits stock.view_picking_form
view_picking_type_form stock.picking.type xpath Inherits stock.view_picking_type_form
weighing_wizard_form_view weighing.wizard form New
Models touched (7)

New fields (11)
  • is_weighing_operation_locked Boolean
    compute='_compute_is_weighing_operation_locked'
  • lot_names Char
    compute='_compute_lot_names'
  • move_lines_weighed Boolean
    compute='_compute_recorded_weight'
  • origin_names Char
    compute='_compute_origin_names'
  • picking_partner_id Many2one → res.partner
    comodel_name='res.partner' related='picking_id.partner_id' store=True
  • recorded_weight Float
    compute='_compute_recorded_weight' digits='Product Unit of Measure'
  • self_move_ids Many2many → stock.move
    comodel_name='stock.move' compute='_compute_self_move_ids'
  • show_weighing_print_button Boolean
    compute='_compute_show_weighing_print_button'
  • weighing_label_report_id Many2one
    related='picking_type_id.weighing_label_report_id'
  • weighing_state Selection
    compute='_compute_weighing_state' selection=[('weighed', 'Weighed'), ('weighing', 'Weighing'), ('to_weigh', 'To weigh')] store=True
  • weighing_user_id Many2one → res.users
    comodel_name='res.users' help="This user is weighing the record, so it's locked by him"
Public methods (18)
  • action_add_move_line(self)
    Open the weight wizard to add a new operation weight
  • action_force_weighed(self)
  • action_incoming_any_operations(self)
    @api.model
    Used in the start screen
  • action_incoming_weighing_operations(self)
    @api.model
    Used in the start screen
  • action_interwarehouse_any_operations(self)
    @api.model
    Used in the start screen
  • action_interwarehouse_weighing_operations(self)
    @api.model
    Used in the start screen
  • action_lock_weighing_operation(self)
    Avoid other that other user to modify the weight operation
  • action_outgoing_any_operations(self)
    @api.model
    Used in the start screen
  • action_outgoing_weighing_operations(self)
    @api.model
    Used in the start screen
  • action_print_weight_record_label(self)
    Get operations labels
  • action_reset_weights(self)
    Restore stock move lines weights
  • action_unlock_weigh_operation(self)
    Unlock the weigh operation
  • action_weighing(self)
    Open the wizard to record weights
  • action_weight_detailed_operations(self)
    Weight detailed operations for this picking
  • initial_action_domain(self)
    @api.model
  • name_get(self)
  • search(self, args, offset=0, limit=None, order=None, count=False)
    @api.model
    We need to sort by move sub-fields. Don't force if we have a given order
  • set_product_uom_qty_to_qty_done_from_weighing(self)

New fields (4)
  • has_recorded_weight Boolean
    help='The weight was set from the wizard'
  • recorded_weight Float
    digits='Product Unit of Measure'
  • weighing_date Datetime
  • weighing_user_id Many2one → res.users
    comodel_name='res.users'
Public methods (3)
  • action_print_weight_record_label(self)
    Get detailed operations weighing labels
  • action_reset_weights(self)
    Restore stock move lines weights
  • action_weighing(self)
    Open the wizard to record weights

New fields (2)
  • has_weighing_operations Boolean
    compute='_compute_has_weighing_operations'
  • weighing_operations Boolean
    related='picking_type_id.weighing_operations'
Public methods (1)
  • action_weighing_operations(self)
    Weighing operations for this picking

New fields (5)
  • print_weighing_label Boolean
    help='Print the weight operation label automatically'
  • to_do_weights Integer
    compute='_compute_to_do_weights'
  • weighing_label_report_id Many2one → ir.actions.report
    comodel_name='ir.actions.report' domain=[('model', '=', 'stock.move.line')] help='Choose a custom label template for this operation type'
  • weighing_operations Boolean
    help='Weighed products are done from weighing operations'
  • weight_move_ids Many2many → stock.move
    comodel_name='stock.move' compute='_compute_weight_move_ids'
Public methods (1)
  • action_weighing_operations(self)
    Weighing operations for this picking

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • has_weight Boolean
    compute='_compute_has_weight' search='_search_has_weight'
Public methods (0)

No public methods.

New fields (14)
  • available_lot_ids Many2many → stock.production.lot
    comodel_name='stock.production.lot' compute='_compute_available_lot_ids'
  • available_result_package_ids Many2many → stock.quant.package
    comodel_name='stock.quant.package' compute='_compute_available_result_package_ids'
  • has_weight Boolean
    compute='_compute_has_weight' readonly=False
  • label_report_id Many2one → ir.actions.report
    comodel_name='ir.actions.report'
  • lot_id Many2one → stock.production.lot
    comodel_name='stock.production.lot' domain="[('id', 'in', available_lot_ids)]"
  • move_id Many2one → stock.move
    comodel_name='stock.move'
  • move_line_ids Many2many → stock.move.line
    comodel_name='stock.move.line'
  • print_label Boolean
    help='Print label after the weight record'
  • product_id Many2one → product.product
    comodel_name='product.product' related='move_id.product_id' store=True
  • product_tracking Selection
    related='product_id.tracking'
  • result_package_id Many2one → stock.quant.package
    domain="[('id', 'in', available_result_package_ids)]" help='If set, the operations are packed into this package' args: 'stock.quant.package', 'Destination Package'
  • selected_move_line_id Many2one → stock.move.line
    comodel_name='stock.move.line'
  • weight Float
    digits='Product Unit of Measure'
  • wizard_state Selection
    default='weight' selection=[('weight', 'Weight'), ('new_move_line', 'Add Operation')]
Public methods (5)
  • action_close(self)
    Close but unlock the operation
  • add_operation_and_record(self)
    New detailed operation from the kanban card
  • record_weight(self)
    Register the operation weight
  • reload_action_wizard(self)
    Helper method to be called by buttons in weighing wizard
  • unlink(self)
    Ensure that the wizard cleanup releases the weighing operations