auroraeosrose create branch 16.0
Created at 4 hours ago
auroraeosrose create branch 16.0
Created at 4 hours ago
auroraeosrose create branch 16.0
Created at 1 week ago
auroraeosrose create branch 16.0
Created at 1 week ago
auroraeosrose create branch 16.0
Created at 1 week ago
create branch
auroraeosrose create branch 16.0
Created at 1 week ago
auroraeosrose create branch 16.0
Created at 1 week ago
create branch
auroraeosrose create branch 16.0
Created at 1 week ago

[FIX] account: restrict display of 'reconciled entries' button on moves

When resetting a payment/move to draft, the related entries are unreconciled. The 'reconciled entries' button raises an error since there isn't any.

This is due to the field has_reconciled_entries being wrongly computed since the _reconciled_lines() method doesn't actually filter on lines that are reconciled.

Fixing this removes the button when there is no reconciled lines, and avoids the errors raised.

task id=3120327

closes odoo/odoo#109276

Signed-off-by: Laurent Smet

[FIX] web: fix overlapping of Add, Expand buttons in export wizard

Some html structures are not well mirrored in RTL directions. Fix it by changing it to rtl frienldy structure.


  • switch to any RTL language
  • open list view for any model
  • click Action -> Export


closes odoo/odoo#110867

Signed-off-by: Luca Vitali

[FIX] point_of_sale: long floor name doesn't display properly

How to reproduce

When entering a very long table name and / or a very long table name on the point of sale application, the text displayed on the "go back" button of the interface will overflow, making the name unreadable and not very pleasing to see.

How the fix works

The fix just cut and hide the part of the text that is overflowing


closes odoo/odoo#110970

X-original-commit: 5fce82e65ea15251c0bcff703e77a6ac64d25380 Signed-off-by: Trinh Jacky (trj)

[FIX] web_editor: remove double click popup from links

It is wrong in 15.0 since double clicking on the link does nothing anymore, as edition of the link is done via the popover. Having both tooltips at the same time created a race condition that ended up inserting the second tooltip in the DOM, where it obviously couldn't function properly anymore.


closes odoo/odoo#111614

Signed-off-by: David Monjoie (dmo)

[FIX] account: update balance when changing amount in currency

Before it wasn't done for simplicity, but turns out it is actually quite simple to do.


closes odoo/odoo#111680

Signed-off-by: Quentin De Paoli

[IMP] mail: define title for full composer

before this commit title for full composer dialog window is "Odoo". it increases probability of mistake for user because it doesn't clear that user do: sending email or logging note

after this commit title matches dialog purpose

closes odoo/odoo#111945

Signed-off-by: Sébastien Theys (seb)

[FIX] account: traceback on accrued revenue entry when no order line

before this commit, traceback is raised when trying to create accrued revenue entry without entering the order lines.

open a sale order, enter customer and save it, from the action button, click Accrued Revenue Entry and enter an amount in the amount field, exception will be raised.

after this commit, no exception will be raised.

closes odoo/odoo#111961

X-original-commit: d68eafd5c06fef77ba669df0e0ca6cd7217b08b5 Signed-off-by: John Laterre (jol)

[FIX] account: translatable action name

before this commit, the action name was not translatable into user language and always displayed in english.

after this commit, the action name will be translatable and will be showing the value based on user language preference.

closes odoo/odoo#111974

X-original-commit: 6aa80ca670476494b10115f61805324811b73a58 Signed-off-by: John Laterre (jol)

[FIX] web_editor: prevent merging table with other element on paste

When we paste content in the editor, we merge the first and/or the last element(s) from the clipboard with the element(s) before/after the selection (eg, pasting <p>b</p> at <p>a[]c</p> (where [] is the selection) should result in <p>ab[]c</p> rather than <p>a</p><p>b</p><p>c</p>). If the element we try to merge is a table though, we may end up pasting a <tbody> without its parent table, which leads to unexpected results. In any case we don't ever want to merge a table with another element, so we prevent that.

Steps to reproduce the issue (in the note module):

  • Type "a" then hit the ENTER key.
  • Add a table (using the /table command) and write in each of its cells.
  • Make a selection that starts before "a", and ends after the last character of the last cell of the table.
  • Copy the selection.
  • Paste the selection in the paragraph after the table. What you see before this commit is the text you copied, without the table.

Everything above is also true of lists (just replace the table with a list in the text above) and these cases are fixed here in the same way.


closes odoo/odoo#111983

Signed-off-by: David Monjoie (dmo)

[FIX] account: handle writing just tax_ids on an aml

The _disable_recursion wasn't working properly because it didn't disable recursive calls if they used the context of a recordset that is not in the container. It is really easy to do if we use self for instance. In order to avoid this, we just temporarily change the context of all environments while inside of the context manager.


closes odoo/odoo#103286

Signed-off-by: Quentin De Paoli

[FIX] website: fix entering edit mode after canceling a beforeunload

The website now being displayed in the backend of Odoo (since 1) within an iframe. To be able to send events inside this iframe, the PublicRoot widget from within the iframe is "captured" (using the OdooFrameContentLoaded event). This is used to send events to Public Widgets such as notifying them that the edition is about to start, so they need to reload in edit mode.

Prior to this commit, the WebsiteRootInstance would be set to undefined when the page was about to be unloaded (beforeunload event). This is useful as this prevents the editor to start in an inconsistent state if a user clicks on a link or changes page and clicks edit too soon.

Unfortunately, the beforeunload event can be canceled.

Two ways this can be noticed:

  • On firefox, enter edit mode and edit the page

  • Try to close the tab

  • A browser dialog is displayed asking the user to confirm if they want to leave the page

  • This is done using the beforeunload event

  • It is triggered in both the iframe and the top window on firefox when trying to close a tab

  • Clicking on cancel won't allow you to resume the edition as the websiteRootInstance was set to undefined

  • On any browser, enter edit mode

  • Upload a document using the media dialog

  • Save

  • Click to download the document

  • Try to enter edit mode

Clicking on the link triggers a beforeunload as the browser is about to leave the page. The browser somehow detects a download and cancels the beforeunload. But the websiteRootInstance was already set to undefined.

This commit fixes that by only setting the websiteRootInstance to undefined in some context:

  • When clicking on a link that will result in navigating inside the iframe
  • When changing website
  • When the WebsitePreview component is asked to reload the iframe
  • Doing it again when a pagehide event is triggered.

This last one is only for safety (e.g. if a widget within the iframe triggers navigation which leads to a pagehide). Though using this event is often too late, as the editor has time to start but often not fully, and destroying it so early can lead to tracebacks.


closes odoo/odoo#105884

Signed-off-by: Outagant Mehdi (mou)

[FIX] auth_signup: send confirmation email when registering

Steps to reproduce:

  • In settings, activate "Free sign up" option;
  • Go to "Sign in" page;
  • Click on "Don't have an account?";
  • Create an account.

Issue: No confirmation email is sent.

Cause: The qcontext.get('token') variable does not exist in the case of a "Free sign up". And therefore, we do not respect the condition to send an email.


closes odoo/odoo#111939

X-original-commit: ad95fbdd756fa767da8f27db748e9c609062907a Signed-off-by: Martin Trigaux (mat) Signed-off-by: Thibault Delavallee (tde)

[FIX] pos_adyen: prevent having the same Adyen in multi-company

Before this commit: it was possible to create two PoS terminals in two companies with the same adyen_terminal_identifier. So it's possible, after each payment, it would add the response to the wrong payment method's adyen_latest_response.

The solution is to bypass multi-company record rule in _check_adyen_terminal_identifier.


closes odoo/odoo#111982

X-original-commit: 5af4ffa9382960c2c11d43f4f7ac5d02ce7b2594 Signed-off-by: Trinh Jacky (trj) Signed-off-by: Pedram Bi Ria (pebr)

[FIX] web: update moment.js to 2.19.3

This version of moment.js is required to avoid CVE-2017-18214


closes odoo/odoo#111986

Signed-off-by: Aaron Bohy (aab)

[FIX] l10n_be: tax report: fix wrong carryover for grids 82, 83, 86, 87 and 88

Those lines were badly configured. The proper setup is the one already used on grid 81. Without this, we're also considering entries from the previous periods (because of the date_scope), and just summing everything while we actually only want the last one.

closes odoo/odoo#112017

Signed-off-by: John Laterre (jol)

[FIX] account: prevent change restrict mode hash

In case of an user can edit account.journal and have no access of all account.move of this journal, the user can set to false this field : restrict_mode_hash_table.

closes odoo/odoo#112021

X-original-commit: c1bcf20a4c58516e484417885f47e32a8c192dc1 Signed-off-by: Nicolas Viseur (vin)

[FIX] account: can't get previous move

In case of a user have no access to all account.move (restrict by ir.rules). An exception can raise during move posting.

Add an index to speed up this function in large database.

OPW #3159258

closes odoo/odoo#112027

X-original-commit: b2e3c58ab4ffc6aefa045580463eba0ca23b6284 Signed-off-by: Nicolas Viseur (vin)

[FIX] website_event : check ticket id

There was previously no check that the ticket id belong to the selected event.

For better data integrity, this should be the case

closes odoo/odoo#111744

X-original-commit: e3ff6991c78b8e35834492a9d9a883cd99c11a3b Signed-off-by: Vranckx Florian (flvr)

[FIX] website_hr_recruitment: add slug to jobs' website_url

This follows the merge of 1.

Model implementing the _compute_website_url method sometimes adds the "base url" part which is probably not necessary and sometimes forgot to add the "slug" part. This commit only fixes the website_hr_recruitment job's one to add the slub. The others will be fixed later, this should probably be part of a deeper refactoring to use routes with Model validation rather than accepting any int and reviewing when the base URL is actually necessary.

Notice that the main point of this change is that the website_url field as some models now shown in the "Site" menu of the website app. In that case, when clicking on a record, the user is redirected to the iframe preview, with the right website and domain without the need for it to be part of the object's URL.

closes odoo/odoo#99959

Signed-off-by: Romain Derie (rde)

[FIX] web_editor,project,note: ensure same history

This commit add a mechanism to ensure that someone could never save changes from an history that diverge (in case there is a partition in the RTC network or a person A was disconnected while another person B saved changes that were not transmitted to person A).


closes odoo/odoo#110241

