Friday, December 8, 2023
25 changes · 17.0
Enhancements to existing features
Brazilian customers are now required to provide their tax identification information during checkout and when updating their online account. The forms also include a clearer identification type field and improved Portuguese labels so customers better understand what information to enter.
Original PR description
At the moment, there are two possible flows to modify the personal information of the user. Either during the first checkout (website_sale) or by modifying the information on the account present on the website (portal). For both of these flows, when the client and the website are Brazilian, the input for the VAT must be required. This commit will override the corresponding function to make the input required under these conditions. Also, we have added a new field on the two forms. Just before the vat input, we can now find the l10n_latam_identification_type_id. Also adding some translation because client from brazil may not know what "VAT" is. task: 3576516 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update makes payslip state labels visible in the time off form view, improving clarity for users. The change adds a configurable option that allows administrators to show or hide state labels as needed, making the interface more flexible and user-friendly.
Original PR description
Description : payslip state label description was not visible inside form view of timeoff Improvement: after adding widget payslip state label description is made visible. taskID:3475416
This update enhances the report creation and editing experience by showing a placeholder at the original location when users drag elements. This makes it clearer where elements came from and improves the overall usability of the report builder interface.
Original PR description
With this commit, when dragging an element on the creation/edition of a report, it will keep a placeholder at the original place. To do that, we keep a copy of the element that is being dragged. The copied element is sanitized which means that we remove all attributes that could create a conflict with any other element. Task-id 3582082
This update improves the Human Resources modules by adding missing helper messages and refining existing ones across payroll, contracts, and referral features. These enhancements make the HR system more user-friendly by providing clearer guidance and better messaging throughout the application.
Original PR description
Change adds missing helpers and alters some of their messages in differents parts of HR apps. task-3522163 Forward-Port-Of: odoo/enterprise#52079 Forward-Port-Of: odoo/enterprise#50490
This update enhances how taxes are automatically detected when invoices are imported electronically (EDI). Previously, the system would retrieve the same tax repeatedly without considering user modifications. Now it uses historical invoice data to predict and apply the most accurate tax for each import, resulting in better accuracy and fewer manual corrections needed.
Original PR description
The aim of this commit is to improve the quality of the tax retrieving of the edi import. Context: The tax prediction happens when the invoice is given manually or with the OCR but doesn't happen when it's imported by EDI because the tax is already set by the OCR. Before this commit: During EDI import, the tax retrieved could always be the same even if the user make some modification to the previous bill. After this commit: The tax retrieved leverage the previous data to get better quality result for tax retrievement. task-id: 3531473 Forward-Port-Of: odoo/enterprise#52326 Forward-Port-Of: odoo/enterprise#51929
Resolved issues and error corrections
This fix makes message history navigation in Odoo Mail more reliable when users load older or newer messages or jump back to the latest conversation. It reduces cases where scrolling, highlighting, or reused conversation views could leave the message list in an inconsistent state, improving day-to-day chat and discussion usability.
Original PR description
See comment in diff for rationale about the `isLoaded` change. Also highlighting message before jumping to present can conflict: some programatic scroll changes are prevented or delayed while there is a highlight, jumping to present should clear that. All "previous state" variables need to be reset when re-using the thread component after making a change that led to reloading the message list (such as a long jump). They are used to compare value before/after some changes, but when jumping, the state should be considered clean. `isJumpingRecent` is obsolete heuristics that has been replaced by better controlling scroll and visibility check. Extra `await` in `loadAround` makes no sense. It's the best guess to fix the following runbot issues. The error doesn't happen frequently enough to be a guaranteed fix. runbot-40592 runbot-48557
Long customer names no longer disrupt the Point of Sale screen layout. This keeps key controls like the numpad and mobile action buttons usable, improving checkout reliability for staff.
Original PR description
This PR fixes two issues that occur when a customer has a very long name within the `point_of_sale` module. task-3631878 1. If you create a customer with a very long name, this will cause the left…
This PR fixes two issues that occur when a customer has a very long name within the `point_of_sale` module. task-3631878 1. If you create a customer with a very long name, this will cause the left panel to extend, pushing the numpad to the right, making it out of use. To fix this issue, we add a `mw-50` class to the container, so that we limit its growth, and we validate the `text-truncate` class applied to the customer name. | 17.0 | 17.0-fix-pos-actionpad-width-chgo | | ------------- | ------------- | | <img alt="image" src="https://github.com/odoo/odoo/assets/128030743/37365f4c-32ba-4eba-a308-b34dfd559d20"> | <img alt="image" src="https://github.com/odoo/odoo/assets/128030743/6632aae0-21f4-48fa-8338-52fc0b43d582"> | 2. If you use the `point_of_sale` module on a mobile device, the buttons related to main actions such as refund, customer note, billing etc are wrapped into a `more` button. When you open that interface, if the name of the customer is too long, it will overflow the parent container and so generates an overflow. To fix that issue, we simply add a `text-truncate` class to the customer name to be sure it doesn't generate any overflow. | 17.0 | 17.0-fix-pos-actionpad-width-chgo | | ------------- | ------------- | | <img alt="image" src="https://github.com/odoo/odoo/assets/128030743/dfcbff9c-5763-429b-8fa3-fce7e4d68ab2"> | <img alt="image" src="https://github.com/odoo/odoo/assets/128030743/bb4c94bf-5cbf-4ae6-aa64-bbf6f80c6c86"> |
This update improves performance in Odoo's messaging features when loading or updating large recipient and follower lists. Users should experience faster response times in busy conversations and related contact-heavy workflows, with benchmarked test times reduced substantially.
This fix restores accurate date-based searching in the Point of Sale ticket screen. Staff can once again find past orders by date reliably, making ticket lookup and customer service smoother.
Original PR description
After commit https://github.com/odoo/odoo/commit/4c8fddd57029608bb616c2ff4761b7d41b674986 where `date_order` was transformed to DateTime. This modification eliminates the need for deserializeDateTime during the search process, ensuring accurate date-based search in the ticket screen. opw-3621659 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Duplicating a journal now creates or keeps a separate email alias for the new copy instead of changing the original journal's alias. This prevents copied vendor bill or sales/purchase journals from disrupting email routing for the original journal.
Original PR description
### Summary Currently duplicating a journal results in the new journal's mail alias name overwriting the original's. ### Steps to reproduce * install `account_accountant` * duplicate the "Vendor Bills" journal => you should see that the alias name of the new journal overwrites the alias of the original journal. ### Cause When duplicating a journal, the new journal inherits the alias of the original. Because of this, a specific code segment intended to generate missing aliases for sale/purchase journals, inadvertently modifies the existing alias instead of creating a new. opw-3597349
This fix improves how articles appear when shared on LinkedIn from Odoo. Previously, posts lacked the preview image and metadata that normally display when sharing links on LinkedIn, reducing engagement. Now Odoo automatically extracts page information and uploads thumbnail images to LinkedIn, making posts look more professional and attractive to viewers.
Original PR description
Purpose ======= When we share an article on LinkedIn, a preview of the page is displayed. If we post the same article from Odoo, the preview is not displayed, which has an impact on how much engagement the post will get. Task-3594550
This fix resolves an issue where creating a new workspace from the project settings would open the wrong form view. The Documents module had multiple form views with the same priority, causing the system to load an incorrect deletion form instead of the creation form. The fix ensures the correct workspace creation form is displayed when users select the 'create and edit' option.
Original PR description
**Steps to reproduce** 1. Open project. 2. Configuration > Project 3. Open any project > Setting tab 4. Try to create a new workspace with the 'create and edit' option. **Issue** Opening the form view of 'documents.folder' model from another model by 'create and edit' option or through the internal link loads a secondary form view which is used for folder deletion. **Technical** The commit https://github.com/odoo/enterprise/commit/2254eb07fd42ec88341d9d7ac92f09a379c6fa55 introduced a new form view for workspace deletion in 'document.folder' model. But the sequence of form views is the same, so the form views are sorted alphabetically by name, causing the first one to be loaded. **After this PR** The correct form view is loaded for 'document.folder'. Task-3575307
This update corrects the CNSS (National Social Security Fund) contribution calculation rules for Morocco to align with current legal requirements. The payroll system now accurately calculates employee and employer social security contributions according to the official CNSS rate tables, ensuring compliance with Moroccan labor law and reducing payroll processing errors.
Original PR description
Update of CNSS rule to follow the law : https://www.cnss.ma/fr/content/paiement-de-vos-cotisations-sociales paragraph : Barèmes et taux de cotisation Add some tests about this issue task : 3498945 Forward-Port-Of: odoo/enterprise#52028 Forward-Port-Of: odoo/enterprise#49741
This fix resolves a problem where duplicating a SendCloud shipping carrier would incorrectly link shipping products to multiple carriers instead of just one. Previously, when duplicating a carrier and loading SendCloud shipping products, the original carrier's products would be deleted. Now, shipping products are properly excluded from duplication, ensuring each carrier maintains its own independent set of products.
Original PR description
send cloud shipping products, records created automatically and that should be linked to only one carrier are linked to two carriers if we use the duplicate button. **steps to reproduce:** - configure a sendclound carrier (carrier A) - duplicate it (carrier B) - on B, click on "Load your SendCloud shipping products" **before this commit:** - On A, sendcloud shipping product is deleted. This is because of https://github.com/odoo/enterprise/blob/2fcc1224915301b4cbd1c582a319d37961d1120f/delivery_sendcloud/wizard/sendcloud_shipping_wizard.py#L60 **after this commit:** - sendcloud products are not copied when using copy(). Adding an api.constrains on top of that to ensure that a sendcloud product is not used on another carrier seems overkill. opw-3573247 Forward-Port-Of: odoo/enterprise#51301
A bug in the Point of Sale customer display feature has been fixed. The system was incorrectly trying to call a function from the wrong location, which prevented the customer display from working properly. This fix ensures the customer display operates as intended by calling the function from the correct system component.
Original PR description
After commit 5adeb7f the function `customerDisplayHTML` was called on `this`, which is wrong, as it was not defined on the current context, but rather on the `pos_store`. As such, in this commit we fix the issue by correctly calling the function. Forward-Port-Of: odoo/enterprise#52150
This fix prevents taxes and tax groups from being reassigned to a different country when a company's fiscal country is changed. Previously, changing the fiscal country would incorrectly move all taxes to the new country and erase related custom field data, forcing users to reload the entire chart template. Now, taxes remain tied to their original country since they are specific to a single country's chart template.
Original PR description
The computation of the country_id of account.tax & account.tax.group no longer depends of the fiscal country of the company. Forward-Port-Of: odoo/enterprise#51590 Forward-Port-Of: odoo/enterprise#51286
A formatting error in the Spanish translation file for the Mexico EDI Stock module was causing the system to crash when reading translations. This fix corrects a missing space in the translation file that was accidentally removed during a recent update, restoring normal operation.
Original PR description
Currently, a log error is occurring from [1] due to not added space after 'msgstr' in the 'es_419.po' file. This is because the recently refactored code https://github.com/odoo/enterprise/pull/52141…
Currently, a log error is occurring from [1] due to not added space after 'msgstr' in the 'es_419.po' file. This is because the recently refactored code https://github.com/odoo/enterprise/pull/52141 updated translations but removed space from [1].
Stack Trace:
```
KeyError: ('ir.http', <function IrHttp.get_web_translations_hash at 0x7f1bdaeb8dc0>, frozenset({'stock', 'l10n_mx_edi_stock_extended', 'sale_planning', 'l10n_mx_xml_polizas', 'stock_account_enterprise', 'sale_timesheet_enterprise', 'hr_skills_survey', 'timer', 'spreadsheet_dashboard_sale_timesheet', 'spreadsheet_dashboard_account_accountant', 'saas_trial', 'digest_enterprise', 'rating', 'currency_rate_live', 'gamification', 'auth_totp', 'barcodes_gs1_nomenclature', 'google_gmail', 'project_enterprise', 'l10n_mx_re...
File "odoo/tools/cache.py", line 99, in lookup
r = d[key]
File "<decorator-gen-5>", line 2, in __getitem__
File "odoo/tools/func.py", line 87, in locked
return func(inst, *args, **kwargs)
File "odoo/tools/lru.py", line 34, in __getitem__
a = self.d[obj]
OSError: Syntax error in po file (line 314)
File "odoo/tools/translate.py", line 1617, in _get_code_translations
p = CodeTranslations._read_code_translations_file(fileobj, filter_func)
File "odoo/tools/translate.py", line 1604, in _read_code_translations_file
reader = TranslationFileReader(fileobj, fileformat='po')
File "odoo/tools/translate.py", line 589, in TranslationFileReader
return PoFileReader(source)
File "odoo/tools/translate.py", line 644, in __init__
self.pofile = polib.pofile(source.read().decode())
File "polib.py", line 130, in pofile
return _pofile_or_mofile(pofile, 'pofile', **kwargs)
File "polib.py", line 78, in _pofile_or_mofile
instance = parser.parse()
File "polib.py", line 1428, in parse
raise IOError('Syntax error in po file %s(line %s)' %
```
This PR fixes the above issue by adding space after 'msgstr' at [1].
[1]-https://github.com/odoo/enterprise/blob/8351e902b9c7ae25b37ba89cc6b75e5da1736e42/l10n_mx_edi_stock/i18n/es_419.po#L314
sentry-4704027071This update increases the character limit for invoice line descriptions in Colombian electronic invoices from the previous limit to 300 characters, in compliance with Carvajal specifications. This allows customers to include more detailed product and service descriptions in their PDF invoices without hitting character restrictions.
Original PR description
According to Carvajal [specifications](https://docs.google.com/spreadsheets/d/10xf3OsECA5R-6XrwMG0Jnt1iXKYMcL-f/edit#gid=530744640&range=G364) the fields "Descripción" and "Información Adicional" can have up to 300 characters. This change lets customers create PDF documents with longer descriptions in their invoice lines.  opw-3562855 Forward-Port-Of: odoo/enterprise#49525
This update corrects the structure and formulas in Slovenia's Balance Sheet and Profit & Loss reports to comply with official Slovenian Accounting Standards. The changes reorganize how retained earnings and unaffected earnings are presented, and fix calculation errors in five key report lines to ensure the Balance Sheet balances correctly.
Original PR description
At the moment, Unaffected Earnings is a sub-line of line VII. Carried forward net loss, which doesn't make any sense if the unaffected earnings are profits.
In addition, separating profits and losses is inconsistent with the official balance sheet of the Slovenian Accounting Standards (see task for link.)
This commit therefore re-does the Retained Earnings / Current Year Earnings section, to just keep 4 lines:
VI. Transferred net profit or loss
VI.1 Retained Earnings / Carried forward net loss
VI.2 Unaffected Earnings
VII. Net profit or loss for the financial year
In addition, we fix the formulae of lines 3, 10, 15, 19 and 20 of the P&L to ensure that the Balance Sheet is balanced. This can be tested using the Balance Sheet diagnosis tool in #36838.
taskid: 3624482
Forward-Port-Of: odoo/enterprise#52060This update removes problematic demo data from the US 1099 tax module that was causing balance discrepancies between the dashboard and bank reconciliation views. The demo bank statement was created before the account's initial balance, leading to incorrect financial information being displayed. Removing this data resolves the inconsistency while maintaining sufficient demo data for testing purposes.
Original PR description
Demo data of l10n_us_1099 used to create a bank statement that was before the initial balance of `account` demo data which it relies on. This caused inconsistencies in the balance shown in the dashboard and the balance shown in the bank reco widget. We remove this statement as anyway there are already enough data provided with the accounting module. task-id: 3619563 Forward-Port-Of: odoo/enterprise#52309
This update resolves migration failures that occurred when upgrading databases using Greek or Irish localization packages. The issue was caused by the system attempting to set default accounts for deferred revenue and expenses that didn't exist in the chart of accounts. The fix ensures these accounts are only set when they are actually available, allowing migrations to complete successfully.
Original PR description
Resolves a `ValueError` occurring during migration when the database includes either the l10n_gr_reports or l10n_ie_reports. The cause of the issue is that it sets default accounts for deferred revenue and expenses, but these specific accounts are missing since the COA is never updated. The provided solution simply set these accounts if they exist. The issue occurs since major changes in these localization packages in saas-16.4. task-3629902 Forward-Port-Of: odoo/enterprise#52312
This fix resolves an error that occurred when trying to assign a user to a batch transfer in the barcode scanning interface. The issue happened because the system was missing required company information when validating the user assignment. Users can now successfully assign themselves or others to batch transfers without encountering errors.
Original PR description
Steps to reproduce: 1. From Inventory - > Select multiple transfers 2. Add them to a new batch without assigning 3. Open barcode -> Batch Transfer 4. Click + assign 5. Error Bug: check company is set on user_id in stock.picking which implicitly adds a domain for company_id (on res.user) but in this case company_id is missing from the evalContext opw-3609045 Forward-Port-Of: odoo/enterprise#52048
This update fixes an issue where shipping requests to SendCloud would fail if a customer's company name exceeded 50 characters. The system now automatically truncates longer company names to meet SendCloud's requirements, allowing shipments to process smoothly regardless of company name length.
Original PR description
Steps to reproduce: Create a shipping in sendcloud, to a contact that has a company name longer than 50 characters. Error: `"company_name":["Ensure this field has no more than 50 characters."]` This commit truncates the company name to ensure it works with longer names. opw-3627831 Forward-Port-Of: odoo/enterprise#52325 Forward-Port-Of: odoo/enterprise#52311
This fix resolves a data synchronization issue in the Account Follow-up module where property information wasn't being properly saved to the database before being used in reports. The fix ensures that follow-up line status and multiple invoice tracking tests pass correctly by properly flushing data at the right time.
Original PR description
In the community PR, we avoid calling `flush_all()` when adding no-default `ir.property`. But it means that we need to flush properly when the ir_property table is used in a cr.execute to pass the `test_followup_line_and_status` and `test_followup_multiple_invoices` tests. https://github.com/odoo/odoo/pull/145171 Forward-Port-Of: odoo/enterprise#52291 Forward-Port-Of: odoo/enterprise#52207
This fix corrects an issue where helpdesk ticket emails were displaying the internal ticket ID instead of the customer-friendly ticket reference number. Now customers will see the correct ticket reference in their email notifications, making it easier to track and reference their support requests.
Original PR description
Before this commit ticket reference on new_ticket_request_email_template was the ID of the helpdesk ticket, and not the ticket reference. this commit corrects that mistake. opw-3580532 Forward-Port-Of: odoo/enterprise#51257