Friday, June 13, 2025
30 changes · master
Enhancements to existing features
This update adjusts Web Studio's automated tests to match recent changes in screen size handling. It helps keep quality checks reliable after the removal of an older breakpoint, with no direct change for end users.
Original PR description
Since the VSM breakpoint is removed the breakpoint entry > XS are -1 task-4806037 Community PR: https://github.com/odoo/odoo/pull/211605
Payroll administrators can now translate payslip input type names, making payroll configuration clearer for teams working in multiple languages. This improves usability and consistency in multilingual payroll environments without changing payroll calculations or workflows.
Original PR description
In this PR, we enabled the translate setting for the name attribute within the hr_payslip_input_type model. Before:  After:    This work is related to the task: [4840358](https://www.odoo.com/odoo/project/1251/tasks/4840358).
Resolved issues and error corrections
This update improves the reliability of Web Studio's internal test environment by ensuring cleanup happens properly between tests. It helps prevent false test failures when custom models or fields are created, supporting more stable future development.
Code cleanup and technical improvements
This change reorganizes the invoice import logic used by invoice extraction and several country-specific electronic invoicing modules. It should make the import flow easier to maintain and more consistent across local requirements, with limited direct impact for day-to-day users.
Miscellaneous changes
An error was arising when making the following steps: 1. create a company contact with a proper name. 2. create an invoice address for that company through the company form view. 3. set a phone number for the invoice. 4. leave the `name` empty. 5. open the contacts tab on VoIP. This happened because the code was trying to access the first charachater of a falsy string which is `voipName` in this case. A solution to this was to guard falsy names of contacts and add a section for contacts
Original PR description
An error was arising when making the following steps: 1. create a company contact with a proper name. 2. create an invoice address for that company through the company form view. 3. set a phone number for the invoice. 4. leave the `name` empty. 5. open the contacts tab on VoIP. This happened because the code was trying to access the first charachater of a falsy string which is `voipName` in this case. A solution to this was to guard falsy names of contacts and add a section for contacts with empty string. This section will have a title of "#" and will appear at the end of the list. Forward-Port-Of: odoo/enterprise#87509
This fixes an internal test setup issue in the India payroll module by removing or correcting unused demo data. It helps keep automated checks reliable without changing day-to-day payroll functionality for users.
Employees can now choose the work entry source when Attendance is installed, not only when Planning is installed. This fixes an inconsistency so businesses using either app can configure how work entries are generated from the employee form.
Original PR description
…e having multiple options Bug / current behavior: The field work_entry_source was added to the employee form view only when installing hr_work_entry_planning (a dependency of the Planning app). Required behavior: The field work_entry_source should be shown upon installing hr_work_entry_attendance (a dependency of the Attendance app) as well. Both modules add a new selection to the field. Thus, when either module is installed, the field should be added to the form view to allow the user to choose. Fix: Add the field work_entry_source as invisible to the form view in the base module hr_work_entry. Make it visible once you install any of the planning or attendance modules. task-4866002 Community PR: https://github.com/odoo/odoo/pull/213982
Updates internal spreadsheet test coverage to match recent changes in pivot table behavior and highlight coloring. This helps keep automated checks reliable so spreadsheet features continue to work as expected without affecting day-to-day users.
Original PR description
See https://github.com/odoo/o-spreadsheet/pull/6414 Task: 4793572
Original PR description
Community PR: https://github.com/odoo/odoo/pull/189979 task-4290875
### Issue: Currently, non-system admin users are blocked from checking Envia rates. When initializing the `Envia` class, these users do not have access to the `carrier` fields, leading to an Access Error. ### Solution: Similar to `delivery_bpost` and `delivery_dhl`, we can use a `sudo` when grabbing the `api_key` value from the carrier record. opw-4761196 Forward-Port-Of: odoo/enterprise#85319
Original PR description
### Issue: Currently, non-system admin users are blocked from checking Envia rates. When initializing the `Envia` class, these users do not have access to the `carrier` fields, leading to an Access Error. ### Solution: Similar to `delivery_bpost` and `delivery_dhl`, we can use a `sudo` when grabbing the `api_key` value from the carrier record. opw-4761196 Forward-Port-Of: odoo/enterprise#85319
Forward-Port-Of: odoo/enterprise#86696
Original PR description
Forward-Port-Of: odoo/enterprise#86696
In uruguayan companies, if the field "Lock Posted Entries with Hash" is checked, the user can not validate electronic invoices in DGI. In this PR we are hiding the field in electronic uruguayan journals to prevent the user to check that field accidentally and generate inconsistencies with electronic invoicing. Forward-Port-Of: odoo/enterprise#85392
Original PR description
In uruguayan companies, if the field "Lock Posted Entries with Hash" is checked, the user can not validate electronic invoices in DGI. In this PR we are hiding the field in electronic uruguayan journals to prevent the user to check that field accidentally and generate inconsistencies with electronic invoicing. Forward-Port-Of: odoo/enterprise#85392
The dynamic payments domain for batch payments has been added in https://github.com/odoo/enterprise/pull/86217 Fix the override for domain payments in the SEPA module. Forward-Port-Of: odoo/enterprise#87481
Original PR description
The dynamic payments domain for batch payments has been added in https://github.com/odoo/enterprise/pull/86217 Fix the override for domain payments in the SEPA module. Forward-Port-Of: odoo/enterprise#87481
The name of the reconcile models displayed in the widget was sometimes empty due to a mismatch in user language. Specifically, if a reconcile model was created in one language (e.g., en_US) and the user switched to a different language, the model name would not be found and thus appear empty. This led to a props validation error in the widget. task-4863754 Forward-Port-Of: odoo/enterprise#87480
Original PR description
The name of the reconcile models displayed in the widget was sometimes empty due to a mismatch in user language. Specifically, if a reconcile model was created in one language (e.g., en_US) and the user switched to a different language, the model name would not be found and thus appear empty. This led to a props validation error in the widget. task-4863754 Forward-Port-Of: odoo/enterprise#87480
This adds tests to check that the UBL is correctly generated in the case of free invoices (feature introduced by c8abe0a7536a0bbe703730) and invoices involving both ISC and IGV (feature introduced by d598f338537b8f55771d7a). We take the opportunity to refactor the Peruvian tests and split the expected XMLs each into its own file. Community PR: https://github.com/odoo/odoo/pull/213402 task-4242065 Forward-Port-Of: odoo/enterprise#87585 Forward-Port-Of: odoo/enterprise#87222
Original PR description
This adds tests to check that the UBL is correctly generated in the case of free invoices (feature introduced by c8abe0a7536a0bbe703730) and invoices involving both ISC and IGV (feature introduced by d598f338537b8f55771d7a). We take the opportunity to refactor the Peruvian tests and split the expected XMLs each into its own file. Community PR: https://github.com/odoo/odoo/pull/213402 task-4242065 Forward-Port-Of: odoo/enterprise#87585 Forward-Port-Of: odoo/enterprise#87222
Before this commit when doing a write on a reco model, we checked that the modified reco model could be applied on the unreconciled statement lines. We didn't do the same for the create, this pr will do that no task id Forward-Port-Of: odoo/enterprise#87398
Original PR description
Before this commit when doing a write on a reco model, we checked that the modified reco model could be applied on the unreconciled statement lines. We didn't do the same for the create, this pr will do that no task id Forward-Port-Of: odoo/enterprise#87398
Currently, when validating deliveries, if multiples attachments are posted in the same chatter message, the printing jobs do not complete. Steps to reproduce: ------------------- * Install fedex * In operation types, select Delivery Orders then hardware * In print on validation, enable Carrier Labels and Export Documents * In the shipping methods, select fedex international * Change Label format to ZPL11 * Connect the database to an iot box * Set up the shipping labels to be send on z
Original PR description
Currently, when validating deliveries, if multiples attachments are posted in the same chatter message, the printing jobs do not complete. Steps to reproduce: ------------------- * Install fedex * In…
Currently, when validating deliveries, if multiples attachments are posted in the same chatter message, the printing jobs do not complete. Steps to reproduce: ------------------- * Install fedex * In operation types, select Delivery Orders then hardware * In print on validation, enable Carrier Labels and Export Documents * In the shipping methods, select fedex international * Change Label format to ZPL11 * Connect the database to an iot box * Set up the shipping labels to be send on zebra printer * Set up commercial invoice (/invoice) to be sent to another printer * Create a sale order, using fedex international as shipping * Confirm the SO * Select the delivery * Validate the delivery > Observation: Nothing prints, jobs are sent to CUPS bu not printing Why the fix: ------------ https://github.com/odoo/enterprise/blob/8075101192fb81a78f2a984cf2adf67fc77c0194/delivery_fedex_rest/models/delivery_fedex.py#L192-L196 As show, when sending the shipping, if the invoice is generated, it gets added to the attachements. The function `message_post` will post all attachments in the same chatter message. In `delivery_iot` the `message_post` function is overridden to allow sending the printing jobs to the iot. https://github.com/odoo/enterprise/blob/8075101192fb81a78f2a984cf2adf67fc77c0194/delivery_iot/models/stock_picking.py#L33-L46 Here, `attachments_names` will both contain `Label` and `ShippingDoc`. Since we enter the first if condition, the report is related to the shipping labels. Then we send the data related to all attachments to the device linked to the shipping labels, aka the zebra printer. Since the other attachment is of type PDF, the zebraprinter does not know what to do with it and ends up printing nothing. Since we can have multiple different attachment, the if/elseif condition does not make sense. By breaking it in two if, we can send both reports separately, while still keeping all attachments in the same chatter message. opw-4546715 Forward-Port-Of: odoo/enterprise#83481 Forward-Port-Of: odoo/enterprise#82094
When importing a coda statement, in case of globalisation, Odoo doesn't take into account the different levels of details. Instead of that, we keep every lines even if one is already the sum of each detailed lines. According to https://febelfin.be/media/pages/publicaties/2023/archief-bankstandaarden/0c9e6e5026-1694763197/standard-coda-2.4-fr.pdf Chapter 3.1 Transaction type are communicate like that: - 0 -> simple amount without detailed data - 1 -> amount as totalised by the cus
Original PR description
When importing a coda statement, in case of globalisation, Odoo doesn't take into account the different levels of details. Instead of that, we keep every lines even if one is already the sum of each…
When importing a coda statement, in case of globalisation, Odoo doesn't take into account the different levels of details. Instead of that, we keep every lines even if one is already the sum of each detailed lines. According to https://febelfin.be/media/pages/publicaties/2023/archief-bankstandaarden/0c9e6e5026-1694763197/standard-coda-2.4-fr.pdf Chapter 3.1 Transaction type are communicate like that: - 0 -> simple amount without detailed data - 1 -> amount as totalised by the customer - 5 -> detail of 1 - 2 -> amount as totalised by the bank - 6 -> detail of 2, simple amount without detailed data - 7 -> detail of 2, simple amount with detailed data - 9 -> detail of 7 Let's assume this case: - 1 line with transaction type == 2, amount == 3000 - 1 line with transaction type == 7, amount == 2000 - 1 line with transaction type == 9, amount == 2000 - 1 line with transaction type == 7, amount == 1000 - 1 line with transaction type == 9, amount == 1000 Currently, Odoo will display lines 1, 2 and 4 in case of split transactions instead of lines 3 and 5. In case of not split transactions, Odoo sums up the same lines. With this commit, we keep trace of last line's transaction type to: - be able to delete it if it has detailed data, in case of split transaction - to sum up only the relevant lines opw-4619660 opw-4795349 Forward-Port-Of: odoo/enterprise#87523 Forward-Port-Of: odoo/enterprise#85006
The test `test_computed_fields_without_dependencies` triggers all compute methods on new records (model.new()). In `_compute_company_vat`, we had: `re.sub(r'[^0-9]', '', wizard.company_id.vat or wizard.company_id.company_registry)` When running on a new record, both `vat` and `company_registry` are `False`, so: `re.sub(..., False)` This causes `TypeError: expected string or bytes-like object, got 'bool'`. We fix this by explicitly passing a string fallback. [runbot-1641
Original PR description
The test `test_computed_fields_without_dependencies` triggers all compute methods on new records (model.new()).
In `_compute_company_vat`, we had:
`re.sub(r'[^0-9]', '', wizard.company_id.vat or wizard.company_id.company_registry)`
When running on a new record, both `vat` and `company_registry` are `False`, so:
`re.sub(..., False)`
This causes `TypeError: expected string or bytes-like object, got 'bool'`.
We fix this by explicitly passing a string fallback.
[runbot-164199](https://runbot.odoo.com/odoo/error/164199)
Forward-Port-Of: odoo/enterprise#87323Currently, the VAT is split into two columns only if the VAT code consists solely of numeric values. However, in practice, VAT code may contain a combination of letters and numbers. **Steps to reproduce :** 1) Install `l10n_de_reports` and switch to the `DE` company 2) Create a partner with VAT as `NL000099998B57` from contacts 3) Now create a confirmed invoice for the above created partner 4) Go to "Accounting / Reporting / Audit Reports / General Ledger" 5) Download "DATEV DATA (Z
Original PR description
Currently, the VAT is split into two columns only if the VAT code consists solely of numeric values. However, in practice, VAT code may contain a combination of letters and numbers. **Steps to…
Currently, the VAT is split into two columns only if the VAT code consists solely of numeric values. However, in practice, VAT code may contain a combination of letters and numbers. **Steps to reproduce :** 1) Install `l10n_de_reports` and switch to the `DE` company 2) Create a partner with VAT as `NL000099998B57` from contacts 3) Now create a confirmed invoice for the above created partner 4) Go to "Accounting / Reporting / Audit Reports / General Ledger" 5) Download "DATEV DATA (ZIP)" and check "EXTF_customer_account.csv" **Issue:** Notice that the VAT was not split into country and VAT code for the above created partner. **Cause:** Previously, the code only split the VAT into country code and VAT code if the first two characters were alphabetic and the remainder was numeric. https://github.com/odoo/enterprise/blob/35944a38d306ea881e08e1d51ca77a3eab3a6e36/l10n_de_reports/models/datev_export_csv.py#L220-L227 This approach is insufficient because many countries have VAT codes that include both letters and numbers. For example vat formats for `NL` and `AT` https://business.gov.nl/finance-and-taxes/vat/numbers-for-vat/ https://ec.europa.eu/taxation_customs/vies/#/faq So by only checking whether the VAT code is numberic is not a valid thing. **Solution:** The code now uses the partner’s `_split_vat` method to separate the country code and VAT code whenever a VAT is provided and has more than two characters. It then validates the split VAT using the `simple_vat_check` helper method. If the VAT is valid, the country code (in uppercase) and the VAT code are output in separate columns; otherwise, the original VAT value is kept. This change ensures that VAT numbers with alphanumeric codes are correctly handled and split into their respective columns. opw-4820929 Forward-Port-Of: odoo/enterprise#87289 Forward-Port-Of: odoo/enterprise#86992
### Steps to reproduce: - In the settings: Enable `Units of Measure & Packagings` - Create a storable product with 100 units in stock and an associated packaging such as 'pack of 6' - Create and confirm a sale order for 5 pack of 6. > This creates and reserve a delivery for 30 units (5 pack of 6). - Process the delivery in the barcode app and scan a pack of 6 #### > A new line is created for 1 pack of 6 instead of updating the quantity of the line referring to these packs to 5/30. ###
Original PR description
### Steps to reproduce: - In the settings: Enable `Units of Measure & Packagings` - Create a storable product with 100 units in stock and an associated packaging such as 'pack of 6' - Create and…
### Steps to reproduce: - In the settings: Enable `Units of Measure & Packagings` - Create a storable product with 100 units in stock and an associated packaging such as 'pack of 6' - Create and confirm a sale order for 5 pack of 6. > This creates and reserve a delivery for 30 units (5 pack of 6). - Process the delivery in the barcode app and scan a pack of 6 #### > A new line is created for 1 pack of 6 instead of updating the quantity of the line referring to these packs to 5/30. ### Cause of the issue: Since the packaging/uom refactoring, packagings are just uoms. Now, scanning the packaging will launch a call of the `_processBarcode` method. During this call, the existing line will not be be found and considered as an appropriate candidate to be updated since the its prodcut_uom is in Unit and the packaging uom is not: https://github.com/odoo/enterprise/blob/bdb3f3d959d6fd56e96e2299823fba6edbb5428c/stock_barcode/static/src/models/barcode_model.js#L1710-L1711 As such, there will be no `currentLine` to update and a new line will be created: https://github.com/odoo/enterprise/blob/bdb3f3d959d6fd56e96e2299823fba6edbb5428c/stock_barcode/static/src/models/barcode_model.js#L1441-L1443 opw-4782296 Forward-Port-Of: odoo/enterprise#86659 Forward-Port-Of: odoo/enterprise#86180
### Steps to reproduce: - Create a storable product P with 10 units in stock. - Inventory > Configuration > Warehouse Management > Operation Types - Change the reservation Method of Delivery orders to Manual - Create confirm and manually assign a delivery order for 3 units of P - Process the DO in the barcode app, scan 1 unit of P > The line should be 1/3 - Leave and come back #### > The line is now at 1/1 ### Cause of the issue: Leaving the barcode app launch a call of the `spli
Original PR description
### Steps to reproduce: - Create a storable product P with 10 units in stock. - Inventory > Configuration > Warehouse Management > Operation Types - Change the reservation Method of Delivery orders…
### Steps to reproduce: - Create a storable product P with 10 units in stock. - Inventory > Configuration > Warehouse Management > Operation Types - Change the reservation Method of Delivery orders to Manual - Create confirm and manually assign a delivery order for 3 units of P - Process the DO in the barcode app, scan 1 unit of P > The line should be 1/3 - Leave and come back #### > The line is now at 1/1 ### Cause of the issue: Leaving the barcode app launch a call of the `split_uncompleted_moves` in order to keep track of the initial reservation in the barcode app: https://github.com/odoo/enterprise/blob/577cb4b74a614d2dd472375b325706525ae591d7/stock_barcode/models/stock_move.py#L9-L11 However, one of the issue of the current system is that these new moves are expected to be assigned by the `_action_confirm`: https://github.com/odoo/enterprise/blob/577cb4b74a614d2dd472375b325706525ae591d7/stock_barcode/models/stock_move.py#L37 But they are not in certain cases and we should therefore force re-assignation in that case: https://github.com/odoo/odoo/blob/bf0461552effe806fdaa8f85f088be3c3f3be09d/addons/stock/models/stock_move.py#L1427-L1432 Community: https://github.com/odoo/odoo/pull/211616 opw-4798349 Forward-Port-Of: odoo/enterprise#87461 Forward-Port-Of: odoo/enterprise#86394
**Before this PR:** - The `Validate` button was always visible, even if the OTP was empty or incorrect. - Users could attempt validation with an invalid or missing OTP. - The OTP delivery message was unclear. **After this PR:** - The `Validate` button proceed done when a valid 6-digit numeric OTP is entered. - A clear error notification is shown if users try to proceed without a valid OTP. - The OTP delivery message now clearly informs that the OTP is sent to the registered mobile n
Original PR description
**Before this PR:** - The `Validate` button was always visible, even if the OTP was empty or incorrect. - Users could attempt validation with an invalid or missing OTP. - The OTP delivery message was unclear. **After this PR:** - The `Validate` button proceed done when a valid 6-digit numeric OTP is entered. - A clear error notification is shown if users try to proceed without a valid OTP. - The OTP delivery message now clearly informs that the OTP is sent to the registered mobile number on the GST portal. These changes improve user guidance and prevent incorrect OTP submissions. Task ID: 4848729 Forward-Port-Of: odoo/enterprise#87199
When user clicks on Details in the commissions, A traceback will appear. Steps to reproduce the error: - Install ``sale_commission`` with demo data - Go to Sales > Commissions > My Commissions - Click on ``Details`` of any record Traceback: ``` UndefinedColumn: column "team_id" does not exist LINE 21: AND team_id in (1) ``` ``team_id`` field was removed in the commit: https://github.com/odoo/enterprise/commit/b1e41f9b23aa62bfd6f9be1feb1059b3507f2ce5 https://githu
Original PR description
When user clicks on Details in the commissions, A traceback will appear. Steps to reproduce the error: - Install ``sale_commission`` with demo data - Go to Sales > Commissions > My Commissions - Click on ``Details`` of any record Traceback: ``` UndefinedColumn: column "team_id" does not exist LINE 21: AND team_id in (1) ``` ``team_id`` field was removed in the commit: https://github.com/odoo/enterprise/commit/b1e41f9b23aa62bfd6f9be1feb1059b3507f2ce5 https://github.com/odoo/enterprise/blob/9d3a15d4d38fce8a2746778146c58123bc09178d/sale_commission/report/achievement_report.py#L341 Here, ``team_id`` field is still used. ``sale.commission.achievement`` model does not ``team_id`` field. So, It will lead to the above traceback. sentry-6378493886 Forward-Port-Of: odoo/enterprise#87268
Currently, an error occurs when a user tries to access `paid consultation` or `paid seats` if the booking fees are deleted by the user. **Steps to Reproduce:** - Install **appointment_account_payment** module without demo data. - Delete **Booking Fees** product`from `invoicing->customer->products` - Click on `Paid Seats` or `Paid Consultation` in the Appointment App. **Error:** `ValueError: No record found for unique ID appointment_account_payment.default_booking_product. It may have b
Original PR description
Currently, an error occurs when a user tries to access `paid consultation` or `paid seats` if the booking fees are deleted by the user. **Steps to Reproduce:** - Install…
Currently, an error occurs when a user tries to access `paid consultation` or `paid seats` if the booking fees are deleted by the user. **Steps to Reproduce:** - Install **appointment_account_payment** module without demo data. - Delete **Booking Fees** product`from `invoicing->customer->products` - Click on `Paid Seats` or `Paid Consultation` in the Appointment App. **Error:** `ValueError: No record found for unique ID appointment_account_payment.default_booking_product. It may have been deleted.` **Root Cause:** After deleting the **Booking Fees**, if user tries to open `Paid Seats` or `Paid Consultation` the system will try to access id of `appointment_account_payment.default_booking_product` at [1] or [2] causing an error. [1]- https://github.com/odoo/enterprise/blob/a4f68967a9826fac981c1141ece1791a0baf647a/appointment_account_payment/models/templates/appointment_type.py#L43 [2]- https://github.com/odoo/enterprise/blob/a4f68967a9826fac981c1141ece1791a0baf647a/appointment_account_payment/models/templates/appointment_type.py#L56 **Solution:** This commit prevents error by restricting user from deleting the `Booking Product`. Sentry-6013528364 Forward-Port-Of: odoo/enterprise#86159
In this commit: = - Closed the session of POS to settle the journal balance. runbot-error-181911 Forward-Port-Of: odoo/enterprise#86880
Original PR description
In this commit: = - Closed the session of POS to settle the journal balance. runbot-error-181911 Forward-Port-Of: odoo/enterprise#86880
Problem: Given that the fields for the salary rules has already been generated for the current country set on the salary structure, an error occurs when accessing the payroll reporting records after the user changes the country because the payroll reporting records will reference a different field name. The outdated fields will not properly unlink, new fields won't be generated based on the new country set, but the payroll report will reference the new field name. Purpose: When changing the c
Original PR description
Problem: Given that the fields for the salary rules has already been generated for the current country set on the salary structure, an error occurs when accessing the payroll reporting records after…
Problem: Given that the fields for the salary rules has already been generated for the current country set on the salary structure, an error occurs when accessing the payroll reporting records after the user changes the country because the payroll reporting records will reference a different field name. The outdated fields will not properly unlink, new fields won't be generated based on the new country set, but the payroll report will reference the new field name. Purpose: When changing the country on a salary structure, the rules that appears on the payroll reporting needs to unlink outdated fields and regenerate the fields based on the new country value. The salary rule fields are dependent on the country due to its naming convention. Steps to Reproduce on Runbot: 1. Install Payroll 2. Create a new salary structure with no country 3. Create a new salary rule and enable "View in Payroll reporting" 4. Check fields and observe that a field prefixed by 'x_l10n_xx' was created 5. Change the country set on the salary structure 6. Try to access a payroll report record and a traceback is thrown opw-4649030 Forward-Port-Of: odoo/enterprise#87464 Forward-Port-Of: odoo/enterprise#83749
Since [^1] VAT values are automatically compacted to the smallest form without any dots and dashes. For account creation in Avatax we must uncompress the VAT before sending to the API. Funny enough, Avatax requires compacted values for EDI api calls, as such the compression code will be removed in master. task-4817278 [^1]: https://github.com/odoo/odoo/pull/179078 Forward-Port-Of: odoo/enterprise#87291
Original PR description
Since [^1] VAT values are automatically compacted to the smallest form without any dots and dashes. For account creation in Avatax we must uncompress the VAT before sending to the API. Funny enough, Avatax requires compacted values for EDI api calls, as such the compression code will be removed in master. task-4817278 [^1]: https://github.com/odoo/odoo/pull/179078 Forward-Port-Of: odoo/enterprise#87291
Having a mandatory company on factors comes with multiple problems. The main one is that users rely on factors imported from huge databases, that would therefore have to be imported once per company. The current dabatase model is incidentally built around factors being available in all companies, which means one cannot actually import the factors multiple times. Another is that users could see sources (which are not company dependent) that are seemingly linked to no factors because they ar
Original PR description
Having a mandatory company on factors comes with multiple problems. The main one is that users rely on factors imported from huge databases, that would therefore have to be imported once per company. The current dabatase model is incidentally built around factors being available in all companies, which means one cannot actually import the factors multiple times. Another is that users could see sources (which are not company dependent) that are seemingly linked to no factors because they are in other companies, which can be confusing. To alleviate those problems, this PR makes the field non required. Note that this will only take effect for new databases or after an upgrade. Forward-Port-Of: odoo/enterprise#87500
This commit fixes a bug that happens when the partner name is a falsy value like a `" "`. This made the `t9_name` to be `false` and then to give an error when trying to access the `trim()` function. A solution for this was to guard it with a condition to check if the t9_name is falsy or not. Forward-Port-Of: odoo/enterprise#87328
Original PR description
This commit fixes a bug that happens when the partner name is a falsy value like a `" "`. This made the `t9_name` to be `false` and then to give an error when trying to access the `trim()` function. A solution for this was to guard it with a condition to check if the t9_name is falsy or not. Forward-Port-Of: odoo/enterprise#87328
### Issue: `helpdesk.ticket` ratings were converted to emojis in https://github.com/odoo/enterprise/pull/42972, but currently do not display the correct color or face. ### Solution: Correctly check the value of `rating_avg_text` to determine which face should be shown, and remove class decoration that was recently added that hides the proper color. opw-4703331 Forward-Port-Of: odoo/enterprise#86573
Original PR description
### Issue: `helpdesk.ticket` ratings were converted to emojis in https://github.com/odoo/enterprise/pull/42972, but currently do not display the correct color or face. ### Solution: Correctly check the value of `rating_avg_text` to determine which face should be shown, and remove class decoration that was recently added that hides the proper color. opw-4703331 Forward-Port-Of: odoo/enterprise#86573