Product Serial

product_serial
REPOSITORY
REPOSITORYOCA/stock-logistics-workflow
GIT
GIThttps://github.com/OCA/stock-logistics-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/stock-logistics-workflow/tree/10.0/product_serial
VERSION
VERSION 1.0
CATEGORY
CATEGORYGeneric Modules/Inventory Control
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, NaN·tic
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, NaN·tic
COMMITTERS
COMMITTERSPedro M. Baeza, Stéphane Bidoul (ACSONE)
WEBSITE
WEBSITEhttp://www.akretion.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:19:58
ODOO DEPENDENCIES
ODOO DEPENDENCIES 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 Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Enhance the management of Production Lots (Serial Numbers) in OpenERP.

Here are the additional features proposed by this module:

1. Add a new selection field 'Lot split type' on the product form
   under the 'Inventory' tab to specify how the Production Lots should be
   split on the Pickings (you should also enable 'Track Incoming/Outgoing
   Lots', and the new 'Track internal lots' field).

2. If the option 'Active auto split' is active for the Company,
   OpenERP will automagically split up picking list movements into one
   movement per product instance or logistical unit packing quantity (in
   that case, only the first logistical unit is taken into account at the
   present time. Improvement to take them all to be done!).

3. Turn Incoming Pickings into an editable grid where you can
   directly type the codes of a new production lot and/or tracking number
   to create and associate to the move (it also checks it doesn't exist
   yet).

4. If the option 'Group invoice lines' is active for the Company,
   OpenERP will group the invoice lines to make it look like the
   Sale/Purchase Order when generating an Invoice from a Picking.
    

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
autosplit_company res.company.autosplit.config res.company Inherits base.view_company_form
view_move_form_manual_split view.stock.move.form.manual_split stock.move Inherits stock.view_move_form
view_normal_unique_production_number_form product.normal.stock.form.unique_production_number.inherit product.product Inherits stock.view_normal_procurement_locations_form
view_picking_form stock.picking.form.prodlot.selection stock.picking Inherits stock.view_picking_form
view_picking_in_form stock.picking.in.form.prodlot.selection stock.picking.in Inherits stock.view_picking_in_form
view_picking_out_form stock.picking.out.form stock.picking.out Inherits stock.view_picking_out_form
view_production_lot_form_unique_production_number view_production_lot_form_unique_production_number stock.production.lot Inherits stock.view_production_lot_form
view_stock_move_tree_editable view_stock_move_tree_editable stock.move Inherits stock.view_move_picking_tree
view_stock_picking_prodlot_selection stock.picking.prodlot.selection stock.picking.prodlot.selection form New
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (6)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • action_done(self, cr, uid, ids, context=None)
    If we autosplit moves without reconnecting them 1 by 1, at least when some move which has descendants is split. The following situation would happen (alphabetical order is order of creation, initially b and a pre-exists, then a is split, so a might get assigned and then split too): Incoming moves b, c, d Outgoing moves a, e, f Then we have those links: b->a, c->a, d->a and: b->, b->e, b->f The following code will detect this situation and reconnect properly the moves into only: b->a, c->e and d->f.
  • copy(self, cr, uid, id, default=None, context=None)
  • split_move(self, cr, uid, ids, context=None)

New fields (0)

No new fields.

Public methods (2)
  • action_assign_wkf(self, cr, uid, ids, context=None)
  • action_invoice_create(self, cursor, user, ids, journal_id=False, group=False, type='out_invoice', context=None)

New fields (0)

No new fields.

Public methods (1)
  • select_or_create_prodlots(self, cr, uid, ids, context=None)

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/stock-logistics-workflow
GIT
GIThttps://github.com/OCA/stock-logistics-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/stock-logistics-workflow/tree/9.0/product_serial
VERSION
VERSION 1.0
CATEGORY
CATEGORYGeneric Modules/Inventory Control
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, NaN·tic
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, NaN·tic
COMMITTERS
COMMITTERSStéphane Bidoul (ACSONE)
WEBSITE
WEBSITEhttp://www.akretion.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:22
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - stock
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - report
    - procurement
    - barcodes
    - web_planner
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Enhance the management of Production Lots (Serial Numbers) in OpenERP.

Here are the additional features proposed by this module:

1. Add a new selection field 'Lot split type' on the product form
   under the 'Inventory' tab to specify how the Production Lots should be
   split on the Pickings (you should also enable 'Track Incoming/Outgoing
   Lots', and the new 'Track internal lots' field).

2. If the option 'Active auto split' is active for the Company,
   OpenERP will automagically split up picking list movements into one
   movement per product instance or logistical unit packing quantity (in
   that case, only the first logistical unit is taken into account at the
   present time. Improvement to take them all to be done!).

3. Turn Incoming Pickings into an editable grid where you can
   directly type the codes of a new production lot and/or tracking number
   to create and associate to the move (it also checks it doesn't exist
   yet).

4. If the option 'Group invoice lines' is active for the Company,
   OpenERP will group the invoice lines to make it look like the
   Sale/Purchase Order when generating an Invoice from a Picking.
    

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
autosplit_company res.company.autosplit.config res.company Inherits base.view_company_form
view_move_form_manual_split view.stock.move.form.manual_split stock.move Inherits stock.view_move_form
view_normal_unique_production_number_form product.normal.stock.form.unique_production_number.inherit product.product Inherits stock.view_normal_procurement_locations_form
view_picking_form stock.picking.form.prodlot.selection stock.picking Inherits stock.view_picking_form
view_picking_in_form stock.picking.in.form.prodlot.selection stock.picking.in Inherits stock.view_picking_in_form
view_picking_out_form stock.picking.out.form stock.picking.out Inherits stock.view_picking_out_form
view_production_lot_form_unique_production_number view_production_lot_form_unique_production_number stock.production.lot Inherits stock.view_production_lot_form
view_stock_move_tree_editable view_stock_move_tree_editable stock.move Inherits stock.view_move_picking_tree
view_stock_picking_prodlot_selection stock.picking.prodlot.selection stock.picking.prodlot.selection form New
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (6)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • action_done(self, cr, uid, ids, context=None)
    If we autosplit moves without reconnecting them 1 by 1, at least when some move which has descendants is split. The following situation would happen (alphabetical order is order of creation, initially b and a pre-exists, then a is split, so a might get assigned and then split too): Incoming moves b, c, d Outgoing moves a, e, f Then we have those links: b->a, c->a, d->a and: b->, b->e, b->f The following code will detect this situation and reconnect properly the moves into only: b->a, c->e and d->f.
  • copy(self, cr, uid, id, default=None, context=None)
  • split_move(self, cr, uid, ids, context=None)

New fields (0)

No new fields.

Public methods (2)
  • action_assign_wkf(self, cr, uid, ids, context=None)
  • action_invoice_create(self, cursor, user, ids, journal_id=False, group=False, type='out_invoice', context=None)

New fields (0)

No new fields.

Public methods (1)
  • select_or_create_prodlots(self, cr, uid, ids, context=None)

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/stock-logistics-workflow
GIT
GIThttps://github.com/OCA/stock-logistics-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/stock-logistics-workflow/tree/8.0/product_serial
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYInventory, Logistic, Storage
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, NaN·tic
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, NaN·tic
COMMITTERS
COMMITTERSStéphane Bidoul, Alexis de Lattre, Alexandre Fayolle, Stéphane Bidoul (ACSONE), oca-travis, OCA-git-bot
WEBSITE
WEBSITEhttp://www.akretion.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:24
ODOO DEPENDENCIES
ODOO DEPENDENCIES 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 Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
product_template_form_view product.serial.product.template.form.view product.template Inherits stock.view_template_property_form
view_stock_enter_transfer_details product_serial.stock.transfer_details.form stock.transfer_details Inherits stock.view_stock_enter_transfer_details
view_stock_prodlot_selection stock.prodlot.selection stock.prodlot.selection form New
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (3)

New fields (1)
  • lot_split_type Selection
    default='none' help="You should select 'Single' if you have one serial number per item. In this case, the Transfer pop-up on the picking will display one line per unit for this product. The default value is 'None': for those product, the native process is not modified." string='Lot split type' args: [('none', 'None'), ('single', 'Single')]
Public methods (0)

No public methods.

New fields (7)
  • create_prodlots Boolean
    string='Create New Serial Numbers'
  • first_number Char
    string='First Number'
  • last_number Char
    string='Last Number'
  • prefix Char
    string='Prefix'
  • prodlot_file Binary
    help='The serial numbers file should be a text file with one serial number per line and without any field separator (one file per product).' string='Serial Numbers File'
  • product_id Many2one → product.product
    required=True string='Product' args: 'product.product'
  • suffix Char
    string='Suffix'
Public methods (4)
  • cancel(self)
    @api.multi
    The wizard is re-called when the user clicks on Cancel
  • default_get(self, fields)
    @api.model
  • select_or_create_prodlots_from_file(self)
    @api.multi
  • select_or_create_prodlots_from_interval(self)
    @api.multi

New fields (0)

No new fields.

Public methods (1)
  • default_get(self, fields)
    @api.model
REPOSITORY
REPOSITORYOCA/stock-logistics-workflow
GIT
GIThttps://github.com/OCA/stock-logistics-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/stock-logistics-workflow/tree/7.0/product_serial
VERSION
VERSION 1.0
CATEGORY
CATEGORYGeneric Modules/Inventory Control
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, NaN·tic
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, NaN·tic
COMMITTERS
COMMITTERSAlexis de Lattre, Romain Deheele, Guewen Baconnier, Alexandre Fayolle, Joel Grand-Guillaume, Leonardo Pistone, GitHub, Stéphane Bidoul (ACSONE), unknown, Launchpad Translations on behalf of stock-logistic-core-editors, Rudolf Schnapka, Ivan Wirawan
WEBSITE
WEBSITEhttp://www.akretion.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:07:14
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - stock
    - product
    - base
    - process
    - web
    - decimal_precision
    - mail
    - base_setup
    - web_kanban
    - account
    - analytic
    - board
    - edi
    - email_template
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Enhance the management of Production Lots (Serial Numbers) in OpenERP.

Here are the additional features proposed by this module:

1. Add a new selection field 'Lot split type' on the product form
   under the 'Inventory' tab to specify how the Production Lots should be
   split on the Pickings (you should also enable 'Track Incoming/Outgoing
   Lots', and the new 'Track internal lots' field).

2. If the option 'Active auto split' is active for the Company,
   OpenERP will automagically split up picking list movements into one
   movement per product instance or logistical unit packing quantity (in
   that case, only the first logistical unit is taken into account at the
   present time. Improvement to take them all to be done!).

3. Turn Incoming Pickings into an editable grid where you can
   directly type the codes of a new production lot and/or tracking number
   to create and associate to the move (it also checks it doesn't exist
   yet).

4. If the option 'Group invoice lines' is active for the Company,
   OpenERP will group the invoice lines to make it look like the
   Sale/Purchase Order when generating an Invoice from a Picking.
    

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
autosplit_company res.company.autosplit.config res.company Inherits base.view_company_form
view_move_form_manual_split view.stock.move.form.manual_split stock.move Inherits stock.view_move_form
view_normal_unique_production_number_form product.normal.stock.form.unique_production_number.inherit product.product Inherits stock.view_normal_procurement_locations_form
view_picking_form stock.picking.form.prodlot.selection stock.picking Inherits stock.view_picking_form
view_picking_in_form stock.picking.in.form.prodlot.selection stock.picking.in Inherits stock.view_picking_in_form
view_picking_out_form stock.picking.out.form stock.picking.out Inherits stock.view_picking_out_form
view_production_lot_form_unique_production_number view_production_lot_form_unique_production_number stock.production.lot Inherits stock.view_production_lot_form
view_stock_move_tree_editable view_stock_move_tree_editable stock.move Inherits stock.view_move_picking_tree
view_stock_picking_prodlot_selection stock.picking.prodlot.selection stock.picking.prodlot.selection form New
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (6)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • action_done(self, cr, uid, ids, context=None)
    If we autosplit moves without reconnecting them 1 by 1, at least when some move which has descendants is split. The following situation would happen (alphabetical order is order of creation, initially b and a pre-exists, then a is split, so a might get assigned and then split too): Incoming moves b, c, d Outgoing moves a, e, f Then we have those links: b->a, c->a, d->a and: b->, b->e, b->f The following code will detect this situation and reconnect properly the moves into only: b->a, c->e and d->f.
  • copy(self, cr, uid, id, default=None, context=None)
  • split_move(self, cr, uid, ids, context=None)

New fields (0)

No new fields.

Public methods (2)
  • action_assign_wkf(self, cr, uid, ids, context=None)
  • action_invoice_create(self, cursor, user, ids, journal_id=False, group=False, type='out_invoice', context=None)

New fields (0)

No new fields.

Public methods (1)
  • select_or_create_prodlots(self, cr, uid, ids, context=None)

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/stock-logistics-workflow
GIT
GIThttps://github.com/OCA/stock-logistics-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/stock-logistics-workflow/tree/6.1/product_serial
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYGeneric Modules/Inventory Control
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, NaN·tic
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, NaN·tic
COMMITTERS
COMMITTERSAlexandre Fayolle, Niels Huylebroeck, Sébastien Beau, Launchpad Translations on behalf of stock-logistic-core-editors
WEBSITE
WEBSITEhttp://www.akretion.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:04:06
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - stock
    - product
    - base
    - process
    - decimal_precision
    - account
    - base_setup
    - analytic
    - board
    - edi
    - email_template
    - mail
    - base_tools
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Turns production lot tracking numbers into unique per product instance code (serial number).
    Moreover, it
    1) adds a new selection field on the product form to enable or disable this behavior and with split type choice (you should also enable in/out tracking)
    2) then forbids to perform a move if a move involves more than one product instance
    3) automagically splits up picking list movements into one movement per product instance or logistical unit packing qty (in that case, only the first LU is taken into account at the present time. Improvement to take them all to be done !!!)
    4) turns incoming pickings into an editable grid where you can directly type the codes
    of a new production and tracking number/code to create and associate to the move (it also checks it
    doesn't exist yet)

    We would also like to extend this module to split automatic production orders (from MRP engine) into several individual production orders in order
    to make it easy to encode the serial numbers in the production. Let us know if you would like that simple extension to be made.
    

Code Analysis

Views touched (13)
XML IDNameModelTypeStatus
autosplit_company res.company.autosplit.config res.company form Inherits base.view_company_form
view_normal_unique_production_number_form product.normal.stock.form.unique_production_number.inherit product.product form Inherits stock.view_normal_stock_property_form
view_picking_form_manual_split view.picking.form.manual_split stock.picking form Inherits stock.view_picking_form
view_picking_form_source_stock_location view.picking.form.source_stock_location stock.picking form Inherits stock.view_picking_form
view_picking_in_form_editable_move_lines view.picking.in.form.editable_move_lines stock.picking form Inherits stock.view_picking_in_form
view_picking_in_form_manual_split view.picking.in.form.manual_split stock.picking form Inherits stock.view_picking_in_form
view_picking_in_form_new_prodlot_code view.picking.in.form.new_prodlot_code stock.picking form Inherits stock.view_picking_in_form
view_picking_in_form_new_tracking_code view.picking.in.form.new_tracking_code stock.picking form Inherits stock.view_picking_in_form
view_picking_in_form_source_stock_location view.picking.in.form.source_stock_location stock.picking form Inherits stock.view_picking_in_form
view_picking_out_form_dest_stock_location view.picking.out.form.dest_stock_location stock.picking form Inherits stock.view_picking_out_form
view_picking_out_form_editable_move_lines view.picking.out.form.editable_move_lines stock.picking form Inherits stock.view_picking_out_form
view_picking_out_form_manual_split view.picking.out.form.manual_split stock.picking form Inherits stock.view_picking_out_form
view_production_lot_form_unique_production_number view_production_lot_form_unique_production_number stock.production.lot form Inherits stock.view_production_lot_form
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (0)

No models found for this module.