Skip to content

V17 v3tech upgrade - #751

Merged
royle-vietnam merged 129 commits into
17.0from
v17_v3tech_upgrade
Oct 3, 2026
Merged

royle-vietnam merged 129 commits into
17.0from
v17_v3tech_upgrade

Conversation

@royle-vietnam

Copy link
Copy Markdown
Collaborator

No description provided.

carlos-lopez-tecnativa and others added 30 commits August 14, 2025 11:15
[17.0][OU-ADD] pos_sale : Nothing to do
Both l10n_de_mis_skr03_report and l10n_de_mis_skr04_report have the same
XML-IDs for their data records, so merging them into l10n_de_mis_report
generates duplicated XML-IDs if both are installed, crashing the system.

But only if you have one of them installed, all the previous MIS
definition records will be tried to be removed, giving the corresponding
error if they have been used.

Let's fix it doing a previous renaming of all its XML-IDs.

TT41859
…port-xml_id

[17.0][OU-FIX] l10n_de_mis_*_report: Rename XML-IDs pre-merge
…aration_change field

According to the analysis, this initially looked like a new feature, but upon closer examination it is actually a field rename from multiprint_resume in the pos_restaurant model. This commit renames the field to preserve existing values.
[17.0][OU-ADD] pos_epson_printer : Nothing to do
[17.0][OU-ADD] pos_hr_restaurant : Nothing to do
[17.0][OU-ADD] pos_restaurant: Migration to 17.0
[17.0][OU-ADD] sale_stock_margin: Nothing to do
[17.0][OU-ADD] pos_mrp: Nothing to do
…vechat

[17.0][OU-ADD] website_crm_livechat: Nothing to do
…icking

[17.0][OU-ADD] website_sale_picking: Migration scripts
…ter_restaurant

[17.0][OU-ADD] pos_epson_printer_restaurant: Migration to 17.0
…shboard_im_livechat

[17.0][OU-ADD] spreadsheet_dashboard_im_livechat: Nothing to do
[17.0][OU-ADD] web_editor: Migration scripts for 17.0
Signed-off-by hbrunn
…8-v2

[17.0][OU-FIX] account: Avoid the error when executing the migrate_translations_to_jsonb method
…tion() method in post-migration.

Related to OCA#5369 (comment)

