8000 Syncing from upstream odoo/odoo (tmp.saas-18.2) by bt-admin · Pull Request #33783 · brain-tec/odoo · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Syncing from upstream odoo/odoo (tmp.saas-18.2) #33783

New issue 8000

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 22 commits into from
Jun 14, 2025

Conversation

bt-admin
Copy link
Collaborator

bt_gitbot

deso-odoo and others added 22 commits June 13, 2025 06:08
Before this commit:

The separator was always inserted before the current block, regardless of its
content.

After this commit:

The separator is inserted before the block if it's empty, otherwise it is
inserted after the block if it contains text.

task-4848276

closes #214013

X-original-commit: 81491f4
Signed-off-by: David Monjoie (dmo) <dmo@odoo.com>
Signed-off-by: Deependra Solanki (deso) <deso@odoo.com>
If the browser triggers a request just as a tour is finishing
up (e.g. navigation to a new page triggering a font fetch), the
harness can close the websocket connection while the request is in the
`requestPaused` proxy, causing the reply to fail and trigger an error.

We can just ignore the error in that case. An alternative would be to
enqueue a future into `_responses` when we receive the query, but that
would still have a race as depending on scheduling decisions the
browser could have already shut down by the time we reach the handler,
so we'd need to enqueue a future, check if `ws` is still open, and
bail if not.

And even then that's still got a hole as there is some time between
the `wait(_responses.values())` and the `ws.close()`.

https://runbot.odoo.com/odoo/error/186309

closes #214063

X-original-commit: d5e76f2
Signed-off-by: Xavier Morel (xmo) <xmo@odoo.com>
Have a model that returns a warning onchange during the first call to onchange.
On another model that has a many2one to the first model, Create And Edit a record
via the many2one field on the form view.

Before this commit, there was an endless loop because on dialog was triggering the opening of a second one
*during* its willStart lifecycle period, so none of them end up mounted, instead, the formViewDialog
was constantly reinstanciated because the dialog container constantly received requests to re-render.

After this commit, we only open those dialog onMounted of the main component, and this issue doesn't occur anymore.

opw-4783459

closes #214015

X-original-commit: 5888192
Signed-off-by: Lucas Perais (lpe) <lpe@odoo.com>
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
For a document fix, we add a method to the activity button that
implements custom behavior when an activity changes.

see odoo/enterprise#84128
task-4690165

closes #213770

X-original-commit: d7daf7d
Related: odoo/enterprise#87414
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
Signed-off-by: Marc Lopes (loma) <loma@odoo.com>
## Issue description:
- When 'qty_producing' is updated, the new move takes the MO date_deadline.
- The MO date_deadline is the minimum date of all the finished moves date_deadline.
- When the SO commitment_date is incremented (+1day), the FNS move date_deadline is updated, but not the BP move one.
- The MO date_deadline stay the same (because BP move is a finished move, and BP.date_deadline < FNS.date_deadline)
- The new FNS move deadline will not be equal to the existing FNS move deadline
- The merge is blocked

## How to reproduce:
- Enable By-Products in setting
- Unarchive MTO route
- Create storable products FNS, CMP and BP
- Set FNS route: Manufacture and MTO
- Create BoM:
  - Producing: 1 of FNS
  - Component: 1 of CMP
  - By-Product: 1 of BP
- Create Sale Order for 1 unit of FNS ⇾ Confirm
- Set Delivery Date to 1 day in the future (date must be incremented)
- Go to MO, set quantity producing to 2
  => 2 Finished move for FNS exists; the merge was not done due to a discrepancy in 'date_deadline'
- Click "Produce All"
  !! Singleton Error

## Fix:
On date_deadline change: propagate deadline to sibling FNS moves (byproducts)

OPW-4671555

closes #214046

X-original-commit: f7c78fd
Signed-off-by: William Henrotin (whe) <whe@odoo.com>
Signed-off-by: David Fesquet (dafr) <dafr@odoo.com>
When receiving a websocket message, an iot box identifies if it needs to process
it depending on the mac address contained in the message.

