Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[17.0][OU-ADD] stock: migrate to 17.0 #4557

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions openupgrade_scripts/scripts/stock/17.0.1.1/post-migration.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Copyright 2024 Viindoo Technology Joint Stock Company (Viindoo)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

your copyright notices look wrong

# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

from openupgradelib import openupgrade


def _stock_scrap_convert_move_id_m2o_to_o2m(env):
"""
Convert m2o to o2m in 'stock.scrap'
"""
openupgrade.m2o_to_x2m(
env.cr, env["stock.scrap"], "stock_scrap", "move_ids", "move_id"
)


@openupgrade.migrate()
def migrate(env, version):
openupgrade.load_data(env, "stock", "17.0.1.1/noupdate_changes.xml")
_stock_scrap_convert_move_id_m2o_to_o2m(env)
14 changes: 14 additions & 0 deletions openupgrade_scripts/scripts/stock/17.0.1.1/pre-migration.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Copyright 2024 Tecnativa - Pedro M. Baeza
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

from openupgradelib import openupgrade

_field_renames = [
("stock.move", "stock_move", "quantity_done", "quantity"),
("stock.move.line", "stock_move_line", "qty_done", "quantity"),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it's more complex than that. as this field now as well counts what is done and what it reserved, you need to add reserved_qty if qty_done was 0 or the move's state isn't done (depends a bit on how users used v16).

I suggest to copy the column instead of renaming to allow subsequent code make its own choices here

]


@openupgrade.migrate()
def migrate(env, version):
openupgrade.rename_fields(env, _field_renames)
152 changes: 152 additions & 0 deletions openupgrade_scripts/scripts/stock/17.0.1.1/upgrade_analysis_work.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
---Models in module 'stock'---
obsolete model report.stock.report_product_product_replenishment [abstract]
obsolete model report.stock.report_product_template_replenishment [abstract]
obsolete model stock.immediate.transfer [transient]
obsolete model stock.immediate.transfer.line [transient]
new model stock.forecasted_product_product [abstract]
new model stock.forecasted_product_template [abstract]
new model stock.quant.relocate [transient]
# NOTHING TO DO

---Fields in module 'stock'---
stock / product.category / filter_for_stock_putaway_rule (boolean): NEW
stock / product.product / lot_properties_definition (properties_definition): NEW
# NOTHING TO DO: fields in new model

stock / product.product / sale_delay (float) : type is now 'integer' ('float')
stock / product.template / sale_delay (float) : type is now 'integer' ('float')
# NOTHING TO DO

stock / stock.lot / activity_user_id (many2one) : not related anymore
stock / stock.lot / activity_user_id (many2one) : now a function
stock / stock.lot / location_id (many2one) : NEW relation: stock.location, isfunction: function, stored
stock / stock.lot / lot_properties (properties) : NEW hasdefault: compute
stock / stock.lot / message_main_attachment_id (many2one): DEL relation: ir.attachment
stock / stock.lot / rating_ids (one2many) : NEW relation: rating.rating
# NOTHING TO DO

stock / stock.move / move_line_nosuggest_ids (one2many): DEL relation: stock.move.line
stock / stock.move / picked (boolean) : NEW isfunction: function, stored
stock / stock.move / picking_type_id (many2one) : not a function anymore
# NOTHING TO DO

stock / stock.move / quantity (float) : NEW isfunction: function, stored
stock / stock.move / quantity_done (float) : DEL
acpMicrocom marked this conversation as resolved.
Show resolved Hide resolved
# DONE: pre-migration

stock / stock.move / scrap_id (many2one) : NEW relation: stock.scrap
stock / stock.move / scrap_ids (one2many) : DEL relation: stock.scrap
# NOTHING TO DO
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is done in pre-migration where you transform stock.scrap#move_id


stock / stock.move.line / qty_done (float) : DEL
stock / stock.move.line / quantity (float) : NEW hasdefault: compute
acpMicrocom marked this conversation as resolved.
Show resolved Hide resolved
# DONE: pre-migration

stock / stock.move.line / picked (boolean) : NEW hasdefault: compute
stock / stock.move.line / quant_id (many2one) : NEW relation: stock.quant
stock / stock.move.line / quantity_product_uom (float) : NEW isfunction: function, stored
stock / stock.move.line / reserved_qty (float) : DEL
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

see above

stock / stock.move.line / reserved_uom_qty (float) : DEL required

stock / stock.package.type / height (integer) : type is now 'float' ('integer')
stock / stock.package.type / packaging_length (integer) : type is now 'float' ('integer')
stock / stock.package.type / width (integer) : type is now 'float' ('integer')
# NOTHING TO DO

stock / stock.picking / activity_user_id (many2one) : not related anymore
stock / stock.picking / activity_user_id (many2one) : now a function
stock / stock.picking / immediate_transfer (boolean) : DEL
stock / stock.picking / message_main_attachment_id (many2one): DEL relation: ir.attachment
stock / stock.picking / move_ids_without_package (one2many): is now stored
stock / stock.picking / move_ids_without_package (one2many): not a function anymore
stock / stock.picking / move_line_nosuggest_ids (one2many): DEL relation: stock.move.line
stock / stock.picking / picking_properties (properties): NEW hasdefault: compute
stock / stock.picking / rating_ids (one2many) : NEW relation: rating.rating
stock / stock.picking / return_id (many2one) : NEW relation: stock.picking
stock / stock.picking / return_ids (one2many) : NEW relation: stock.picking
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