This change is not necessary because when migrating from 15 to 16, the description column in account_tax
will already be json (https://github.com/OCA/OpenUpgrade/blob/4af8572c7f3e313773db558ba382b5ffd19a157c/openupgrade_scripts/scripts/base/16.0.1.3/end-migration.py#L39),
therefore, in v17, you only need to rename the column (this is already done in pre-migration).

TT57778
pedrobaeza and others added 28 commits July 1, 2026 13:23
For avoiding this error when using `load_data` openupgradelib method:

```
    ...
    File "/opt/odoo/custom/src/odoo/odoo/models.py", line 5094, in _load_records
    data['record']._load_records_write(data['values'])
    File "/opt/odoo/custom/src/odoo/odoo/addons/base/models/ir_ui_view.py", line 2171, in _load_records_write
    super(View, self)._load_records_write(values)
    File "/opt/odoo/custom/src/odoo/odoo/models.py", line 5025, in _load_records_write
    self.write(values)
    ...
    File "/opt/odoo/auto/addons/openupgrade_framework/odoo_patch/odoo/addons/base/models/ir_ui_view.py", line 97, in _inverse_arch
    if path_info[0] == "openupgrade_scripts":
TypeError: 'NoneType' object is not subscriptable
```
…work-install_filename

[17.0][FIX] openupgrade_framework: Allow missing path_info
[17.0][IMP] base: Load additional renames/merges from env.
…hemes

[17.0][OU-ADD] mass_mailing_themes: Nothing to do
…merged

[17.0][OU-ADD] project_list: Merged into project
…ct_uom

With a lot of records, this improves a lot the performance.

It also has a desired side-effect: if you come from a DB with
inconsistent UOMs between the move lines and the product, this won't
crash the migration and simply put the same quantity.

The SQL computation performs the same as the equivalent Python code,
even doing the rounding half-up to the UoM precision when required.

TT61992
[17.0][OU-IMP] stock: Create and pre-compute stock.move.line~quantity_product_uom
…TT64083

[17.0][OU-IMP] point_of_sale: Set the appropriate value for point_of_sale.limited_product_count
Call cow_templates_mark_if_equal_to_upstream() in the pre-migration and
cow_templates_replicate_upstream() in the end-migration. A website that
enables an optional template through the Customize widget but never edits
it keeps a COW copy; until now that copy was never resynced on migration,
so it kept the origin arch_db and inherit_id. When a module migration
re-targets which template the view inherits from, the stale copy points at
the old parent and breaks rendering, as seen with
website_sale_product_attribute_filter_category when website_sale moved a
template between versions.

cow_templates_replicate_upstream() also propagates inherit_id since
OCA/openupgradelib#463.

TT64160
[17.0][OU-IMP] website: reset unmodified COW templates to upstream
…_vies

[17.0][IMP] apriori: base_vat_optional_vies -> base_vat
[17.0][IMP] website: activate default header for websites using deprecated header layout
[17.0][OU-ADD] l10n_fr_hr_holidays: Migration scripts
…ut a successor

apriori.lost_modules lists the modules merged into the module they
extended because they have no source any more. Before the merge, their
technical noupdate records (rules, scheduled and server actions, views,
menus, mail templates) are released so that the update deletes them, and
the xml ids of the records of models that go with the module are
detached. Business records stay.
…iption is gone

to_mail_notif_and_email was restored in tvtmaaddons 17.0 (d069776010):
merged into mail it ended up uninstalled, and the users whose
notifications go by email stopped getting them in their Odoo inbox.

to_uom_subscription was removed from 17.0 (35c195ede0) without
successor: merge it into uom as a lost module instead of leaving it
'to upgrade' for good.
payment_icon becomes payment_method in 17.0. Databases that come from
9.0 may still have the table of 9.0 payment.method (renamed
payment.token in 10.0, when their migration left the table behind),
and the rename stops on 'relation payment_method already exists'. Move
that table to its legacy name first.
A private address is often entered as a contact whose name is the
address ("50B, Chau Long street, Ba Dinh, Hanoi") with no address field
filled. The transfer to the new private fields of the employee copies
the address fields only, and the end-migration merges that contact into
the work contact, which keeps its own name: the address was lost. Put it
in private_street when no private address field got a value.
…d view

The end of an update deletes the views its module no longer ships under
the module uninstall flag, and the core cascades to the children through
inherit_children_ids, which leaves out the archived ones (e.g. an option
of the website editor turned off). Their foreign key then keeps the
parent from being deleted: 'violates foreign key constraint
ir_ui_view_inherit_id_fkey' (website_sale.payment_footer at 17.0). Same
fix as in the 10.0-13.0 forks.
…e merges

rename_xmlids(allow_merge=True) merges group_hr_attendance and
group_hr_attendance_kiosk into group_hr_attendance_own_reader in SQL:
one UPDATE per many2many table moves the links of the old group, the
unique pair stops it when a user is in both groups ('duplicate key value
violates unique constraint res_groups_users_rel_gid_uid_key'), and
openupgradelib then deletes the links left behind: the other members of
the old group lost the access. Drop the links the target already has
first.
…provider

Up to 16.0 the checkout lists the providers, and a company can offer several
custom ones (a bank transfer, cash at the counter, a phone card), each under
its own name with its own payment instructions. From 17.0 the checkout lists
payment methods with one provider each: all set on the wire transfer method,
the custom providers of a company showed as one option, with the payment
instructions of only one of them.

The provider of payment.payment_provider_transfer (or else the first one)
keeps the wire transfer method; each other custom provider gets a copy of it
named as the provider was on the checkout. The copies keep the code
'wire_transfer', so enabling the provider again activates its method.
…ecord

The unlink patch opened a savepoint for every obsolete record deleted by
_process_end and never released it (its name was even the same for all,
str(uuid4) instead of str(uuid4())). Each open savepoint that deletes keeps a
transactionid lock until the end of the update: a large update holds
thousands of them, and with another update running on the cluster the lock
table ran out ("out of shared memory", hop 17.0 of a real database). Release
the savepoint after the delete, and after the rollback when it fails: 200
deletions now hold 1 lock instead of 201.
@royle-vietnam
royle-vietnam merged commit 78850bf into 17.0 Oct 3, 2026
4 of 6 checks passed
@royle-vietnam
royle-vietnam deleted the v17_v3tech_upgrade branch October 3, 2026 02:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.