Skip to content

Commit

Permalink
[OU-ADD] stock: migration
Browse files Browse the repository at this point in the history
  • Loading branch information
hoangtiendung070797 authored and marielejeune committed Feb 1, 2024
1 parent 5402439 commit 0481c1f
Show file tree
Hide file tree
Showing 4 changed files with 347 additions and 1 deletion.
2 changes: 1 addition & 1 deletion docsource/modules150-160.rst
Original file line number Diff line number Diff line change
Expand Up @@ -768,7 +768,7 @@ Module coverage 15.0 -> 16.0
+-------------------------------------------------+----------------------+-------------------------------------------------+
| |new| spreadsheet_dashboard_website_sale_slides | | |
+-------------------------------------------------+----------------------+-------------------------------------------------+
| stock | | |
| stock | Done | |
+-------------------------------------------------+----------------------+-------------------------------------------------+
| stock_account | | |
+-------------------------------------------------+----------------------+-------------------------------------------------+
Expand Down
6 changes: 6 additions & 0 deletions openupgrade_scripts/scripts/stock/16.0.1.1/post-migration.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from openupgradelib import openupgrade


@openupgrade.migrate()
def migrate(env, version):
openupgrade.load_data(env.cr, "stock", "16.0.1.1/noupdate_changes.xml")
124 changes: 124 additions & 0 deletions openupgrade_scripts/scripts/stock/16.0.1.1/pre-migration.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
from openupgradelib import openupgrade

_models_renames = [
("stock.location.route", "stock.route"),
("stock.production.lot", "stock.lot"),
]

_tables_renames = [
("stock_location_route", "stock_route"),
("stock_production_lot", "stock_lot"),
("stock_location_route_categ", "stock_route_categ"),
("stock_location_route_packaging", "stock_route_packaging"),
("stock_location_route_move", "stock_route_move"),
]

_fields_renames = [
("stock.move.line", "stock_move_line", "product_qty", "reserved_qty"),
("stock.move.line", "stock_move_line", "product_uom_qty", "reserved_uom_qty"),
("stock.rule", "stock_rule", "location_id", "location_dest_id"),
("stock.picking", "stock_picking", "move_lines", "move_ids"),
]
_xmlids_renames = [
("stock.access_stock_production_lot_user", "stock.access_stock_lot_user")
]


def _update_stock_quant_storage_category_id(env):
openupgrade.logged_query(
env.cr,
"""
ALTER TABLE stock_quant
ADD COLUMN IF NOT EXISTS storage_category_id INTEGER
""",
)
openupgrade.logged_query(
env.cr,
"""
UPDATE stock_quant
SET storage_category_id = stock_location.storage_category_id
FROM stock_location
WHERE stock_quant.location_id = stock_location.id
""",
)


def _update_sol_product_category_name(env):
openupgrade.logged_query(
env.cr,
"""
ALTER TABLE stock_move_line
ADD COLUMN IF NOT EXISTS product_category_name CHARACTER VARYING
""",
)
openupgrade.logged_query(
env.cr,
"""
UPDATE stock_move_line AS sml
SET product_category_name = category.complete_name
FROM product_product AS product
JOIN product_template AS product_tmpl
ON product_tmpl.id = product.product_tmpl_id
JOIN product_category AS category
ON category.id = product_tmpl.categ_id
WHERE sml.product_id = product.id
""",
)


def _compute_stock_location_replenish_location(env):
openupgrade.logged_query(
env.cr,
"""
ALTER TABLE stock_location
ADD COLUMN IF NOT EXISTS replenish_location BOOLEAN
""",
)
openupgrade.logged_query(
env.cr,
"""
WITH location_info as (
SELECT sl.id as id,
CASE
WHEN sl.usage = 'internal' AND sl.id = sw.lot_stock_id THEN True
ELSE FALSE
END as replenish_location_status
FROM stock_location sl
LEFT JOIN stock_warehouse sw
ON sw.lot_stock_id = sl.id
)
UPDATE stock_location sl
SET replenish_location = info.replenish_location_status
FROM location_info info
WHERE sl.id = info.id
""",
)


def _update_stock_quant_package_pack_date(env):
openupgrade.logged_query(
env.cr,
"""
ALTER TABLE stock_quant_package
ADD COLUMN IF NOT EXISTS pack_date DATE
""",
)
openupgrade.logged_query(
env.cr,
"""
UPDATE stock_quant_package
SET pack_date = DATE(create_date)
""",
)


