Tuesday, June 3, 2025
46 changes · saas-18.3
Enhancements to existing features
This update prepares accounting and expense records to retrieve attachments more efficiently. It supports future performance improvements that reduce repeated lookups, helping pages and processes involving expense attachments run more smoothly.
Original PR description
This commit will change some domain to be able to use them in the enterprise pr that will change the _compute_attachment to avoid doing a search in a loop. Also adding a hook to get the attachment for expense. no task id --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update helps Odoo decide when upload options should appear in bank reconciliation screens based on each journal's bank statement setup. It supports a clearer user experience by only showing upload features where they are relevant.
Original PR description
We need to add a new context key with the "bank_statements_source" field. We'll use it to know if we have to show the upload features on the bank rec widget views. Linked: https://github.com/odoo/enterprise/pull/86526 task-4809006
Users can now add items to an existing selection by clicking directly on a row in the bank reconciliation list, instead of needing to use only the checkbox. This makes selecting multiple records faster and helps avoid accidentally losing an existing selection.
Original PR description
When you are in a list view, you can select multiple records by clicking the checkbox. But if after selecting multiple records, you click on a line, it will only select the record you just clicked and all other preselected records will be ignored. This commit change that, as now if you already have selected records, if you clik on a line without checking the checkbox, it will add the record to the selection just like you clicked on the checkbox. task-4816580
The bank reconciliation screen no longer links users directly to the bank entry when adding a line that is not from an accounting move. This helps prevent accidental changes to sensitive or fully reconciled records while still keeping needed information available through existing details and chatter.
Original PR description
Before this commit, when adding a line that is not from a move we would have a link to the bank. User should not be able to go to the bank from there to avoid mistakes where they will change the move. Specially when the move is fully reconciled. If the move is partially reconcile they have access to the move in the dropdown, if it's really needed. They also have all the information in the chatter. no task id
Resolved issues and error corrections
This fix makes certain HTML editor tests run consistently across different developer machines by standardizing font behavior used in the checks. It reduces false test failures caused by local font differences, improving development reliability without changing end-user functionality.
Original PR description
odoo/odoo#202688 updated the handling of list padding, however it hard-coded padding sizes. Those sizes can vary slightly depending on font selection (as different fonts have slightly different character dimensions). So depending on the local setup / environment, tests at issue may always fail. Add a content cleaner property to `testEditor`, and use it to nuke the `inline-padding-start` property in various tests.
Miscellaneous changes
**Current behavior:** COGS dashboard items in a project's profitability report do not open any details when clicked on. **Expected behavior:** This should open a detailed view for an invoice linked via the analytic account on the project. **Steps to reproduce:** 1. Create a service product that generates a project on sale, on the project template set a specific analytic account 2. Create another product with real time valuation and assign the COGS account on the product category's ex
Original PR description
**Current behavior:** COGS dashboard items in a project's profitability report do not open any details when clicked on. **Expected behavior:** This should open a detailed view for an invoice linked…
**Current behavior:** COGS dashboard items in a project's profitability report do not open any details when clicked on. **Expected behavior:** This should open a detailed view for an invoice linked via the analytic account on the project. **Steps to reproduce:** 1. Create a service product that generates a project on sale, on the project template set a specific analytic account 2. Create another product with real time valuation and assign the COGS account on the product category's expense account 3. Sell some of the service product and the auto val product in the same order, deliver it -> generate invoice & post it 4. In the project's settings, open the profitability report and click on the `Cost of Goods Sold` dashboard item **Cause of the issue:** There is no action set up to return for this section, as it was just added in: 0fbc592 **Fix:** Add an action to return the account move line records with COGS display type for the invoice record in question (in the request's `res_id`). opw-4813885 Forward-Port-Of: odoo/odoo#212547
This fixes the employee card layout so the presence status indicator remains in the top-right corner even when an employee name wraps onto multiple lines. It keeps the employee overview visually consistent and easier to scan for HR users.
Original PR description
With this commit, on kanban view, if employee's name is on multiple lines the employee presence status is still on the right top and not on the right bottom Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
A recent change caused an error when opening the accounting dashboard for companies using the Turkish Nilvera e-Invoice integration. This fix corrects the check for the API key so the dashboard loads normally again.
Original PR description
5d69408548b30671b968c3c1ae1e8f444ac2d82e introduced overrides for the generic EDI fetch/update logic. It mistakenly copied a condition from the XML layer that checked `.raw_value` on the API key field. This caused a traceback when accessing the accounting dashboard. No task-ID
The partners page now lets visitors view partners from every country even when GeoIP location detection is enabled. This restores the expected country filter behavior and prevents users from being automatically limited to their detected country.
Original PR description
Before this commit, if GeoIP was enabled and no country was provided, the geolocation was used automatically. As a result, it was not possible to view partners from all countries. Now, we restore the previous logic by explicitly passing a parameter to show all countries. Note: On runbot, no difference is visible since GeoIP is not enabled. Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes a small issue in time off validation where the system could look up leave allocation details using the wrong reference. It helps ensure leave types are validated correctly when employees request or manage time off.
Original PR description
This commit fixes an issue in the `_compute_valid` method of the `hr.leave.type` model. The `leave_type.id` was changed to `leave_type`, since the key type in `allocation_by_leave_type` is a recordset, not an integer. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes Google address autocomplete so businesses using a custom setup can keep providing their Google API key from configuration. It restores expected address search behavior for those deployments without changing the standard setup.
Original PR description
Until now you cannot call anymore `/autocomplete/address` without api key. Move the short-circuit later, to allow override of `_perform_place_search` to inject their specific key if needed. After this commit, if you override the `_perform_place_search` to provide your key from a config file, it works as previously.
The message composer now only auto-selects text in AI composer conversations, where that behavior is intended. This prevents regular discussion composers from unexpectedly selecting all text when users focus them, reducing small but frustrating editing interruptions.
Original PR description
**Current behavior before PR:** The composer automatically selects all its text when focused. This behavior is only expected in threads where the channel type is `ai_composer` but currently applies to all threads. **Desired behavior after PR is merged:** The automatic text selection happens only in threads where the channel type is `ai_composer`. Other composers remain unaffected and behave normally.
This fixes inconsistent ordering of payments when generating Canadian CPA005 batch payment files. The file now follows the same payment order shown in the batch payment list, helping avoid automated build failures and unpredictable file output.
Original PR description
The order of a One2many field isn't well defined and depending on the situation the records may be in the order you added them or the order defined by `_order` on the model. Before 18.3, a hack was added to sort them using `id` which worked. In 18.3 it no longer works consistently. This explicitly orders the payments when generating the file using their default _order, which is the default order in which they appear in the batch payment list view. Fixes runbot build error 181847
This update makes an internal Studio test more reliable by giving navigation state a moment to finish updating before checks run. It helps reduce false failures in automated validation, supporting smoother releases without changing user-facing behavior.
Forward-Port-Of: odoo/odoo#212188
Original PR description
Forward-Port-Of: odoo/odoo#212188
Added FI and LT, and updated extra terms for others. Related to https://github.com/odoo/enterprise/pull/86440 Forward-Port-Of: odoo/odoo#211753 Forward-Port-Of: odoo/odoo#211714
Original PR description
Added FI and LT, and updated extra terms for others. Related to https://github.com/odoo/enterprise/pull/86440 Forward-Port-Of: odoo/odoo#211753 Forward-Port-Of: odoo/odoo#211714
Before this commit, sale_order information were used in some payment form but only website_sale_order was available. This would cause issue in overrides. task 4808806 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#212531
Original PR description
Before this commit, sale_order information were used in some payment form but only website_sale_order was available. This would cause issue in overrides. task 4808806 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#212531
### Description of the issue/feature this PR addresses: When an event is synced with an external calendar (Google/ Microsoft), the external calendar is responsible for sending reminders, and Odoo should not send any additional reminders. However, the current implementation does not properly handle this, with the default crone job running daily sending email reminders up to one day late. ### Current behavior before PR: Although the current implementation ensures the crone is not t
Original PR description
### Description of the issue/feature this PR addresses: When an event is synced with an external calendar (Google/ Microsoft), the external calendar is responsible for sending reminders, and Odoo…
### Description of the issue/feature this PR addresses: When an event is synced with an external calendar (Google/ Microsoft), the external calendar is responsible for sending reminders, and Odoo should not send any additional reminders. However, the current implementation does not properly handle this, with the default crone job running daily sending email reminders up to one day late. ### Current behavior before PR: Although the current implementation ensures the crone is not triggered for alarms of external-calendars-synced events, the default crone job that is running daily is going all over the events with reminders need to be sent and send them up to one day late. ### Desired behavior after PR is merged: When the crone goes to trigger the _send_reminder method, it will check first if the events are synced or not, and if synced then no reminders will be sent from odoo's side. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr task-id: 4316693 Forward-Port-Of: odoo/odoo#211899 Forward-Port-Of: odoo/odoo#192876
Problem --------- Currently, when generating the XML to send to NAV, the XML currency rate is computed using an MMSE estimator. This leads to approximation error itself leading to a slight difference from the rate applied and given by the MNB of Hungary for that day. This is noticed by the NAV upon submiting the invoice who returns an error. Objective --------- Make it so that the rate returned by the HU bank is used during the XML generation. Solution --------- Instead of computing
Original PR description
Problem --------- Currently, when generating the XML to send to NAV, the XML currency rate is computed using an MMSE estimator. This leads to approximation error itself leading to a slight difference from the rate applied and given by the MNB of Hungary for that day. This is noticed by the NAV upon submiting the invoice who returns an error. Objective --------- Make it so that the rate returned by the HU bank is used during the XML generation. Solution --------- Instead of computing a MMSE estimator, we get the conversion rate stored in the database at the time of the invoice. task-4707316 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#209553
This commit changes the activity component sidebar structure to match the message sidebar's. This is done to make sure the avatars in the chatter are all horizontally aligned. This commit also adds padding to the Activities separator/dropdown to align with the messages date separator. Before:  After:  After:  Forward-Port-Of: odoo/odoo#211463
[FIX] website: update sitemap lastmod on website page view changes Before this commit, since the introduction of the website page model at commit [1], the lastmod for pages indicated in the sitemap was not entirely accurate: it only considered *page record* changes, not their internal *view changes*. Steps to reproduce: - Create a new website page and publish it - Go to /sitemap.xml, see the page is mentioned with correct lastmod - Wait for one day ** - Update the page URL - Go to
Original PR description
[FIX] website: update sitemap lastmod on website page view changes Before this commit, since the introduction of the website page model at commit [1], the lastmod for pages indicated in the sitemap…
[FIX] website: update sitemap lastmod on website page view changes
Before this commit, since the introduction of the website page model at
commit [1], the lastmod for pages indicated in the sitemap was not
entirely accurate: it only considered *page record* changes, not their
internal *view changes*.
Steps to reproduce:
- Create a new website page and publish it
- Go to /sitemap.xml, see the page is mentioned with correct lastmod
- Wait for one day **
- Update the page URL
- Go to /sitemap.xml, see the lastmod was updated
- Wait for one day **
- Update the page content
- Go to /sitemap.xml
=> The lastmod was unchanged
**: the lastmod does not show the hours. You will need to update the
write_date manually in your database to test this. Also, when
visiting the sitemap, you need to first delete the cached version
in the backend (Debug -> Settings -> Technical -> Attachments).
[1]: https://github.com/odoo/odoo/commit/4ecbacaf59576a22ff45615a5aa5c67244e4fb93
Forward-Port-Of: odoo/odoo#212055
Forward-Port-Of: odoo/odoo#211749Description of the issue/feature this PR addresses: `_generate_price_difference_vals` is about 200 Ioc long. Current behavior before PR: if we want to extend this method there is little choice but copy paste everything. Desired behavior after PR is merged: it's possible to extend one of the new method instead --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#205585
Original PR description
Description of the issue/feature this PR addresses: `_generate_price_difference_vals` is about 200 Ioc long. Current behavior before PR: if we want to extend this method there is little choice but copy paste everything. Desired behavior after PR is merged: it's possible to extend one of the new method instead --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#205585
Installing PoS will change some values on existing operations types. To reproduce the issue 1. Install stock 2. Operations Types, edit Delivery: - Change the barcode 3. Install point_of_sale Error: the barcode of Delivery is reset When installing PoS, it will execute a generic method that creates and updates all operation types: https://github.com/odoo/odoo/blob/0bc90e7d74bd0792b9af7464256ba8770d894a25/addons/point_of_sale/data/point_of_sale_data.xml#L4 https://github.com/odoo
Original PR description
Installing PoS will change some values on existing operations types. To reproduce the issue 1. Install stock 2. Operations Types, edit Delivery: - Change the barcode 3. Install point_of_sale Error:…
Installing PoS will change some values on existing operations types. To reproduce the issue 1. Install stock 2. Operations Types, edit Delivery: - Change the barcode 3. Install point_of_sale Error: the barcode of Delivery is reset When installing PoS, it will execute a generic method that creates and updates all operation types: https://github.com/odoo/odoo/blob/0bc90e7d74bd0792b9af7464256ba8770d894a25/addons/point_of_sale/data/point_of_sale_data.xml#L4 https://github.com/odoo/odoo/blob/14e9a698e333c3d6d2f7830353c34311de9ecb2c/addons/point_of_sale/models/stock_warehouse.py#L45-L50 https://github.com/odoo/odoo/blob/03478253c166238442d2f81f095de9fbcdfb265f/addons/stock/models/stock_warehouse.py#L350-L356 Thanks to this, the PoS operation type will be created. However, as said in its docstring, the method will also update the existing operation types. For instance, for Delivery: https://github.com/odoo/odoo/blob/03478253c166238442d2f81f095de9fbcdfb265f/addons/stock/models/stock_warehouse.py#L1003-L1006 Its barcode and default source location will be reset. The update will also reset the sequence prefix. As said by the method name in PoS (`_create_missing_pos_picking_types`), the idea here is just to create missing PoS types. Similar issue with repair: the operations types of the user-created wh will be reset. OPW-4668505 Forward-Port-Of: odoo/odoo#210308
**Problem:** when in a bar/restaurant point of sale if the tip is added after the payment the total amount and remaining amount are not correct **Steps to reproduce:** - Navigate to Point of Sale/Configuration/Point of Sale - Create a new point of sale - In settings, activate the setting "Is a Bar/Restaurant" for this point of sale - Acivate the setting "Tips" for this point of sale - make sure the cash payment method is available for this point of sale - in Point of Sales/Dashboard
Original PR description
**Problem:** when in a bar/restaurant point of sale if the tip is added after the payment the total amount and remaining amount are not correct **Steps to reproduce:** - Navigate to Point of…
**Problem:** when in a bar/restaurant point of sale if the tip is added after the payment the total amount and remaining amount are not correct **Steps to reproduce:** - Navigate to Point of Sale/Configuration/Point of Sale - Create a new point of sale - In settings, activate the setting "Is a Bar/Restaurant" for this point of sale - Acivate the setting "Tips" for this point of sale - make sure the cash payment method is available for this point of sale - in Point of Sales/Dashboard clik on open regiser for the new point of sale - Create a new order, select a product, click on payment - Select cash, on enter an amount over the total value - Click on Tip, and select Ok (the default amount should be the difference between the total and the cash amount you entered **Current behavior:** The Amount of cash has been increased by the amount of the tip **Expected behavior:** The cash amount shouldn't be impacted by the tip **Cause of the issue:** When adding the tip inside the addTip method, when settip is triggered, the tip is added as a new PosOrderLine inside the order https://github.com/odoo/odoo/blob/68940a80a64cd81679ad94d488623a471e2c926f/addons/point_of_sale/static/src/app/services/pos_store.js#L636 which modifies total due amount Then the Pos Payment amount is modified https://github.com/odoo/odoo/blob/68940a80a64cd81679ad94d488623a471e2c926f/addons/point_of_sale/static/src/app/screens/payment_screen/payment_screen.js#L248 which should not happen when the tip is smaller or equal to the remaining amount (if you by something worth 15 ,give 20 euros and add a 5 euros tip, the payment amount should stay 20) **Fix:** There is 3 cases. Case 1: the remaining is negative, then if a tip is added it should increase the payment amount Case 2: the remaining is positive (meaning the client paid more than total due) and the tip is lower or equal to the remaining, then the payment amount should not increase Case3: the remaining is positive and the tip is higher than the remaining, the payment amount should be increased by the difference between tip and remaining opw-4721864 Forward-Port-Of: odoo/odoo#211970 Forward-Port-Of: odoo/odoo#207030
[FIX] account: customer's default invoice template as only attachment Currently, when the user define an invoice template other than the standard 'account.account_invoices', both the standard report and the one defined by the user are attached to the mail when he hits the Send & Print. We want the template chosen by the user to be the one sent & printed. The fix is to remove the default accounting action report from the dynamic attachments : before, we were just removing the default a
Original PR description
[FIX] account: customer's default invoice template as only attachment Currently, when the user define an invoice template other than the standard 'account.account_invoices', both the standard report…
[FIX] account: customer's default invoice template as only attachment Currently, when the user define an invoice template other than the standard 'account.account_invoices', both the standard report and the one defined by the user are attached to the mail when he hits the Send & Print. We want the template chosen by the user to be the one sent & printed. The fix is to remove the default accounting action report from the dynamic attachments : before, we were just removing the default action report used for the current move. But e.g. if the partner had a default report set in the field invoice_template_pdf_report_id, the default report for the move was this one, and so we weren't removing the accounting default one. This was causing the duplicate placeholder because the default accounting report placeholder is already processed in another method. Also, we remove the configuration that sets the 'account.account_invoices' report as a default dynamic attachment. Task-4681142 Runbot : https://runbot.odoo.com/runbot/bundle/18-0-invoice-report-per-partner-roto-361127 Forward-Port-Of: odoo/odoo#205121
**Steps to reproduce:** 1. Initialize a new database with `odoo -d langdb --stop -i base --load-language=es_AR` **Result:** ``` 2025-01-03 11:41:28,054 54 INFO langdb odoo.modules.loading: loading base/data/res_bank.xml 2025-01-03 11:41:28,057 54 INFO langdb odoo.modules.loading: loading base/data/res.lang.csv 2025-01-03 11:41:28,076 54 INFO langdb odoo.modules.loading: loading base/data/res_lang_data.xml 2025-01-03 11:41:28,091 54 ERROR langdb odoo.sql_db: bad query: b' UPDATE "res
Original PR description
**Steps to reproduce:** 1. Initialize a new database with `odoo -d langdb --stop -i base --load-language=es_AR` **Result:** ``` 2025-01-03 11:41:28,054 54 INFO langdb odoo.modules.loading: loading…
**Steps to reproduce:**
1. Initialize a new database with `odoo -d langdb --stop -i base --load-language=es_AR`
**Result:**
```
2025-01-03 11:41:28,054 54 INFO langdb odoo.modules.loading: loading base/data/res_bank.xml
2025-01-03 11:41:28,057 54 INFO langdb odoo.modules.loading: loading base/data/res.lang.csv
2025-01-03 11:41:28,076 54 INFO langdb odoo.modules.loading: loading base/data/res_lang_data.xml
2025-01-03 11:41:28,091 54 ERROR langdb odoo.sql_db: bad query: b' UPDATE "res_lang"\n
SET "url_code" = "__tmp"."url_code"::VARCHAR, "write_date" = "__tmp"."write_date"::timestamp, "write_uid" = "__tmp"."write_uid"::int4\n
FROM (VALUES (68, \'es\', \'2025-01-03T11:41:26.517428\'::timestamp, 1)) AS "__tmp"("id", "url_code", "write_date", "write_uid")\n
WHERE "res_lang"."id" = "__tmp"."id"\n'
ERROR: duplicate key value violates unique constraint "res_lang_url_code_uniq"
DETAIL: Key (url_code)=(es) already exists.
```
**Explanation:**
When initializing a new database with a specific language, the language is activated on `install_lang`, and since it's the only active language of the "es_*" family, its url_code is set to the short version. [^1]
By the time the url_code switch in `res_lang_data.xml` is executed, the `base.lang_es` language is no longer the one with "es" as url_code. It's actually the recently activated es_AR language.
**Solution:**
We must perform the `url_code` switch before calling `install_lang`
[^1]: https://github.com/odoo/odoo/blob/c042e1ba/odoo/addons/base/models/res_lang.py#L339-L356
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#192344The sudo function allowed the current user to fetch data (stage IDs) which were used to browse. The user does not have access to this data; therefore, an access error message is triggered task-4194357 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192345
Original PR description
The sudo function allowed the current user to fetch data (stage IDs) which were used to browse. The user does not have access to this data; therefore, an access error message is triggered task-4194357 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192345
**Steps to reproduce this issue:** 1) Install Time Off 2) Create an approved leave record 3) Click on the approved leave record in month mode(calendar view) 4) The Delete button appears instead of the Cancel button **Issue:-** In the Time off dashboard, in the year view, if I click on a leave and open the popup, I can click on “Cancel” to cancel my leave But this “Cancel” button appears as “Delete” in the month, week and day views. However, it does cancel the leave, not delet
Original PR description
**Steps to reproduce this issue:** 1) Install Time Off 2) Create an approved leave record 3) Click on the approved leave record in month mode(calendar view) 4) The Delete button appears instead of the Cancel button **Issue:-** In the Time off dashboard, in the year view, if I click on a leave and open the popup, I can click on “Cancel” to cancel my leave But this “Cancel” button appears as “Delete” in the month, week and day views. However, it does cancel the leave, not delete it. **Solution:-** This button should be renamed “Cancel” to be consistent with the system. opw-4782277 Forward-Port-Of: odoo/odoo#209285
The test for the self-order feature was failing due to a validation error in the web_tour registry. The issue comes from the use of an unrecognized key 'test' in the tour configuration of 'self_order_pricelist'. This change removes the invalid 'test' key from the tour definition. Forward-Port-Of: odoo/odoo#212513
Original PR description
The test for the self-order feature was failing due to a validation error in the web_tour registry. The issue comes from the use of an unrecognized key 'test' in the tour configuration of 'self_order_pricelist'. This change removes the invalid 'test' key from the tour definition. Forward-Port-Of: odoo/odoo#212513
**Steps to reproduce:** - Install Accounting and l10n_es_edi_facturae - Switch to a Spanish company (e.g. ES Company) - Create or edit a Spanish customer and set "Facturae" as eInvoice format - Create an invoice: * Customer: [the Spanish customer] * Product: [any] * Customer Reference: [anything] - Confirm the invoice - Generate Facturae edi file via "Send & Print" button - Check the generated XML **Issue:** When submitting the XML to FACe service, the XML is rejected with th
Original PR description
**Steps to reproduce:** - Install Accounting and l10n_es_edi_facturae - Switch to a Spanish company (e.g. ES Company) - Create or edit a Spanish customer and set "Facturae" as eInvoice format -…
**Steps to reproduce:** - Install Accounting and l10n_es_edi_facturae - Switch to a Spanish company (e.g. ES Company) - Create or edit a Spanish customer and set "Facturae" as eInvoice format - Create an invoice: * Customer: [the Spanish customer] * Product: [any] * Customer Reference: [anything] - Confirm the invoice - Generate Facturae edi file via "Send & Print" button - Check the generated XML **Issue:** When submitting the XML to FACe service, the XML is rejected with the following error: "Element 'ReceiverContractReference': This element is not expected. Expected is one of ( FileDate, SequenceNumber, DeliveryNotesReferences, ItemDescription )." It is caused by "ReceiverContractReference" being set after "FileReference" in the invoice line section. Apparently, the order defined in the documentation should be respected. "ReceiverContractReference" should be set before "ReceiverTransactionReference". The issue has been introduced by this other fix: https://github.com/odoo/odoo/commit/ac1af565161d70d57f51d579d0530eb7766c0c76 opw-4579987 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#211177
**Steps to reproduce :** 1) Install Accounting and enable Analytic Accounting from the configuration. 2) Create an analytic plan under Accounting > Configuration > Analytic Plans. 3) Add a line with domain set to miscellaneous, applicability as mandatory and a prefix 4) Create an analytic account using the smart button on the plan. 5) Create an asset record in one company in a multi-company setup. 6) Switch to another company and try to access the asset created in the first company.
Original PR description
**Steps to reproduce :** 1) Install Accounting and enable Analytic Accounting from the configuration. 2) Create an analytic plan under Accounting > Configuration > Analytic Plans. 3) Add a line with…
**Steps to reproduce :** 1) Install Accounting and enable Analytic Accounting from the configuration. 2) Create an analytic plan under Accounting > Configuration > Analytic Plans. 3) Add a line with domain set to miscellaneous, applicability as mandatory and a prefix 4) Create an analytic account using the smart button on the plan. 5) Create an asset record in one company in a multi-company setup. 6) Switch to another company and try to access the asset created in the first company. **Issue:** A traceback occurs ``` AttributeError: 'bool' object has no attribute 'startswith' ``` **Cause:** - When switching companies, all the chart of accounts records code for the previous company, will set as False. - When accessing an asset record expects a account code to call .startswith(), but it fails when code is False. This leads to the above traceback. https://github.com/odoo/odoo/blob/5a321b2327e36f3250b33c669bdb8bb344ab4cbd/addons/account/models/account_analytic_plan.py#L64-L67 **Solution:** - Add a check to ensure that the account’s code exists before attempting to call .startswith(). This makes the code more robust across multi-company environments. opw-4745633 Forward-Port-Of: odoo/odoo#210741
In this commit: =============== - We use session.test_mode instead of relying on a timeout while testing the carousel in all self-ordering modes in test_self_order_pos_landing_page_carousel Runbot error: 226322 Forward-Port-Of: odoo/odoo#212371
Original PR description
In this commit: =============== - We use session.test_mode instead of relying on a timeout while testing the carousel in all self-ordering modes in test_self_order_pos_landing_page_carousel Runbot error: 226322 Forward-Port-Of: odoo/odoo#212371
### Before this commit: The `IBAN number` in the PDF footer is currently broken and displayed across multiple lines.  ### After this commit: Fix it by updating the CSS classes to ensure proper alignment and a cleaner UI layout.  > Task-4822070 --- I confirm I have signed the CLA and read the PR guidelines a
Original PR description
### Before this commit: The `IBAN number` in the PDF footer is currently broken and displayed across multiple lines.  ### After this commit: Fix it by updating the CSS classes to ensure proper alignment and a cleaner UI layout.  > Task-4822070 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#212144
**Current behavior before PR:** Push notifications are shown even when the user is already viewing the same conversation in the Discuss app or in the ChatWindow. The Service Worker does not currently check whether the conversation is focused, leading to redundant and unnecessary notifications. **Desired behavior after PR is merged:** The Service Worker now intelligently checks the state of the Discuss and ChatWindow before displaying push notifications. Notifications are only shown
Original PR description
**Current behavior before PR:** Push notifications are shown even when the user is already viewing the same conversation in the Discuss app or in the ChatWindow. The Service Worker does not currently…
**Current behavior before PR:** Push notifications are shown even when the user is already viewing the same conversation in the Discuss app or in the ChatWindow. The Service Worker does not currently check whether the conversation is focused, leading to redundant and unnecessary notifications. **Desired behavior after PR is merged:** The Service Worker now intelligently checks the state of the Discuss and ChatWindow before displaying push notifications. Notifications are only shown when the user is not actively focused on the same conversation. The updated logic ensures: - Chat bubble minimized and tab focused → Show - Chat window open, tab focused, but a conversation not focus → Suppress - Chat window open, tab focused, the conversation is focused → Suppress This behavior is achieved by the Service Worker sending a message to the client window to get the active thread and its focus status before deciding whether to show a notification. This results in a cleaner user experience by avoiding redundant alerts when they’re not needed. task-[4582533](https://www.odoo.com/odoo/my-tasks/4582533) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#212489 Forward-Port-Of: odoo/odoo#206800
When selecting an attribute value in the Rental Search snippet, the generated URL incorrectly uses the `attrib` parameter. However, the `/shop` route expects the parameter to be named `attribute_value`. As a result, the filter is not applied, and the search results are not correctly filtered. This fix ensures consistency between the snippet and the `/shop` route by replacing `attrib` with `attribute_value`, so the attribute filter works as expected. The change improves the user experience
Original PR description
When selecting an attribute value in the Rental Search snippet, the generated URL incorrectly uses the `attrib` parameter. However, the `/shop` route expects the parameter to be named `attribute_value`. As a result, the filter is not applied, and the search results are not correctly filtered. This fix ensures consistency between the snippet and the `/shop` route by replacing `attrib` with `attribute_value`, so the attribute filter works as expected. The change improves the user experience by ensuring that search filters behave consistently across the website. Steps to reproduce: - Add the "Rental Search" snippet to a website page. - Configure it by selecting an attribute value. - Observe the resulting URL using `attrib`, which fails to filter results on the `/shop` page. Forward-Port-Of: odoo/enterprise#86792
Related to https://github.com/odoo/odoo/pull/211714 Forward-Port-Of: odoo/enterprise#86467 Forward-Port-Of: odoo/enterprise#86440
Original PR description
Related to https://github.com/odoo/odoo/pull/211714 Forward-Port-Of: odoo/enterprise#86467 Forward-Port-Of: odoo/enterprise#86440
Before this commit: - Select any document. - Click the SERVER ACTIONS cog menu. - You will find the menus --> `Export` and `Insert in spreadsheet` Issue: - These are not required here. Reason: - A recent PR (https://github.com/odoo/enterprise/pull/77329) changed how certain server actions are displayed when a document is selected. Fix: - We override the function returning the Dropdown Items to display and simply pop the ones we don't need. Task-4743029 Forward-Port-Of: odoo/en
Original PR description
Before this commit: - Select any document. - Click the SERVER ACTIONS cog menu. - You will find the menus --> `Export` and `Insert in spreadsheet` Issue: - These are not required here. Reason: - A recent PR (https://github.com/odoo/enterprise/pull/77329) changed how certain server actions are displayed when a document is selected. Fix: - We override the function returning the Dropdown Items to display and simply pop the ones we don't need. Task-4743029 Forward-Port-Of: odoo/enterprise#84519
Fix the possibility to enter an empty document name when editing a file or folder name from the side panel. If the name is empty, a danger notification should be displayed and the previous name should be restored. Task-4794447 Forward-Port-Of: odoo/enterprise#85500
Original PR description
Fix the possibility to enter an empty document name when editing a file or folder name from the side panel. If the name is empty, a danger notification should be displayed and the previous name should be restored. Task-4794447 Forward-Port-Of: odoo/enterprise#85500
Currently, An Error occurs on removing the **Date To** or **Date From** value from a payslip's period. **Steps to Reproduce** 1) Install **l10n_id_hr_payroll module**. 2) Create a new **Pay-Slip**. 3) Remove **Date** from **Period** **Error:** `AttributeError: 'bool' object has no attribute 'month'` **Root Cause:** The `_compute_l10n_id_include_pkp_ptkp` method at [1] assumes that `date_to` and `contract_id.date_end` are always set and valid. If either of them is missing (False), a
Original PR description
Currently, An Error occurs on removing the **Date To** or **Date From** value from a payslip's period. **Steps to Reproduce** 1) Install **l10n_id_hr_payroll module**. 2) Create a new **Pay-Slip**.…
Currently, An Error occurs on removing the **Date To** or **Date From** value from a payslip's period. **Steps to Reproduce** 1) Install **l10n_id_hr_payroll module**. 2) Create a new **Pay-Slip**. 3) Remove **Date** from **Period** **Error:** `AttributeError: 'bool' object has no attribute 'month'` **Root Cause:** The `_compute_l10n_id_include_pkp_ptkp` method at [1] assumes that `date_to` and `contract_id.date_end` are always set and valid. If either of them is missing (False), accessing `.month` or `.year` causes an error. [1] - https://github.com/odoo/enterprise/blob/34aa0ffb82c1bd7c90b4cb161ea515f2cad8e65f/l10n_id_hr_payroll/models/hr_payslip.py#L87 **Solution:** This commit prevents the computation from failing when `slip.date_to` and `slip.contract_id.date_end` fields are unset by adding a conditional check to ensure that both fields are valid date objects before accessing their `.month` and `.year` attributes. sentry-6608982173 Forward-Port-Of: odoo/enterprise#85701
#PURPOSE: - Currently is the user is promoted as admin for accounting and he/she is try to generate/regenerate or view the gst report following Error is thrown. - Access Error ```Uh-oh! Looks like you have stumbled upon some top-secret records. Sorry, Marc Demo (id=5) doesn't have 'read' access to: - Document (documents.document)``` #STEPS TO REPRODUCE 1) Install necessary modules for indian accounting localization. 2) Enable GST E-Filing & Matching Fe
Original PR description
#PURPOSE: - Currently is the user is promoted as admin for accounting and he/she is try to generate/regenerate or view the gst report following Error is thrown. - Access Error ```Uh-oh! Looks like…
#PURPOSE:
- Currently is the user is promoted as admin for accounting and he/she is try
to generate/regenerate or view the gst report following Error is thrown.
- Access Error
```Uh-oh! Looks like you have stumbled upon some top-secret records.
Sorry, Marc Demo (id=5) doesn't have 'read' access to:
- Document (documents.document)```
#STEPS TO REPRODUCE
1) Install necessary modules for indian accounting localization.
2) Enable GST E-Filing & Matching Feature from account's configuration.
3) Go to Settings -> User & Companies -> Users
4) Click new if no user is there other then administrator else click on
another user.
5) Under Access Rights section , inside Accounting select Administrator & Save.
6) Now log in as new user in another tab.
7) Go to Accounting -> Reporting under 'India' section click on
GST Return Period.
8) Click on generate/regenerate or View option.
9) The above shown error will be raised.
#SPECIFICATION:
- The issue is with documents access rights
- After promoting user to admin of accounting, the document's folder right is
not properly assign to user.
- fix this by giving rights of GSTR folder to user if user is in accounting
manager group.
task-4770583
Forward-Port-Of: odoo/enterprise#86660
Forward-Port-Of: odoo/enterprise#84747The current implementation to handle the rate for multi-currency entries in CAMT creates problems when fetching the source rate from the file: the source rate can be taken from the SrcCcy or the TrgtCcy node, which should be compared with the source currency and target currency respectively. It is not done that way and is too restrictive (when the SrcCcy is found, it is always compared to the target currency, which leads to an incorrect transaction amount). Moreover, when the currency convers
Original PR description
The current implementation to handle the rate for multi-currency entries in CAMT creates problems when fetching the source rate from the file: the source rate can be taken from the SrcCcy or the TrgtCcy node, which should be compared with the source currency and target currency respectively. It is not done that way and is too restrictive (when the SrcCcy is found, it is always compared to the target currency, which leads to an incorrect transaction amount). Moreover, when the currency conversion introduces a exchange loss/gain, it is put back on the largest transaction of the entry. Backport of https://github.com/odoo/enterprise/pull/76828 and https://github.com/odoo/enterprise/pull/42763 opw-4672283 Forward-Port-Of: odoo/enterprise#84775 Forward-Port-Of: odoo/enterprise#83131
Before this commit, when the user creates more than one fsm project, the default fsm project selected once a fsm task is created if the one with the lowest sequence and lowest id which could be confusing for the user since the default order displayed in the list view of projects is `sequence, name, id`. This commit makes sure the default fsm project fetched is the first one displayed in the list view of projects. opw-4791468 Forward-Port-Of: odoo/enterprise#86554
Original PR description
Before this commit, when the user creates more than one fsm project, the default fsm project selected once a fsm task is created if the one with the lowest sequence and lowest id which could be confusing for the user since the default order displayed in the list view of projects is `sequence, name, id`. This commit makes sure the default fsm project fetched is the first one displayed in the list view of projects. opw-4791468 Forward-Port-Of: odoo/enterprise#86554
In this commit: --------------- - Corrected the label from `Is Alchoholic` to `is Alcoholic`. task- 4826438 Forward-Port-Of: odoo/enterprise#86587
Original PR description
In this commit: --------------- - Corrected the label from `Is Alchoholic` to `is Alcoholic`. task- 4826438 Forward-Port-Of: odoo/enterprise#86587
The view "helpdesk.ticket.view.form.inherit.website.helpdesk.livechat," which is a child of "helpdesk.ticket.form," was causing other buttons to be hidden. so i just corrected it. Steps to reproduce: Install "website_helpdesk_livechat" module, Open "helpdesk" module, Create a new ticket. Configure the livechat bot. Then only 'View chat' button visible. ### Before fix:  It is hide the existin
Original PR description
The view "helpdesk.ticket.view.form.inherit.website.helpdesk.livechat," which is a child of "helpdesk.ticket.form," was causing other buttons to be hidden. so i just corrected it. Steps to reproduce: Install "website_helpdesk_livechat" module, Open "helpdesk" module, Create a new ticket. Configure the livechat bot. Then only 'View chat' button visible. ### Before fix:  It is hide the existing buttons like "Ticktes", "Sale orders", "Coupons". ### **After fix:**  Forward-Port-Of: odoo/enterprise#84582
Changed translations to use the legal term used in Mexico. This is done because "Cada dos semanas" and "Quincenal" don't have exactly the same meaning Forward-Port-Of: odoo/enterprise#86445 Forward-Port-Of: odoo/enterprise#83982
Original PR description
Changed translations to use the legal term used in Mexico. This is done because "Cada dos semanas" and "Quincenal" don't have exactly the same meaning Forward-Port-Of: odoo/enterprise#86445 Forward-Port-Of: odoo/enterprise#83982
…tion_reg_payslip_lines This argument causes several issues and do not make sense as there is already a default_partner_id. For example, you click on payslip lines from the contact Abigail Peterson, and it filters everything with a search on partner_id = 1, which doesn't make sense. It also causes issues if the partner with id 1 doesn't exists. opw-4516239 Forward-Port-Of: odoo/enterprise#78287
Original PR description
…tion_reg_payslip_lines This argument causes several issues and do not make sense as there is already a default_partner_id. For example, you click on payslip lines from the contact Abigail Peterson, and it filters everything with a search on partner_id = 1, which doesn't make sense. It also causes issues if the partner with id 1 doesn't exists. opw-4516239 Forward-Port-Of: odoo/enterprise#78287