Skip to content
Merged
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
1 change: 0 additions & 1 deletion addons/sale/migrations/10.0.1.0/openupgrade_analysis.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ sale / sale.layout_category / pagebreak (boolean) : NEW
sale / sale.layout_category / sequence (integer) : NEW required: required, req_default: function
sale / sale.layout_category / subtotal (boolean) : NEW
sale / sale.order / confirmation_date (datetime) : NEW
sale / sale.order / website_message_ids (one2many): DEL relation: mail.message
sale / sale.order.line / analytic_tag_ids (many2many) : NEW relation: account.analytic.tag
sale / sale.order.line / layout_category_id (many2one) : NEW relation: sale.layout_category
---XML records in module 'sale'---
Expand Down
44 changes: 37 additions & 7 deletions addons/sale/migrations/10.0.1.0/openupgrade_analysis_work.txt
Original file line number Diff line number Diff line change
@@ -1,25 +1,43 @@
---Fields in module 'sale'---
sale / account.invoice / partner_shipping_id (many2one): NEW relation: res.partner
sale / account.invoice.line / layout_category_id (many2one) : NEW relation: sale.layout_category
# NOTHING TO DO

sale / account.invoice.line / layout_category_id (many2one) : NEW relation: sale.layout_category
sale / account.invoice.line / layout_category_sequence (integer) : NEW
# FYI: layout_category_sequence was not found by the analysis
# DONE: pre-migration: rename columns

sale / product.pricelist / discount_policy (selection) : NEW selection_keys: ['with_discount', 'without_discount']
# DONE: pre-migration: update_module_names (old module product_visible_discount)

sale / product.template / expense_policy (selection) : NEW selection_keys: ['cost', 'no', 'sales_price']
# DONE: pre-migration: partial "update_module_names" process (sale_expense)

sale / product.template / invoice_policy (selection) : selection_keys is now '['delivery', 'order']' ('['cost', 'delivery', 'order']')
# TODO: pre-migration: copy column
# TODO: post-migration: map value 'cost' to new value
# DONE: pre-migration: copy column
# DONE: post-migration: map value 'cost' to new value

sale / product.template / sale_line_warn (selection) : NEW required: required, selection_keys: ['block', 'no-message', 'warning'], req_default: no-message
sale / product.template / sale_line_warn_msg (text) : NEW
sale / res.partner / sale_warn (selection) : NEW required: required, selection_keys: ['block', 'no-message', 'warning'], req_default: no-message
sale / res.partner / sale_warn_msg (text) : NEW
# DONE: pre-migration: partial "update_module_names" process (old module warning)

##### NEW MODEL SALE.LAYOUT.CATEGORY ####
sale / sale.layout_category / name (char) : NEW required: required
sale / sale.layout_category / pagebreak (boolean) : NEW
sale / sale.layout_category / sequence (integer) : NEW required: required, req_default: function
sale / sale.layout_category / subtotal (boolean) : NEW
# NOTHING TO DO
# DONE: pre-migration: update_module_names (old module sale_layout)

sale / sale.order / confirmation_date (datetime) : NEW
sale / sale.order / website_message_ids (one2many): DEL relation: mail.message
sale / sale.order.line / analytic_tag_ids (many2many) : NEW relation: account.analytic.tag
# NOTHING TO DO

sale / sale.order.line / analytic_tag_ids (many2many) : NEW relation: account.analytic.tag
sale / sale.order.line / layout_category_id (many2one) : NEW relation: sale.layout_category
# NOTHING TO DO
sale / sale.order.line / layout_category_sequence (integer) : NEW
# FYI: layout_category_sequence was not found by the analysis
# DONE: pre-migration: rename columns

---XML records in module 'sale'---
NEW ir.actions.act_window: sale.report_configuration_action
Expand Down Expand Up @@ -66,6 +84,8 @@ DEL ir.ui.menu: base.menu_sale_config
DEL ir.ui.menu: base.menu_sale_general_settings
DEL ir.ui.menu: base.menu_sales_config
NEW ir.ui.view: sale.account_invoice_line_form
NEW ir.ui.view: sale.account_invoice_line_tree
NEW ir.ui.view: sale.account_invoice_supplier_form
NEW ir.ui.view: sale.product_pricelist_view_form
NEW ir.ui.view: sale.product_pricelist_view_tree
NEW ir.ui.view: sale.report_configuration_form_view
Expand All @@ -75,7 +95,12 @@ NEW ir.ui.view: sale.report_invoice_document_inherit_sale
NEW ir.ui.view: sale.report_invoice_layouted
NEW ir.ui.view: sale.sale_order_view_search_inherit_quotation
NEW ir.ui.view: sale.sale_order_view_search_inherit_sale
# NOTHING TO DO

DEL ir.ui.view: sale.view_account_config
# NOTHING TO DO, FYI: the view still exists in addons/sale/views/account_config_settings_views.xml,
# but it is not included in the manifest file

DEL ir.ui.view: sale.view_company_inherit_form2
NEW mail.template: sale.mail_template_data_notification_email_sale_order
NEW res.groups: base.group_portal
Expand All @@ -85,10 +110,15 @@ NEW res.groups: sale.group_sale_layout
NEW res.groups: sale.group_show_price_subtotal
NEW res.groups: sale.group_show_price_total
NEW res.groups: sale.group_warning_sale
# NOTHING TO DO

DEL res.groups: base.group_sale_manager
DEL res.groups: base.group_sale_salesman
DEL res.groups: base.group_sale_salesman_all_leads
# NOTHING TO DO, FYI: renaming of groups is already done in sales_team migration