Signed-off-by: David Monjoie (dmo)

Created at 1 week ago

Add enqueue of graph dependencies in queue_job_cron_jobrunner


Added translation using Weblate (Romanian)

Translated using Weblate (Romanian)

Currently translated at 60.0% (3 of 5 strings)

Translation: queue-15.0/queue-15.0-queue_job_cron_jobrunner Translate-URL:

[MIG] queue_job_cron_jobrunner: Migration to 16.0

[FIX] Update copier template

An update is needed because of isort library problems with pre-commit - PyCQA/isort#2077

Merge pull request #505 from factorlibre/16.0-upd-copier-template

[16.0][FIX] Update copier template

Translated using Weblate (Spanish)

Currently translated at 82.0% (128 of 156 strings)

Translation: queue-16.0/queue-16.0-queue_job Translate-URL:

Merge PR #489 into 16.0

Signed-off-by simahawk

[UPD] Update queue_job_cron_jobrunner.pot

[UPD] addons table in



[FIX] queue_job: delayable representation failed

Fix cursor already closed error on retryable errors

When a job is postponed because of a retryable error, as the error is not re-raised, we reach the new method

self._enqueue_dependent_jobs(env, job)

With a closed cursor. Return early in case of postponing, as there is no chance dependent jobs can become pending anyway.

[IMP] queue_job: add configuration options for jobrunner_db_user, jobrunner_db_password

[14.0][FIX] queue_job: fix read

oca-port: update blacklist

Merge PR #520 into 16.0

Signed-off-by simahawk


Created at 1 week ago

[ADD] web_sheet_full_width

new:[web_sheet_full_width] give openchatter full width too.

Add OCA as author of OCA addons

In order to get visibility on the OCA board has decided to add the OCA as author of all the addons maintained as part of the association.

[UPD] prefix versions with 8.0

[MIG] Make modules uninstallable

fix: full width for sheet v9

  • Add margin for better visibility
  • Add web_sheet_full_width migration state Done
  • Update to new OCA README.rst format.

fix: remove comments and empty line in README.rst

fix: add disclaimer for licence incompatibility with odoo enterprise

[MIG] Make modules uninstallable

[MIG] Rename manifest files

