Monday, September 7, 2026
7 changes · saas-18.3
Resolved issues and error corrections
The Indian GST reporting token refresh process now preserves the existing token instead of replacing it with an empty or unrelated response value. This prevents incorrect token data from being saved and helps keep GST reporting access stable when a token is refreshed.
Original PR description
Previously, `_cron_refresh_gst_token` updated the value of `l10n_in_gstr_gst_token` when refreshing the GST token using `response.get('txn')`.
However, the response received during a token refresh is: `{'status_cd': '1', 'status_desc': 'If previous Auth Token is found'}`
The GST token itself remains unchanged during a refresh; only its validity is extended. Therefore, writing `l10n_in_gstr_gst_token` with `response.get('txn')` is unnecessary and incorrect.
This commit removes that write operation.
Forward-Port-Of: odoo/enterprise#130313This fixes a Windows-specific issue that prevented Odoo's automated tests from running because file paths were interpreted differently than on Linux or Mac. The change helps Windows-based developers validate changes locally and reduces avoidable test failures across platforms.
Original PR description
### Description of the issue/feature this PR addresses Since February 2026, changes were made in `/tests/common.py` that were probably never tested on anything else than Linux or Mac machines. Since…
### Description of the issue/feature this PR addresses
Since February 2026, changes were made in `/tests/common.py` that were probably never tested on anything else than Linux or Mac machines. Since that time, Windows users like me (sorry) are not able to run the Odoo tests anymore on their machine. Because the problem remains to this day, I thought I'd submit a PR to fix this permanently.
I have not checked versions older than 18, but it seems the problem does not occur in Odoo 19 anymore, as the code in `/tests/common.py` has been greatly improved.
### Current behavior before PR
Running `odoo-bin` with the `--test-enable` flag never works on Windows, because the simple check on [this line](https://github.com/odoo/odoo/blob/18.0/odoo/tests/common.py#L979) fails due to Windows using backslashes instead of forward slashes in file paths.
It results in the following error (and a whole lot more afterwards as a result of that):
```
2026-08-19 10:28:44,868 48604 INFO odoo-local odoo.tests.common: C:\Apps\Python312\Lib\unittest\mock.py:1581:__enter__ setting Users._crypt_context to <function TransactionCase.setUpClass.<locals>._crypt_context at 0x000002C48DD2C540>
Stack (most recent call last):
File "C:\Program Files\JetBrains\PyCharm 2024.1.4\plugins\python-ce\helpers\pydev\pydevd.py", line 2391, in <module>
main()
File "C:\Program Files\JetBrains\PyCharm 2024.1.4\plugins\python-ce\helpers\pydev\pydevd.py", line 2372, in main
globals = debugger.run(setup['file'], None, None, is_module)
File "C:\Program Files\JetBrains\PyCharm 2024.1.4\plugins\python-ce\helpers\pydev\pydevd.py", line 1640, in run
return self._exec(is_module, entry_point_fn, module_name, file, globals, locals)
File "C:\Program Files\JetBrains\PyCharm 2024.1.4\plugins\python-ce\helpers\pydev\pydevd.py", line 1647, in _exec
pydev_imports.execfile(file, globals, locals) # execute the script
File "C:\Program Files\JetBrains\PyCharm 2024.1.4\plugins\python-ce\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "odoo-bin", line 8, in <module>
odoo.cli.main()
File "[REMOVED]\odoo\odoo\cli\command.py", line 76, in main
o.run(args)
File "[REMOVED]\odoo\odoo\cli\server.py", line 182, in run
main(args)
File "[REMOVED]\odoo\odoo\cli\server.py", line 175, in main
rc = odoo.service.server.start(preload=preload, stop=stop)
File "[REMOVED]\odoo\odoo\service\server.py", line 1510, in start
rc = server.run(preload, stop)
File "[REMOVED]\odoo\odoo\service\server.py", line 644, in run
rc = preload_registries(preload)
File "[REMOVED]\odoo\odoo\service\server.py", line 1414, in preload_registries
registry = Registry.new(dbname, update_module=update_module)
File "[REMOVED]\venv\Lib\site-packages\decorator.py", line 232, in fun
return caller(func, *(extras + args), **kw)
File "[REMOVED]\odoo\odoo\tools\func.py", line 97, in locked
return func(inst, *args, **kwargs)
File "[REMOVED]\odoo\odoo\modules\registry.py", line 118, in new
odoo.modules.load_modules(registry, force_demo, status, update_module)
File "[REMOVED]\odoo\odoo\modules\loading.py", line 485, in load_modules
processed_modules += load_marked_modules(env, graph,
File "[REMOVED]\odoo\odoo\modules\loading.py", line 365, in load_marked_modules
loaded, processed = load_module_graph(
File "[REMOVED]\odoo\odoo\modules\loading.py", line 284, in load_module_graph
test_results = loader.run_suite(suite, global_report=report)
File "[REMOVED]\odoo\odoo\tests\loader.py", line 118, in run_suite
suite(results)
File "C:\Apps\Python312\Lib\unittest\suite.py", line 84, in __call__
return self.run(*args, **kwds)
File "[REMOVED]\odoo\odoo\tests\suite.py", line 43, in run
self._handleClassSetUp(test, result)
File "[REMOVED]\odoo\odoo\tests\suite.py", line 175, in _handleClassSetUp
super()._handleClassSetUp(test, result)
File "[REMOVED]\odoo\odoo\tests\suite.py", line 65, in _handleClassSetUp
currentClass.setUpClass()
File "[REMOVED]\odoo\odoo\tests\common.py", line 1076, in setUpClass
cls.startClassPatcher(cls._crypt_context_patcher)
File "[REMOVED]\odoo\odoo\tests\common.py", line 443, in startClassPatcher
mock = patcher.start()
File "C:\Apps\Python312\Lib\unittest\mock.py", line 1624, in start
result = self.__enter__()
File "C:\Apps\Python312\Lib\unittest\mock.py", line 1581, in __enter__
setattr(self.target, self.attribute, new_attr)
File "[REMOVED]\odoo\odoo\tests\common.py", line 985, in metamodel_setattr
_logger.runbot(
File "[REMOVED]\odoo\odoo\netsvc.py", line 376, in runbot
self.log(logging.RUNBOT, message, *args, **kws)
```
### Desired behavior after PR is merged:
The test suite runs without problems on Windows.
Btw, it would probably be better to use `pathlib` instead as a general improvement for all places in the code where local paths are being handled, but that's out of scope here now.
---
- [x] I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#283210Invoice PDFs for Guatemala and Uruguay now show the correct identification label based on the customer’s selected document type. This prevents confusion when customers use an identification type other than the default VAT number label.
Original PR description
Currently invoice reports use the label related to the company's country for the partner's vat number, however in the case of latin america countries, a new field l10n_latam_identification_type_id is…
Currently invoice reports use the label related to the company's country for the partner's vat number, however in the case of latin america countries, a new field l10n_latam_identification_type_id is added to partners that allows the use of different identification types. This results in invoice reports showing the identification number next to an incorrect label. This commit fixes the issue for Guatemala and Uruguay by overriding the vat label in their respective invoice template to match the selected identification type. Steps to reproduce: - Install a latam localisation (Uruguay or Guatemala) - Change company to that country's Company - Create a partner located in said country, ensure the identification number is set to something else than the default one - Create an invoice for the partner, confirm it, and then Send it - In the pdf generated for the invoice you will see that under the partner's address the "vat number" has the wrong label opw-6087359 related to: https://github.com/odoo/odoo/pull/260159 Forward-Port-Of: odoo/enterprise#122512
On mobile devices, opening a full-screen image preview now hides the editor toolbar so the preview controls are accessible. This improves the editing experience by preventing overlapping controls and also dismisses the mobile keyboard when the preview opens.
Original PR description
When displaying the full screen image preview lightbox on mobile, the toolbar remains displayed. Because of this, the toolbar of the lightbox cannot be accessed. This commit hides the toolbar when a lightbox is displayed. task-6370220 Forward-Port-Of: odoo/odoo#274949
The Send to eTransport action is now available when a Romanian stock transfer is ready as well as when it is completed. This helps users submit required transport information at the appropriate stage without waiting for the transfer to be marked done.
Original PR description
Currently, the Send to eTransport button on `stock.picking` is only visible when picking is done. This PR fixes this behaviour and makes it visible when picking is ready or done both. task-5930984 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#257321
Blog text formatted as bold now appears clearly heavier, even when the surrounding text uses a light font style. This helps editors and readers see emphasized content as intended across different fonts.
Original PR description
Problem: When a parent element applies a `font-weight: 300` to its content, a child `<strong>` tag defaults to `font-weight: bolder`, which resolves to a computed font weight of `400`. For certain font families, weight `400` is visually identical to `300`, leaving no visual distinction for bold text. Cause: `<strong>` tags relied on relative weight boosting (`bolder`), which only increases the parent weight from `300` to `400` instead of applying explicit bold weight. Solution: Explicitly set `font-weight: bold` on `strong` for `.o_wblog_read_text` Steps to reproduce: - Go to /blog - Open any blog - Open editor. - Select some text from the content of the blog. - Apply Bold. - Observe that there is no visual difference. opw-6460699 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#282667
Code cleanup and technical improvements
The accounting test suite was tidied by removing duplicate helper code and obsolete commented-out tests. This does not change product behavior, but it makes future maintenance safer and easier for development teams.
Original PR description
This commit cleans up the test suite within the `account_accountant` module by removing redundant methods and old commented code. no-task