If an IoT Box was connected through ethernet, then switched to Wi-Fi, it disconnects
then reconnects to the websocket channel, but the db still sends messages containing the previous
mac address (`eth0` interface's one).

We now check if the mac address contained in the message is part of those from all rpi's interfaces.

closes #214096

Task: 4860617
X-original-commit: 9b4f564
Signed-off-by: Max Whale (mawh) <mawh@odoo.com>
Signed-off-by: Louis Travaux (lotr) <lotr@odoo.com>
If a currency not supported by AsiaPay is selected during payment, the system
will crash, resulting in a KeyError. In the `const.py` file at [1], we have
already defined the `CURRENCY_MAPPING`. Therefore, if a currency
is chosen that is not included in the `CURRENCY_MAPPING`, it will cause a crash
during the payment process.

[1]
https://github.com/odoo/odoo/blob/bcaafd941c1b4cae65a71900858894556805762e/addons/payment_asiapay/const.py#L19-L42

**Steps to produce:-**
1. Install `eCommerce`.
2. Set up the `AsiaPay` payment provider, and in the configuration, set the
Currencies as `EGP`.
3. Now, go to `Website > Shop` and add the product to the cart.
4. Try to make the `payment` for the cart using `AsiaPay`.

**Error:-**
`KeyError: 'EGP'`

**Solution:-**
- This commit adds a constraint that ensures only currencies defined in
`CURRENCY_MAPPING` (from `const.py`) can be selected for the AsiaPay payment
provider. If any unsupported currencies are selected, a ValidationError is
raised listing the invalid entries.

**Sentry - 6665716944**

closes #214080

X-original-commit: 8513797
Signed-off-by: Krishna Arvindkumar Patel (krip) <krip@odoo.com>
…heckout

---

**Description**

The label **"Identification Number"**, displayed in the website checkout form,
was not being translated despite being properly marked with `_()` in `portal.py`.

---

**Why the fix**
- When the translatable term was introduced the `.pot` file wasn't updated. By exporting the `.pot` file from the db we are able to update it to make it translatable

---

**Steps to Reproduce**

1. Install the `l10n_latam` module.
2. Create an Argentinian company.
3. Create a new website , add spanish to its languages and assign it to the          Argentinian company.
4. Switch the current user’s **default company** to the Argentinian one.
6. Go to Inventory → Create and publish a new product.
7. On the website:
   - Add the product to the cart.
   - Proceed to checkout.
8. Observe that the **"Identification Number"** field in the address form remains untranslated.

---

**Before**

- The "Identification Number" label appeared only in English and could not be translated.

---

**After**

- It shows up in the translation interface and can be translated into Spanish.

---

Ticket ID: `opw-4814341`

closes #212947

Signed-off-by: Claire Bretton (clbr) <clbr@odoo.com>
make the translation columns after the main ones

task-4853046

X-original-commit: b1475c9
Part-of: #214084
Signed-off-by: John Laterre (jol) <jol@odoo.com>
The Italian localization defined 'preceding_subtotal' in tax group records
using the Italian term "Imponibile" as the default value. This caused the
label for untaxed amounts in invoices, sale orders, and purchase orders
to always appear in Italian, regardless of the system or partner language.

task-4853046

closes #214084

X-original-commit: 6a7a7b2
Signed-off-by: John Laterre (jol) <jol@odoo.com>
Before this commit, some command palette tests failed non-
deterministically. The cause was that the values set on debounced
functions were too short, compared to the time it took to render the
component after each action, PLUS the additional animation frame awaited
by each call to 'advanceTime'/'runAllTimers'. All in all, should the
CPU be a bit busier than usual, these tests would fail.

This commit does 2 things:

- the debounce delays have been vastly increased (100 & 200ms ->
500 & 1000ms);

- the awaited actions in the command palette test module have been
reduced to a minimum, using Hoot helpers directly instead of the web
'contains' wrapper.

runbot 223268

closes #214017

X-original-commit: 1859229
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
Signed-off-by: Julien Mougenot (jum) <jum@odoo.com>
Before this commit:
- Clicking on a trendline point resulted in a RuntimeError.

After this commit:
- Clicking on trendline points is now ignored, preventing the error.

closes #214098

Task: 4815995
X-original-commit: 7b3a214
Signed-off-by: Rémi Rahir (rar) <rar@odoo.com>
Signed-off-by: Ronakkumar Mukeshbhai Bharadiya (rmbh) <rmbh@odoo.com>
If you have 2 invoices and 2 dropship picking linked to 1 Dropship Sale Order, and the two dropship have different SVL cost:
The 2nd invoice will have incorrect COGS

## To reproduce
- Create Product P-DROP:
    * category: AVCO automated
    * Routes: Buy & Dropship
    * Purchase Vendors: Azure Interior @ $10
- Create Sale Order for 1 unit of P-Drop ⇾ Confirm
- Go to Purchase Order ⇾ ensure unit price is $10 ⇾ Confirm
- Receive products ⇾ ensure valuation is $10
- Create Vendor Bill (optional) ⇾ Confirm
- Create Invoice ⇾ Confirm
    * COGS should be $10  (ok)
- In Sale Order, set ordered quantity to 2 units
    * New draft PO should have been created
- Go to New Purchase Order ⇾ set price to $20 ⇾ Confirm
- Receive products ⇾ ensure valuation is $20
- Create Vendor Bill (optional) ⇾ Confirm
- Create Invoice ⇾ Confirm
    * COGS should be $20, but they are actually $16.67 (KO)

OPW-4665635

closes #214044

X-original-commit: 3134197
Signed-off-by: William Henrotin (whe) <whe@odoo.com>
Signed-off-by: David Fesquet (dafr) <dafr@odoo.com>
steps to reproduce the issue not the tour steps

Steps to reproduce the issue:
1- install sale_project without demo data
2- as the test is not determisitic, adding step_delay may help reproducing it

The project creation tour was intermittently failing at the step that attempts to save the project
(.o_form_button_save:enabled). The failure occurred because this step was triggered while a modal
(for creating a Sales Order Item) was still visible and overlaid on top of the main form.

Add missing steps in the project tour to select a product in the Sales Order Item
form and save and close the form.

build_error-163102

closes #214066

X-original-commit: bde64f4
Signed-off-by: Xavier Bol (xbo) <xbo@odoo.com>
Signed-off-by: Omar Sherif Ali Hassan (osah) <osah@odoo.com>
Prevent sending empty array to indexedDB to avoid useless writes and
potential errors.

Check variable before calling a the `isEquals` method on it to avoid
TypeError when the variable is undefined.

closes #214166

Signed-off-by: Adrien Guilliams (adgu) <adgu@odoo.com>
Steps to reproduce:
- Install l10n_bg
- Install the Bulgarian language
- In the Accounting Settings tick the option "Total amount of invoice in letters"
- Change a contact's language to Bulgarian
- Create an invoice for this partner, select BGN as the currency
- The total should be with a unit in thousands (for example 8500)
- The text transcription of the number substracts 1000: Седем Хиляди И Петстотин = 7500

Cause:
The class `NumberToWords_BG` is a copy of the library num2cyrillic exept for the initialization of the variable `_digits` which specifies three arrays with variants of the numbers (1-9). We do it by copying the index 0, which is the default variant, for the non different spellings.
The issue comes from the line `_digits[-1] = [None, 'една', None] + _digits[0][2:]` which have an uneeded `None` which offsets the array by one so when reading _digits[-1][8] we end up with "seven".

Solution:
Remove the `None`.

opw-4753418

closes #214175

X-original-commit: db179a8
Signed-off-by: Claire Bretton (clbr) <clbr@odoo.com>
Signed-off-by: Mathieu Coutant (mcou) <mcou@odoo.com>
Before this commit, the computation of the exclusion of some attributes
based on other selected was going through every attribute to determine
if it was excluded or not. This is now done once at the loading of the
pos.

closes #213789

Signed-off-by: David Monnom (moda) <moda@odoo.com>
- Backport of : #211030 into `18.2`:
- Ensure combo choices product are always loaded if parent is in allowed categories,even when restricted categories are configured. Also send this combo choices to preparation printer.
- Prevent display of combo choice products outside restricted categories in POS UI. Also fix Kiosk/Self-Order to avoid showing 'Uncategorized' when restrictions are active.
- Add a margin start for combo choice product for preparation receipt coming from Kiosk.
- Extract tour preparation receipt util to check the content of preparation receipt.

closes #213808

Task-id: 4809444
Signed-off-by: Adrien Guilliams (adgu) <adgu@odoo.com>
When serializing an object, we rely on the uuid to identify it and avoid
serializing it multiple times. Some object (like the event registration)
do not have a uuid, so we need to make sure they are always serialized.

Steps to reproduce:
-------------------
* Install pos_event module
* Open a POS session
* Add the architect event product to the cart
* In the popup add one Ticket Basic and one Ticket VIP
* Validate the order
* Go to the receipt screens
* Print the badge
> Observation: Only one of the badge is being printed

Why the fix:
------------
As the registraion had no uuid, the first one was serialized but the
second one was ignored as it was detected as already serialized. Now if
the object we are serializing does not have a uuid, we generate make
sure it's always serialized, by putting `undefined` instead of a record
in the `serialized` dict.

opw-4863800

closes #214027

Signed-off-by: Adrien Guilliams (adgu) <adgu@odoo.com>
Setting the opacity to the empty string leads to max opacity but is seen
as "None" in the builder because no options corresponds to this value.
And the "None" option is not that, which is confusing. Setting a known
value for the opacity shows the correct choice for the option.

Steps to reproduce:
- In a database with demo data, go to `/event`
- Go to "An unpublished event"
- Open editor
- Bug: "Filter Intensity" shows "None"

Backport of 94cc1cb

task-4367641

closes #214225

X-original-commit: d61636d
Signed-off-by: Soukéina Bojabza (sobo) <sobo@odoo.com>
Previously, when selling a product to a foreign customer, the translated
product name was added by default in the order line description.

Example:
Description            |      Quantité | Prix unitaire | Taxes | Montant
-----------------------|---------------|---------------|-------|--------
*Customizable Desk*    |               |               |       |
Bureau personnalisable | 1,00 Unité(s) |        750,00 |       | $ 750,00

Two issues arise from this behavior:
- The product name was displayed two times in the quotation (first in
  the salesman's language, and then in the customer's language).
- The salesman could remove the translation, rendering the quotation
  unusable by the customer.

This commit fixes both issues by adding the product name in the
customer's language at the top of the description instead of the
salesman's translation. Furthermore, the translated product name is kept
hidden from the salesman, blocking any unwanted edits.

opw-4760300

closes #214097

X-original-commit: 79ac6cb
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
Signed-off-by: Lionel Piraux (lipi) <lipi@odoo.com>
@bt-admin bt-admin merged commit 62328c0 into brain-tec:tmp.saas-18.2 Jun 14, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

0