10.0 port web sheet full width (#449)

[MIG] adapt web_sheet_full_width to V10.0 web framework

[FIX] Bugfix in web_sheet_full_width for enterprise edition (#530)

[MIG] web_sheet_full_width: migration to 11.0.

[FIX] web_sheet_full_width: fix assets.xml in manifest and missing parenthesis in readme.

[FIX] web_sheet_full_width: PEP8

[UPD] Update web_sheet_full_width.pot

[IMP] web_sheet_full_width: black, isort, prettier

[MIG] web_sheet_full_width: Migration to 13.0

[13.0][MIG] web_sheet_full_width:

  • less -> scss
  • fragment readme + add a pointer to web_responsive

[UPD] Update web_sheet_full_width.pot

Created at 1 week ago
auroraeosrose create branch 16.0
Created at 1 week ago
auroraeosrose create branch 16.0
Created at 1 week ago

[IMP] account: tag recreation when one already exists

When we had only one sign existing (+ or -) and tried to create again a tag with the same name we didn't reused the existing one and recreated two new ones. This situation can happen after the archive/unlink of tax tags when we delete report lines with tags still in use. This PR improves this behavior.

closes odoo/odoo#111315

Task: 3162014 Related: #107705 Signed-off-by: Olivier Colson (oco)

[FIX] google_calendar: avoiding return of recordset when using ormcache

Before this commit: In some cases where some events won't sync to Odoo properly you got the "Unable to use a closed cursor." error. The problem is that _from_google_ids function returns a recordset, and the underlying cursor may be closed.

Steps to reproduce the issue:

  1. Create user_A and user_B in Odoo
  2. Sync user_A and user_B with Google calendar
  3. Create an event with user_B on the Google calendar
  4. Run the "Google Calendar: synchronization" cron
  5. Change the created event's owner to user_A on the Google calendar
  6. Run the "Google Calendar: synchronization" cron => You will get this error on the log, and the event won't sync:
Traceback (most recent call last):
  File "/home/odoo/src/odoo/odoo/", line 886, in get
    return field_cache[record._ids[0]]
KeyError: 99

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/odoo/src/odoo/odoo/", line 1061, in __get__
    value = env.cache.get(record, self)
  File "/home/odoo/src/odoo/odoo/", line 889, in get
    raise CacheMiss(record, field)
odoo.exceptions.CacheMiss: 'calendar.event(99,).google_id'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/odoo/src/odoo/addons/google_calendar/models/", line 91, in _sync_all_google_calendar
  File "/home/odoo/src/odoo/addons/google_calendar/models/", line 70, in _sync_google_calendar
    synced_events = self.env['calendar.event']._sync_google2odoo(events - recurrences, default_reminders=default_reminders)
  File "/home/odoo/src/odoo/addons/google_calendar/models/", line 147, in _sync_google2odoo
    existing = google_events.exists(self.env)
  File "/home/odoo/src/odoo/addons/google_calendar/utils/", line 180, in exists
  File "/home/odoo/src/odoo/addons/google_calendar/utils/", line 88, in odoo_ids
    found = self._load_odoo_ids_from_db(env, model)
  File "/home/odoo/src/odoo/addons/google_calendar/utils/", line 111, in _load_odoo_ids_from_db
    mapping = {e.google_id: for e in odoo_events}  # {google_id: odoo_id}
  File "/home/odoo/src/odoo/addons/google_calendar/utils/", line 111, in <dictcomp>
    mapping = {e.google_id: for e in odoo_events}  # {google_id: odoo_id}
  File "/home/odoo/src/odoo/odoo/", line 1087, in __get__
  File "/home/odoo/src/odoo/odoo/", line 3276, in _fetch_field
  File "/home/odoo/src/odoo/addons/calendar/models/", line 436, in _read
  File "/home/odoo/src/odoo/odoo/", line 3343, in _read
    cr.execute(query_str, params + [sub_ids])
  File "<decorator-gen-20>", line 2, in execute
  File "/home/odoo/src/odoo/odoo/", line 89, in check
    raise psycopg2.OperationalError('Unable to use a closed cursor.')

The solution is to use ormcache on a function that returns the ids of the events.


closes odoo/odoo#109557

Signed-off-by: Arnaud Joset

[I18N] migrate to the nex transifex API

Tansifex is deprecating it's client and switches to a go-based solution in its API v3

The new client is still backward compatible with the old format but the v2 API is going to be phased out. See to install the deplyments using the tx client

This PR is the result of the "tx migrate" command

closes odoo/odoo#112130

Transifex: adapt to new URL format Related: odoo/documentation#3500 Related: odoo/enterprise#36784 Signed-off-by: Martin Trigaux (mat)

[FIX] google_gmail: fix google gmail oauth crashing


When an error occurs, the error received is wrongly stringified.

closes odoo/odoo#112263

Signed-off-by: Thibault Delavallee (tde)

[FIX] web: fix title overflow

Steps to reproduce:

  • Install stock, purchase
  • Create a product with a long name
  • Create a purchase order with that product
  • Go to portal and access the purchase order

Current behavior:

  • Product title overflows in product.template form
  • Product title overflows when accessing the PO from the portal

Behavior after the PR:

  • To fix the problem on the form we add word-break and overflow-wrap to titles
  • To fix the problem in the Portal we add table-responsive to the table


closes odoo/odoo#111053

Signed-off-by: Bouvy Damien (dbo)

[FIX] l10n_it_edi: Share Capital and Sole Shareholder not mandatory

If the business is incorporated, both these fields must be present. We don't have a field to know whether the business is incorporated, but in any case the fields must be both present or not present.


closes odoo/odoo#112052

Signed-off-by: Josse Colpaert

[FIX] survey: extends spacing for column random_questions_count

This commit fixes a bug where the spacing for the column random_questions_count was off leading to it being way too small for edition.

Now, the column has enough space to be editable for versions 14.0 through 15.0.


Part of: #104135

closes odoo/odoo#108682

Signed-off-by: Thibault Delavallee (tde)

[FIX] survey: fix validation on conditional question

What are the steps to reproduce your issue? 1/ Setup

  • Create a survey with single select multi choice question
  • Create a 2nd question which is also a single-select multi-choice question, which appears based on the answer selected for 1st question.
  • Create a 3rd question which is a text question which is visible based on the answer to question 2.
  • All 3 questions are mandatory

2/ Take the survey

  • Answer 1st question in a way the 2nd question appears
  • Answer 2nd question in a way 3rd one appears
  • Change the answer the 1st question in a way 2nd question should not appear.

3/ Submit the survey

What is the current behavior that you observe? Odoo will not allow to submit the survey as it will require an answer for the 2nd question, even though it should not appear.

What would be your expected behavior in this case? to be able to submit the survey.

A test tour is added to enforce this logic.

opw-3087514 Task-2987929

closes odoo/odoo#108419

Signed-off-by: Thibault Delavallee (tde) Co-authored-by: Florian Charlier

[IMP] stock: allow inherit domain

This is a backward port of


closes odoo/odoo#111668

Signed-off-by: Arnold Moyaux (arm)

[FIX] mrp_subcontracting deleted move

Before this commit, it was possible that a move was considered to not be merged in mrp_subcontracting action_confirm, but it was then selected as a candidate to be merged on stock _merge_moves. In that scenario, the move would be merged with another one and deleted. As a consequence, we would end up returning a stock.move that no longer exists, raising an error message "Record does not exist or has been deleted.".

With this commit we return only the moves that still exist.

closes odoo/odoo#111969

Signed-off-by: William Henrotin (whe)

[IMP] mrp: hook method to control auto confirmation of MOs

There is a bit of a dance on the lambda function to filter the MOs that should be autoconfirmed out of a procurement. To the point that the logic is different in v14 and v15/16.


  • v14:
  • v16:
  • v16 previous:

It would be great for partners to be able to extend it and be able to control the logic used even if the default behavior gets changed again.

closes odoo/odoo#111981

Signed-off-by: Arnold Moyaux (arm)

[FIX] stock: allow cancelling picking with no move lines

before this commit, trying to cancel a picking with no move lines, will not move the picking to the cancel state.

  • create a new picking
  • keep move lines empty
  • click on the cancel button
  • picking will remain in the draft state

after this commit, on cancelling a picking with empty lines, will move the picking to the cancel state.

closes odoo/odoo#112247

Signed-off-by: William Henrotin (whe)

[FIX] l10n_de{,_skr03,_skr04}: change tax report lines name and order

The regulation for the German tax report has changed. We adapt it and its export to the regulation (that changed in Jan 2023) The reference for this tax report comes from and from

We can see some lines are wrong. Some categories are also not well-ordered. Some indentation should be done better. Some taxes had to change, as the report lines they were pointing to should not exist, and the tax row had to be added Some taxes should point to a tax report line when they were not.

opw-2767535 opw-2974560 task-3082233

closes odoo/odoo#108601

Related: odoo/enterprise#35210 Signed-off-by: Brice Bartoletti (bib)

Created at 1 month ago

[FIX] stock: block product type change if sales count

Steps to reproduce:

  • Create a product and complete a sales order.
  • Then try to change the product type.
  • The following message is shown: "You cannot change the products type because it is already used in sales orders." However, we can close the message and save.

Problem: If some sales were already made, it should not be possible to change the product type. There is a warning message on the onchange but it's not blocking. This causes inconsistencies between the quantities and value shown in the quants and in the valuation layers.

Solution: Raise an user error when trying to save the changes.


closes odoo/odoo#105291

X-original-commit: 1b2c045f03397583b03edbb12e638a8a11712ea8 Signed-off-by: William Henrotin (whe)

[FIX] website: properly warn users of Google API errors

Before this commit, when adding a google map snippet in the DOM, the user was asked for its API key if not already configured, thanks to an user-friendly dialog. However, in the case it was misconfigured (while the editor dialog prevents some misconfiguration, configuration via the backend allow any random key to be given), the UX was terrible: the google map is simply removed without any notification.

Misconfiguration can be:

  • Invalid API key
  • "Maps JavaScript API", "Places API" or "Maps Static API" not enabled
  • Billing not enabled

Now notifications/messages warn about those things and reopens the key configuration dialog, which contains links to the gmap API documentation and now more information. Hopefully, this can be improved even further later. Indeed, this is still not perfect as there is no reliable way to understand google responses. E.g. even with the three mentioned API and billing enabled, sometimes the google map API still returns errors indicating "not enabled APIs" but it cannot be reproduced reliably. During my test it was systematic for 15min at some point but now there is none, ever. Like if there was a delay after enabling an API on the google console before it stops sending errors... although the API works immediately.

Notice that in 15.0, this snippet is shown in debug mode only and we encourage users to use the new "Map" snippet which does not require any configuration.


Part-of: odoo/odoo#105072

[FIX] website: prevent warning on each google map snippet initialization

Some part of the google map API was deprecated and showed a warning at each snippet redraw. Probably harmless but since the related API are really capricious, best satisfy them as much as possible, even in stable versions.


Part-of: odoo/odoo#105072

[FIX] website: make address selection in editor more robust

Using the "gps picker" (for example with the "Google Map" snippet) was not flawless. The autocomplete menu which shows up when the user enters an address is handled by the gmap API. It was actually not working at all on Firefox for an unknown reason. Not listening to blur events on the input seems to solve the issue. This commit also prevents triggering a value change if the same address is reselected which seems to make address changes a bit more robust too.


closes odoo/odoo#105072

Signed-off-by: Quentin Smetz (qsm)

[IMP] base: improve perfomance of has_group

Using the already existing indexing on the model to slightly improve the perfomance.

closes odoo/odoo#105305

X-original-commit: 4344d399002a32eeca05374527336d77a161c898 Signed-off-by: Vranckx Florian (flvr)

[FIX] event_sale: remove 'need to be paid' banner for free ticket

This commit fixes an issue where if a ticket is free, the registration would still "need to be paid" by the attendee.

This behavior is contradictory for a free ticket, so the attendee now has to pay the ticket if it is not paid and is not a free ticket.


closes odoo/odoo#102996

Signed-off-by: Warnon Aurélien (awa)

[FIX] base_address_extended: auto complete issues

Steps to reproduce:

  • install the "Extended Adresses" module;
  • in the configuration menu --> countries, edit the street format for Belgium to " %(street_name)s" (with whitespaces)
  • create a new contact;
  • select a contact suggested by the auto complete feature (for example Odoo)

Issue: Some letters are removed if we add whitespaces in the street format (street_name field has the value "e du Laid Burniat 5" instead of "Rue du Laid Burniat 5").

Cause: The function which splits the raw address taking into account heading characters. Therefore the function truncates whatever is in front of the first field of the street format which is normally the image of the address (street_raw).

Example 1: (correct use)
street_raw = "header Rue du Laid Burniat 5"
street_format = "header %(street_name)s"

street_name = "Rue du Laid Burniat 5" --> OK (format address is properly configured to match with street_raw)

Example 2: (incorrect use but desired behavior)
street_raw = "Rue du Laid Burniat 5"
street_format = "header %(street_name)s"

street_name = "Laid Burniat 5" --> truncation is expected (7 leading characters are removed) (format address is not properly configured to match with street_raw)

Example 3: (incorrect use and unwanted behavior)
street_raw = "Rue du Laid Burniat 5"
street_format = " %(street_name)s"

street_name = "ue du Laid Burniat 5" --> truncation is not expected (1 leading character is removed) (format address is "properly" configured but with whitespace)

Solution: Remove whitespaces before street format when editing this field to prevent truncation of the field value.


closes odoo/odoo#99224

Signed-off-by: Quentin De Paoli

[FIX] account: keep original domain in aml's _name_search

Model account.move.line has extended _name_search to clarify ilike search. However, the new domain replaces original domain, instead of making a friendship.


  • add custom Many2one field to any form (e.g. SO)
  • add domain for the field, e.g. [["parent_state", "!=", "draft"]]
  • try quick search for the new field


closes odoo/odoo#105534

Signed-off-by: William André (wan)

[IMP] base: advertise view's active behavior in vs

Upon updates, the active field of ir.ui.view behaves differently depending on whether the view is defined by using the <template> tag or the <record> tag.

When using <record>, it behaves like any other field and gets updated with the new value (notice that for qweb view, you should rarely rely on this as if users customized those views with the website builder, they are duplicated (COW)... updating the active field without migration script would then be a source of errors). When using <template>, it is not updated since 1, except for new records since 2.

This commit adds a comment to the active field to help developers find out about this difference.

See this discussion.

Related to task-2963840

closes odoo/odoo#105524

Signed-off-by: Quentin Smetz (qsm) Co-authored-by: qsm-odoo

[I18N] Update translation terms from Transifex

[FIX] hr_presence: wrong config key in get_param method

closes odoo/odoo#105510

Signed-off-by: Thibault Delavallee (tde)

[FIX] base: show result separator only in done state

closes odoo/odoo#105638

X-original-commit: 68f29fda5d6d54719cf3abd5bdf38c810f39f854 Signed-off-by: Xavier Morel (xmo)

[FIX] base: keep company currency active

This commit aims at preventing the deactivation of a company currency. Was the issue on 2852452 support ticket (v14). But it seems appropriate to merge it in 13.0 as it is probably a good idea that a company currency always stays active.

How to reproduce bug: In 13.0: Install accounting with demo data > activate multi currency in settings > deactivate usd > create new invoice > select eur currency > cannot set usd currency back on invoice

Reconcile JS traceback in 14.0: Install accounting with demo data > activate multi currency in settings > deactivate usd > go to accounting dashboard > click on reconcile 7 items on Bank journal > click on any “customer/vendor matching” line.

closes odoo/odoo#104819

Task: 2852452 X-original-commit: 1e3368108cb3436b4c4ad1a09c4bacbd1ebfe5e7 Signed-off-by: Quentin De Paoli

[FIX] snailmail: Fix pdf render function call

Fixes a small but massive typo that prevents snailmail from working on version 14 to 15

closes odoo/odoo#105707

Signed-off-by: Florian Daloze (fda)

[IMP] l10n_de_{skr03,skr04}: add right accounts to tax groups

There are specific accounts that should be used for tax groups for each version of the CoA


closes odoo/odoo#105648

Signed-off-by: John Laterre (jol)

[FIX] maintenance: avoid empty close_date in done stage

Steps to reproduce the error:

  • Install 'Maintenance'
  • Select 'Maintenance' -> 'Request Maintenance'
  • Create a maintenance request: + TH1: Save > Change stage to Repaired > 'Close date' = Date.Today() + TH2: Don't Save > Change stage to Repaired > Save > 'Close date' = blank

closes odoo/odoo#100777

Problem: App will show 'Close Date' blank Expected: App will display 'Close Date' as Date.Today() Solution: When Click on Save button -> Automatically get current date as end date Signed-off-by: Arnold Moyaux (arm)

[FIX] core: find currency when writing monetary field

When creating a record, if a value is related to a monetary field and if the currency field is a non-stored related one, the value will not be rounding: when writing the monetary value in the database, we first call convert_to_column. In the parameter, record is empty (it is not yet created) and values only contains the stored values (so the currency value is not present). As a result, currency will not be defined and the value will not be rounded.


closes odoo/odoo#104346

Signed-off-by: Raphael Collet

[FIX] mrp_subcontracting_dropshipping: return to stock location

When returning a dropshipped and subcontracted product to an internal location, the received quantity of the PO line will be incorrect

To reproduce the issue:

  1. In Settings, enable "Storage Locations"
  2. Create two storable products P_compo, P_Finished
  3. Create a BoM:
    • Product: P_finished
    • Type: Subcontracting
    • Subcontractors: a subcontractor S
    • Components: 1 x P_compo
  4. In Locations, edit WH/Stock:
    • Return location: True
  5. Create and confirm a PO:
    • Vendor: S
    • Deliver To: Dropship
    • Drop Ship Address: a partner P
    • Products: 1 x P_finished
  6. Validate the receipt
  7. Create a return with 1 x P_finished:
    • Update SO/PO quantities: True
    • Return Location: WH/Stock
  8. Validate the return
  9. Go back to the PO

Error: The qty received is 2, it should be 1 (it should not be 0 since the product has been returned to an internal location)

In /purchase_stock._compute_qty_received, there is already a code to anticipate such a situation (i.e., a user who returns a dropshipped product to his stock location): However, the methods _is_dropshipped and _is_dropshipped_returned do not include the feature subcontracting + dropshipping. This is the reason why, in _compute_qty_received, the above condition is not respected and why we add the return stock move to the received qty.


Part-of: odoo/odoo#105185

[FIX] mrp_subcontracting_dropshipping,purchase_stock: return to supplier

When returning a dropshipped and subcontracted product to the supplier location, the received quantity of the PO line will be incorrect

To reproduce the issue:

  1. Create two storable products P_compo, P_Finished
  2. Create a BoM:
    • Product: P_finished
    • Type: Subcontracting
    • Subcontractors: a subcontractor S
    • Components: 1 x P_compo
  3. Create and confirm a PO:
    • Vendor: S
    • Deliver To: Dropship
    • Drop Ship Address: a partner P
    • Products: 1 x P_finished
  4. Validate the receipt
  5. Create a return with 1 x P_finished:
    • Update SO/PO quantities: True
    • Return Location: Partner Locations/Vendors
  6. Validate the return
  7. Go back to the PO

Error: The qty received is 2, it should be 0

There is currently no code to handle the return of a dropshipped product


closes odoo/odoo#105185

Signed-off-by: William Henrotin (whe)

[FIX] web: list view: don't rerender a row before the previous render is done


  • Add a checkbox to the sublist view of quotations with studio and save
  • In the chrome devtools, select a custom network throttling profile with 1s of latency

Steps to reproduce:

First example:

  • Go to a quotation with at least two lines
  • Enter edit mode
  • Change the quantity of the first line
  • Double click on the price field of the second line -> A traceback appears: Cannot set properties of null (setting 'props')

Second example:

  • Go to a quotation with at least two lines
  • Enter edit mode
  • Change the quantity of the first line
  • Click on the price field of the second line
  • Click on Save -> The same traceback is there

Cause of the issue:

The checkbox field is implemented in owl and thus the owl_compatibility layer is used. Mounted is not called on the checkbox if a new rendering is being done cf: Currently, it is possible to set a row mode before the previous call and rendering is done.


Use a mutex for each record to prevent simultaneous render


closes odoo/odoo#101419

Signed-off-by: Aaron Bohy (aab)

Created at 1 month ago

Translated using Weblate (Spanish)

Currently translated at 100.0% (18 of 18 strings)

Translation: web-14.0/web-14.0-web_responsive Translate-URL:

[OU] web_disable_export_group: Fix when migration happened on 13.0

Merge pull request #2342 from tegin/14.0-fix-wdeg

[OU] web_disable_export_group: Fix when migration happened on 13.0

Update from template

Merge pull request #2358 from tegin/14.0-gh

Update from template

[IMP] update dotfiles [ci skip]

Added translation using Weblate (Italian)

Added translation using Weblate (Italian)

Translated using Weblate (Italian)

Currently translated at 100.0% (19 of 19 strings)

Translation: web-14.0/web-14.0-web_company_color Translate-URL:

Translated using Weblate (Italian)

Currently translated at 100.0% (4 of 4 strings)

Translation: web-14.0/web-14.0-web_environment_ribbon Translate-URL:

[FIX] web_timeline group_bys default array if undefined

[FIX] web_responsive: slashes in app names

When the app name had a slash ("/") on it we couldn't properly find it by name. This alternative doesn't depend on such weak rule. We'll find out the root app element for our submenu from the data already available in the widget.


Merge PR #2371 into 14.0

Signed-off-by pedrobaeza


[UPD] addons table in

Merge PR #2368 into 14.0

Signed-off-by pedrobaeza


[UPD] addons table in

Translated using Weblate (Italian)

Currently translated at 100.0% (21 of 21 strings)

Translation: web-14.0/web-14.0-web_notify Translate-URL:

[FIX] web_responsive: Selection of menu fails

Created at 1 month ago

Squash of 8 commits

Add README.rst

Too short underline for module title in README.rst

Improving module meta information

Version 1.0

W391 blank line at end of file

Remove module description because README.rst is there

web_search_with_and: Latest OCA conventions

Migrate web_search_with_and from 8.0 to 10.0

web_search_with_and: Migration to 11.0

Update web_search_with_and.pot

Port web_search_with_and to version 12.0

Update web_search_with_and.pot


Added translation using Weblate (Portuguese)



Added translation using Weblate (Spanish)

  • migration web_search_with_and

Update web_search_with_and.pot


Added translation using Weblate (Italian)

web_search_with_and: black, isort, prettier

web_search_with_and: Migration to 14.0

Update web_search_with_and.pot


web_search_with_and: Migration to 15.0

Created at 1 month ago

[FIX] l10n_gcc_invoice_stock_account: invoice report lot_values

before this commit, the lots info shown in the products were always computed, no matter if they were printed or not.

after this commit, the lot info only is computed when is actually used and will be printed: that is when the user has the stock_account.group_lot_on_invoice group.

closes odoo/odoo#110789

X-original-commit: 9e95dd198790d26addfb0d30dd83d66fc1055c53 Signed-off-by: William Henrotin (whe)

[FIX] l10n_de_repair: l10n_de_document_title computation

before this commit, in the draft state the l10n_de_document_title field value is computed as Repair Order and in other state it is computed as Repair Quotation.

after this commit, in draft state Repair Quotation and in other state Repair Order will be computed in field l10n_de_document_title

closes odoo/odoo#110818

X-original-commit: 522745b8cefd771c9bea8571f8f35725e817c285 Signed-off-by: John Laterre (jol)

[FIX] web_editor: prevent inner snippets to toggle the grid mode

In 1, conditions have been made in order to allow/forbid each snippet to toggle the grid mode. However, a case has been forgotten: when a snippet that cannot toggle the grid mode is dropped inside a snippet that can toggle it (so it is an inner snippet). Indeed, if we drag one of the inner snippet columns, we can see that the grid mode is toggled, where it should not be the case.

This issue comes from the check looking if the grid layout option is in the right panel. Indeed, even though such a snippet does not have it, if it is dropped inside a snippet that can toggle the grid mode, then the option is well present in the right panel (= the outer snippet one).

This commit fixes this issue by improving the check: now, dragging a column can toggle the grid mode only if the container having the option is the same as the one of the column. This commit also improves the siblings/children filtering (to only have the relevant dropzones) in order to take this case into account and to be more robust to customizations.

Steps to reproduce:

  • drop a Text-Image snippet
  • drop a Form snippet inside one of the columns
  • drag a form field => the grid mode is toggled.

opw-3100399 opw-3139938

closes odoo/odoo#108335

Signed-off-by: Quentin Smetz (qsm) Co-authored-by: qsm-odoo

[FIX] base: fix merge contact form layout


This commit removes the weird blank space at the edges of the merge contact form (using custom css that will be removed in master), and displays the info message and the associated action button shown when there are no more contacts to merge inside two separate rows, instead of displaying them next to each other (by adding colspan="2" on these elements).


closes odoo/odoo#109502

Signed-off-by: Thibault Delavallee (tde)

[FIX] stock: change product's company

Before this commit, there is no verification while changing a product's company. That can lead to issue where some operations cannot be done because of access errors. To avoid that, this commit prevents to change the product's company if some quants for this product exist in another company's location.

How to reproduce:

  • Have at least two different companies (let say CompA and CompB);
  • Create a new product who belong to no company;
  • For this product, add quantity on hand in a CompA location;
  • Now, change the product's company for the CompB;
  • While selected only the CompA, go into the Inventory Adjustments and try to create a new inventory adjustment for the CompA location with this product's quant -> Access Error.


closes odoo/odoo#110793

X-original-commit: 46987e13f35dc140869c58f6c5a09d9c542c3ae5 Signed-off-by: Tiffany Chang Signed-off-by: Steve Van Essche

[FIX] web: correctly destroy apps created for legacy MockServer

A recent change in owl exposes live (non-destroyed) apps on the window. This change causes the memory used by the QUnit test suite to balloon out of control. The reason is that when creating a mock environment, we create a standaloneAdapter to serve as the legacy MockServer's parent, but this standaloneAdapter creates a dummy owl application and this application is never destroyed. This commit fixes the problem by registering a cleanup to destroy the application at the end of the running test.

closes odoo/odoo#110844

Signed-off-by: Aaron Bohy (aab)

[FIX] l10n_bo: include account groups in manifest

Unfortunately, when I wrote the loc, I forgot to include in

As such, the account groups were not loaded, and I didn't notice an error in the chart template name.

Thanks to WAN for finding this.

closes odoo/odoo#110848

Signed-off-by: William André (wan)

[FIX] l10n_eg_edi_eta: remove wrong tree view type

The base view is a form view:

Without this change the upgrade to saas~16.1 fails:

Invalid custom view l10n_eg_edi_eta.product_normal_form_view_inherit_l10n_eg_eta_edi for model product.product
Traceback (most recent call last):
  File "/data/build/odoo/odoo/addons/base/maintenance/migrations/base/0.0.0/", line 701, in validate_view
  File "/data/build/odoo/odoo/addons/base/maintenance/migrations/base/0.0.0/", line 419, in _check_xml
    super(IrUiView, record)._check_xml()
  File "/data/build/odoo/odoo/addons/base/models/", line 478, in _check_xml
    raise err.with_traceback(e.__traceback__) from None
  File "/data/build/odoo/odoo/addons/base/models/", line 452, in _check_xml
    view._validate_view(combined_arch, view.model)
  File "/data/build/odoo/odoo/addons/base/models/", line 1417, in _validate_view
  File "/data/build/odoo/odoo/addons/base/models/", line 760, in _raise_view_error
    raise err from from_exception
odoo.exceptions.ValidationError: Error while validating view near:
<form string="Product Variant" __validate__="1" duplicate="false">
                    <button string="Print Labels" type="object" name="action_open_label_layout" attrs="{'invisible': [('detailed_type', '==', 'service')]}"/>
The root node of a tree view should be a <tree>, not a <form>

closes odoo/odoo#110852

Signed-off-by: Christophe Simonis

[FIX] website: default page list's website filter on current website

The "All Websites" list of views is confusing for users with its combination of default and specific views.

This commit makes the "All Websites" filter only available in debug mode, and defaults the selected website on either the current website (if one is selected) or the first website of the list. The test is adapted because only the current website's pages are displayed now.


closes odoo/odoo#109932

Signed-off-by: Romain Derie (rde)

[FIX] mail: bad CTE/QP decoding of rfc822-headers

Based on RFC3462, a Content-Type text/rfc822-headers exists and provide a mechanism to label and return only the RFC 822 headers of a failed message (bounce)

These are only the headers and not the full message.

The Content-Type-Encoding should be either 7-bit(US-ASCII) or Quoted-Printable (QP) as in the section 2 of the RFC.

Spawn the error: After getting reported by a customer, I had to reproduce by spamming wrong outlook addresses and add logging in a sh database on the message_process of and logged the message variable.

After few retry, I got one of the part that was defined as followed: Content-Description: Undelivered Message Headers Content-Type: text/rfc822-headers Content-Transfer-Encoding: quoted-printable

The get_payload()function used was only assuming that there is a full email on that part and that it could only be encoded as an email, which was not the case in this situation (quoted-printable: 76 characters per line, character = used as the end of line character).

opw-3064589 task-3131561

closes odoo/odoo#110596

X-original-commit: 4e30d7b63a08cb371927a75f833dba0dce3f2818 Signed-off-by: Julien Castiaux Co-authored-by: Baptiste Vergote

[FIX] purchase_stock: cogs without stock.move

Usecase to reproduce:

  • Create a product with real time valuation and AVCO or FIFO
  • Create an invoice for this product without stock.move
  • Validate the invoice


It happens because it tries to check if there is a difference between the invoice line value and the value of associated stock.move. However in this case there is no purchase line to do the link.

Since we can't associate a picking to an invoice line magicaly. We skip this part and let the user do his own journal entries

closes odoo/odoo#110865

Signed-off-by: William Henrotin (whe)

[FIX] website: don't translate exemple of rule

  • Install website and set in French
  • in the robot wizard you see: Exemple de règle : Refuser : /web/login Autoriser : *

closes odoo/odoo#110729

X-original-commit: 3f8ff00c5fce657074ba9d67efb0d24fa8f1af9a Signed-off-by: Romain Derie (rde)

[FIX] pos_restaurant missing access token

closes odoo/odoo#110885

Signed-off-by: Trinh Jacky (trj)

[FIX] hr_holidays: prevent double confirmation of allocations

Steps to reproduce: Create a leave allocation for a group of employees via the "By Employee Tag" mode.

Issue: Employees have more allocations than expected.

Cause: The allocations are confirmed automatically when the "base" allocation record is created (if there is not validation required). And the "CONFIRM" button is also clicked which does the same operation a second time.

Solution: Do not start the validation process if the allocation is already validated.


closes odoo/odoo#110573

Signed-off-by: Kevin Baptiste

[FIX] account_accountant: Fix dashboard default bank rec action

Open the kanban view by default when clicking on the journal name.

closes odoo/odoo#110539

Task: 3141127 Related: odoo/enterprise#36094 Signed-off-by: Florian Gilbert (flg)

[FIX] project: avoid re-fetching last update on project when re-sequence

Before this commit, when the user drags and drops a task from a stage to another one in the kanban view of tasks of a project, the kanban records in the destination stage will be re-sequenced and this re-sequence will re-render the kanban. For this reason, the onWillUpdate hook in the control panel will be trigger many times and each trigger will fetch the last project update.

This commit will remove the onWillUpdate hook to avoid re-fetching the last project update when a change is done in the kanban view and so, the last update of the project will be just fetch when the component is mounted since the last update is not impacting when a task changes stage.# Please enter the commit message for your changes.

closes odoo/odoo#110921

Signed-off-by: Xavier Bol (xbo)

[FIX] web: field wrongly considered as always invisible

If a field is present twice in a view, the field information stored in the relational model activeFields holds and consider only the latest xml node found.

Therefore, a field is sometimes considered alwaysInvisible when it is visible and editable. This means that you might click on the 'Save' button and get a server error because a required field is not set when you should the required field should have been highlighted and requested before making a create rpc request.

This commit makes sure that for the alwaysInvisible logic, both nodes are considered.

closes odoo/odoo#110924

Signed-off-by: Georis François (fge)

[FIX] hr_work_entry: make _error_checking faster

Calls to _error_checking() would look for every work entries between 2 dates, even if we were only modifying one employee's.

Because of that the leave creation on big production database would take a long time.

Now the method allows for filtering to the employees.


closes odoo/odoo#110559

Signed-off-by: Yannick Tivisse (yti)

[FIX] mail: click on draft chatter action proceed to action

Follow-up of

When clicking on a chatter action of draft record when composer, sometimes the action did not proceed.

This was caused by code to proceed action awaiting recovery of composer state, and assumed the composer was shown. If the composer is not toggled on, then the action did not proceed.

This commit fixes the issue by properly proceeding the action when composer state doesn't need to be recovered.

closes odoo/odoo#110884

Signed-off-by: Sébastien Theys (seb)

[FIX] website: correctly handle website_visitor with merge partners

Since the refactoring of website.visitor with 1 (upsert), the access_token is supposed to be holding the same value as the partner_id when the visitor is linked to a partner:

  • Anonymous visitor: no partner_id, access_token is a hash value
  • Partner visitor: partner_id set, access_token should be sync with partner_id.

partner_id is just a stored computed field holding the access_token value if it is an integer value. There should never be a case where there is a partner_id set and the access_token is not equal to the partner_id.

For instance, having a visitor with partner_id = 4 and access_token = e4r3ejkj4 is supposed to be impossible. It would lead to crash, because the visitor is only searched based on his access_token, meaning that when searching for the visitor of partner 4, none would be found and a new one would try to be created, raising the uniq_access_token_id SQL constraint.

While the partner_id/access_token sync might seems weird, it is done to allow the upsert use in SQL to improve perfs of this low level behavior. It's actually not as weak as it seems as there is only a single entry point to update the partner_id and access_token: the authenticate override of website. Those fields are not supposed to be changed elsewhere.

Note that modifying the access_token would not be an issue as the partner_id is just a stored compute based on the access_token. But it's only true when modifying through the ORM as if you do that in raw SQL, it won't go through the api.depends which is supposed to recompute the stored computed partner_id field.

But something was forgotten during the initial dev: the partner merge behavior: it does (on top of other thing) auto discover the m2o field relations that points to a res.partner and modify those values in raw SQL to the new value. This is obviously wrong regarding the website.visitor's partner_id field, the access_token should also be updated, or when possible visitors should be merged too.

Note that for DB upgrated from previous version to Odoo 16, this is ensured through the following upgrade script 2:

UPDATE website_visitor
    SET access_token = partner_id::text
WHERE partner_id IS NOT NULL


closes odoo/odoo#110870

Signed-off-by: Romain Derie (rde)

Created at 1 month ago

[ADD] new module web_theme_classic to identify better buttons and fields in Odoo form views

Merge PR #2317 into 16.0

Signed-off-by pedrobaeza

[UPD] Update web_theme_classic.pot

[UPD] addons table in


[ADD] icon.png


Created at 2 months ago

[FIX] portal: fix portal title for the salesperson data

Before this commit, if the helpdesk module was installed, the title of the salesperson data was changed from "Your contact" to "Salesperson" for portal users. This did not add any value and the title of the tab also became "Salesperson" which we do not want. This commit allows to keep the title "Your contact" above the salesperson information and to not change the tab title.

Steps to reproduce the problem fixed by this commit:

  • Run Odoo enterprise with helpdesk and sales installed.
  • As the admin, create a helpdesk ticket with Joel Willis (portal user) as the customer and save.
  • Click on Joel Willis, select the "Sales & Purchases" tab and set a salesperson.

=> Log in as Joel Willis and on /my, you will have "Salesperson" as the title of the tab. This bad behavior is due to this commit that added a title above the salesperson information. But with this change the title of the tab was also impacted. Then this other commit added a default title above the salesperson information. We can be satisfied with this default title which does not alter the title of the tab.


closes odoo/odoo#109136

X-original-commit: 1ebeec9dc2ea9c4a2051b06118f47a440dd5e470 Related: odoo/enterprise#35443 Signed-off-by: Quentin Smetz (qsm)

[FIX] l10n_fr: add migration to version 2.1 of the module

This will allow to get the latest taxes.

closes odoo/odoo#109196

Task: 3111528. Related: #84918, #107158 X-original-commit: 521c80477f9a664bb732ec54d18bdcf1b828072b Signed-off-by: William André (wan)

[FIX] onboarding: prevent crash with multiple progress records

Multiple progress records for the same onboarding and company_id (False) were allowed to be created in several databases which resulted in crashes.

As simple stable fix, we'll select only the latest onboarding_progress records created per onboarding when trying to compute the current_progress_id and similarly for progress steps.

This will be cleaned with an upgrade script in master so that this code should not be necessary for long.


closes odoo/odoo#108183

Signed-off-by: Warnon Aurélien (awa)

[FIX] project: decrease task title width

This commit will reduce the width used by the task name in form view to 75% of the space available, except when in mobile view where it'll take full width. The title doesn't need to take the whole space but only about 3/4 of it in form view

Side note: this may need to change once the mark-as-done 2 task is merged because a new wider widget will replace the kanban_state widget

closes odoo/odoo#109219

Signed-off-by: Xavier Bol (xbo)

[FIX] stock: fix js traceback when selecting all locations

Steps to reproduce:

  • Install stock
  • Activate storage locations
  • Switch to French language
  • Go to stock/analyse/emplacements
  • Select all locations

A javascript traceback pops up because the names 'Set' and 'Count Sheet' are not translated, therefore we use _t function to translate the terms.


closes odoo/odoo#109159

Signed-off-by: Tiffany Chang

[FIX] base: missing MIME-Version header

Send an rich HTML email from Odoo, it lands in spam whereas it would land in inbox in 13.0.

The problem is due to a missing "MIME-Version: 1.0" header on the email. This header is correctly set on both the html and text alternatives of the messages but it should be set on the enveloppe too.

The problem is present in the newer EmailMessage mail API of python that is used since 14.0. Using the newer API, it doesn't set the header on the enveloppe itself.

This reverts commit 8663f1e20727c315924bb20fc1de1accf3014c61.


closes odoo/odoo#109195

X-original-commit: c480d2bf1de7b70892130e74bb7a8d4003a8a783 Signed-off-by: Xavier Dollé (xdo) Signed-off-by: Julien Castiaux

[FIX] project: fix the project activities filter kanban view

Steps to reproduce:

  • Go to Projects app.
  • Add some activities to different project (for today, overdue, future).
  • Go to the activities button in the navbar.
  • Search for the project activities and click in 'Today'.
  • We are redirected to the kanban view of the projects without filtering


We don't get the project filters by it's activities as it should be.


Added the proper filters to this specific project kanban view so we can access the filters when accesing the view.


closes odoo/odoo#109098

X-original-commit: 6219fb2aee899dd06fd451ada4824874eb120329 Signed-off-by: Xavier Bol (xbo)

[IMP] web: open privacy page in new tab

closes odoo/odoo#109254

X-original-commit: af98b08945ddf33412187247059bc290650908a8 Signed-off-by: Bruno Boi (boi)

[ADD] l10n_in_upi: added qr code for upi payment in invoice report

Currently, there is no facility for UPI payment for the invoice.

So in this commit, there will be a QR code for UPI payment in the invoice report.

closes odoo/odoo#109214

X-original-commit: e8e75678ee64fd9e4150ab7c9a9836d69b06c4db Signed-off-by: Quentin De Paoli Signed-off-by: Jigar Vaghela (jva)

[IMP] l10n_in: simplify place of supply

We just set a place of supply(state_id) from partner_id in the Invoice/Bill if partner country is india because there are many complex cases so we can't get it automatically in all cases like (a) where the supply involves movement of goods, whether by the supplier or the recipient or by any other person, the place of supply of such goods shall be the location of the goods at the time at which the movement of goods terminates for delivery to the recipient;

(b) where the goods are delivered by the supplier to a recipient or any other person on the direction of a third person, whether acting as an agent or otherwise, before or during movement of goods, either by way of transfer of documents of title to the goods or otherwise, it shall be deemed that the said third person has received the goods and the place of supply of such goods shall be the principal place of business of such person;

(c) where the supply does not involve movement of goods, whether by the supplier or the recipient, the place of supply shall be the location of such goods at the time of the delivery to the recipient;

(d) where the goods are assembled or installed at site, the place of supply shall be the place of such installation or assembly;

(e) where the goods are supplied on board a conveyance, including a vessel, an aircraft, a train or a motor vehicle, the place of supply shall be the location at which such goods are taken on board.

we add new state "Other Country" to set place of supply(state_id) incase of partner country is not India for more details check CHAPTER V here;jsessionid=63D695F612B9972934E8131415FEBA28

closes odoo/odoo#82011

Signed-off-by: Quentin De Paoli

[FIX] hr_presense: name of view not translated

in python code is missing '_' so name of view cannot be exported translated

closes odoo/odoo#109235

X-original-commit: 97b82a8be7f3b82494d42d025165b688441c3fe4 Signed-off-by: Yannick Tivisse (yti)

[FIX] project: translate error message in Project Sharing

Before this commit, when the user cannot write on a certain field an error is occurred to notice the user, he cannot write on that field. The problem is the on is never translated.

This commit fixes the issue to be sure the whole error message is translated.

closes odoo/odoo#109268

X-original-commit: a2b1e3eb03eda1708bee0da69b0399ff5c6d9d3d Signed-off-by: Xavier Bol (xbo)

[FIX] base: fix test failing when sources are not in a folder named


-EX: odoo addons path is '~/odoo15/odoo/...' or '~/15.0/odoo/...' Basically not start with 'odoo' it will get error when running tests case on this file

closes odoo/odoo#109132

X-original-commit: 336b966f7959b4a5e716b58b25ab13d7e3f92691 Signed-off-by: Xavier Dollé (xdo)

[FIX] mrp: avoid MemoryError in _get_orderpoint_products

super()._get_orderpoint_products() returns more than 1 million products. Applying _bom_find to all of them is too much.

Issue observer on menu Inventory > Operations > Replenishment during upgrades to 16.0

closes odoo/odoo#107619

Signed-off-by: Arnold Moyaux (arm)

[FIX] account: render rounding line

Steps to reproduce:

  • create a cash rounding
  • create an invoice
  • in Other Infos, select the created Cash Rounding Method

Issue: Accounting wise, everything works fine but the back-end view and the Invoice Reports do not take into account the rounding (except wen you create a partial payment, the amount due is correct of course)

Solution: Make sure the value formatted_amount_total_rounded is returned by the method _prepare_tax_totals so it can be used in the templates


closes odoo/odoo#109203

Signed-off-by: William André (wan)

[FIX] repair: show uom only when multi uom is activated

before this commit in the repair orders tree view, the unit of measure field is shown always without respecting the multi uom feature.

after this commit, the field will be shown only once the uom feature is activated in the settings.

closes odoo/odoo#109246

X-original-commit: 0796f8ee68c74e10b8f72531b64932e52b86cbef Signed-off-by: William Henrotin (whe)

[FIX] base: inherit the industry field from parent

Steps to reproduce:

  • install "contacts" and "sale_management" module;
  • create a company contact with a value for "Industry" (Sales & Purchase tab);
  • create an employee who works in this company;
  • create two orders (one with the company and one with the employee);
  • go to sales reporting tab and select the pivot view;
  • filter by "Customer Industry" and then by "Customer";

Issue: The employee is not placed in the right category of industry. He should be in the same category as the company he works in.

Cause: When creating a contact, the industry_id field is not passed from parent to children. (Moreover, this field being invisible for an "individual" contact, it is not possible to give it a value without using the studio application.)

Solution: Add industry_id to _commercial_fields.


closes odoo/odoo#109282

X-original-commit: 639e081f6bccb85a8f23cfc4dca68708012fc2e3 Signed-off-by: Yannick Tivisse (yti) Signed-off-by: Lefebvre Thomas (thle)

[FIX] website: fix deleting a page from the page manager

Steps to reproduce the bug:

  • Install the "Surveys" application.
  • Go to the "Website" application.
  • Go in the page manager ("Site" > "Pages").
  • Select a page (typically "Home").
  • Try to delete it.
  • Error of type "'survey.survey' object has no attributes 'name'".

The error comes from the fact that records do not necessarily have the attribute called "name". To fix this error, this commit uses "display_name" that is defined in all models.

task-3082345 opw-3100483 opw-3111671

Part-of: odoo/odoo#106890

[FIX] website: fix deleting a page from the page manager in debug mode

Before this commit, trying to delete a page from the page manager in debug mode would throw an error of type "Got duplicate key in t-foreach".

As explained in this commit 1 and as per the owl documentation: "Owl requires the presence of a t-key directive, to be able to properly reconcile renderings." and "A key should be a unique number or string."

In our case, "dependency_value" is an array. Due to that, the current item of the "t-foreach" iteration is the current value. The bug is fixed by ensuring that the value of "t-key" is the current value index and not the value itself.

task-3082345 opw-3100483 opw-3111671

closes odoo/odoo#106890

Signed-off-by: Romain Derie (rde)

[FIX] l10n_gcc_invoice: translate payment terms' notes correctly

Steps to reproduce

  • install l10n_gcc_invoice module
  • switch to a company in Saudi Arabia (SA company)
  • create and print an invoice that has a payment term with a translated note

We expect the payment term's note to be displayed both in English and Arabic. But instead, the note is displayed twice in the customer's preferred language.


t-field does not use the context defined on the field itself. It uses the rendering context.


closes odoo/odoo#108752

Signed-off-by: Nicolas Viseur (vin)

Created at 2 months ago
create branch
auroraeosrose create branch 14.20
Created at 2 months ago

[14.0][ADD] base_tier_validation_correction

[FIX] permission to post message

[UPD] repo template and switch to github actions.

[FIX] document_quick_access_folder_auto_classification: add missing dependencies

Merge PR #552 into 14.0

Signed-off-by LoisRForgeFlow


[UPD] addons table in

[FIX] base_tier_validation: error on reviews after uninstalling Tier Validation support

Merge PR #451 into 14.0

Signed-off-by LoisRForgeFlow


[UPD] addons table in

Merge PR #276 into 14.0

Signed-off-by etobella

[UPD] Update base_tier_validation_correction.pot

[UPD] addons table in



[IMP] base_cancel_confirm, allow disable cancel confirm

Merge PR #497 into 14.0

Signed-off-by simahawk

[UPD] Update base_cancel_confirm.pot


Created at 2 months ago

[IMP] update dotfiles [ci skip]

[FIX] queue_job: UI glitches in 16.0 migration

Merge PR #490 into 16.0

Signed-off-by guewen

[UPD] Update queue_job.pot


[UPD] addons table in

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: queue-16.0/queue-16.0-queue_job Translate-URL:

Created at 2 months ago

Added translation using Weblate (Chinese (zh))

Added translation using Weblate (Chinese (zh))

[IMP] update dotfiles [ci skip]

[IMP] web_refresher: Work as component of control panel

[IMP] web_refresher: Add component to pager to avoid instance for all views

Merge PR #2366 into 16.0

Signed-off-by pedrobaeza

[UPD] Update web_refresher.pot



[UPD] addons table in

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: web-16.0/web-16.0-web_refresher Translate-URL:

Added translation using Weblate (Spanish (Argentina))

Translated using Weblate (Spanish (Argentina))

Currently translated at 100.0% (4 of 4 strings)

Translation: web-16.0/web-16.0-web_dark_mode Translate-URL:

Added translation using Weblate (Croatian)

Translated using Weblate (Croatian)

Currently translated at 100.0% (4 of 4 strings)

Translation: web-16.0/web-16.0-web_environment_ribbon Translate-URL:

Translated using Weblate (Croatian)

Currently translated at 100.0% (2 of 2 strings)

Translation: web-16.0/web-16.0-web_refresher Translate-URL:

Created at 2 months ago

[FIX] delivery: speed up delivery costs installation

Due to hefty data the RAM limit gets exhausted. The process gets killed due to the computed field weight on

  • stock.move
  • stock.picking When installing the delivery costs module.

To solve the problem:

We add the column weight to the DB schema.

Ticket ids:

  • 3013955
  • 2628251
  • 3028081

closes odoo/odoo#109042

X-original-commit: 8548885e796586f18619ea8554abdde1cb222f15 Signed-off-by: Arnold Moyaux (arm) Signed-off-by: Tiffany Chang Signed-off-by:

[FIX] l10n_id_efaktur: Fix a TypeError exception on efaktur

When a user that doesn't have to right on "Multi company", efaktur will crash when creating a new entry to e-Faktur.

This is due to a missing permission on the field "company". This fix to set "company" to invisible when the user is not in the base.group_multi_company group


closes odoo/odoo#107210

Signed-off-by: Grazioso Andrea (agr)

[FIX] web_editor: allow multiple autoplay vimeo videos

Before this commit, it was not possible to have two vimeo videos playing at the same time on the same page. Steps to reproduce the bug:

  • Drop two blocks containing an image
  • Replace the two images with vimeo videos
  • For each of these videos, enable the autoplay feature

=> Only one of these videos is played automatically. When you play the other one, the first one is paused and vice versa. It is impossible to have both videos running at the same time. This commit allows to correct this by allowing to play several vimeo videos at the same time when they have the autoplay feature activated. Note that if the option is not enabled, the behavior remains similar to before, only one video can be played at a time.


closes odoo/odoo#108936

X-original-commit: 9e9d8691826d5504f613f529ee998a22d1bf3888 Signed-off-by: Quentin Smetz (qsm) Signed-off-by: Guillaume-gdi

[FIX] l10n_gcc_invoice: language context lost in template rendering


  1. Install Accounting, l10n_sa
  2. Create/Switch to a company located in Saudi Arabia
  3. Go to Accounting -> Customer Invoice, and create a new invoice with a customer with language preference set to Arabic
  4. Choose any product, and set the Payment terms as Immediate Payment
  5. Confirm the invoice and print it, the payment term on the left end of the invoice is in Arabic, which should be in English

Reason: in Odoo 16, the rendering of “t-field” loses the provided context because the values are rendered with the env context instead. The change is introduced by here:

Fix: Using “t-out” instead of “t-field” for html fields in the template to keep the forced context of en-US. Similar fixes are done for other html fields in this template, e.g. fiscal_position_id.note, narration. These fields’ types were changed from Char to Html here:

Related commit: Change in : Change of field type:


closes odoo/odoo#108995

Signed-off-by: Liu Jinjiu (jili)

[FIX] account: prevent tax info from being shown on invoice if only one tax

Because of a faulty float comparison, additional taxes information would sometimes be uselessly displayed on invoices, specifically when only one tax was applied.

Fixed said float comparison.

Modified usage of built-in 'round' since check_style doesn't allow this anymore.

closes odoo/odoo#109003

Signed-off-by: Laurent Smet

[FIX] spreadsheet: improve performance of clickable cells

Rendering the clickable cells is not a negligeable operation. And it happens at every rendering (every scroll operation).

Especially, detecting which functions the cell contains. The slow operation is parsing formula.

On the "CRM Leads" dashboard, depending on the visible cells:

closes odoo/odoo#109047

Before: 10+ms (almost the full 16ms allowed to reach 60fps) After: ~2-3ms Signed-off-by: Rémi Rahir (rar)

[FIX] mail: Escape translated emoji strings


  • Install knowledge on a fresh db
  • Install and set fr_BE language
  • Open knowldge
  • Traceback

The traceback occurs because emoji_registry.js fails to load emoji_data.js because of some translated string that contains non-escaped characters for JSON


closes odoo/odoo#109061

Signed-off-by: Alexandre Kühn (aku)

[FIX] sale_project: fix the display of non-service product

Before this commit, non-service SOl was not displayed on project update right-side panel view but non-SOLs products contribute to the project's profitability, e.g. you install a new kitchen -> you sell the installation service and the furniture for the kitchen.

So in this commit include the non-service SOLs to the project update panel.


Part-of: odoo/odoo#103484

[FIX] sale_project : fix the SOL click on project update

Currently, when we click on SOL and having one record of stock.move or timesheet then it was not going to display the form view of that particular record and also not showing that single record on list view too due to the invalid view_type passed in doActionButton.

So in this commit, if res_id exist then open the form view of particular record.

PS: we can not pass the options inside the doActionButton so we can not change the viewType from that method. second we have only action_id instead of whole action data so we can not directly switch the views without rpc call.


closes odoo/odoo#103484

Signed-off-by: Xavier Bol (xbo)

[FIX] web_editor: fix handling of the CSS !important marker

Since 1 the mechanism that was introduced in 2 is broken because a snapshot of the property value is used instead of the dynamically computed property value to determine whether the !important marker should be set on the modified property.

This commit makes sure the value is obtained for each comparison instead of relying on a snapshot across all comparisons.

Steps to reproduce:

  • Drop a Banner block in a website page.
  • Select the box.
  • Set the background to a custom solid color. => The background-color style has the !important marker on it, while it should not.

closes odoo/odoo#108893

Signed-off-by: Quentin Smetz (qsm)

[FIX] spreadsheet: fix concurrency issues in data sources

  1. Insert a pivot in a spreadsheet
  2. Create a global filter on a field of the pivot
  3. With a slow network, change the value of the global filter quickly twice.

Two concurrent requests are sent to the server. When the first one resolves, it marks the data source as loaded. However, at this point, the model (this._model) is no longer the one created by the first request. It's the one created by the second request which is still loading and has no data.

We end up with a data source which is marked as loaded but has no data.

Task 3120203

closes odoo/odoo#109094

Signed-off-by: Rémi Rahir (rar)

[FIX] website: convert bootstrap modal option

Before this commit, the popup snippets were configuring the modal option for bootstrap 4 rather than 5. The data-focus in bootstrap 4 becomes data-bs-focus in bootstap 5.

Without data-bs-focus option, the Newsletter popup snippet became uneditable because any click inside popup changed the selection to be inside the first focusable element within the modal.

The reason of the input being focused is: upon click inside the modal, the target of the focusin event is the parent of the modal because that parent is contenteditable="true". Because that target is outside the modal, _handleFocusin correct the selection by focusing the text input.


closes odoo/odoo#108091

Signed-off-by: David Monjoie (dmo)

[FIX] hr_expense: reason field too compact in refuse expense form

currently in the expense refuse form view the reason field is too compact to enter a reason in the field.

Expenses -> My Expenses -> My Reports , open any submitted expenses and click Refuse button.

closes odoo/odoo#108074

Signed-off-by: Yannick Tivisse (yti)

[FIX] spreadsheet: update o_spreadsheet to latest version

Contains the following commits: [FIX] charts: render only if needed [FIX] filters: compute borders for visible cells only [FIX] Composer: select headers when composer open [FIX] Range: prevent crash with sheetname containing an exclamation mark

closes odoo/odoo#109109

Signed-off-by: Rémi Rahir (rar)

[FIX] web_editor, website: debounce we-range events

This commit allows to debounce the events of the RangeUserValueWidget so that the user can use this widget with the left and right arrows without having a lag effect (especially on the image quality option). In addition, steps were added in the website_gray_color_palette tour to let the time for the debounce to trigger the changes.


closes odoo/odoo#108856

X-original-commit: e64d04568b8aefc4bbcdb6f7e4d2011461df824d Signed-off-by: Bojabza Soukéina (sobo)

[FIX] account: preview not displayed when uploading a pdf

Steps to reproduce:

  1. Customer invoices
  2. Upload button
  3. Choose a PDF
  4. The created invoice does not display the pdf preview

Related commits: a644766 and 0ab0a92

closes odoo/odoo#109125

X-original-commit: 801a80a Signed-off-by: Laurent Smet Signed-off-by: Ricardo Gomes Rodrigues (rigr)

[FIX] l10n_cl: traceback on printing invoice without setting vat in company

when the vat is not configured in the company and on printing the invoice, the traceback is raised.

this is due to the calling of method _format_dotted_vat_cl that excepts the vat value as input, when the method is called without a vat value, the traceback is thrown.

add an if condition to check there is a vat configured in the company and then the _format_dotted_vat_cl method is called only when there is a value in vat.

closes odoo/odoo#109129

X-original-commit: cadbe9e632c17efc0e68409df6fe8789f3f1dd14 Signed-off-by: Josse Colpaert

[FIX] web_editor: compare size CSS properties

When CSS properties are updated, a check is made to verify whether the new value is different from the old one. This process sometimes involves unit conversions. Since 1 when a CSS property is updated, it is also set before the check, in order to verify whether it should be set as !important. When the CSS property is a size, such as the background-size CSS property, it is made of two dimensions. However the verification does not handle that situation: it handles 15px auto as being a single number with the unit px auto, which is wrong. The full comparison is made because the strings do not fully match: when a size property is set to a measure followed by auto, it is returned without auto when reading the computed style. E.g. after setting 15px auto, it is read as 15px.

This commit adapts the CSS properties comparison mechanism by splitting the size properties into their parts and comparing each part separately.

This commit also introduces a few tests about the already existing CSS properties comparisons.

Steps to reproduce:

  • Drop a "Banner" block.
  • Set "Position" as "Repeat Pattern".
  • Type "5" in the "Width". => It raised an error.


X-original-commit: 07e471b9398e042c45182f1e8ca33e74dd8087a3 Part-of: odoo/odoo#109071

[FIX] web_editor: support scientific notation in styles

When a big number is entered in an option field with units, it gets automatically converted to scientific notation (1e+10) by Chrome. This makes the unit conversion code fail because it mistakenly interprets the 'e' as the unit.

This commit adapts the used regular expressions in order to include the complete number in the number part even if it is written in scientific notation.

Steps to reproduce:

  • Use Chrome.
  • Drop a "Banner" block.
  • Set the "Position" to "Repeat Pattern".
  • Type a long number in the "Width" option. => Error popup.


closes odoo/odoo#109071

X-original-commit: a554e102a7f9ca2a0b7f64573adffa4b26a0b813 Signed-off-by: Bojabza Soukéina (sobo) Signed-off-by: Benoit Socias (bso)

[FIX] point_of_sale: better error when missing nomenclature

Before this commit: If the PoS config have no "Barcode Nomenclature" set, the PoS session can't start and a cryptic JS traceback will be shown:

TypeError: Cannot read properties of undefined (reading 'message')
at Chrome.start

This happen as the barcode rejected Promise request doesn't contains an error message. More details in:

After this commit: A more user friendly error is displayed

Note: the issue does not happen in previous Odoo's versions as the field was required before.


closes odoo/odoo#108940

Signed-off-by: Loan (LSE) Signed-off-by: Joseph Caburnay (jcb)

Created at 2 months ago

[FIX] im_livechat: chatbot rules layout

Prior to this commit, the layout of the fields of the form for a rule in a chatbot was broken because of a missing condition in the 'only_if_no_operator' checkbox label.

closes odoo/odoo#107271

Signed-off-by: Alexandre Kühn (aku)

[FIX] mrp: do not convert the quantity if there is no BoM

Steps to reproduce the bug:

  • install “mrp_mps”

  • Create a storable product “P1”

    • routes: Manufacture + MTO
    • make sure there is no BoM set
  • Go to “Master Production Schedule”:

    • Add the product “P1”
    • Add a quantity and click on “Replenish”

Problem: A User Error is triggered with the following message: The unit of measure Units defined on the order line doesn't belong to the same category as the unit of measure False defined on the product. Please correct the unit of measure defined on the order line or on the product, they should belong to the same category.

The compute_qauntity function is called to convert the qty into the UoM of the BoM, but since there is no bom, an empty record is given as a parameter:


closes odoo/odoo#106964

Signed-off-by: William Henrotin (whe)

[FIX] stock: Fix package_level unlink

Steps to reproduce :

  • Create two products
  • Create a planned internal transfer with one of each product from Stock -> Location A
  • Hit "Mark as todo"
  • Hit "Put in pack"
  • Validate the picking
  • Create an new planned internal transfer, with the same products and quantities, but from Location A -> Location B
  • Remove the destination package for one product.
  • This will remove the destination package for all products in the same package.

When unlinking a package level, it will unlink all moves and move_lines at the same time. Problem is that if a single move_line is updated in a picking where multiple move_lines are in the same package, it will unlink it for all the move_lines instead.

closes odoo/odoo#107440

X-original-commit: 9dcbc420f50ece3356dff57cbdc467c7893ff2c2 Signed-off-by: Tiffany Chang

[FIX] web_editor: wrong command condition

Fix a wrong condition that was not corrected during a previous FWD PR process.

closes odoo/odoo#107468

Signed-off-by: David Monjoie (dmo)

[FIX] spreadsheet: need more tolerance on filter command payload

task 3002282

Part-of: odoo/odoo#103873

[FIX] spreadsheet: prevent the selection of an offset without a field

Currently, a user could create a date filter without selecting a field for a datasource but still select an offset. Notwithstanding the traceback that ensues, this does not make sense from a a functional POV.

This commit adds a command check to prevent the creation/update of filters with such payload.

How to reproduce:

From a sheet with a pivot:

  • create a date filter
  • do not set field
  • set offset to any (non null) value
  • Save the filter => trackback

Task 3002282

closes odoo/odoo#103873

Related: odoo/enterprise#33101 Signed-off-by: Pierre Rousseau (pro)

[FIX] web_editor: prevent closestElement traceback with comment nodes

Comment nodes don't have a closest method so when passing one to closestElement, the method crashed.

Step to reproduce in website:

  • Go to debug mode and to website app
  • Click on configuration > websites
  • Select a website and in the custom_code_footer field add an HTML comment
  • Go to the website and try to enter edit mode -> Crash

The same error will be visible if you simply enter edit mode and drag & drop the "Code" snippet and enter an HTML comment inside it.

Step to reproduce in marketing automation:

  • Install marketing automation
  • Click on a campaign > Add a new activity
  • On the mail template field, type something > Create and edit
  • Select plain text -> element.closest is not a function

task-3083797 opw-3081323 opw-3081278

closes odoo/odoo#106874

X-original-commit: 5d4e2530001a0180b75798244eb7fc41ae9eba4c Signed-off-by: David Monjoie (dmo)

[FIX] web_editor: replaceMedia on contenteeditable

In website, clicking on the snippet option action "Relpace" did not work for an icon inside s_social_media as s_social_media is contenteditable false.

The code was simulating a double click on the icon to open the media dialog but in the double click handler, a check is made to prevent the media dialog to be shown if the contenteditable is false. This is important for the knowledge app to prevent changing a button inside a knowledge view.


closes odoo/odoo#107031

X-original-commit: bb291b35e46e42ca098aa3e04ac0b473f72be423 Signed-off-by: David Monjoie (dmo)

[FIX] mass_mailing: disable A/B testing cron by default

Before this commit, the A/B testing cron was active by default. It doesn't matter if A/B testing is true or false in settings. So, with this commit, we set active equals to false by default in the A/B testing cron. It will be active when the user sets group_mass_mailing_campaign to True.


X-original-commit: 60c7bcf Part-of: odoo/odoo#107438

[FIX] mass_mailing{_sms}: respect mailing_type when comparing a/b mailings

Before this commit

  • When we were comparing versions, there was no such filter as mailing type. Due to this it will display both SMS and mail type records in it.

With this commit

  • We have added '('mailing_type', '=', self.mailing_type)' in domain of compare version.


X-original-commit: 4c5b984 Part-of: odoo/odoo#107438

[FIX] mass_mailing: send at least one a/b test if possible

When there is not enough recipients for the A/B testing percentage, we pick a minimum of one recipients (if there is at least one) to avoid sending a/b test to no one.


closes odoo/odoo#107438

X-original-commit: 8e3bb59 Signed-off-by: Warnon Aurélien (awa)

[FIX] mrp: qty_remaining missing dependancy

To reproduce: Create a MO without product_id, then add a new line in work orders. Error raises.

Since cab8d8fe7f744fb4dd0cd61b624f6f4519eb8d8d, we started to show qty_remaining of WO on MO form. It triggered the compute function of qty_remaining. Since we don't set product_id, production_id.product_uom_id is not provided when doing the calculation.

To fix, add production_id.product_uom_id as dependancy of qty_remaining, and don't do the calculation without it.


closes odoo/odoo#107423

X-original-commit: 0b10241c0bcbecda73dae04c8a5f1ceb8033a388 Signed-off-by: Tiffany Chang Signed-off-by: Yuchen Huang (yhu)

[FIX] delivery: Multi currencies with free shipping above amount

Steps to reproduce the issue:

  • Let's consider two currencies C1, C2
  • Let's consider two pricelists P1 in C1 and P2 in C2
  • Let's consider that the current company CY has the default currency C1
  • Let's consider that the current rate of C1 = 1.0 and C2 = 5.0
  • Create a shipping method SM with fixed price = 50 and free shipping is above 100 (expressed in company currency)
  • Create a SO with P2 and add a line with a product of 200 C2 (equal to 40 C1)
  • Add shipping method SM


The shipping was considered as free but the total of the SO was not above 100 in the currency of the company


closes odoo/odoo#107455

X-original-commit: c93ab6615f0370963b152cc0320478fe4ceed164 Signed-off-by: William Henrotin (whe)

[IMP] l10n_rs: translation

Ideally, we develop in English any localization (then translate to the domestic language, in this case Serbian) All the module has been translated in english and then a .po file has been create to translate back in Serbian

closes odoo/odoo#107471

Task-id: 3086250 Related: odoo/enterprise#34781 Signed-off-by: Nicolas Viseur (vin)

[FIX] spreadsheet_dashboard_*: fix dashboards

Update dashboard with latest version.

closes odoo/odoo#103920

Related: odoo/enterprise#33121 Signed-off-by: Lucas Lefèvre (lul)

[FIX] hr_skills, hr_skills_{}: fix typo

closes odoo/odoo#106805

Signed-off-by: Yannick Tivisse (yti)

[FIX] onboarding: modify access rights for onboarding model

Steps to reproduce: - install Calendar and Appointments apps; - give "Access Rights" for administration to a user; - go to calendar app with this user.

Issue: The user does not have access to the calendar.

Cause: The user has no access rights for the onboarding model.

Solution: Check that the user belongs to the "group_system" group in the onboarding model controller.


closes odoo/odoo#107201

Signed-off-by: Arnaud Joset

[FIX] web: sample server grouped by a date range

Have a kanban view by default grouped by a date field, with a granularity eg: "date:month".

Have no data so that the read group returns with only the groups for the range (fill temporal). Those groups should have a count of zero, triggering the sample server to make up data.

Before this commit, there were multiple crashes basically because the groupby written as field:granularity was not handled at least in the case were groups are returned by the server. That is, from the sample server perspective, groups are reused and records are just made up matching those groups. There were two issues in fact:

  • the groupBy with granularity (eg: date:month) was not properly handled, sometimes not splitting the field name and the granularity, sometimes splitting those up where it should not.
  • since the RelationalModel's groups are re-used verbatim by the sample server (which still needs to return what the real web_read_group would), the "__range" data was missing, since it had been transformed by the RelationalModel after the real call to web_read_group to the server.

After this commit, this use case is supported.


closes odoo/odoo#107232

Signed-off-by: Mathieu Duckerts-Antoine

[FIX] l10n_multilang: CoA not translated if the language is installed after the CoA

Currently there is a bug where the Chart of Accounts is not translated if the language is installed after the CoA.

Steps to reproduce:

  1. Create a CA company (where both French and English are used)
  2. Set the CA Chart of Accounts
  3. Go to the general settings
  4. Add the French language and switch to it
  5. Go back to the CoA
  6. The CoA is not translated

This is because the variable installed is wrongfully placed in the code. In the current flow, we install the new language, then we check the installed language, therefore the new language is marked as an already installed language. Therfore the to_install variable will always be empty. This commit fixes this by first storing the already installed languages, then installing the new one, and then compute the ones to install making sure that the newly installed one will be used afterwards to translate the Chart of Accounts.

task-id 3091315

closes odoo/odoo#107491

X-original-commit: a3c3c3ccfc8e769ce39dbf38263f92e449b44abb Signed-off-by: Nicolas Viseur (vin) Signed-off-by: Ricardo Gomes Rodrigues (rigr)

[FIX] event_sale: show correct amount in printed ticket

As multiple tickets can be sold in a single sale order line, we should not display the line total amount on printed tickets but the unit price instead.


closes odoo/odoo#107494

X-original-commit: 7f2273a3af40c7560073b8f558d986d1781a8247 Signed-off-by: Warnon Aurélien (awa)

Created at 2 months ago