Daily updates from Odoo
Tuesday, September 16, 2025
233 changes
4 changes
Resolved issues and error corrections
This update prevents an error in the Mail app when empty values are included while looking up email records. It improves reliability by safely ignoring invalid empty entries before processing them.
Original PR description
Browse breaks when given a bool, so the solution is to filter the list from false values before browsing --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#225916
This change removes a broken upgrade step that could stop some databases from moving from version 18.3 to 18.4 or later when salary contract features were installed. The related data update is handled earlier in the correct HR upgrade process, helping upgrades complete reliably.
Original PR description
The `hr_contract` table is renamed to `hr_version` as part of the https://github.com/odoo/upgrade/blob/3bea30d1fd0cd202006da4ad11e00e283cbc78d0/migrations/hr/saas~18.4.1.1/pre-migrate.py#L29, script,…
The `hr_contract` table is renamed to `hr_version` as part of the https://github.com/odoo/upgrade/blob/3bea30d1fd0cd202006da4ad11e00e283cbc78d0/migrations/hr/saas~18.4.1.1/pre-migrate.py#L29, script, which is executed before any `hr_contract_salary` script, including module ones. As a result, any database from 18.3 to 18.4+ with `hr_contract_salary` < 2.1 will run into:
```
Traceback (most recent call last):
File "/home/odoo/src/odoo/saas-18.4/odoo/service/server.py", line 1410, in preload_registries
registry = Registry.new(dbname, update_module=update_module, install_modules=config['init'], upgrade_modules=config['update'])
File "<decorator-gen-6>", line 2, in new
File "/home/odoo/src/odoo/saas-18.4/odoo/tools/func.py", line 89, in locked
return func(inst, *args, **kwargs)
File "/home/odoo/src/odoo/saas-18.4/odoo/orm/registry.py", line 175, in new
load_modules(
File "/home/odoo/src/odoo/saas-18.4/odoo/modules/loading.py", line 455, in load_modules
load_module_graph(
File "/home/odoo/src/odoo/saas-18.4/odoo/modules/loading.py", line 181, in load_module_graph
migrations.migrate_module(package, 'pre')
File "/home/odoo/src/odoo/saas-18.4/odoo/modules/migration.py", line 220, in migrate_module
exec_script(self.cr, installed_version, pyfile, pkg.name, stage, stageformat[stage] % version)
File "/home/odoo/src/odoo/saas-18.4/odoo/modules/migration.py", line 257, in exec_script
mod.migrate(cr, installed_version)
File "/home/odoo/src/enterprise/saas-18.4/hr_contract_salary/upgrades/saas~18.3.2.1/pre-unarchive-partially-signed-offers.py", line 4, in migrate
cr.execute(
File "/home/odoo/src/odoo/saas-18.4/odoo/sql_db.py", line 426, in execute
self._obj.execute(query, params)
psycopg2.errors.UndefinedTable: relation "hr_contract" does not exist
LINE 4: FROM hr_contract c
^
```
As a fix, the query is moved into the `hr` script mentioned above.
see: https://github.com/odoo/upgrade/pull/8466
opw-5071923
upg-3121357
tbg-2136Italian split payment taxes now show the correct label in the Taxes column on PDF documents instead of appearing like standard taxes. This helps businesses produce clearer, more accurate tax documents for customers and compliance review.
Original PR description
Split payment taxes were not labelled correctly in the PDF's "Taxes" column, they were labelled as standard taxes. <img width="1214" height="598" alt="image" src="https://github.com/user-attachments/assets/f1ea57bd-9a7f-460f-8c81-6a89585ba6d8" /> Forward-Port-Of: odoo/odoo#227284 Forward-Port-Of: odoo/odoo#226366
Renamed spreadsheets now keep their updated name when users create another spreadsheet and navigate back through the breadcrumb. This prevents confusion from previously renamed spreadsheets appearing as untitled.
Original PR description
Steps to reproduce: - Create a spreadsheet - Rename it to "My awesome spreadsheet" - Click on File -> New - Go back to "My awesome spreadsheet" from the breadcrumb => The spreadsheet is untitled. This was caused by the fact that the name was not saved in the local state of the action. Task: 4942117 Forward-Port-Of: odoo/enterprise#93163
3 changes
Resolved issues and error corrections
This update prevents the mail system from trying to process empty or invalid entries that could cause an error. It improves reliability in mail-related workflows without changing how users interact with the system.
Original PR description
Browse breaks when given a bool, so the solution is to filter the list from false values before browsing --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#225916
Renamed spreadsheets now keep their chosen name when users create another spreadsheet and return using the breadcrumb. This prevents confusion from previously renamed spreadsheets appearing as untitled.
Original PR description
Steps to reproduce: - Create a spreadsheet - Rename it to "My awesome spreadsheet" - Click on File -> New - Go back to "My awesome spreadsheet" from the breadcrumb => The spreadsheet is untitled. This was caused by the fact that the name was not saved in the local state of the action. Task: 4942117 Forward-Port-Of: odoo/enterprise#93163
This fix ensures linked record fields show long text with a proper ellipsis instead of overflowing or causing alignment issues. It improves readability and layout consistency in forms such as the employee private information section.
Original PR description
The text-truncate bootstrap class of the m2o field does not work properly as the ellipsis is not visible and create an alignment issue with the private_state_id field. This PR solves this issue which can be seen in the "Private information" tab of the employee form. Task-5078736
1 change
Resolved issues and error corrections
Fixed an issue where a renamed spreadsheet could appear as untitled after creating a new spreadsheet and returning through the breadcrumb. This keeps navigation labels accurate and reduces confusion when users work with multiple spreadsheets.
Original PR description
Steps to reproduce: - Create a spreadsheet - Rename it to "My awesome spreadsheet" - Click on File -> New - Go back to "My awesome spreadsheet" from the breadcrumb => The spreadsheet is untitled. This was caused by the fact that the name was not saved in the local state of the action. Task: 4942117 Forward-Port-Of: odoo/enterprise#93163
20 changes
Resolved issues and error corrections
This fixes a saving issue in the website editor where multiple edits inside the same page element could be saved at the same time and create duplicate content. Product page edits such as text added near plus and minus icons now save in the correct order, reducing visible duplication for users.
Original PR description
The default groupBy is on a unique ID. Because of this, when several changes need to be saved inside a single element, they get saved in parallel. This commit makes the default groupBy the actual default which combines model, record id and field, and sequentializes all saves within a single group. Steps to reproduce: - Go to a product page - Edit - Add text along the "+" icon - Add text along the "-" icon - Save => The "+/-" icons became duplicated - because saving each of them did create a distinct copy-on-write version of the template. task-4367641 Forward-Port-Of: odoo/odoo#224450
This fixes an accounting issue where a credit note could display PDF attachments from a reconciled invoice in its chatter. Reconciled document attachments will now appear only in the bank reconciliation widget, keeping standard accounting records cleaner and less confusing.
Original PR description
Problem --------- In odoo/enterprise#85991, attachments from reconciled moves were displayed in the chatter along side the moves' attachments. This change was meant to affect only the bank reco widget. However, its scope reached the standard accounting behavior. STEPS --------- 1. Have 'account' installed 2. Create a move 3. Confirm and create the PDF attachment from the Send&Print 4. Create a credit note from it 5. Confirm the credit note -> The 2 moves are now reconciled and the PDF of the invoice is shown in the chatter of the credit note Objective --------- Only show reconciled moves' attachments in the bank reco chatter. Solution --------- Add a context key that is added when the Bank Reco widget is created and remove it when it is deleted. opw-####### Forward-Port-Of: odoo/enterprise#94442
Odoo Studio now shows the correct measure choices when configuring cohort views, preventing users from selecting incompatible fields that caused errors. The update also removes an unnecessary background parameter that produced warnings when creating new views.
Original PR description
Currently, an error occurs when user tries to select any measure in cohort view. Steps to replicate: - Install `sale_management` and `web_studio`. - Open the Sales app and turn on studio mode. -…
Currently, an error occurs when user tries to select any measure in cohort view. Steps to replicate: - Install `sale_management` and `web_studio`. - Open the Sales app and turn on studio mode. - Under the Views tab, turn on cohort view. - Under the Measures field, select any value and observe the error appearing in the terminal. Error: `ValueError: Invalid aggregate method 'None' for 'create_date:None'` Cause: - The Measure field dropdown in the Cohort Editor was mistakenly assigned the choices of `dateFields` [1] instead of `measureFields`. - This allowed users to select incompatible field types (e.g., date/datetime), which lead to error in aggregation behavior in the cohort view. Solution: - Corrected the choices of Measure field to `measureFields`. - Also added a condition to allow only those fields that have an aggregator (for some fields like `sequence` that dont have an aggregator). - Also removed context field from arguments [2] in the rpc call as function doesnt need it [3] (This shows warning on runbot as well). [1]: https://github.com/odoo/enterprise/blob/d8539dff5f3dcecfeb99fd7fc22a6915aaa02c4b/web_studio/static/src/client_action/view_editor/editors/cohort/cohort_editor_sidebar.xml#L30 [2]: https://github.com/odoo/enterprise/blob/bf9510e152279418200cb0becb6b637c19b02d4e/web_studio/static/src/client_action/editor/new_view_dialogs/new_view_dialog.js#L87 [3]: https://github.com/odoo/enterprise/blob/bf9510e152279418200cb0becb6b637c19b02d4e/web_studio/controllers/main.py#L805 sentry-6781792463 Forward-Port-Of: odoo/enterprise#94450 Forward-Port-Of: odoo/enterprise#91599
The Documents app now consistently shows the Activities button in the chatter panel for every document, including files linked to other apps such as Sign. This prevents users from missing activity tracking options when reviewing document details.
Original PR description
Step to Reproduce: - Install `Documents_sign` module - open Documents - click on 'info & tags` button on the top right corner to show chatter - Open 'Odoo CLA.pdf' document Observation: - The Activities button is not shown in Chatter. Issue: - after this https://github.com/odoo/enterprise/commit/a32825ee00f2b330d99113f4d8c1488903fe744e, the activities button shows only for those documents which are related to `documents.documents` model or a document has no model, but it should be shown for all documents https://github.com/odoo/enterprise/blob/23fb26ae0f91a5bdb74d0d4fce48b31fa7abef86/documents/static/src/views/kanban/documents_kanban_renderer.xml#L21-L26 Solution: - Remove condition for Kanban and list view to show `activities` button in Chatter opw-5013427 Forward-Port-Of: odoo/enterprise#94514 Forward-Port-Of: odoo/enterprise#93093
This fix ensures Sign templates created from business records, such as sales orders, only offer fields that match the referenced document. It also prevents templates from being tied to one document type when they contain incompatible fields, reducing setup errors and crashes.
Original PR description
Before this commit, when a new template was created from a mail thread record, the reference doc was not used to filter out the fields to display. it would prevent to drag and drop sale.order fields even if the template was created from the sale application. task-5085468
Stamp fields in the Sign app are now editable during signing, so users can correct or update stamp details before completing a document. Stamp text also displays cleanly in preview mode without unwanted spacing, improving document readability and presentation.
Original PR description
Version: - 19.0 Steps to reproduce: - Install the Sign app - Upload a PDF - Drag and drop a stamp field - Try to sign → the stamp is read-only and cannot be changed Issue: - The stamp field is readonly, so users can’t edit it when signing. Fixes: - Removed the constant value and the class that made the stamp field read-only. - Now, users can edit the stamp field normally. task-5082755
FedEx Home Delivery shipments can now generate return labels without triggering a recipient address error. The fix ensures FedEx receives the required residential address information, reducing failed delivery validation for affected shipments.
Original PR description
**PROBLEM** When selecting FedEx Home Delivery service, and enabling the return label generation, we got the error `RECIPIENT.ADDRESS.ERROR`. **STEPS TO REPRODUCE** 1. Install delivery_fedex_rest (use the new fedex credentials). 2. On the FedEx US shipment method (demo data) select FedEx home delivery service, and check the `Generate Return Label` option. 3. Create a SO, add shipping with FedEx US, validate the SO. 4. Validate the delivery order, and notice the FedEx API return an error. **CAUSE** For Home Delivery Service, the recipient address need to have the `residential` flag set to true. In `_return_package()`, the request sent doesn't include this flag, leading to an error. **FIX** Fix `_return_package()` query to include the `residential` flag. opw-4939065 Forward-Port-Of: odoo/enterprise#94463
This fix prevents errors when Odoo is displayed inside restricted embedded pages, such as live chat widgets. It improves reliability by checking access before reading parent window information, avoiding crashes caused by browser security restrictions.
Original PR description
This [commit] introduced a cross-origin/sandbox access violation. `window.top` properties must never be accessed without guarding. Known issue: embedded livechat. [commit]: https://github.com/odoo/odoo/commit/27a85d650dee8345a4ec701bf7456eec07851718 task-5083154 Forward-Port-Of: odoo/odoo#227120
Deleting a message that includes a link preview now automatically removes the related preview as well. This prevents leftover previews from cluttering conversations and removes the need for manual cleanup.
Original PR description
**Specifications:** - Ensure link preview is removed when deleting a message. **Purpose:** - Previously, deleting a message with a link preview did not remove the preview, requiring manual intervention. - This fix ensures that when a message containing a link preview is deleted, its associated preview is also removed automatically, improving user experience. task-4678962 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#226971 Forward-Port-Of: odoo/odoo#204930
Fixed an issue where live survey participants could encounter an error when clicking the Results button after completing a scored survey. This keeps the survey flow stable and lets users view results as expected.
Original PR description
How to reproduce: - Create a live survey with one scored question - Do a live survey with one participant - At the end of the survey, click on "Results" button There is an error. We solve the problem by reading the event to determine if the result should be displayed or not at the top of the method as it is modified later (by waitFor on orm call as observed). Task-5090443
Website forms now correctly block uploads that exceed the file size limit set by the website editor. This prevents oversized files from being submitted and gives users a clear error before upload.
Original PR description
Steps to Reproduce: - Open the website module. - Drop a basic form snippet. - Change the field type of any field to 'File Upload'. - Set the 'Max File Size' to any value other than the default (1 MB) and save the changes. - Attempt to upload a file larger than the specified maximum file size. It has been observed that a file larger than the allowed size is successfully uploaded, which is incorrect behaviour. Before this commit: The maximum file size limit was stored as a string. As a result, comparisons faile,d and files larger than the configured limit could still be uploaded, causing invalid submissions. After this commit: The maxFileSize value is now parsed as an integer before comparison. The file size restriction works as expected: files larger than the defined limits are blocked upfront with a clear error. Forward-Port-Of: odoo/odoo#223865
The Time Off request form no longer shows an extra date range toggle when employees choose leave dates. This prevents confusion and keeps the date selection experience consistent with the intended workflow.
Original PR description
Before this commit the ´o_toggle_range´ button was shown in the picker due to the following rule:
´´´
showRangeToggler:
this.relatedField && !this.props.required && !this.props.alwaysRange
´´´
As we can see, the button does not appear when the field is required. However, in this case, the `request_date_from` field was not always required, which is why the button appeared.
To fix this issue, we now force it to be hidden by using `alwaysRange`.
task-5085529
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-prThis fixes which payment action button appears when a new partner is created from bank reconciliation. The system now uses the statement amount to choose the correct button, avoiding confusing payable options for partners without customer or supplier history.
Original PR description
When creating a new partner from the set partner button, the partner doesn't have any rank (supplier or customer), this lead to have the payable button to be displayed since the condition to have it is to have a partner and not (customer_rank > supplier_rank). Since supplier rank and customer rank are 0 it will be False which lead to the button to be displayed. no task id Forward-Port-Of: odoo/enterprise#90435
Moving documents to folders previously visited by the same members no longer removes those members' access. This prevents unexpected loss of document visibility and helps teams keep permissions consistent during folder reorganization.
Original PR description
When moving documents with members to a folder which has been visited by those same members (or some of them) they are removed from those documents access. This is caused by the document.access which has an entry for the members but with a null role. Task-5075196 Forward-Port-Of: odoo/enterprise#94684 Forward-Port-Of: odoo/enterprise#94149
This fix ensures selected website color palette names are saved in the expected format. It helps prevent theme customization issues caused by incorrectly stored palette settings.
Original PR description
Since the refactoring, the `color-palettes-name` value is not surrounded by quotes in the `user_values.scss` anymore. This commit restores the quotes upon selection. task-4367641 Forward-Port-Of: odoo/odoo#224425
Users who manually open additional kanban columns will now see those columns restored when they leave and return to the view. This prevents an error screen and keeps the workspace consistent with the user’s previous choices.
Original PR description
[FIX] web: Fix opened groups of web_read_group This commit fixes an issue where groups manually opened by the user were not correctly restored, leading to a traceback. Steps to reproduce: In a kanban views, when we have already 10 columns opened automatically and others closed ones: - Manually open a closed group after the first 10 opened groups. - Navigate to another view. - Return to the kanban view. We got a traceback: `TypeError: can't access property "map", data.records is undefined` The `web_read_group` function does not reopen the manually opened group when the `MAX_NUMBER_OPENED_GROUPS` limit has been reached. The web client does not handle this case gracefully, as it expects the manually opened group to still be opened. Solution: Manually opened groups should remain open regardless of the `MAX_NUMBER_OPENED_GROUPS` limit. This approach is more functionally sound and aligns with the behavior the web client expects. Forward-Port-Of: odoo/odoo#227225
Studio now requires users to choose a related record type when creating AI-powered relationship or tag fields. This prevents incomplete setup from causing crashes and gives users a clear visual warning before they continue.
Original PR description
When adding an AI field of type Many2one or Tags, the Relation field was optional. If left empty, it caused a crash. This commit enforces that a Relation must be selected before confirming the dialog: - Add a red highlight if Relation is missing - Prevent field creation by returning early Task-5055796 Forward-Port-Of: odoo/enterprise#93873
Opening the duplicate transaction wizard directly no longer causes an error when no accounting journal is linked. This prevents an unexpected crash and makes the accounting workflow more reliable for users who access the view outside the usual path.
Original PR description
Currently, an error occurs when users try to open the view directly. Steps to reproduce: --- - Install `Accounting` module - Using Open View, Open `account.duplicate.transaction.wizard` view Traceback: --- `ValueError: Expected singleton: account.journal()` This error occurs because no account journal is linked to the wizard at [1], resulting in an empty `account.journal`. [1]- https://github.com/odoo/enterprise/blob/08564f3312c255f2f3ab95cef5a9bfc57727bd1f/account_online_synchronization/wizard/account_journal_duplicate_transactions.py#L32 sentry-6812500330 Forward-Port-Of: odoo/enterprise#94538
Branch companies can now confirm sales orders that use loyalty programs from their parent company without hitting an access error. This ensures loyalty history is recorded correctly and avoids blocking sales in multi-company setups.
Original PR description
If you have a company parent with loyaltly programs and you try to confirm a sale order from a child company, an access error will be raised. Steps to reproduce: ------------------- * Create a…
If you have a company parent with loyaltly programs and you try to confirm a sale order from a child company, an access error will be raised. Steps to reproduce: ------------------- * Create a loyalty cards program * Set company to the current company * Create a branch company for the current one * Switch to branch company * Create a sale order, no need to add products, just a partner * Try to confirm the order > Observation: Access Error: > Sorry, Mitchell Admin (id=2) doesn't have 'create' access to: > -History for Loyalty cards and Ewallets (loyalty.history) Why the fix: ------------ Here's where the access error is being triggered: https://github.com/odoo/odoo/blob/35ea3dcb2eeb379c8b1127f0c7b42191853c0bd2/addons/sale_loyalty/models/sale_order.py#L106 Branches currently have access to the discounts & loyalty programs from the parent company, we extend the access to include loyalty history. Another solution could be to create the loyalty history using sudo() if the coupon's program id is a parent of the current company. opw-5055999 Forward-Port-Of: odoo/odoo#226226
Forum users editing their profile will now see biography content rendered properly instead of seeing visible HTML tags. This makes profile editing clearer and prevents confusion when existing formatted biographies are opened.
Original PR description
Currently, when opening the dialog to edit the user profile in Forum, the biography field is shown as raw text and displays the HTML tags instead of rendering them. Steps to reproduce the issue: 1. Open a forum 2. Click on your avatar to open your profile (/profile/user/<user_id>) 3. Click on the "EDIT PROFILE" button => The biography is displayed as text while it should be rendered as HTML Since this [fix], the editor renders markup as HTML and strings as text. To ensure that the profile dialog correctly renders the field, we now convert the field value into markup so that the editor interprets and renders the HTML properly. [fix]: https://github.com/odoo/odoo/commit/560fca7e94b232a7e2c9ad452a9772367c34204b task-5005880
5 changes
Resolved issues and error corrections
PDF reports for vendor bills and expense sheets now correctly handle attachments stored as web links or in cloud storage. This prevents report generation errors and helps users include remote supporting documents without manual downloads.
Original PR description
### Issue PDF reports fail when attachments are remote URLs or cloud storage resources. The `to_pdf_stream()` method expects local file data but receives boolean values from remote attachments,…
### Issue PDF reports fail when attachments are remote URLs or cloud storage resources. The `to_pdf_stream()` method expects local file data but receives boolean values from remote attachments, causing a TypeError. ### Solution Download remote resources before processing them in PDF reports. This ensures all attachments have accessible data regardless of storage type. ### Affected Reports - `account.report_original_vendor_bill` - Vendor bill reports - `hr_expense.report_expense_sheet` - Expense sheet reports ### Affected Versions - 18.0+ (17.0 theoretical; cloud_storage wasn't implemented, so doesn't make sense) ### Reproduction Steps #### Option A: HR Expense Report 1. Create HR expense record 2. Add attachment with type=url/cloud_storage pointing to valid PDF URL 3. Link attachment to hr.expense record 4. Generate expense report → TypeError occurs #### Option B: Vendor Bill Report 1. Create vendor bill (account.move) 2. Add attachment with type=url/cloud_storage pointing to valid PDF URL 3. Link attachment to account.move record 4. Print Original Vendor Bill → TypeError occurs ### Error Details ```python TypeError: a bytes-like object is required, not 'bool' at /odoo/tools/pdf/__init__.py:220 in to_pdf_stream from /odoo/addons/hr_expense/models/ir_actions_report.py:29 ``` #### Reference Client demo: https://drive.google.com/file/d/1HUvZqZ21NiX34T2IQhuVNbLP41xSV7jq/view OPW-5036638 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents an installation error when the withholding tax module is installed alongside Indian localization demo data. It makes the setup more reliable by only using purchase taxes that include the needed tax distribution details.
Original PR description
Traceback when no `repartition_line_ids` found in tax data. Steps to reproduce:- - Install `l10n_in` module with demo data. - Install `l10n_account_withholding_tax` module. Error:- ``` File /data/build/odoo/addons/l10n_account_withholding_tax/__init__.py, line 27, in _make_demo_tax tax_repartition_lines = [line[2] for line in tax_data[purchase_taxes[0]]['repartition_line_ids'] if line[2]['repartition_type'] == 'tax'] KeyError: 'repartition_line_ids' ``` Root Cause: At [1], No `repartition_line_ids` found in `tax_data[purchase_taxes[0]]`. Solution: Select only purchase taxes having `repartition_line_ids`. [1]: https://github.com/odoo/odoo/blob/9805d09dff64de835de0c764da8c6e213d6b88aa/addons/l10n_account_withholding_tax/__init__.py#L27
Follow-up PDF reports can now include attachments stored as remote URLs or in cloud storage without failing. This prevents report generation errors and helps users reliably produce customer follow-up documents regardless of where files are stored.
Original PR description
### Issue PDF reports fail when attachments are remote URLs or cloud storage resources. The to_pdf_stream() method expects local file data but receives boolean values from remote attachments, causing a TypeError. ### Solution Download remote resources before processing them in PDF reports. This ensures all attachments have accessible data regardless of storage type. ### Affected Reports (enterprise): - account_followup.report_followup_print_all [Community PR](https://github.com/odoo/odoo/pull/226094) OPW-5036638
This fix prevents certain business-critical attachments from being moved to cloud storage when those attachments are needed directly by Odoo processes such as invoices or expense reports. This helps ensure reports and workflows that rely on attachment data continue to work reliably.
Original PR description
some models use attachments for data for business logics for example, ``account_move.message_main_attachment_id.datas`` ``hr_expense_sheet`` will use all bounded attachments to generate report This commit prevents uploading attachments to cloud storage for some models if they ``_inherit`` or ``_inherits`` model ``mail.thread.main.attachment`` This PR is also a supplement for https://github.com/odoo/odoo/pull/226094 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
The Malaysian EDI forms now show identity card number placeholders without hyphens. This avoids misleading users and helps company and contact details pass validation with the IAP server and MyInvois.
Original PR description
Hyphens are generally omitted in ERPs, and just shown on the Identity card. Putting hyphens in the placeholder is actually misleading for users, and prevents validation through the IAP server and MyInvois Ref: https://en.wikipedia.org/wiki/Malaysian_identity_card#Structure_of_the_National_Registration_Identity_Card_Number_(NRIC) Task [link](https://www.odoo.com/odoo/project/967/tasks/5054821) task-5054821