@openupgrade.migrate()
def migrate(env, version):
openupgrade.rename_tables(env.cr, _tables_renames)
openupgrade.rename_models(env.cr, _models_renames)
openupgrade.rename_fields(env, _fields_renames)
openupgrade.rename_xmlids(env.cr, _xmlids_renames)
_update_stock_quant_storage_category_id(env)
_update_stock_quant_package_pack_date(env)
_update_sol_product_category_name(env)
_compute_stock_location_replenish_location(env)
216 changes: 216 additions & 0 deletions openupgrade_scripts/scripts/stock/16.0.1.1/upgrade_analysis_work.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,216 @@
---Models in module 'stock'---
obsolete model stock.location.route
obsolete model stock.production.lot
# DONE: pre-migration: renamed model

new model lot.label.layout [transient]
new model picking.label.type [transient]
# NOTHING TO DO

new model stock.lot
# DONE: pre-migration: renamed model

new model stock.replenishment.option [transient]
# NOTHING TO DO

new model stock.route
# DONE: pre-migration: renamed model

---Fields in module 'stock'---
stock / barcode.rule / type (False) : selection_keys is now '['alias', 'expiration_date', 'location', 'location_dest', 'lot', 'pack_date', 'package', 'package_type', 'product', 'quantity', 'use_date', 'weight']' ('['alias', 'expiration_date', 'location', 'location_dest', 'lot', 'package', 'package_type', 'packaging_date', 'product', 'quantity', 'use_date', 'weight']')
# NOTHING TO DO: no keys change in module

stock / product.category / route_ids (many2many) : relation is now 'stock.route' ('stock.location.route') [nothing to do]
# NOTHING TO DO

stock / product.category / route_ids (many2many) : table is now 'stock_route_categ' ('stock_location_route_categ')
# DONE: pre-migration: renamed table

stock / product.category / total_route_ids (many2many) : relation is now 'stock.route' ('stock.location.route') [nothing to do]
stock / product.packaging / route_ids (many2many) : relation is now 'stock.route' ('stock.location.route') [nothing to do]
# NOTHING TO DO

stock / product.packaging / route_ids (many2many) : table is now 'stock_route_packaging' ('stock_location_route_packaging')
# DONE: pre-migration: renamed table

stock / product.product / route_from_categ_ids (many2many): relation is now 'stock.route' ('stock.location.route') [nothing to do]
stock / product.product / route_ids (many2many) : relation is now 'stock.route' ('stock.location.route') [nothing to do]
# NOTHING TO DO

stock / product.template / detailed_type (False) : selection_keys is now '['consu', 'product', 'service']' ('['consu', 'gift', 'product', 'service']')
# NOTHING TO DO: no keys changhe in module

stock / product.template / route_from_categ_ids (many2many): relation is now 'stock.route' ('stock.location.route') [nothing to do]
# NOTHING TO DO

stock / product.template / route_from_categ_ids (many2many): table is now 'stock.route' ('stock.location.route')
# NOTHING TO DO: related fields

stock / product.template / route_ids (many2many) : relation is now 'stock.route' ('stock.location.route') [nothing to do]
# NOTHING TO DO

stock / stock.location / replenish_location (boolean) : NEW hasdefault: compute
#DONE: pre-migration: create column and precompute values

stock / stock.location / warehouse_id (many2one) : is now stored
# NOTHING TO DO: handle by ORM

stock / stock.location.route / active (boolean) : DEL
stock / stock.location.route / categ_ids (many2many) : DEL relation: product.category
stock / stock.location.route / company_id (many2one) : DEL relation: res.company
stock / stock.location.route / name (char) : DEL required
stock / stock.location.route / packaging_ids (many2many) : DEL relation: product.packaging
stock / stock.location.route / packaging_selectable (boolean): DEL
stock / stock.location.route / product_categ_selectable (boolean): DEL
stock / stock.location.route / product_ids (many2many) : DEL relation: product.template
stock / stock.location.route / product_selectable (boolean) : DEL
stock / stock.location.route / rule_ids (one2many) : DEL relation: stock.rule
stock / stock.location.route / sequence (integer) : DEL
stock / stock.location.route / supplied_wh_id (many2one) : DEL relation: stock.warehouse
stock / stock.location.route / supplier_wh_id (many2one) : DEL relation: stock.warehouse
stock / stock.location.route / warehouse_ids (many2many) : DEL relation: stock.warehouse
stock / stock.location.route / warehouse_selectable (boolean): DEL
# NOTHING TO DO: handle by ORM

