Tuesday, July 16, 2024
27 changes · saas-17.3
Resolved issues and error corrections
This fixes a visual issue where text could disappear when users hovered over SelectMenu buttons, especially in areas like Studio's view selector. The change aligns the button styling with the newer Bootstrap version, improving consistency across normal and dark mode views.
Original PR description
As of Bootstrap 5.3 (commit 058212e12b5079eba870bde9775fe98f27928935), buttons with class `.btn` should have an additional class specifying the subtype of button (https://getbootstrap.com/docs/5.3/components/buttons/#base-class) Before this commit, when hovering a SelectMenu, no specific behavior was set, and sometimes (in Studio -- View Selector in XMLEditor), hovering the button made the text disappear. After this commit, this is fixed. A few instances of SelectMenu were tested (Studio, knowledge), and in dark mode as well. 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
This fix prevents a crash when users drag autofill on spreadsheet formulas linked to pivot data. Pivot-specific autofill is disabled in this edge case so spreadsheets continue using the standard autofill behavior instead.
Original PR description
Steps to reproduce: - create a spreadsheet pivot with a measure - in a cell, type =PIVOT.VALUE(1, "<the measure>") - (the result is an error, that's expected) - autofill the formula up => boom the odoo pivot specific autofill should be disabled (it should be the normal autofill) TypeError: pivot.getPivotHeaderFormattedValue is not a function at PivotAutofillPlugin._tooltipFormatPivotHeader (pivot_autofill_plugin.js:649:1) at PivotAutofillPlugin.getTooltipFormula (pivot_autofill_plugin.js:130:1) at Object.apply (autofill.js:71:1) at AutofillGenerator.next (o_spreadsheet.js:54774:1) at AutofillPlugin.computeNewCell (o_spreadsheet.js:55010:1) at AutofillPlugin.autofill (o_spreadsheet.js:54893:1) at AutofillPlugin.select (o_spreadsheet.js:54959:1) at AutofillPlugin.handle (o_spreadsheet.js:54825:1) at Model.dispatchToHandlers (o_spreadsheet.js:66774:1) at o_spreadsheet.js:66714:1 Task: 3987035
Miscellaneous changes
Currently `_run_fifo_vacuum` can be a performance bottleneck when confirming a large IN transfer. This is especially true for anglo_saxon accounting companies. To fix that, this commit introduces batch versions of `_run_fifo_vacuum` and `_create_fifo_vacuum_anglo_saxon_expense_entry`. The idea of these batch versions is to batch records creation, moves posting, search, etc. Stuff that cannot be batched/don't need to be batched are left as is. #### Speedup 15.0 customer database with 476 0
Original PR description
Currently `_run_fifo_vacuum` can be a performance bottleneck when confirming a large IN transfer. This is especially true for anglo_saxon accounting companies. To fix that, this commit introduces…
Currently `_run_fifo_vacuum` can be a performance bottleneck when confirming a large IN transfer. This is especially true for anglo_saxon accounting companies. To fix that, this commit introduces batch versions of `_run_fifo_vacuum` and `_create_fifo_vacuum_anglo_saxon_expense_entry`. The idea of these batch versions is to batch records creation, moves posting, search, etc. Stuff that cannot be batched/don't need to be batched are left as is. #### Speedup 15.0 customer database with 476 000 account.moves, 1M account.move.lines, 8400 products, 700 000 stock.moves, 650 000 stock.move.lines, 500 000 svls All categories have Inventory Valuation set to real_time. Benchmark validation of IN transfers, changing the number of products + total number of svls | Number of products | Total number of svls | Before PR | After PR | |:----------------:|:-------------------:|:-----------:|:-----------:| | 1 | 112 | 3.88s | 3.78s | | 2 | 607 | 548ms | 524ms | | 5 | 2561 | 2.27s | 1.10s | | 3 | 8956 | 15min | 2min | | 32 | 43310 | 7min | 50s | Some pickings are not directly impacted by the PR, most probably because these pickings don't have candidates svls/svls to vacuum to begin with. Still for the fourth and fith picking, the batch version performs way better than the iterative one. Validating an IN transfer with stock_account and real-time inventory valuation is a complex process so it's a bit difficult to pinpoint tables cardinalities that correlate with the validation time. Here it's the Before vs After time that is relevant, more than the validation time growth. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170131 Forward-Port-Of: odoo/odoo#157558
Steps to reproduce: - Create a lot tracked product. - Update the "On Hands" quantity of the product and assign it a lot name. - Create a delivery order with this product with a quantity that is available in the stock. - Mark it as to do. - Click on "Detailed Operations" smart button. - Decrease the quantity of the move line. - Select it and click on "Put in Pack". Expected behavior: The new quantity is put in pack and the quantity of the move line remains the same. Actual behavior:
Original PR description
Steps to reproduce: - Create a lot tracked product. - Update the "On Hands" quantity of the product and assign it a lot name. - Create a delivery order with this product with a quantity that is available in the stock. - Mark it as to do. - Click on "Detailed Operations" smart button. - Decrease the quantity of the move line. - Select it and click on "Put in Pack". Expected behavior: The new quantity is put in pack and the quantity of the move line remains the same. Actual behavior: The whole quantity is reserved again. The original move line is split into two move lines: one with the packed quantity and another one with the remaining quantity. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#172732
The confirmation page wasn't displayed and the order wasn't sent to the preparation display when confirming an order with a total of 0. Now the confirmation page is displayed and the order is send to the preparation display when the order is confirmed regardless of the total amount. Forward-Port-Of: odoo/odoo#158177 Forward-Port-Of: odoo/odoo#157028
Original PR description
The confirmation page wasn't displayed and the order wasn't sent to the preparation display when confirming an order with a total of 0. Now the confirmation page is displayed and the order is send to the preparation display when the order is confirmed regardless of the total amount. Forward-Port-Of: odoo/odoo#158177 Forward-Port-Of: odoo/odoo#157028
### Steps to reproduce: - Install Contacts app - Go to General Settings and add another language - Add a new contact to a parent. - Don't add a specific contact name - Assign a contact type (delivery address, invoice address, other address) - Go to the list or kanban view of the contacts and change the language - The type of the contact listed next to the parent name is not translated from English. ### Investigation: - When the contact name is not set, the `display_name`
Original PR description
### Steps to reproduce: - Install Contacts app - Go to General Settings and add another language - Add a new contact to a parent. - Don't add a specific contact name - Assign a contact type (delivery…
### Steps to reproduce:
- Install Contacts app
- Go to General Settings and add another language
- Add a new contact to a parent.
- Don't add a specific contact name
- Assign a contact type (delivery address, invoice address, other address)
- Go to the list or kanban view of the contacts and change the language
- The type of the contact listed next to the parent name is not translated from English.
### Investigation:
- When the contact name is not set, the `display_name` displayed in both kanban and list views is set by concatenating the parent name with the contact type.
- The line https://github.com/odoo/odoo/blob/03b7e17faef4075dbbb805bca4e7f40f7fbcc988/odoo/addons/base/models/res_partner.py#L345 in the function `_compute_display_name`, `with_context({})` in particular basically enforce to compute the name in english language regardless of the active language. That actually makes sense as the `display_name` field has `store=True` https://github.com/odoo/odoo/blob/03b7e17faef4075dbbb805bca4e7f40f7fbcc988/odoo/addons/base/models/res_partner.py#L199
### Solution:
- add a computed field that is not stored that gets recomputed on changing the language.
opw-3569171
Forward-Port-Of: odoo/odoo#158189
Forward-Port-Of: odoo/odoo#143514## Steps to reproduce: - Install POS app - Change the warehouse to a 2-step delivery method - Create a sales order for a product and confirm - Ensure the product is reserved for the picking transfer **as** the issue doesn't exist (all transfers are successfully cancelled) if there are no products reserved - Go to POS and settle the sales order - The delivery transfer is cancelled but the picking transfer (with product reserved) is not cancelled. although all transfers should be cancelled i
Original PR description
## Steps to reproduce: - Install POS app - Change the warehouse to a 2-step delivery method - Create a sales order for a product and confirm - Ensure the product is reserved for the picking transfer **as** the issue doesn't exist (all transfers are successfully cancelled) if there are no products reserved - Go to POS and settle the sales order - The delivery transfer is cancelled but the picking transfer (with product reserved) is not cancelled. although all transfers should be cancelled if the order is fully delivered! ## Investigation: - When the product is already reserved, the picking transfer is in the **Ready/assigned** state - When updating the steps, the **Ready/assigned** state is not taken into consideration and so the picking transfer is not updated to be **cancelled** opw-3474929 Forward-Port-Of: odoo/odoo#170828 Forward-Port-Of: odoo/odoo#164753
With this commit we allow to change/add analytic distribution on a posted line in quick edit mode. opw-3561831 Forward-Port-Of: odoo/odoo#144562
Original PR description
With this commit we allow to change/add analytic distribution on a posted line in quick edit mode. opw-3561831 Forward-Port-Of: odoo/odoo#144562
When a user scans an attendee's QR code with a barcode reader, the system opens a registration confirmation dialog. If multiple QR codes are scanned in succession, the dialogs stack on top of each other. This requires the user to manually close each one, which is time-consuming. To streamline this process, the system will now automatically close the previous registration confirmation dialog when a new QR code is scanned. This change should expedite the ticket scanning process. task-4047455
Original PR description
When a user scans an attendee's QR code with a barcode reader, the system opens a registration confirmation dialog. If multiple QR codes are scanned in succession, the dialogs stack on top of each other. This requires the user to manually close each one, which is time-consuming. To streamline this process, the system will now automatically close the previous registration confirmation dialog when a new QR code is scanned. This change should expedite the ticket scanning process. task-4047455 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#172783
## Issue: Right now we will be showing as Attemtps (under the website profile in attempts tab) any attempt, even whe we didn't even started the certification yet. ## Steps to reproduce: 1. Install website_slide_survey. 2. Create or go to an existing course logged in. 3. Create or use an exsiting certigication and press the 'Begin certification' and don't start the certification after the redirect. 4. Go to your profile and check for the attemtps. ## Solution: It will make more
Original PR description
## Issue: Right now we will be showing as Attemtps (under the website profile in attempts tab) any attempt, even whe we didn't even started the certification yet. ## Steps to reproduce: 1. Install website_slide_survey. 2. Create or go to an existing course logged in. 3. Create or use an exsiting certigication and press the 'Begin certification' and don't start the certification after the redirect. 4. Go to your profile and check for the attemtps. ## Solution: It will make more sense that we only show the actual attempts, which means that we shouldn't show here the attempts that are not finished, since how user_inputs works and are always created at the time of the link creation, we could just filter out the user_inputs that are not actually valid to show here and show only the proper ones. opw-3781323 Forward-Port-Of: odoo/odoo#161456
Problem: When registering for an Event, an `event.registration record` is created. Odoo will send a reminder email to these registered customers using the `Event: Reminder` email template. This template uses the `get_date_range_str` method inside `event.registration` to calculate what the start date (`event_begin_date`) is and then decides which dynamic string to use (today, tomorrow, etc). However, this field is stored in UTC and uses a separate `date_tz` field to calculate what timezone shoul
Original PR description
Problem: When registering for an Event, an `event.registration record` is created. Odoo will send a reminder email to these registered customers using the `Event: Reminder` email template. This…
Problem: When registering for an Event, an `event.registration record` is created. Odoo will send a reminder email to these registered customers using the `Event: Reminder` email template. This template uses the `get_date_range_str` method inside `event.registration` to calculate what the start date (`event_begin_date`) is and then decides which dynamic string to use (today, tomorrow, etc). However, this field is stored in UTC and uses a separate `date_tz` field to calculate what timezone should be used. This `date_tz` context is missing, leading to emails with the wrong subject and body content. Purpose: Pass in the event's timezone to ensure that calculations involving the date_begin field display correctly. Steps to Reproduce: 1) Create an Event 2) Set the timezone to America/Los Angeles 3) Set the times to 6:00 pm - 10:00pm (leading to different day in UTC compared to PST) 4) Register customers to create `event.registration` records 5) Trigger `get_date_range_str` function, either via Email Template or SA 6) Check which string is returned based on time delta opw-3993058 Forward-Port-Of: odoo/odoo#172599 Forward-Port-Of: odoo/odoo#169682
Steps to reproduce ================== - Install hr_skills,web_studio - Go to Employees - Open any record - Add a new resume entry without description - Save - Click on the actions gear - Print > Print Resume => `Odoo India pvt. Ltd` is displayed in the report in place of the missing description Solution ======== Use the new data-oe-demo attribute made for demo data inside studio opw-4033434 Forward-Port-Of: odoo/odoo#173167
Original PR description
Steps to reproduce ================== - Install hr_skills,web_studio - Go to Employees - Open any record - Add a new resume entry without description - Save - Click on the actions gear - Print > Print Resume => `Odoo India pvt. Ltd` is displayed in the report in place of the missing description Solution ======== Use the new data-oe-demo attribute made for demo data inside studio opw-4033434 Forward-Port-Of: odoo/odoo#173167
To reproduce the bug: 1. Add a video to a product media. 2. In the eCommerce app, go to the product page and switch to the added video. 3. Decrease the browser page width and try to click the play/pause button. The play/pause button is located under the arrow HTML element, making it unclickable. This is because the page is not responsive, and the size of the container element is fixed at 400px. To fix this, I propose making the element responsive and decreasing the height of the arrow e
Original PR description
To reproduce the bug: 1. Add a video to a product media. 2. In the eCommerce app, go to the product page and switch to the added video. 3. Decrease the browser page width and try to click the play/pause button. The play/pause button is located under the arrow HTML element, making it unclickable. This is because the page is not responsive, and the size of the container element is fixed at 400px. To fix this, I propose making the element responsive and decreasing the height of the arrow elements. opw-3986105 Forward-Port-Of: odoo/odoo#172229
Description of the issue/feature this PR addresses: Unimplemented delivery_types for delivery carriers lead to 500 Current behavior before PR: During an odoo version update or by replacing one delivery app by another, it can happen that the shipping method is not implemented (see delivery_carrier.py#rate_shipment method). This will lead to a 500 Internal Server Error when opening the checkout page that contains the delivery method select. Desired behavior after PR is merged: Instead of a 5
Original PR description
Description of the issue/feature this PR addresses: Unimplemented delivery_types for delivery carriers lead to 500 Current behavior before PR: During an odoo version update or by replacing one delivery app by another, it can happen that the shipping method is not implemented (see delivery_carrier.py#rate_shipment method). This will lead to a 500 Internal Server Error when opening the checkout page that contains the delivery method select. Desired behavior after PR is merged: Instead of a 500 Internal Server Error (full show stopper), the error message "Shipment rate not found" is returned. The interface displays the error messages like other errors and it is ensured, that the user cannot proceed when selecting an erroneous delivery carrier. -- I confirm I have signed the CLA and read the PR guidelines at [www.odoo.com/submit-pr](http://www.odoo.com/submit-pr) Forward-Port-Of: odoo/odoo#169008
**Steps to reproduce the bug:** - Create a storable product P1. - Create two purchase agreement with the same product and qty=10 - Create and confirm a PO with only the second PO - Try to export both purchase agreements, selecting the one without a PO first and then the other. For the fields to export, choose: Products to purchase/ordered quantities. **Problem**: Sure, here is the corrected version in English: Both lines will show 0 units. When the `_compute_ordered_qty` is call
Original PR description
**Steps to reproduce the bug:** - Create a storable product P1. - Create two purchase agreement with the same product and qty=10 - Create and confirm a PO with only the second PO - Try to export both…
**Steps to reproduce the bug:** - Create a storable product P1. - Create two purchase agreement with the same product and qty=10 - Create and confirm a PO with only the second PO - Try to export both purchase agreements, selecting the one without a PO first and then the other. For the fields to export, choose: Products to purchase/ordered quantities. **Problem**: Sure, here is the corrected version in English: Both lines will show 0 units. When the `_compute_ordered_qty` is called with the first PO requisition line, no purchase order is linked, and therefore the total quantity remains at 0. However, the product is added as a founded line. So, on the second requisition line, even though the total quantity (10) is correctly calculated because a PO is linked, the condition that checks if the product has already been found will be true, and therefore the quantity will be set to 0. https://github.com/odoo/odoo/blob/e7850da5848993e036ab70b731f37005ccd64604/addons/purchase_requisition/models/purchase_requisition.py#L240-L244 opw-[4005265](https://www.odoo.com/web#id=4005265&view_type=form&model=project.task) Forward-Port-Of: odoo/odoo#172444 Forward-Port-Of: odoo/odoo#171809
similar to https://github.com/odoo/odoo/pull/129310 Currently, users cannot edit the bottom part of `payment_terms` and `fiscal_position`, as these are conditional blocks. This commit adds empty divs that will be interpreted by odoo-editor as editable. opw-3558001 Forward-Port-Of: odoo/odoo#172777
Original PR description
similar to https://github.com/odoo/odoo/pull/129310 Currently, users cannot edit the bottom part of `payment_terms` and `fiscal_position`, as these are conditional blocks. This commit adds empty divs that will be interpreted by odoo-editor as editable. opw-3558001 Forward-Port-Of: odoo/odoo#172777
Turns out there's a test that checks that the return value from the super() call in write is returned in the override. See `TestOverrides.test_write()`. So we need to return the value from the super().write(). Forward-Port-Of: odoo/odoo#172524
Original PR description
Turns out there's a test that checks that the return value from the super() call in write is returned in the override. See `TestOverrides.test_write()`. So we need to return the value from the super().write(). Forward-Port-Of: odoo/odoo#172524
### [FIX] product: add domain on ptav filter Steps: - Install sale. - If user using odoo for 3-4 for years then user probably have more then 200 ptavs in db.. Issue: - It'll display limit warning instead of filter in most of cases. Cause: - Have larger number of ptavs. Fix: - Add domain to only search active ptav and has related active product. opw-3827751 Forward-Port-Of: odoo/odoo#168705
Original PR description
### [FIX] product: add domain on ptav filter Steps: - Install sale. - If user using odoo for 3-4 for years then user probably have more then 200 ptavs in db.. Issue: - It'll display limit warning instead of filter in most of cases. Cause: - Have larger number of ptavs. Fix: - Add domain to only search active ptav and has related active product. opw-3827751 Forward-Port-Of: odoo/odoo#168705
Update legacy tests importing mail/test_utils.js to use HOOT instead of Qunit. Task-3818666 Forward-Port-Of: odoo/odoo#164027
Original PR description
Update legacy tests importing mail/test_utils.js to use HOOT instead of Qunit. Task-3818666 Forward-Port-Of: odoo/odoo#164027
The confirmation page wasn't displayed and the order wasn't sent to the preparation display when confirming an order with a total of 0. Now the confirmation page is displayed and the order is send to the preparation display when the order is confirmed regardless of the total amount. Forward-Port-Of: odoo/enterprise#58918 Forward-Port-Of: odoo/enterprise#58348
Original PR description
The confirmation page wasn't displayed and the order wasn't sent to the preparation display when confirming an order with a total of 0. Now the confirmation page is displayed and the order is send to the preparation display when the order is confirmed regardless of the total amount. Forward-Port-Of: odoo/enterprise#58918 Forward-Port-Of: odoo/enterprise#58348
before this commit, if some customization has to be done for changing the workflow of invoice generation, i.e., to keep the auto generated invoice in draft state the entire function has to be rewritten after this commit, a hook is introduced _process_auto_invoice which will post the invoice, later to alter this flow just need to inherit this function Forward-Port-Of: odoo/enterprise#66305 Forward-Port-Of: odoo/enterprise#66200
Original PR description
before this commit, if some customization has to be done for changing the workflow of invoice generation, i.e., to keep the auto generated invoice in draft state the entire function has to be rewritten after this commit, a hook is introduced _process_auto_invoice which will post the invoice, later to alter this flow just need to inherit this function Forward-Port-Of: odoo/enterprise#66305 Forward-Port-Of: odoo/enterprise#66200
Issue: -------------------- When you open a sign template you can see there are double scroll bars on the iframe Cause: ---------------------- The sign item toolbar placed on the left side is given 100% height and 1px border which is causing the iframe body to overflow Solution: ----------------------------- The 100% height given to the toolbar is changed with -webkit-fill-available task-4014519 Forward-Port-Of: odoo/enterprise#65609
Original PR description
Issue: -------------------- When you open a sign template you can see there are double scroll bars on the iframe Cause: ---------------------- The sign item toolbar placed on the left side is given 100% height and 1px border which is causing the iframe body to overflow Solution: ----------------------------- The 100% height given to the toolbar is changed with -webkit-fill-available task-4014519 Forward-Port-Of: odoo/enterprise#65609
This enhancement introduces support for customer statements in the Indian localization of the accounting package. The update includes an automatic installation of the customer statement module, which essentially exports the partner ledger. Task link: https://www.odoo.com/web#model=project.task&id=3774149 task-3774149 Forward-Port-Of: odoo/enterprise#61343 Forward-Port-Of: odoo/enterprise#57781
Original PR description
This enhancement introduces support for customer statements in the Indian localization of the accounting package. The update includes an automatic installation of the customer statement module, which essentially exports the partner ledger. Task link: https://www.odoo.com/web#model=project.task&id=3774149 task-3774149 Forward-Port-Of: odoo/enterprise#61343 Forward-Port-Of: odoo/enterprise#57781
Steps to reproduce ================== - Install hr_skills,web_studio - Go to Employees - Open any record - Add a new resume entry without description - Save - Click on the actions gear - Print > Print Resume => `Odoo India pvt. Ltd` is displayed in the report in place of the missing description Cause of the issue ================== With the new report editor in 16.4, some demo data have been added directly inside the report templates as default content. The assumption was
Original PR description
Steps to reproduce ================== - Install hr_skills,web_studio - Go to Employees - Open any record - Add a new resume entry without description - Save - Click on the actions gear - Print >…
Steps to reproduce ================== - Install hr_skills,web_studio - Go to Employees - Open any record - Add a new resume entry without description - Save - Click on the actions gear - Print > Print Resume => `Odoo India pvt. Ltd` is displayed in the report in place of the missing description Cause of the issue ================== With the new report editor in 16.4, some demo data have been added directly inside the report templates as default content. The assumption was that it would be displayed inside the report editor, but outside, since the field would have a value, the value would take over. The default content if displayed when the field value is falsy. In this case, the default content is used instead of the empty description. Solution ======== Introduce a new attribute, data-oe-demo, to be used inside the report editor. This doesn't have the drawbacks of the default content as we can choose to only display it inside the report editor --- [commit]: https://github.com/odoo/odoo/commit/a45c6c545ffdcee3bb50b3455884b8296e5d6a7c opw-4033434 Forward-Port-Of: odoo/enterprise#66660
Before this commit, when you drag and drop a resizeable sign item from one page to another, it was not possible to resize the item: it was buggy because the updated sign item changed the page and the resize function had the old object binded to it. After this commit, it is possible resizing the sign items when clicking the border without any problems, from any page. This was obtained by re-binding the updated sign item to the resize function. task-4032512 Forward-Port-Of: odoo/enterprise#
Original PR description
Before this commit, when you drag and drop a resizeable sign item from one page to another, it was not possible to resize the item: it was buggy because the updated sign item changed the page and the resize function had the old object binded to it. After this commit, it is possible resizing the sign items when clicking the border without any problems, from any page. This was obtained by re-binding the updated sign item to the resize function. task-4032512 Forward-Port-Of: odoo/enterprise#65990
The aim of this commit is fixing the filtering of transactions when transactions have an empty identifier. Even if it's shouldn't be the case, it happens that providers return transactions without an identifier. In this case, it will always importe the first transaction and not the others as they have a similar id (an empty string). Now, we ignore in the filter these transactions. opw-4014171 Forward-Port-Of: odoo/enterprise#66473
Original PR description
The aim of this commit is fixing the filtering of transactions when transactions have an empty identifier. Even if it's shouldn't be the case, it happens that providers return transactions without an identifier. In this case, it will always importe the first transaction and not the others as they have a similar id (an empty string). Now, we ignore in the filter these transactions. opw-4014171 Forward-Port-Of: odoo/enterprise#66473
Before this PR: In the sign module, there are inconsistencies with the alignment of texts and icons, in both the portal and backend interfaces. After this PR: This fix addresses alignment issues and ensures consistency between the portal and backend interfaces. Now, texts and icons in the sign appear aligned and consistent across both interfaces. Forward-Port-Of: odoo/enterprise#63983
Original PR description
Before this PR: In the sign module, there are inconsistencies with the alignment of texts and icons, in both the portal and backend interfaces. After this PR: This fix addresses alignment issues and ensures consistency between the portal and backend interfaces. Now, texts and icons in the sign appear aligned and consistent across both interfaces. Forward-Port-Of: odoo/enterprise#63983