Skip to content

Commit f7b6221

Browse files
Merge pull request #5559 from hbrunn/19.0-purchase
[19.0][MIG] purchase
2 parents ddb13a0 + 2554a01 commit f7b6221

6 files changed

Lines changed: 229 additions & 2 deletions

File tree

docsource/modules180-190.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -956,7 +956,7 @@ Module coverage 18.0 -> 19.0
956956
+---------------------------------------------------+----------------------+-------------------------------------------------+
957957
| project_todo | | |
958958
+---------------------------------------------------+----------------------+-------------------------------------------------+
959-
| purchase | | |
959+
| purchase |Done | |
960960
+---------------------------------------------------+----------------------+-------------------------------------------------+
961961
| purchase_edi_ubl_bis3 | | |
962962
+---------------------------------------------------+----------------------+-------------------------------------------------+
@@ -972,7 +972,7 @@ Module coverage 18.0 -> 19.0
972972
+---------------------------------------------------+----------------------+-------------------------------------------------+
973973
| purchase_requisition_stock | |No DB layout changes. |
974974
+---------------------------------------------------+----------------------+-------------------------------------------------+
975-
| purchase_stock | | |
975+
| purchase_stock |Done | |
976976
+---------------------------------------------------+----------------------+-------------------------------------------------+
977977
| rating | | |
978978
+---------------------------------------------------+----------------------+-------------------------------------------------+
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# Copyright 2026 Hunki Enterprises BV
2+
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
3+
4+
from openupgradelib import openupgrade
5+
6+
7+
def purchase_order_fields(env):
8+
"""
9+
Set state = purchase for orders with state == 'done'
10+
Set locked = true for orders in state purchase if their company is configured
11+
accordingly
12+
Set acknowledged=True for orders in state purchase to avoid unexpected reminder
13+
mails
14+
"""
15+
env.cr.execute("UPDATE purchase_order SET state='purchase' WHERE state='done'")
16+
env.cr.execute("UPDATE purchase_order SET acknowledged=True WHERE state='purchase'")
17+
env.cr.execute(
18+
"""
19+
UPDATE purchase_order SET locked=TRUE
20+
FROM res_company
21+
WHERE
22+
purchase_order.company_id=res_company.id
23+
AND res_company.po_lock='lock'
24+
"""
25+
)
26+
27+
28+
def purchase_order_line_technical_price_unit(env):
29+
"""
30+
Initialized technical_price_unit with price_unit
31+
"""
32+
env.cr.execute("UPDATE purchase_order_line SET technical_price_unit=price_unit")
33+
34+
35+
@openupgrade.migrate()
36+
def migrate(env, version):
37+
openupgrade.load_data(env, "purchase", "19.0.1.2/noupdate_changes.xml")
38+
openupgrade.delete_record_translations(
39+
env.cr,
40+
"purchase",
41+
[
42+
"email_template_edi_purchase",
43+
"email_template_edi_purchase_done",
44+
"email_template_edi_purchase_reminder",
45+
],
46+
["body_html"],
47+
)
48+
purchase_order_fields(env)
49+
purchase_order_line_technical_price_unit(env)
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Copyright 2026 Hunki Enterprises BV
2+
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
3+
4+
from openupgradelib import openupgrade
5+
6+
renamed_fields = [
7+
("purchase.order", "purchase_order", "notes", "note"),
8+
("purchase.order.line", "purchase_order_line", "product_uom", "product_uom_id"),
9+
("purchase.order.line", "purchase_order_line", "taxes_id", "tax_ids"),
10+
]
11+
12+
added_fields = [
13+
("locked", "purchase.order", "purchase_order", "boolean", None, "purchase", False),
14+
(
15+
"technical_price_unit",
16+
"purchase.order.line",
17+
"purchase_order_line",
18+
"float",
19+
None,
20+
"purchase",
21+
),
22+
]
23+
24+
25+
@openupgrade.migrate()
26+
def migrate(env, version):
27+
openupgrade.rename_fields(env, renamed_fields)
28+
openupgrade.add_fields(env, added_fields)
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
---Models in module 'purchase'---
2+
---Fields in module 'purchase'---
3+
purchase / product.packaging / purchase (boolean) : DEL
4+
purchase / product.template / purchase_line_warn (selection): DEL required, selection_keys: ['block', 'no-message', 'warning']
5+
6+
# NOTHING TO DO
7+
8+
purchase / purchase.order / acknowledged (boolean) : NEW
9+
10+
# DONE: set to True for state == purchase
11+
12+
purchase / purchase.order / is_late (boolean) : NEW stored: False
13+
14+
# NOTHING TO DO
15+
16+
purchase / purchase.order / locked (boolean) : NEW hasdefault: default
17+
18+
# DONE: precreated in pre-migration, set in post-migration
19+
20+
purchase / purchase.order / mail_reception_confirmed (boolean): DEL
21+
purchase / purchase.order / mail_reception_declined (boolean): DEL
22+
purchase / purchase.order / mail_reminder_confirmed (boolean): DEL
23+
24+
# NOTHING TO DO
25+
26+
purchase / purchase.order / note (html) : NEW
27+
purchase / purchase.order / notes (html) : DEL
28+
29+
# DONE: renamed in pre-migration
30+
31+
purchase / purchase.order / receipt_reminder_email (boolean): is now stored
32+
purchase / purchase.order / receipt_reminder_email (boolean): not a function anymore
33+
purchase / purchase.order / reminder_date_before_receipt (integer): is now stored
34+
purchase / purchase.order / reminder_date_before_receipt (integer): not a function anymore
35+
36+
# NOTHING TO DO: will be recomputed by the ORM
37+
38+
purchase / purchase.order / state (selection) : selection_keys removed: [done]
39+
40+
# DONE: mapped done to purchase
41+
42+
purchase / purchase.order.line / currency_id (many2one) : not stored anymore
43+
purchase / purchase.order.line / display_type (selection) : selection_keys added: [line_subsection] (most likely nothing to do)
44+
purchase / purchase.order.line / product_packaging_id (many2one): DEL relation: product.packaging
45+
purchase / purchase.order.line / product_packaging_qty (float) : DEL
46+
47+
# NOTHING TO DO
48+
49+
purchase / purchase.order.line / product_uom (many2one) : DEL relation: uom.uom
50+
purchase / purchase.order.line / product_uom_id (many2one) : NEW relation: uom.uom
51+
52+
# DONE: renamed in pre-migration
53+
54+
purchase / purchase.order.line / state (selection) : not stored anymore
55+
56+
# NOTHING TO DO
57+
58+
purchase / purchase.order.line / tax_ids (many2many) : NEW relation: account.tax
59+
purchase / purchase.order.line / taxes_id (many2many) : DEL relation: account.tax
60+
61+
# DONE: renamed in pre-migration
62+
63+
purchase / purchase.order.line / technical_price_unit (float) : NEW
64+
65+
# DONE: precreated and set to price_unit
66+
67+
purchase / res.company / po_lead (float) : DEL required
68+
purchase / res.partner / purchase_warn (selection) : DEL selection_keys: ['block', 'no-message', 'warning']
69+
70+
# NOTHING TO DO
71+
72+
---XML records in module 'purchase'---
73+
NEW ir.actions.act_window: purchase.mail_followers_edit_action_from_purchase
74+
DEL ir.actions.server: purchase.action_purchase_batch_bills
75+
DEL ir.model.access: purchase.access_product_category_purchase_manager
76+
DEL ir.model.access: purchase.access_product_packaging_purchase_manager
77+
DEL ir.model.access: purchase.access_product_product_purchase_manager
78+
DEL ir.model.access: purchase.access_product_tag_purchase_manager
79+
DEL ir.model.access: purchase.access_product_template_purchase_manager
80+
DEL ir.model.access: purchase.access_uom_category_purchase_manager
81+
DEL ir.model.access: purchase.access_uom_uom_purchase_manager
82+
ir.model.constraint: purchase.constraint_purchase_order_line_accountable_required_fields (changed definition: is now 'CHECK(display_type IS NOT NULL OR is_downpayment OR (product_id IS NOT NULL AND product_uom_id IS NOT NULL AND date_planned IS NOT NULL))' ('check(display_type is not null or is_downpayment or(product_id is not null and product_uom is not null and date_planned is not null))'))
83+
ir.model.constraint: purchase.constraint_purchase_order_line_non_accountable_null_fields (changed definition: is now 'CHECK(display_type IS NULL OR (product_id IS NULL AND price_unit = 0 AND product_uom_qty = 0 AND product_uom_id IS NULL AND date_planned is NULL))' ('check(display_type is null or(product_id is null and price_unit = 0 and product_uom_qty = 0 and product_uom is null and date_planned is null))'))
84+
DEL ir.ui.menu: purchase.menu_purchase_uom_categ_form_action
85+
DEL ir.ui.menu: purchase.menu_unit_of_measure_in_config_purchase
86+
DEL ir.ui.view: purchase.product_packaging_form_view_purchase
87+
DEL ir.ui.view: purchase.product_packaging_tree_view_purchase
88+
DEL ir.ui.view: purchase.purchase_partner_kanban_view
89+
DEL ir.ui.view: purchase.res_partner_view_purchase_account_buttons
90+
91+
# NOTHING TO DO
92+
93+
DEL mail.message.subtype: purchase.mt_rfq_done (noupdate)
94+
95+
# NOTHING TO DO: don't delete subtypes because then messages end up without one
96+
97+
NEW res.groups.privilege: purchase.res_groups_privilege_purchase
98+
99+
# NOTHING TO DO
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Copyright 2026 Hunki Enterprises BV
2+
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
3+
4+
from openupgradelib import openupgrade
5+
6+
7+
@openupgrade.migrate()
8+
def migrate(env, version):
9+
openupgrade.m2o_to_x2m(
10+
env.cr,
11+
env["purchase.order"],
12+
"purchase_order",
13+
"reference_ids",
14+
"group_id",
15+
)
16+
openupgrade.load_data(env, "purchase_stock", "19.0.1.2/noupdate_changes.xml")
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
---Models in module 'purchase_stock'---
2+
---Fields in module 'purchase_stock'---
3+
purchase_stock / procurement.group / purchase_line_ids (one2many) : DEL relation: purchase.order.line
4+
purchase_stock / product.category / property_account_creditor_price_difference_categ (many2one): DEL relation: account.account
5+
purchase_stock / product.template / property_account_creditor_price_difference (many2one): DEL relation: account.account
6+
purchase_stock / product.template / route_ids (False) : DEL mode: modify
7+
8+
# NOTHING TO DO
9+
10+
purchase_stock / purchase.order / group_id (many2one) : DEL relation: procurement.group
11+
purchase_stock / purchase.order / reference_ids (many2many) : NEW relation: stock.reference
12+
13+
# DONE: filled from group_id
14+
15+
purchase_stock / purchase.order.line / group_id (many2one) : DEL relation: procurement.group
16+
purchase_stock / res.partner / group_on (selection) : NEW required, selection_keys: ['1', '2', '3', '4', '5', '6', '7', 'default'], hasdefault: default
17+
purchase_stock / res.partner / group_rfq (selection) : NEW required, selection_keys: ['all', 'day', 'default', 'week'], hasdefault: default
18+
purchase_stock / res.partner / suggest_based_on (char) : NEW hasdefault: default
19+
purchase_stock / res.partner / suggest_days (integer) : NEW hasdefault: default
20+
purchase_stock / res.partner / suggest_percent (integer) : NEW hasdefault: default
21+
purchase_stock / stock.reference / purchase_ids (many2many) : NEW relation: purchase.order
22+
purchase_stock / stock.warehouse / buy_to_resupply (boolean) : not stored anymore
23+
purchase_stock / stock.warehouse / buy_to_resupply (boolean) : now a function
24+
purchase_stock / stock.warehouse.orderpoint / available_vendor (many2one) : NEW relation: res.partner, stored: False
25+
purchase_stock / stock.warehouse.orderpoint / product_supplier_id (many2one): DEL relation: res.partner
26+
purchase_stock / stock.warehouse.orderpoint / purchase_visibility_days (float): DEL
27+
purchase_stock / stock.warehouse.orderpoint / vendor_id (many2one) : DEL relation: res.partner
28+
---XML records in module 'purchase_stock'---
29+
NEW ir.ui.view: purchase_stock.product_view_search_catalog
30+
NEW ir.ui.view: purchase_stock.stock_reference_purchase_view_form
31+
DEL ir.ui.view: purchase_stock.product_template_form_view
32+
DEL ir.ui.view: purchase_stock.stock_reorder_report_search_inherited_purchase_stock
33+
DEL ir.ui.view: purchase_stock.view_category_property_form
34+
35+
# NOTHING TO DO

0 commit comments

Comments
 (0)