those we'll need to reconstruct from stock.move#origin_returned_move_id

stock / stock.picking / show_operations (boolean) : not a function anymore
stock / stock.picking / show_operations (boolean) : now related

stock / stock.picking.type / auto_print_delivery_slip (boolean): NEW
stock / stock.picking.type / auto_print_lot_labels (boolean): NEW
stock / stock.picking.type / auto_print_package_label (boolean): NEW
stock / stock.picking.type / auto_print_packages (boolean) : NEW
stock / stock.picking.type / auto_print_product_labels (boolean): NEW
stock / stock.picking.type / auto_print_reception_report (boolean): NEW
stock / stock.picking.type / auto_print_reception_report_labels (boolean): NEW
stock / stock.picking.type / auto_print_return_slip (boolean): NEW
stock / stock.picking.type / default_location_return_id (many2one): NEW relation: stock.location
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this can be calculated that from the warehouse's old return picking type's default location

stock / stock.picking.type / lot_label_format (selection) : NEW selection_keys: ['4x12_lots', '4x12_units', 'zpl_lots', 'zpl_units'], hasdefault: default
stock / stock.picking.type / package_label_to_print (selection): NEW selection_keys: ['pdf', 'zpl'], hasdefault: default
stock / stock.picking.type / picking_properties_definition (properties_definition): NEW
stock / stock.picking.type / product_label_format (selection): NEW selection_keys: ['2x7xprice', '4x12', '4x12xprice', '4x7xprice', 'dymo', 'zpl', 'zplxprice'], hasdefault: default
stock / stock.picking.type / show_reserved (boolean) : now a function
# NOTHING TO DO: fields in new model

stock / stock.scrap / move_id (many2one) : DEL relation: stock.move
stock / stock.scrap / move_ids (one2many) : NEW relation: stock.move
acpMicrocom marked this conversation as resolved.
Show resolved Hide resolved
# DONE post-migration: convert data many2one to one2many

stock / stock.scrap / message_main_attachment_id (many2one): DEL relation: ir.attachment
stock / stock.scrap / rating_ids (one2many) : NEW relation: rating.rating
stock / stock.scrap / should_replenish (boolean) : NEW
stock / stock.warehouse / return_type_id (many2one) : DEL relation: stock.picking.type
# NOTHING TO DO

---XML records in module 'stock'---
NEW ir.actions.act_window: stock.action_picking_tree_incoming
NEW ir.actions.act_window: stock.action_picking_tree_internal
NEW ir.actions.act_window: stock.action_picking_tree_outgoing
NEW ir.actions.act_window: stock.action_product_production_lot_form
# NOTHING TO DO

NEW ir.actions.client: stock.stock_forecasted_product_product_action
NEW ir.actions.client: stock.stock_forecasted_product_template_action
DEL ir.actions.client: stock.stock_replenishment_product_product_action
DEL ir.actions.client: stock.stock_replenishment_product_template_action

NEW ir.actions.report: stock.return_label_report
NEW ir.actions.server: stock.action_scrap
NEW ir.actions.server: stock.action_toggle_is_locked
NEW ir.actions.server: stock.action_view_set_to_zero_quants_tree
DEL ir.actions.server: stock.stock_quant_stock_move_line_desynchronization
# NOTHING TO DO

NEW ir.model.access: stock.access_stock_quant_relocate
DEL ir.model.access: stock.access_stock_immediate_transfer
DEL ir.model.access: stock.access_stock_immediate_transfer_line
# NOTHING TO DO: new feature

ir.model.constraint: stock.constraint_stock_package_type_positive_height (changed definition: is now 'check(height>=0.0)' ('check(height>=0)'))
ir.model.constraint: stock.constraint_stock_package_type_positive_length (changed definition: is now 'check(packaging_length>=0.0)' ('check(packaging_length>=0)'))
ir.model.constraint: stock.constraint_stock_package_type_positive_width (changed definition: is now 'check(width>=0.0)' ('check(width>=0)'))
# NOTHING TO DO

NEW ir.ui.menu: stock.in_picking
NEW ir.ui.menu: stock.int_picking
NEW ir.ui.menu: stock.menu_stock_adjustments
NEW ir.ui.menu: stock.menu_stock_procurement
NEW ir.ui.menu: stock.menu_stock_transfers
NEW ir.ui.menu: stock.out_picking
DEL ir.ui.menu: stock.all_picking
# NOTHING TO DO: new feature

NEW ir.ui.view: stock.product_view_kanban_catalog
NEW ir.ui.view: stock.report_return_slip
NEW ir.ui.view: stock.stock_picking_view_activity
NEW ir.ui.view: stock.stock_quant_relocate_view_form
NEW ir.ui.view: stock.view_production_lot_kanban
NEW ir.ui.view: stock.view_stock_move_line_pivot
NEW ir.ui.view: stock.view_stock_quant_form
NEW ir.ui.view: stock.view_stock_quant_tree_simple
DEL ir.ui.view: stock.report_mrp_line
DEL ir.ui.view: stock.report_product_product_replenishment
DEL ir.ui.view: stock.report_product_template_replenishment
DEL ir.ui.view: stock.report_replenishment_header
DEL ir.ui.view: stock.report_stock_inventory
DEL ir.ui.view: stock.view_immediate_transfer
DEL ir.ui.view: stock.view_stock_move_nosuggest_operations
# NOTHING TO DO

NEW product.removal: stock.removal_least_packages
# NOTHING TO DO
Loading