Monday, March 30, 2026
21 changes · saas-19.2
Resolved issues and error corrections
This update allows users to access and view canceled signature requests within the Odoo portal. Previously, canceled requests were hidden, preventing users from seeing important communication history and document details. The change simplifies the user experience by aligning the display for canceled requests with completed requests.
Original PR description
Previously, users were redirected to the home page if they tried to access a signature request in the 'canceled' state. This prevented them from viewing the communication history or the document metadata. This commit: - Removes the 'canceled' state restriction in the portal controller. - Updates the portal template to show "View Document" instead of "Sign" for canceled requests, similar to the completed state. Task: 6034621 Forward-Port-Of: odoo/enterprise#111534 Forward-Port-Of: odoo/enterprise#110974
A test used in the Odoo Enterprise payroll module failed due to an incorrect date calculation. This fix adjusted the test environment to ensure accurate results, preventing future disruptions to payroll processing. The change addresses a discrepancy in how date ranges were being evaluated during testing.
Original PR description
[FIX] l10n_ch_hr_payroll_elm_transmission: fix avs test for faketime build
Bug reproduction:
1 - v.17->run test_generic_avs_deductions test with faketime 2027-01-01 12:00 UTC->test fails
Bug cause:
1 - In the test, compute_sheet()->_get_payslip_lines->_compute_rule->_get_avs_rates is called
2 - There is a line like that if line.date_from <= target and (not line.date_to or target <= line.date_to)
3 - I looked to avs_line_ids = fields.One2many(default=_get_default_avs_line_ids)
4 - In _get_default_avs_line_ids -> 'date_from': fields.Date.today().replace(month=1, day=1) date_from is calculated like that -> when the year is 2027, the date_from is 2027-01-01 and it is bigger than the target in the test.
Bug solution:
1 - I used @freeze_time("2026-02-28") in my test to prevent this behavior.
Runbot Error Link: https://runbot.odoo.com/odoo/runbot.build.error/240992
task - 6018940
Forward-Port-Of: odoo/enterprise#109975This update fixes an issue in the l10n_pe_edi_pos module that prevented accurate consolidation of Point of Sale (POS) orders. The system now validates order groupings, preventing errors when attempting to combine invoices that don't meet necessary criteria and providing helpful error messages to the user.
Original PR description
Joining the values in the selection field with a coma, and then putting everything in another selection field was plain wrong. We now check a bit better what we're generating, and refrain the user with error messages when they try grouping on the same invoices orders that do not share the necessary key values. Forward-Port-Of: odoo/enterprise#111616
This update resolves a crash issue when opening tax reports in Odoo Enterprise. The fix ensures reports without a defined return type automatically use the company's tax periodicity, preventing errors and improving report stability. This enhances the reliability of financial reporting.
Original PR description
When a report uses 'previous_return_period' date_scope on one of its expressions, if there's no account.return.type linked to that report, the opening of the report crashes. This is a bit stupid,…
When a report uses 'previous_return_period' date_scope on one of its expressions, if there's no account.return.type linked to that report, the opening of the report crashes. This is a bit stupid, since a return type without periodicity will anyway fallback to the the company's tax periodicity field. When there's no return type, we should simply fallback in the same way. To reproduce: - Make a Belgian company, install the CoA and localization - Manually uninstall l10n_be_reports - Try opening the tax report Another message also checked that we couldn't compute this date_scope in case there was more than one return type linked to the report, arguing they have different periodicities, so we can't infer which one to use. However, it they actually shared the same periodicity, that check failed anyway. We refine it to authorize this case, and only raise if they truly have different periodicities. opw-6022150 Forward-Port-Of: odoo/enterprise#111872 Forward-Port-Of: odoo/enterprise#111796
This update resolves a technical issue preventing invoices with discounts and decimal values (over 2 decimals) from successfully sending to ARCA for Arabic EDI processing. The fix utilizes a truncated unit price for discount calculations, ensuring accurate decimal alignment and preventing errors.
Original PR description
After changes made in Odoo of how the decimal precision works some of the code we use to prepare the data to create EDI invoices now fails. We already adapt the code to fix the data depending of the expected webserive format but we miss a case related to when invovice has discounts. The problem is that any invoice with lines that has more than 2 decimals and also have a discount will fail when trying send it to ARCA because the computed amount has differences in the decimals. Now we use the truncated unit price to compute the discount instead of the full amount with decimal of the `line.price_unit` value. Forward-Port-Of: odoo/enterprise#111518 Forward-Port-Of: odoo/enterprise#110706
This update clarifies the error message displayed when an upsell's start date is set after the next invoice date. This change ensures users receive clearer guidance, preventing confusion and potential issues with subscription billing. It's a simple fix to improve the user experience.
Original PR description
Update the error message when an upsell start date is on or after the next invoice date, so it be more clear for the users. task-5893032 Forward-Port-Of: odoo/enterprise#106757
This update resolves an issue where upgrading the `l10n_ae` module would fail if the user had renamed the "United Arab Emirates" country in Odoo's settings. The fix replaces references to country names in a key data file with a stable XMLID, ensuring consistent module upgrades regardless of user customizations.
Original PR description
### Steps to reproduce ------------------ - Install `l10n_ae` module. - Go to *Settings → Countries* and rename the country "United Arab Emirates" (e.g. change it to "UAE"). - Upgrade the `l10n_ae`…
### Steps to reproduce
------------------
- Install `l10n_ae` module.
- Go to *Settings → Countries* and rename the country "United Arab Emirates" (e.g. change it to "UAE").
- Upgrade the `l10n_ae` module.
### Issue
-----
The file `l10n_ae/data/res.bank.csv` references the country using its name ("United Arab Emirates"). During the module upgrade, the CSV import tries to resolve the country relation using the country name. If the country name has been modified by the user (for example to "UAE"), the lookup fails and the module upgrade crashes with:
```python3
No matching record found for name 'United Arab Emirates' in field 'Country'
```
### Root Cause
----------
Using translatable/display names in CSV data is unreliable, as these values can be customized or translated by users.
### Fix
---
Replace the country name reference with the stable XMLID `base.ae` in `res.bank.csv`.
Using XMLIDs ensures consistent resolution regardless of name changes or translations.
opw-6015302
upg-3950261
tbg-2492
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
Forward-Port-Of: odoo/odoo#255993This update corrects an issue where the Odoo module upgrade would fail if the country names in CSV data files (for Peru and Ecuador) were changed. By using stable XML IDs instead of names, the system now reliably resolves many-to-one relationships during module upgrades, preventing crashes.
Original PR description
### Steps to reproduce ------------------ - Install `l10n_pe` or `l10n_ec` module. - Go to *Settings → Countries* and rename the country (e.g. "Peru" → "PERÚ", "Ecuador" → "ECUADOR"). - Upgrade the…
### Steps to reproduce
------------------
- Install `l10n_pe` or `l10n_ec` module.
- Go to *Settings → Countries* and rename the country (e.g. "Peru" → "PERÚ",
"Ecuador" → "ECUADOR").
- Upgrade the module.
### Issue
-----
The files `l10n_pe/data/res.bank.csv` and `l10n_ec/data/res.bank.csv`
reference countries using their names (e.g. "Peru", "Ecuador").
During module upgrade, the CSV import resolves many2one relations using
the country name. If the country name has been modified by the user,
the lookup fails and the module upgrade crashes with:
```python3
2026-03-06 23:48:11,112 27 CRITICAL db_3950261 odoo.service.server: Failed to initialize database `db_3950261`.
Traceback (most recent call last):
File "/home/odoo/src/odoo/19.0/odoo/service/server.py", line 1510, in preload_registries
registry = Registry.new(dbname, update_module=update_module, install_modules=config['init'], upgrade_modules=config['update'], reinit_modules=config['reinit'])
File "/home/odoo/src/odoo/19.0/odoo/tools/func.py", line 88, in locked
return func(inst, *args, **kwargs)
File "/home/odoo/src/odoo/19.0/odoo/orm/registry.py", line 199, in new
load_modules(
File "/home/odoo/src/odoo/19.0/odoo/modules/loading.py", line 456, in load_modules
load_module_graph(
File "/home/odoo/src/odoo/19.0/odoo/modules/loading.py", line 216, in load_module_graph
load_data(env, idref, mode, kind='data', package=package)
File "/home/odoo/src/odoo/19.0/odoo/modules/loading.py", line 59, in load_data
convert_file(env, package.name, filename, idref, mode, noupdate=kind == 'demo')
File "/home/odoo/src/odoo/19.0/odoo/tools/convert.py", line 689, in convert_file
convert_csv_import(env, module, pathname, fp.read(), idref, mode, noupdate)
File "/home/odoo/src/odoo/19.0/odoo/tools/convert.py", line 754, in convert_csv_import
raise Exception(env._(
Exception: Module loading l10n_pe failed: file l10n_pe/data/res.bank.csv could not be processed:
No matching record found for name 'Peru' in field 'Country'
No matching record found for name 'Peru' in field 'Country'
No matching record found for name 'Peru' in field 'Country'
No matching record found for name 'Peru' in field 'Country'
No matching record found for name 'Peru' in field 'Country'
No matching record found for name 'Peru' in field 'Country'
No matching record found for name 'Peru' in field 'Country'
No matching record found for name 'Peru' in field 'Country'
No matching record found for name 'Peru' in field 'Country'
No matching record found for name 'Peru' in field 'Country'
No matching record found for name 'Peru' in field 'Country'
No matching record found for name 'Peru' in field 'Country'
No matching record found for name 'Peru' in field 'Country'
No matching record found for name 'Peru' in field 'Country'
No matching record found for name 'Peru' in field 'Country'
No matching record found for name 'Peru' in field 'Country'
No matching record found for name 'Peru' in field 'Country'
No matching record found for name 'Peru' in field 'Country'
select id,name,code from res_country where code='PE'
+-----+----------------------------------------------------------------------+------+
| id | name | code |
|-----+----------------------------------------------------------------------+------|
| 173 | {"de_DE": "Peru", "en_US": "PERÚ", "es_ES": "PERÚ", "es_PE": "Perú"} | PE |
+-----+----------------------------------------------------------------------+------+
```
### Root Cause
----------
Using translatable/display names in CSV data is not reliable, as these
values can be customized or translated.
### Fix
---
Replace country name references with stable XMLIDs:
- `base.pe` for Peru
- `base.ec` for Ecuador
Using XMLIDs ensures consistent resolution regardless of name changes
or translations.
opw-6015302
upg-3950261
tbg-2492
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
Forward-Port-Of: odoo/odoo#256201
Forward-Port-Of: odoo/odoo#254096This update fixes an issue where code blocks within toggle lists would lose their formatting when the toggle was closed. The fix ensures that multiline code content is correctly preserved, regardless of the toggle's state, providing a consistent and functional experience for users. This improves the readability and usability of code snippets within the application.
Original PR description
### Steps to Reproduce: - Create a toggle list and add content. - Expand the toggle list and insert a code block (e.g.: /code). - Add multiple lines inside the code block using Enter. - Refresh the…
### Steps to Reproduce: - Create a toggle list and add content. - Expand the toggle list and insert a code block (e.g.: /code). - Add multiple lines inside the code block using Enter. - Refresh the page with the toggle open, content is preserved. - Close the toggle and refresh then content collapses into one line. ### Description of the issue/feature this PR addresses: - When the toggle list is closed, the code block is inside `display: none` container. In this state, `innerText` depends on rendered layout and does not preserve newline characters `\n`. As a result, multiline code content is extracted as single line. ### Desired behavior after PR is merged: - Read html and normalize it into plain text by: - Converting `<br>` tags into newline characters. - Stripping remaining HTML tags. - Decoding HTML entities back to their literal characters. - Removing the extra newline introduced by a trailing `<br>` - Cleaning up invisible zero-width characters. task-5909034 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#248391
This update resolves an issue preventing barcode scanning of product packaging when a product doesn't have a barcode defined. The fix ensures the system searches for the product when a barcode is scanned on packaging, allowing for seamless barcode scanning functionality within the Point of Sale module. This improves the user experience and accuracy of sales transactions.
Original PR description
Step to reproduce - Create a product - Add two attributes: 1. One with Instantly creation mode 2. One with Never creation mode - Define packaging from the Sales tab - Add a barcode on the variant packaging ex: 111356,11357 - Scan the packaging barcode in POS Observation: - we get a traceback `TypeError: Cannot read properties of undefined (reading 'product_template_attribute_value_ids')` Cause: - when we do not have barcode on product, when opening `openConfigurator` - (as we have few varianst) product get undefined. https://github.com/odoo/odoo/blob/f229f23d7bf3d837ff5577c36145bf2ba410ea22/addons/point_of_sale/static/src/app/services/pos_store.js#L738 - Hence the traceback Fix: - For the case, when packaging has barcode but not the product, we search for product in that case too. opw-5886570 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#253195 Forward-Port-Of: odoo/odoo#248838
This update ensures the HTML editor's tests consistently use the Roboto font, regardless of the user's computer. Previously, variations in fonts could cause test failures. This change improves the reliability of our testing process and ensures a more predictable user experience for HTML editing.
Original PR description
Purpose of this PR: - Explicitly load Roboto using FontFace in indent.test.js to avoid fallback fonts (e.g. Ubuntu) across environments. This ensures consistent rendering and prevents flaky failures caused by font-dependent computed values. task-5916115 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#256070
This update fixes a bug in the website editor that prevented users from clicking links embedded within non-editable icons. Now, when you click on these icons, a popover appears, allowing you to access the linked destination. This ensures a smoother and more functional experience when building and managing website content.
Original PR description
Problem: When the website editor is enabled and icons inside links are marked as non-editable, it becomes impossible to open those links. Solution: Enable the link popover when clicking on non-editable icons inside links so the link can still be accessed. Steps to reproduce: - In the website editor, drop a "Social Media" inner snippet anywhere inside the header. - Click on one of the social media icons. - Observe that the link popover does not open, making it impossible to test the link. task-6009319 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes a bug that prevented users from creating alias IDs within the recruitment application. The issue stemmed from a change in how recruitment source data was handled, specifically related to a dependency removal. The fix ensures that the system correctly identifies and utilizes the alias ID, improving the application's stability and usability.
Original PR description
Currently, an error occurs when a user creates an alias ID. **Steps to Reproduce:** - Install the `hr_recruitment` module. - Go to `your current company` and set the `Email Domain` value. - Go to…
Currently, an error occurs when a user creates an alias ID. **Steps to Reproduce:** - Install the `hr_recruitment` module. - Go to `your current company` and set the `Email Domain` value. - Go to `Recruitment` > `Applications` > `By Job Positions`. - In `list view`, create or open an existing `Job Position`. - In the `Trackers` tab, create a record through “Add a line”. - Click the `copy clipboard` button next to the `email` field. **Error:** `AttributeError: 'hr.recruitment.source' object has no attribute 'name'` After [this commit], the dependency of utm.source.mixin was removed, along with the source_id field referencing a source. The name field was provided by utm.source.mixin, and it is now being accessed in recruitment source, which raises the error [1]. This commit ensures that the system uses the name of source_id, as it has been replaced by _rec_name to "source_id". [this commit]: https://github.com/odoo/odoo/commit/927682ce8f5e6faea0da7216ac1163411f5e83bd [1]- https://github.com/odoo/odoo/blob/949d368eda3d6f2c9b5fb04ec3a41fa1b2cc90d4/addons/hr_recruitment/models/hr_recruitment_source.py#L42 sentry-7353030705 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue where links within the Knowledge editor consistently opened in new tabs, regardless of user settings. The fix ensures that links open in the expected tab (current or new) based on the user's preference, improving the overall user experience and consistency within the editor.
Original PR description
Problem: Links configured to open in the current tab still open in a new tab when content is locked in Knowledge. Cause: When rendering content in `HtmlViewer`, we always force the link `target` to `_blank` and `rel` to `noreferrer`, even if different values were configured during editing. Solution: Preserve the values configured during editing instead of overriding them. Steps to reproduce: - Knowledge. - Add a link. - Disable the option to open the link in a new tab. - Lock the content. - Click on the link. - The link still opens in a new tab even though the option is disabled. opw-5991647 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#256229 Forward-Port-Of: odoo/odoo#252492
This update replaces the old iDEAL logo with the new Wero logo for improved brand consistency. This change ensures users see the correct branding when selecting the iDEAL payment method, enhancing the overall customer experience.
Original PR description
Before the commit: The iDEAL payment method was using the existed legacy iDEAL logo. After the commit: - Updated the display name to "iDEAL / Wero". - Replaced the legacy iDEAL logo with the new Wero logo. - Introduced a separate "Wero" payment brand. task-5922938 Forward-Port-Of: odoo/odoo#254901 Forward-Port-Of: odoo/odoo#248506
This update corrects a technical issue where a blank default value was appearing in the Contact Form's radio button field. This prevented validation warnings even when the field was marked as required. The fix resolves this oversight in how default values are handled, ensuring proper form functionality and data integrity.
Original PR description
# How to reproduce - Go to the website editor - Add a Contact Form block - Add a new field with the type "Radio Buttons" - Do not set any value to default # The issue A default empty value appears in the form. This value can be selected by the user and will not trigger any validation warning even if the field is set to required # Cause Commit [1] changed the way the default value is added for the Selection field. It contains a small oversight as the type value for "Selection" is not "selection" but many2one. https://github.com/odoo/odoo/blob/f28c9f8dc5639ff8606b139ca9d384f115b003d3/addons/website/static/src/builder/plugins/form/form_option.xml#L96-L109 [1]: https://github.com/odoo/odoo/commit/34ddd5dd6a036792c44b865cb7a4671f4ca033cf opw-6062186 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#255580
A technical issue causing a traceback when creating group allocations in the Time Off module has been resolved. This was due to a recent change in the underlying model name, which resulted in an outdated domain condition still referencing a removed field. The fix removes the incorrect domain reference, ensuring smooth allocation functionality.
Original PR description
Steps to reproduce: -------------------------------------- 1. Install Time off module 2. Navigate to Time off > Management > Allocations 3. Click on the 'New Group Allocation' button 4. Click on the…
Steps to reproduce:
--------------------------------------
1. Install Time off module
2. Navigate to Time off > Management > Allocations
3. Click on the 'New Group Allocation' button
4. Click on the Time Off Type field to open the selection dropdown.
Observation:
--------------------------------------
Traceback occurs:
```
File '/home/odoo/odoo/community/odoo/orm/domains.py', line 920, in _raise
raise error(message % (*args, self.field_expr, self.operator, self.value))
ValueError: Invalid field hr.work.entry.type.company_id in condition ('company_id', 'in', [1, False])
```
Issue:
--------------------------------------
In the commit https://github.com/odoo/odoo/pull/244436/changes/5b9570e4bd4cc0ae7d9a81e33f49dc538ae5acd3 model name changed from `hr.leave.type` to
`hr.work.entry.type`. With this change `company_id` field is removed too. However, the domain on the field still referenced `company_id`, leading to an invalid domain and traceback.
Solution:
--------------------------------------
Remove the company_id condition from the domain since the field no longer exists on `hr.work.entry.type`.
opw-6037286A small bug was causing the QR code on receipts generated for Spanish VAT invoices (l10n_es_edi_verifactu_pos) to have an incorrect URL format. This fix removes an extra slash, ensuring the QR code is properly generated and scannable, preventing issues with invoice processing. This ensures accurate invoice scanning and data retrieval.
Original PR description
Step to reproduce: - install "l10n_es_edi_verifactu_pos" - setup "ePOS printer" for a pos - open pos and settle a order below 400$ - notice we get l10n_es_edi_verifactu_qr_code in our receipt - click on "Print" Observation: - when you scan the qr code in invoice it contains `//` in it cause: - in recent commit [1] a typo is introduced which prepends `/` before barcode url, while barcode url starts with `/report/barcode` . https://github.com/odoo/odoo/blob/0d8eaeeb971f2f670aebb1b72ed03f4a2d5e0105/addons/l10n_es_edi_verifactu/models/verifactu_document.py#L293-L311 Fix: - remove extra `/` , which fixes the typo opw-6075474 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue preventing the Spanish SII demo environment from working correctly. We've successfully tested a new environment mirroring the AEAT (tax authority) system, ensuring it functions as expected. Importantly, this change maintains the demo company's VAT number, avoiding any unintended modifications.
Original PR description
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 Forward-Port-Of: odoo/odoo#255765 Forward-Port-Of: odoo/odoo#255377
This update resolves a crash that occurred when closing the AI chat window in Odoo. The issue stemmed from an unintended sorting process within the system's record management, leading to incorrect data updates. The fix ensures the AI chat window can be closed without causing a system error.
Original PR description
Before this commit, closing an AI chat window could lead to the following crash: ```js TypeError: Cannot read properties of undefined (reading '_raw') ``` Steps to reproduce: - have no chat windows…
Before this commit, closing an AI chat window could lead to the following crash: ```js TypeError: Cannot read properties of undefined (reading '_raw') ``` Steps to reproduce: - have no chat windows open, cache cleared. - open DM with demo in chat window from messaging menu, in home menu. - open AI chat, from systray. - close the AI chat window. => crash This happens because when closing the AI chat window, it deletes the AI conversation. By deleting the AI conversation, it removes the conversation from `store.menuThreads`, which is the list of conversations to display in messaging menu. Removal of this conversation in `menuThreads` is done internally through ```js const index = recordList.indexOf(record); recordList.splice(index, 1); ``` This is done that way as to reuse custom methods of `RecordList`, especially the `splice()` that is used by many methods that mutate the record list. Internal code of the custom `splice` method does `slice()`, which is used to retrieve some records without mutating the record list. In practice, these `.slice()` were accidentally mutating the list, because they invoke the `Proxy.getter` of the `RecordList`, and when the list is flagged for `computeOnNeed` / `sortOnNeed`, invoking this `Proxy.getter` would mistakenly enable the `computeInNeed` / `sortInNeed` flags and thus mutate the list, e.g. with a sort, which may change the order of items and mess up the `index` computed in `indexOf()` step. This is what happens with the chat window. The `menuThreads` looked something like this: ```js menuThread = ["thread_1", "thread_2", "thread_3"]; ``` With the removal of `thread_2`, the `.indexOf()` is `1`, but due to `.slice()` triggering the sort, the list was changed to: ```js menuThread = ["thread_2", "thread_1", "thread_3"]; ``` ... And it instead removed `thread_1` but kept `thread_2` in list. This introduce 2 problems: - `thread_1` is mistakenly removed from relation when it shouldn't - `thread_2` is kept, but since this is a local id with no actual record in store, `recordList[index]` would return `undefined` as there's no existing record matching this local id. This commit fixes the issue by improving internal code of record list methods to avoid accidental triggering of lazy re-compute and re-sort. The accidental re-compute and re-sort come from invoking non-implemented array methods on the proxy of record, such as: - `recordProxy.at()` - `recordProxy.slice()` These methods were just used meant to retrieve records from the record list, and they did so by using accessing through `recordProxy`. This approach has the benefit to look good as this is exactly the same as the external API, but it has the unintended side-effect of the re-compute / re-sort of lazy fields. Instead of using these methods, records are retrieved with: - raw access to get local ids in relation - convert local ids to raw records through raw access in `store.recordByLocalId` This approach, while uglier, has the benefit to not accidentally trigger the re-compute / re-sort. opw-5761279 Forward-Port-Of: odoo/odoo#251769
The URL used to send e-invoices to the Serbian government has been updated. This update ensures that our Odoo system continues to correctly transmit invoices to the appropriate authorities, complying with Serbian regulations. This change was necessary due to a recent update from the Serbian government.
Original PR description
**PROBLEM** The url to send e-invoice to the serbian government has changed. opw-6055622 Forward-Port-Of: odoo/odoo#256095