TIP: You can type at any time to perform a new search.
Product Serial
product_serial · OCA/stock-logistics-workflow
Security findings
Migration considerations
- Imports from the old `openerp.osv` namespace: renamed to `odoo` since Odoo 10.0. migration-openerp-import · source
- Imports from the old `openerp.tools.translate` namespace: renamed to `odoo` since Odoo 10.0. migration-openerp-import · source
- Imports from the old `openerp.osv` namespace: renamed to `odoo` since Odoo 10.0. migration-openerp-import · source
- Imports from the old `openerp.osv` namespace: renamed to `odoo` since Odoo 10.0. migration-openerp-import · source
- Imports from the old `openerp.osv` namespace: renamed to `odoo` since Odoo 10.0. migration-openerp-import · source
- Imports from the old `openerp.tools.translate` namespace: renamed to `odoo` since Odoo 10.0. migration-openerp-import · source
company— Class 'company' still inherits from the old-style `orm.Model` API: rewrite it against `models.Model`/`models.TransientModel`/`models.AbstractModel` - the old `osv`/`orm` API was removed entirely in modern Odoo. migration-old-api-base · sourcecompany— Class 'company' declares `_columns` as a plain dict: old-style field/default declarations, replace with `fields.X(...)` class attributes and `default=`. migration-old-style-fields · sourcecompany— Class 'company' declares `_defaults` as a plain dict: old-style field/default declarations, replace with `fields.X(...)` class attributes and `default=`. migration-old-style-fields · sourceproduct_product— Class 'product_product' still inherits from the old-style `orm.Model` API: rewrite it against `models.Model`/`models.TransientModel`/`models.AbstractModel` - the old `osv`/`orm` API was removed entirely in modern Odoo. migration-old-api-base · sourceproduct_product— Class 'product_product' declares `_columns` as a plain dict: old-style field/default declarations, replace with `fields.X(...)` class attributes and `default=`. migration-old-style-fields · sourceproduct_product— Class 'product_product' declares `_defaults` as a plain dict: old-style field/default declarations, replace with `fields.X(...)` class attributes and `default=`. migration-old-style-fields · sourcestock_move— Class 'stock_move' still inherits from the old-style `orm.Model` API: rewrite it against `models.Model`/`models.TransientModel`/`models.AbstractModel` - the old `osv`/`orm` API was removed entirely in modern Odoo. migration-old-api-base · sourcestock_move— Class 'stock_move' declares `_columns` as a plain dict: old-style field/default declarations, replace with `fields.X(...)` class attributes and `default=`. migration-old-style-fields · sourcestock_picking— Class 'stock_picking' still inherits from the old-style `orm.Model` API: rewrite it against `models.Model`/`models.TransientModel`/`models.AbstractModel` - the old `osv`/`orm` API was removed entirely in modern Odoo. migration-old-api-base · sourcestock_picking_prodlot_selection_wizard— Class 'stock_picking_prodlot_selection_wizard' still inherits from the old-style `orm.TransientModel` API: rewrite it against `models.Model`/`models.TransientModel`/`models.AbstractModel` - the old `osv`/`orm` API was removed entirely in modern Odoo. migration-old-api-base · sourcestock_picking_prodlot_selection_wizard— Class 'stock_picking_prodlot_selection_wizard' declares `_columns` as a plain dict: old-style field/default declarations, replace with `fields.X(...)` class attributes and `default=`. migration-old-style-fields · sourcestock_picking_prodlot_selection_wizard— Class 'stock_picking_prodlot_selection_wizard' declares `_defaults` as a plain dict: old-style field/default declarations, replace with `fields.X(...)` class attributes and `default=`. migration-old-style-fields · sourcestock_production_lot— Class 'stock_production_lot' still inherits from the old-style `orm.Model` API: rewrite it against `models.Model`/`models.TransientModel`/`models.AbstractModel` - the old `osv`/`orm` API was removed entirely in modern Odoo. migration-old-api-base · sourcestock_production_lot— Class 'stock_production_lot' declares `_columns` as a plain dict: old-style field/default declarations, replace with `fields.X(...)` class attributes and `default=`. migration-old-style-fields · sourceview_move_form_manual_split— For a target of Odoo 17.0+: view 'view_move_form_manual_split' uses `attrs=`/`states=`, which are no longer supported. Convert modifiers to direct Python boolean expressions in `invisible`/`readonly`/`required`; preserve the original AND/OR logic. migration-view-attrs-states · sourceview_picking_form— For a target of Odoo 17.0+: view 'view_picking_form' uses `attrs=`/`states=`, which are no longer supported. Convert modifiers to direct Python boolean expressions in `invisible`/`readonly`/`required`; preserve the original AND/OR logic. migration-view-attrs-states · sourceview_picking_in_form— For a target of Odoo 17.0+: view 'view_picking_in_form' uses `attrs=`/`states=`, which are no longer supported. Convert modifiers to direct Python boolean expressions in `invisible`/`readonly`/`required`; preserve the original AND/OR logic. migration-view-attrs-states · sourceview_picking_out_form— For a target of Odoo 17.0+: view 'view_picking_out_form' uses `attrs=`/`states=`, which are no longer supported. Convert modifiers to direct Python boolean expressions in `invisible`/`readonly`/`required`; preserve the original AND/OR logic. migration-view-attrs-states · sourceview_stock_move_tree_editable— For a target of Odoo 17.0+: view 'view_stock_move_tree_editable' uses `attrs=`/`states=`, which are no longer supported. Convert modifiers to direct Python boolean expressions in `invisible`/`readonly`/`required`; preserve the original AND/OR logic. migration-view-attrs-states · source- Raw `cr.execute()` INSERT/UPDATE/DELETE bypasses the ORM (no compute/constrains/tracking/mail): `delete from stock_move_history_ids where parent_id=%s and child_id=%s` - re-check the table/column names still match after upgrading. migration-raw-sql-write · source
- Raw `cr.execute()` INSERT/UPDATE/DELETE bypasses the ORM (no compute/constrains/tracking/mail): `update stock_move_history_ids set parent_id=%s where parent_id=%s and child_id=%s` - re-check the table/column names still match after upgrading. migration-raw-sql-write · source
Migration review checklist, not a compatibility verdict. No target version is selected: apply version-specific advice only when migrating to that version or later.
- Repository
- OCA/stock-logistics-workflow · module folder · Try on Runboat
- Module version
- 1.0
- Category
- Generic Modules/Inventory Control
- Folder size
- 0.07 MB
- License
- AGPL-3
- Application
- No
- Auto-installable
- No
- Website
- http://www.akretion.com
- Last tracking update
- 2026-10-03 22:24:29
- Authors
- Akretion, Odoo Community Association (OCA), NaN·tic
- Maintainers
- Akretion, Odoo Community Association (OCA), NaN·tic
- Committers
- Pedro M. Baeza, Stéphane Bidoul (ACSONE)
- Odoo dependencies
- Python dependencies
- None
- System dependencies
- None
- Required by
- None
- 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 ID | Name | Model | Type | Status |
|---|---|---|---|---|
autosplit_company |
res.company.autosplit.config | res.company | form | Inherits base.view_company_form |
view_move_form_manual_split |
view.stock.move.form.manual_split | stock.move | form | Inherits stock.view_move_form |
view_normal_unique_production_number_form |
product.normal.stock.form.unique_production_number.inherit | product.product | form | Inherits stock.view_normal_procurement_locations_form |
view_picking_form |
stock.picking.form.prodlot.selection | stock.picking | form | Inherits stock.view_picking_form |
view_picking_in_form |
stock.picking.in.form.prodlot.selection | stock.picking.in | form | Inherits stock.view_picking_in_form |
view_picking_out_form |
stock.picking.out.form | stock.picking.out | 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 |
view_stock_move_tree_editable |
view_stock_move_tree_editable | stock.move | tree | 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.
Loading…
Loading…
Loading…
Loading…