stock / stock.lot / activity_ids (one2many) : NEW relation: mail.activity
stock / stock.lot / company_id (many2one) : NEW relation: res.company, required
stock / stock.lot / message_follower_ids (one2many): NEW relation: mail.followers
stock / stock.lot / message_ids (one2many) : NEW relation: mail.message
stock / stock.lot / message_main_attachment_id (many2one): NEW relation: ir.attachment
stock / stock.lot / name (char) : NEW required, hasdefault: default
stock / stock.lot / note (html) : NEW
stock / stock.lot / product_id (many2one) : NEW relation: product.product, required
stock / stock.lot / product_uom_id (many2one) : NEW relation: uom.uom, isrelated: related, stored
stock / stock.lot / quant_ids (one2many) : NEW relation: stock.quant
stock / stock.lot / ref (char) : NEW
stock / stock.lot / website_message_ids (one2many): NEW relation: mail.message
# NOTHING TO DO: handle by ORM

stock / stock.move / lot_ids (many2many) : relation is now 'stock.lot' ('stock.production.lot') [nothing to do]
# NOTHING TO DO

stock / stock.move / quantity_done (float) : is now stored
# NOTHING TO DO: handle by ORM, can improve in the future

stock / stock.move / route_ids (many2many) : relation is now 'stock.route' ('stock.location.route') [nothing to do]
# NOTHING TO DO

stock / stock.move / route_ids (many2many) : table is now 'stock_route_move' ('stock_location_route_move')
# DONE: pre-migration: renamed table

stock / stock.move.line / lot_id (many2one) : relation is now 'stock.lot' ('stock.production.lot') [nothing to do]
# NOTHING TO DO

stock / stock.move.line / product_category_name (char) : NEW isrelated: related, stored
# DONE: pre-migratiion: create column and fill values

stock / stock.move.line / product_qty (float) : DEL
stock / stock.move.line / product_uom_qty (float) : DEL required
stock / stock.move.line / reserved_qty (float) : NEW isfunction: function, stored
stock / stock.move.line / reserved_uom_qty (float) : NEW required, hasdefault: default
# DONE: pre-migration: rename columns

stock / stock.package.type / base_weight (float) : NEW
# NOTHING TO DO

stock / stock.picking / move_ids (one2many) : NEW relation: stock.move
stock / stock.picking / move_lines (one2many) : DEL relation: stock.move
# DONE: pre-migration: rename fields

stock / stock.picking.type / auto_show_reception_report (boolean): NEW
stock / stock.picking.type / create_backorder (selection) : NEW required, selection_keys: ['always', 'ask', 'never'], hasdefault: default
# NOTHING TO DO

stock / stock.production.lot / activity_ids (one2many) : DEL relation: mail.activity
stock / stock.production.lot / company_id (many2one) : DEL relation: res.company, required
stock / stock.production.lot / message_follower_ids (one2many): DEL relation: mail.followers
stock / stock.production.lot / message_ids (one2many) : DEL relation: mail.message
stock / stock.production.lot / message_main_attachment_id (many2one): DEL relation: ir.attachment
stock / stock.production.lot / name (char) : DEL required
stock / stock.production.lot / note (html) : DEL
stock / stock.production.lot / product_id (many2one) : DEL relation: product.product, required
stock / stock.production.lot / product_uom_id (many2one) : DEL relation: uom.uom
stock / stock.production.lot / quant_ids (one2many) : DEL relation: stock.quant
stock / stock.production.lot / ref (char) : DEL
stock / stock.production.lot / website_message_ids (one2many): DEL relation: mail.message
# NOTHING TO DO: handle by ORM

stock / stock.quant / lot_id (many2one) : relation is now 'stock.lot' ('stock.production.lot') [nothing to do]
# NOTHING TO DO

stock / stock.quant / storage_category_id (many2one): NEW relation: stock.storage.category, isrelated: related, stored
# DONE: pre-migration: create column and fill values

stock / stock.quant.package / pack_date (date) : NEW hasdefault: default
# DONE: pre-migration: create column and fill values