NEW sale.layout_category: sale.sale_layout_cat_1
NEW sale.layout_category: sale.sale_layout_cat_2
DEL web.tip: sale.sale_tip_1
DEL web.tip: sale.sale_tip_2
# NOTHING TO DO
14 changes: 14 additions & 0 deletions addons/sale/migrations/10.0.1.0/post-migration.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# -*- coding: utf-8 -*-
# © 2017 bloopark systems (<http://bloopark.de>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from openupgradelib import openupgrade


@openupgrade.migrate(use_env=False)
def migrate(cr, version):
# map old / non existing value 'cost' to default value 'order'
openupgrade.map_values(
cr,
openupgrade.get_legacy_name('invoice_policy'), 'invoice_policy',
[('cost', 'order')],
table='product_template', write='sql')
134 changes: 134 additions & 0 deletions addons/sale/migrations/10.0.1.0/pre-migration.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
# -*- coding: utf-8 -*-
# Copyright 2017 bloopark systems (<http://bloopark.de>)
# Copyright 2017 Tecnativa - Pedro M. Baeza
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from openupgradelib import openupgrade


# backup of separator column in table sale_layout_category because it doesn't
# exist anymore in odoo 10
column_renames_sale_layout = {
'sale_layout_category': [
('separator', None),
],
'account_invoice_line': [
('sale_layout_cat_id', 'layout_category_id'),
('categ_sequence', 'layout_category_sequence'),
],
'sale_order_line': [
('sale_layout_cat_id', 'layout_category_id'),
('categ_sequence', 'layout_category_sequence'),
],
}


# rename_tables is not needed because "sale_layout.category" and
# "sale.layout_category" result both in "sale_layout_category"
model_renames_sale_layout = [
('sale_layout.category', 'sale.layout_category')
]


# backup of invoice_policy column with old / non existing value 'cost'
column_copies = {
'product_template': [
('invoice_policy', None, None),
],
}


def cleanup_modules(cr):
openupgrade.update_module_names(
cr,
[
('sale_layout', 'sale'),
('product_visible_discount', 'sale'),
],
merge_modules=True
)


def warning_update_module_names_partial(cr):
"""We don't use openupgrade.update_module_names here because only the
fields sale_line_warn, sale_line_warn_msg, sale_warn and sale_warn_msg are
moved from the old warning module to the sale module. Other fields are
moved in other modules (e. g. field purchase_warn in purchase module). If
we would using openupgrade.update_module_names there might be problems when
first use openupgrade.update_module_names in sale module and then again in
purchase module and so on.
Because the field names didn't change and we only deal with text fields
without constraints etc. we only have to change the related
ir_model_data and ir_translation entries.
"""
new_name = 'sale'
old_name = 'warning'
if not openupgrade.is_module_installed(cr, old_name):
return

# get moved model fields
moved_fields = ['sale_line_warn', 'sale_line_warn_msg', 'sale_warn',
'sale_warn_msg']
cr.execute("""
SELECT id
FROM ir_model_fields
WHERE model IN ('res.partner', 'product.template') AND name in %s
""", (moved_fields,))
field_ids = [r[0] for r in cr.fetchall()]

# update ir_model_data, the subselect allows to avoid duplicated XML-IDs
query = ("UPDATE ir_model_data SET module = %s "
"WHERE module = %s AND res_id IN %s AND name NOT IN "
"(SELECT name FROM ir_model_data WHERE module = %s)")
openupgrade.logged_query(cr, query, (new_name, old_name, field_ids,
new_name))

# update ir_translation
query = ("UPDATE ir_translation SET module = %s "
"WHERE module = %s AND res_id IN %s")
openupgrade.logged_query(cr, query, (new_name, old_name, field_ids))


def sale_expense_update_module_names_partial(cr):
"""We don't use openupgrade.update_module_names here because the field
expense_policy is moved from the sale_expense module to the sale module but
sale_expense still exists in odoo 10.
Because the field name didn't change and we only deal with text field
without constraints etc. we only have to change the related ir_model_data
entries.
"""
new_name = 'sale'
old_name = 'sale_expense'
if not openupgrade.is_module_installed(cr, old_name):
return

# get moved model fields
moved_fields = ['expense_policy']
cr.execute("""
SELECT id
FROM ir_model_fields
WHERE model = 'product.template' AND name in %s
""", (moved_fields,))
field_ids = [r[0] for r in cr.fetchall()]

# update ir_model_data, the subselect allows to avoid duplicated XML-IDs,
query = ("UPDATE ir_model_data SET module = %s "
"WHERE module = %s AND res_id IN %s AND name NOT IN "
"(SELECT name FROM ir_model_data WHERE module = %s)")
openupgrade.logged_query(cr, query, (new_name, old_name, field_ids,
new_name))

# delete ir_translation because the translations changes completely
query = ("DELETE FROM ir_translation "
"WHERE module = %s AND res_id IN %s")
openupgrade.logged_query(cr, query, (old_name, field_ids))


@openupgrade.migrate(use_env=True)
def migrate(env, version):
if openupgrade.is_module_installed(env.cr, 'sale_layout'):
openupgrade.rename_columns(env.cr, column_renames_sale_layout)
openupgrade.rename_models(env.cr, model_renames_sale_layout)
openupgrade.copy_columns(env.cr, column_copies)
cleanup_modules(env.cr)
warning_update_module_names_partial(env.cr)
sale_expense_update_module_names_partial(env.cr)
2 changes: 1 addition & 1 deletion odoo/openupgrade/doc/source/modules90-100.rst
Original file line number Diff line number Diff line change
Expand Up @@ -431,7 +431,7 @@ missing in the new release are marked with |del|.
+-----------------------------------+-----------------------------------+
|resource | Nothing to do |
+-----------------------------------+-----------------------------------+
|sale | |
|sale | Done |
+-----------------------------------+-----------------------------------+
|sale_crm | |
+-----------------------------------+-----------------------------------+
Expand Down