stock / stock.route / active (boolean) : NEW hasdefault: default
stock / stock.route / categ_ids (many2many) : NEW relation: product.category
stock / stock.route / company_id (many2one) : NEW relation: res.company, hasdefault: default
stock / stock.route / name (char) : NEW required
stock / stock.route / packaging_ids (many2many) : NEW relation: product.packaging
stock / stock.route / packaging_selectable (boolean): NEW
stock / stock.route / product_categ_selectable (boolean): NEW
stock / stock.route / product_ids (many2many) : NEW relation: product.template
stock / stock.route / product_selectable (boolean) : NEW hasdefault: default
stock / stock.route / rule_ids (one2many) : NEW relation: stock.rule
stock / stock.route / sequence (integer) : NEW hasdefault: default
stock / stock.route / supplied_wh_id (many2one) : NEW relation: stock.warehouse
stock / stock.route / supplier_wh_id (many2one) : NEW relation: stock.warehouse
stock / stock.route / warehouse_ids (many2many) : NEW relation: stock.warehouse
stock / stock.route / warehouse_selectable (boolean): NEW
# NOTHING TO DO: handle by ORM

stock / stock.rule / location_dest_id (many2one) : NEW relation: stock.location, required
stock / stock.rule / location_id (many2one) : DEL relation: stock.location, required
# DONE: pre-migration: renamed columns

stock / stock.rule / route_id (many2one) : relation is now 'stock.route' ('stock.location.route') [nothing to do]
stock / stock.scrap / lot_id (many2one) : relation is now 'stock.lot' ('stock.production.lot') [nothing to do]
# NOTHING TO DO

stock / stock.scrap / scrap_qty (float) : now a function
# NOTHING TO DO: handle by ORM

stock / stock.warehouse / crossdock_route_id (many2one) : relation is now 'stock.route' ('stock.location.route') [nothing to do]
stock / stock.warehouse / delivery_route_id (many2one) : relation is now 'stock.route' ('stock.location.route') [nothing to do]
stock / stock.warehouse / reception_route_id (many2one) : relation is now 'stock.route' ('stock.location.route') [nothing to do]
stock / stock.warehouse / resupply_route_ids (one2many) : relation is now 'stock.route' ('stock.location.route') [nothing to do]
stock / stock.warehouse / route_ids (many2many) : relation is now 'stock.route' ('stock.location.route') [nothing to do]
stock / stock.warehouse.orderpoint / route_id (many2one) : relation is now 'stock.route' ('stock.location.route') [nothing to do]
# NOTHING TO DO

---XML records in module 'stock'---
NEW ir.actions.act_window: stock.action_product_stock_view
DEL ir.actions.act_window: stock.report_stock_quantity_action
DEL ir.actions.act_window: stock.report_stock_quantity_action_product
NEW ir.actions.report: stock.action_report_picking_packages
DEL ir.actions.report: stock.stock_replenishment_report_product_product_action
DEL ir.actions.report: stock.stock_replenishment_report_product_template_action
NEW ir.actions.server: stock.action_revert_inventory_adjustment
NEW ir.model.access: stock.access_product_tag_stock_manager
NEW ir.model.access: stock.access_stock_lot_label_layout_user
NEW ir.model.access: stock.access_stock_lot_user
NEW ir.model.access: stock.access_stock_picking_label_type_user
NEW ir.model.access: stock.access_stock_replenish_option
DEL ir.model.access: stock.access_stock_production_lot_user
# DONE: pre-migration: renamed to stock.access_stock_lot_user via rename_xmlids

NEW ir.ui.menu: stock.menu_product_stock
DEL ir.ui.menu: stock.menu_forecast_inventory
DEL ir.ui.menu: stock.menu_storage_categoty_capacity_config
NEW ir.ui.view: stock.duplicated_sn_warning
NEW ir.ui.view: stock.lot_label_layout_form_picking
NEW ir.ui.view: stock.picking_label_type_form
NEW ir.ui.view: stock.product_product_stock_tree
NEW ir.ui.view: stock.product_search_form_view_stock_report
NEW ir.ui.view: stock.replenishment_option_tree_view
NEW ir.ui.view: stock.replenishment_option_warning_view
NEW ir.ui.view: stock.report_picking_packages
DEL ir.ui.view: stock.stock_report_view_search
DEL ir.ui.view: stock.view_warehouse_orderpoint_tree_editable_config
NEW res.groups: stock.group_stock_lot_print_gs1
DEL res.groups: stock.group_auto_reception_report
DEL stock.location.route: stock.route_warehouse0_mto (noupdate)
NEW stock.route: stock.route_warehouse0_mto (noupdate)
# NOTHING TO DO

0 comments on commit 0481c1f

Please sign in to comment.