Daily updates from Odoo
Wednesday, December 11, 2024
38 changes · 18.0
Enhancements to existing features
Odoo will stop automatically adding its own signature when an external customer replies by email. This avoids duplicate or cluttered signatures because customers often already include one from their email app.
Original PR description
When an external user responds to an email sent via Odoo, Odoo may send a mail notification with the user's message and automatically add a signature on their behalf. Since most external users may have already configured an email signature in their mail client, the added signature can be redundant. To avoid this, we will no longer add a signature on behalf of external users. task-4273520 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Users can now add files to the full email composer by dragging and dropping them directly onto the composer. This makes attaching files easier and also ensures uploaded attachments are preserved with the draft message when the composer is closed.
Original PR description
This PR allows users to add new attachments to an email by dragging and dropping a file onto the full mail composer. This change will make the process of attaching new files simpler for the end-user. To ensure that the dropzones will be visible on the modals, we will add the dropzone components to the overlay layer. Task-4273520
The point of sale delivery integration now supports additional food delivery aggregators: Jahez, SkipTheDishes, Rafeeq, and Ninja. This expands the delivery channels restaurants can connect to, helping reach more customers through regional and international platforms.
Original PR description
Following this commit : New food delivery aggregators have been introduced, including: - Jahez - SkipTheDishes - Rafeeq - Ninja task- 4369004
Resolved issues and error corrections
Call participants in Discuss are now sorted using the correct available name information. This prevents ordering issues in the call sidebar, making participant lists more reliable during conversations.
Original PR description
Before this commit, and since [1], the call participants in the side bar were sorted by `nameOrDisplayName` which is not available and should be using `name`. [1]: https://github.com/odoo/odoo/pull/174965
This fixes a visual issue in the Discuss sidebar where the last public channel icon could appear cropped. The icon sizing was adjusted so channels display cleanly, improving the user experience without changing functionality.
Original PR description
**Current behavior before PR:** In the discuss sidebar, the last public channel icon appears cropped due to insufficient width and height. **Desired behavior after PR is merged:** The issue is resolved by little adjusted height and width of the icons, this ensures the last public channel icon displays correctly without cropping. Before / after   task-4354447 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Badges now avoid showing an unintended grey background by default, making labels look cleaner and more consistent. An unsupported styling class was also replaced with a supported one to keep the interface aligned with the current design framework.
Original PR description
Before this commit: - Previously, the badge displayed a default background color of grey. After this commit: - The badge should not display a default background color. - The `text-bg-muted` class, which is not supported in Bootstrap 5, has been replaced with `text-bg-secondary`. task-4247109 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Sales users without Settings or administrator rights can now open quotation templates that include quote builder headers or footers. This prevents access errors and lets sales teams use configured quote layouts without needing elevated permissions.
Original PR description
Problem: When users with no Settings/Admin rights attempt to access the header/footers of the quote builder, an access error is thrown because they have no access to the private attachments. Purpose: Users with access to Sales should have access to the headers/footers to use the quote builder. To resolve the bug, the header/footer attachments needs to have both res_model and res_id of the quotation documents. Steps to Reproduce on Runbot: 1. Install Sales 2. Log in as admin and create a quotation template with a header attached in the quote builder 3. Log in as a demo user with no setting rights but is a sales admin 4. Navigate to a quotation template with headers attached --> access error opw-4318572 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix makes sales order lines use their own warehouse when deciding whether items should be supplied on demand. It prevents incorrect procurement or delivery planning when a line uses a different warehouse than the overall sales order.
Original PR description
…on sale.order.line Description of the issue/feature this PR addresses: Since v18.0, the warehouse_id field on sale.order.line is now computed. Before v18.0, the field was related to the warehouse of the order (order_id.warehouse_id). Current behavior before PR: The method _compute_is_mto() is still referencing the warehouse of the order instead of the warehouse of the line. As a result, in cases where the warehouse of the line differs from that of the order, the is_mto value may be incorrect. Desired behavior after PR is merged: The is_mto value should be computed based on the warehouse of the line, not the order. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue in the HTML editor where selecting a single empty table cell with the mouse did not show the editing toolbar. Users can now access formatting options consistently when working with table cells, reducing friction during content editing.
Original PR description
**Before this PR:** When trying to select single empty cell using mouse, toolbar is not getting opened. The reason is that `updateToolbar` gets called from mouseup event in `toolbar_plugin` but it fails to open toolbar because `shouldBeVisible` method returns false if selection is collapsed. **Behaviour after PR:** Now toolbar gets opened when selecting single empty cell. task-4316754 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Products linked to purchase order lines can no longer be deleted while still in use. This prevents errors when users open the forecast report for purchase orders that reference those products.
Original PR description
This error occurs when a product is used in a purchase order, but the product is subsequently removed or deleted from the product list, and then an attempt is made to access it in the forecast report. Steps to reproduce: --- - Install ``purchase_stock`` module - Create a new purchase order and create a new product in the purchase order line(eg: Test) - Now go to products and delete the product(eg: Test) - Now in the purchase order line click on the ``Forecast Report`` button Traceback: --- ``ValueError: Expected singleton: product.product()`` This commit resolves the error by adding the ``ondelete`` constraint to the ``product_id`` field. This ensures that a product in use cannot be deleted. sentry-6121903860 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes several business-impacting issues across accounting, CRM lead assignment, tax reporting, and the web interface. It helps prevent incorrect tax report entries, removes blockers in accounting cut-off workflows, ensures older CRM leads can still be manually assigned, and makes PDF and error handling behavior clearer for users.
Original PR description
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 stop-timer timesheet dialog now displays the trash button at the same height as the other action buttons. This provides a cleaner, more consistent experience when users stop a running task timer.
Original PR description
Before this commit, the trash button displayed in the wizard used when the user clicks on stop button in a task (when a timer is running on that task for that current user) has not the same height than the other buttons displayed in that wizard. This commit makes sure the button has the same height than the other buttons. task-4382070
Fixed an issue where the Documents Email Links page showed a blank page when creating or opening an email link. Users can now manage document-related email links without being blocked by an empty screen.
Original PR description
Steps to reproduce: 1. Go to Configuration > Email Links 2. click on New -> Blank page 3. click on a record -> Blank page Technical Reason: passed an empty form view and the id got overwritten because of the same name. After this commit: - form view will be open - 'documents.document' related aliases here Task-4265660
Employee departures by mutual agreement now use the departure date entered in the wizard to start the notice period, instead of automatically moving it to the next Monday. This helps Belgian payroll users calculate departure-related dates more accurately and consistently with the agreed leaving date.
Original PR description
- make the start_notice_period take the wizard departure_date instead of next monday in case of having `mutual agreement` the departure reason Task: 4373961
Several spreadsheet formulas in the accounting dashboards were corrected so they point to the right data and use the proper calculation signs. This helps ensure dashboard figures are consistent and accurate for financial reporting and analysis.
Miscellaneous changes
**Issue:** Survey's PDF certifications generation is only allowed to users having rights on the company of the user who answered the survey. **Expected:** Any user having generation rights to surveys should be able to generate the certification PDF. **Steps to reproduce:** - Activate Survey app and ensure there are, at least, 2 companies; - Create a survey with certification and ensure `Require Login` is unchecked; - Share the survey (copy the `Survey Link`); - Navigate to Settings /
Original PR description
**Issue:** Survey's PDF certifications generation is only allowed to users having rights on the company of the user who answered the survey. **Expected:** Any user having generation rights to surveys…
**Issue:** Survey's PDF certifications generation is only allowed to users having rights on the company of the user who answered the survey. **Expected:** Any user having generation rights to surveys should be able to generate the certification PDF. **Steps to reproduce:** - Activate Survey app and ensure there are, at least, 2 companies; - Create a survey with certification and ensure `Require Login` is unchecked; - Share the survey (copy the `Survey Link`); - Navigate to Settings / Users & Companies / Users; - Filter on `Inactive Users` and select `Public user`; - Setup the user's `Default Company` on Company A; - Setup an active user's `Default Company` on Company B and ensure its `Allowed Companies` don't contain Company A; - In a private navigator (to ensure no login data are saved), answer the survey (using the copied link above); - Log in as the active user and go to Surveys / Participations; - Look for the record of your test (`Contact` field should be empty); - Click the `Certifications` action button; **Cause:** The user is not allowed to retrieve the other company's data to fill needed texts to display on the certificate. **Fix:** Allow any user to retrieve the logo and name of the restricted company using a `sudo` on these fields. opw-4266445 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#189368
Problem: A loyalty rewards points member don't receive their points for their confirmed order if they don't sign into their account when signing their quotation online from a link they received in their email. This bug only occurs if the quotation is set to "online signature" only. The bug is not reproducible when the quotation is set to both "online signature" and "online payment" or if website_sale_loyalty is not installed. Purpose: It is expected that customers should receive their reward
Original PR description
Problem: A loyalty rewards points member don't receive their points for their confirmed order if they don't sign into their account when signing their quotation online from a link they received in…
Problem: A loyalty rewards points member don't receive their points for their confirmed order if they don't sign into their account when signing their quotation online from a link they received in their email. This bug only occurs if the quotation is set to "online signature" only. The bug is not reproducible when the quotation is set to both "online signature" and "online payment" or if website_sale_loyalty is not installed. Purpose: It is expected that customers should receive their reward points for their order without needing to sign in because they accessed the link to sign the quotation from their email. It should be consistent with the behavior exhibited from having "online payment" set for the quotation or without website_sale_loyalty installed. Steps to Reproduce on Runbot: 1. Install Sales app, website_sale_loyalty, loyalty, sale_loyalty 2. Create a loyalty program that reward points based on orders 3. Create a quotation for a partner, set "online signature" in Other info, and click "Send by email" 4. Access the email in Settings > Technical > Emails 5. Copy the "Accept & sign" link and paste into incognito window 6. Sign the quote as a public user 7. Observe that the loyalty card for the partner did not update the points opw-4205826 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#182545
Steps to reproduce: 1. Add a stored computed field on `res.users` that depends on `groups_id` 2. Add a constraint on `res.users` that depends on `groups_id` 3. Give the user a group 4. Modify the given group and add an implied group Result: - The computed field is not recomputed - The constraint is not checked The reason for this is that the users groups are updated with a raw SQL query, and the ORM is not aware of the changes. This is a regression since 5f12e244. This issue w
Original PR description
Steps to reproduce: 1. Add a stored computed field on `res.users` that depends on `groups_id` 2. Add a constraint on `res.users` that depends on `groups_id` 3. Give the user a group 4. Modify the given group and add an implied group Result: - The computed field is not recomputed - The constraint is not checked The reason for this is that the users groups are updated with a raw SQL query, and the ORM is not aware of the changes. This is a regression since 5f12e244. This issue was partially detected and fixed in 459e6dc1, but only for a single constraint. This commit makes sure that the ORM properly propagates the changes to computed fields and all constraints, not just the one that was explicitly checked. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#190259 Forward-Port-Of: odoo/odoo#177301
Versions -------- - saas-17.4+ Steps ----- 1. Start a fresh database with only `website_sale` installed; 2. configure Website to show strikethrough price; 3. configure Website to let user decide on "Add to Cart"; 4. create a pricelist with a discount based on another pricelist; 5. have discount apply to all product categories; 6. make pricelist selectable; 7. go to /shop; 8. add a product to cart. Issue ----- > ``` > AssertionError: > Invalid value res.currency(1,) in domain
Original PR description
Versions -------- - saas-17.4+ Steps ----- 1. Start a fresh database with only `website_sale` installed; 2. configure Website to show strikethrough price; 3. configure Website to let user decide on…
Versions
--------
- saas-17.4+
Steps
-----
1. Start a fresh database with only `website_sale` installed;
2. configure Website to show strikethrough price;
3. configure Website to let user decide on "Add to Cart";
4. create a pricelist with a discount based on another pricelist;
5. have discount apply to all product categories;
6. make pricelist selectable;
7. go to /shop;
8. add a product to cart.
Issue
-----
> ```
> AssertionError:
> Invalid value res.currency(1,) in domain term ('date_end', '>=', res.currency(1,))
>```
Cause
-----
PR https://github.com/odoo/odoo/pull/181014 changed how versions 17.4+ display strikethrough prices for discount rules.
In doing so, it added a call to `_compute_price_before_discount`, passing the parameters positionally.
The problem is that not all helper functions used in the process accept these arguments in the same order, specifically:
https://github.com/odoo/odoo/blob/4c68ce24eaf4e1b431485a3bdcd55ca0064c0ae0/addons/product/models/product_pricelist_item.py#L521
https://github.com/odoo/odoo/blob/4c68ce24eaf4e1b431485a3bdcd55ca0064c0ae0/addons/product/models/product_pricelist.py#L161-L164
Solution
--------
Name the arguments, so that they get passed as `**kwargs` instead of `*args`.
opw-4366956
Forward-Port-Of: odoo/odoo#189925Before this commit, if you had many records and sold many products in a day, the PoS would become slow when adding products to the cart. This commit improves performance with 5000 loaded products, 1000 existing pos order lines, and 2000 pricelist items, reducing the time from about 5 seconds to 200 ms. This commit prevents unnecessary deletions on IndexedDB, retrieves the display discount policy in O(1) time complexity compared to O(n), and filters products to display on sliced products inste
Original PR description
Before this commit, if you had many records and sold many products in a day, the PoS would become slow when adding products to the cart. This commit improves performance with 5000 loaded products, 1000 existing pos order lines, and 2000 pricelist items, reducing the time from about 5 seconds to 200 ms. This commit prevents unnecessary deletions on IndexedDB, retrieves the display discount policy in O(1) time complexity compared to O(n), and filters products to display on sliced products instead of all products. opw-4381390 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#189574
Before this commit, updating the quantity in localizations with disallowLineQuantityChange, such as Germany, would result in an error. opw-4367694 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#189129
Original PR description
Before this commit, updating the quantity in localizations with disallowLineQuantityChange, such as Germany, would result in an error. opw-4367694 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#189129
When in preview mode and a modal is open in the preview, pressing escape hides both the modal and the top menu bar. We want to prevent that. Steps to reproduce: 1. Connect as Admin and go on the website homepage 2. Edit the page, add a popup and save 3. Make sure to be in preview mode 4. Wait for the popup to show. 5. Click on it (just to be sure it's focused) 6. Press escape task-4351982 Forward-Port-Of: odoo/odoo#190066 Forward-Port-Of: odoo/odoo#188085
Original PR description
When in preview mode and a modal is open in the preview, pressing escape hides both the modal and the top menu bar. We want to prevent that. Steps to reproduce: 1. Connect as Admin and go on the website homepage 2. Edit the page, add a popup and save 3. Make sure to be in preview mode 4. Wait for the popup to show. 5. Click on it (just to be sure it's focused) 6. Press escape task-4351982 Forward-Port-Of: odoo/odoo#190066 Forward-Port-Of: odoo/odoo#188085
Before this commit, if the orderline quantity was zero, it would cause a division by zero error when calculating the anglo-saxon price unit. opw-4370055 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#189357
Original PR description
Before this commit, if the orderline quantity was zero, it would cause a division by zero error when calculating the anglo-saxon price unit. opw-4370055 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#189357
Before this commit, the following unit test may crash non-deterministically: "Attachment view / chatter popout across multiple records test" With the following error: ``` Cannot read properties of null (reading 'write') ``` This happens because `iframe.contentDocument` could be `null`, which happens when the iframe of popout is closed before it had time to load content. The `reset()` function of popout service assumes that the document has been loaded, which is not necessarily true
Original PR description
Before this commit, the following unit test may crash non-deterministically: "Attachment view / chatter popout across multiple records test" With the following error: ``` Cannot read properties of null (reading 'write') ``` This happens because `iframe.contentDocument` could be `null`, which happens when the iframe of popout is closed before it had time to load content. The `reset()` function of popout service assumes that the document has been loaded, which is not necessarily true. runbot-106785 Forward-Port-Of: odoo/odoo#190194
`*` = [hr_expense, pos_loyalty, product, sale_loyalty , website_sale_loyalty] Before this commit: In the mobile and form view, when a checkbox field had a long label, the checkbox would appear on top, with the label text displayed below. Also, Long labels extend beyond the boundaries of the form view, appearing outside of it. After this commit: Checkbox fields with long labels are now properly aligned in the mobile and form views. The checkbox and its label text are displayed corr
Original PR description
`*` = [hr_expense, pos_loyalty, product, sale_loyalty , website_sale_loyalty] Before this commit: In the mobile and form view, when a checkbox field had a long label, the checkbox would appear on top, with the label text displayed below. Also, Long labels extend beyond the boundaries of the form view, appearing outside of it. After this commit: Checkbox fields with long labels are now properly aligned in the mobile and form views. The checkbox and its label text are displayed correctly, Task-4269578 Forward-Port-Of: odoo/odoo#187980
### Steps to reproduce: - Install "l10n_hu_edi" and switch to a Hungarian company - Create an invoice - Click "Send & Print", uncheck "NAV 3.0" and send it - Repeat step 3 - Error ### Cause: With l10n_hu_edi, Odoo is supposed to regenerate the invoices at each Send&Print. The way it was done is by overriding `_need_invoice_document` to not check anymore if `invoice.invoice_pdf_report_id` is empty. As the function `_prepare_invoice_pdf_report` from `account` is called when `_need_invoice
Original PR description
### Steps to reproduce: - Install "l10n_hu_edi" and switch to a Hungarian company - Create an invoice - Click "Send & Print", uncheck "NAV 3.0" and send it - Repeat step 3 - Error ### Cause: With…
### Steps to reproduce:
- Install "l10n_hu_edi" and switch to a Hungarian company
- Create an invoice
- Click "Send & Print", uncheck "NAV 3.0" and send it
- Repeat step 3
- Error
### Cause:
With l10n_hu_edi, Odoo is supposed to regenerate the invoices at each Send&Print. The way it was done is by overriding `_need_invoice_document` to not check anymore if `invoice.invoice_pdf_report_id` is empty. As the function `_prepare_invoice_pdf_report` from `account` is called when `_need_invoice_document` returns True, it is always called. But this function checks again if `invoice.invoice_pdf_report_id` is empty (https://github.com/odoo/odoo/blob/17.0/addons/account/wizard/account_move_send.py#L394-L395). So `invoice_data` doesn't have the key 'pdf_attachment_values' and it crashes at this line:
`pdf_values = invoice_data.get('pdf_attachment_values') or invoice_data['proforma_pdf_attachment_values']`
because it tries reading 'proforma_pdf_attachment_values' but the key is not there either.
### Solution:
Extend `_prepare_invoice_pdf_report` to remove `invoice.invoice_pdf_report_id`.
opw-4363559
Forward-Port-Of: odoo/odoo#189442The superuser menu is only visible to admins. Task - 4260306 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#190058 Forward-Port-Of: odoo/odoo#186584
Original PR description
The superuser menu is only visible to admins. Task - 4260306 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#190058 Forward-Port-Of: odoo/odoo#186584
Currently a ``ParseError`` is arising when the user installs the ``website_sale`` module after deleting the one shipping method from the ``sale`` module. Steps to reproduce: --- - Install ``sale`` and ``delivery`` modules - Open ``Shipping Methods`` and delete one shipping method - Now try to install the ``website_sale`` module. - The error appears in the log. Traceback: --- ``` ParseError while parsing /home/odoo/src/odoo/18.0/addons/website_sale/data/data.xml:62, somewhere insi
Original PR description
Currently a ``ParseError`` is arising when the user installs the ``website_sale`` module after deleting the one shipping method from the ``sale`` module.
Steps to reproduce:
---
- Install ``sale`` and ``delivery`` modules
- Open ``Shipping Methods`` and delete one shipping method
- Now try to install the ``website_sale`` module.
- The error appears in the log.
Traceback:
---
```
ParseError
while parsing /home/odoo/src/odoo/18.0/addons/website_sale/data/data.xml:62, somewhere inside <record id="delivery.free_delivery_carrier" model="delivery.carrier">
<field name="is_published" eval="True"/>
</record>
```
This commit solves the above issue by using ``forcecreate="False"`` to bypass record creation if it violates checks.
sentry-5731062091
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#189674**Steps:** - Install the hr module - Open the employee profile ----- **Description of the issue/feature this PR addresses:** In the employee profile, when entering letters with accents (é è à ë ...) in the badge ID, the barcode fails to print correctly, displaying the badge number as plain text instead. ----- **Cause:** The issue is due to barcode scanner limitations. ----- **Fix:** This PR resolves the issue by restricting the badge ID to alphanumeric characters without
Original PR description
**Steps:** - Install the hr module - Open the employee profile ----- **Description of the issue/feature this PR addresses:** In the employee profile, when entering letters with accents (é è à ë ...) in the badge ID, the barcode fails to print correctly, displaying the badge number as plain text instead. ----- **Cause:** The issue is due to barcode scanner limitations. ----- **Fix:** This PR resolves the issue by restricting the badge ID to alphanumeric characters without accents. task-4316576 Forward-Port-Of: odoo/odoo#186867
Before this commit, since the addition of the dual stream feature in v17, starting the screen sharing while the blur was active or swapping from blur to unblur and back would cause a black camera screen. This commit fixes this issue by: 1) Not closing streams when removing them from a RTC session when those streams originate from the device (and not a remote session). 2) Removing the condition on the state, which was always false when attempting to recover an old stream. Forward-Port-Of
Original PR description
Before this commit, since the addition of the dual stream feature in v17, starting the screen sharing while the blur was active or swapping from blur to unblur and back would cause a black camera screen. This commit fixes this issue by: 1) Not closing streams when removing them from a RTC session when those streams originate from the device (and not a remote session). 2) Removing the condition on the state, which was always false when attempting to recover an old stream. Forward-Port-Of: odoo/odoo#190008 Forward-Port-Of: odoo/odoo#189799
Versions -------- - 17.0 - saas-17.2 - saas-17.4 - 18.0 Steps ----- 1. Install appointment pre efd76940c999; 2. install website post efd76940c999. Issue ----- Template rendering issue. Cause ----- The commit added a xpath to website_appointment relying on an updated appointment module, which isn't always the case in stable. Solution -------- Make the xpath in website_appointment not rely on the appointment change. opw-4394557 Forward-Port-Of: odoo/enterprise#75459 F
Original PR description
Versions -------- - 17.0 - saas-17.2 - saas-17.4 - 18.0 Steps ----- 1. Install appointment pre efd76940c999; 2. install website post efd76940c999. Issue ----- Template rendering issue. Cause ----- The commit added a xpath to website_appointment relying on an updated appointment module, which isn't always the case in stable. Solution -------- Make the xpath in website_appointment not rely on the appointment change. opw-4394557 Forward-Port-Of: odoo/enterprise#75459 Forward-Port-Of: odoo/enterprise#75417
Versions -------- - 15.0+ Steps ----- 1. Have a task assigned to you; 2. ensure planned hours are empty; 3. plan the task partially outside working hours (e.g. 16:00 -> 21:00); 4. save. Issue ----- Planned hours are overwritten. Cause ----- Commit 52536bf8bb5 added logic to provide schedule-based start dates for tasks created in Gantt view, as well as other tasks, by overwriting the provided (default) date values. Solution -------- Check whether the provided date values
Original PR description
Versions -------- - 15.0+ Steps ----- 1. Have a task assigned to you; 2. ensure planned hours are empty; 3. plan the task partially outside working hours (e.g. 16:00 -> 21:00); 4. save. Issue ----- Planned hours are overwritten. Cause ----- Commit 52536bf8bb5 added logic to provide schedule-based start dates for tasks created in Gantt view, as well as other tasks, by overwriting the provided (default) date values. Solution -------- Check whether the provided date values are indeed defaults rather than hand-picked values. This can be done by seeing whether the time span between them is exactly 23:59:59, as the default is 00:00:00 -> 23:59:59 This way, tasks scheduled in batch or Gantt can still use schedule-based hours, while user-selected values from a daterange picker don't have to be written twice to select time slot that falls outside the assignee's schedule. opw-3947876 Forward-Port-Of: odoo/enterprise#75391 Forward-Port-Of: odoo/enterprise#65404
`*` = [sale_subscription] Before this commit: In the mobile and form view, when a checkbox field had a long label, the checkbox would appear on top, with the label text displayed below. After this commit: In the mobile and form view, checkbox fields with long labels are now properly aligned, with the checkbox and label text displayed. Task-4269578 Forward-Port-Of: odoo/enterprise#74561
Original PR description
`*` = [sale_subscription] Before this commit: In the mobile and form view, when a checkbox field had a long label, the checkbox would appear on top, with the label text displayed below. After this commit: In the mobile and form view, checkbox fields with long labels are now properly aligned, with the checkbox and label text displayed. Task-4269578 Forward-Port-Of: odoo/enterprise#74561
**Steps to reproduce:** - Make sure that PyPDF2 is in version 1.26.0 - Install l10n_mx_edi - Switch to a Mexican company - Create an invoice: * Customer: [a Mexican customer] * Payment Way: [Effectivo] * An invoice line with a product having a UNSPSC Category - Confirm the invoice - Generate CFDI via "Send & Print" button - Register a payment with "Efectivo" Payment Way - Update Payments on the invoice - Go to the payment - Force CFDI - Make sure the CFDI status of the paymen
Original PR description
**Steps to reproduce:** - Make sure that PyPDF2 is in version 1.26.0 - Install l10n_mx_edi - Switch to a Mexican company - Create an invoice: * Customer: [a Mexican customer] * Payment Way:…
**Steps to reproduce:**
- Make sure that PyPDF2 is in version 1.26.0
- Install l10n_mx_edi
- Switch to a Mexican company
- Create an invoice:
* Customer: [a Mexican customer]
* Payment Way: [Effectivo]
* An invoice line with a product having a UNSPSC Category
- Confirm the invoice
- Generate CFDI via "Send & Print" button
- Register a payment with "Efectivo" Payment Way
- Update Payments on the invoice
- Go to the payment
- Force CFDI
- Make sure the CFDI status of the payment is "Signed"
- Print "Payment Receipt"
**Issue:**
PyPDF2 raises a traceback:
"IndexError: list index out of range".
**Cause:**
PyPDF2 is executing this code to format a warning: file = filename.replace("/", "\\").rsplit("\\", 1)[1] where filename is something liked "<xxx>" (coming from the qweb compilation). Therefore, there is no index 1.
The warning is coming from lxml and is due to the fact that we are evaluating a xml value as it is in a qweb template:
"FutureWarning: Use specific 'len(elem)' or 'elem is not None' test instead." And since this commit:
https://github.com/odoo/odoo/commit/fd67b56fc695526d09706d2b6218519ea255fc30 Python's "warning.py" is overridden in PyPDF2.
**Solution:**
Use "len(cfdi['cfdi_node'])" as advised to check if the xml node has children in the payment receipt template.
opw-4359466
opw-4366016
Forward-Port-Of: odoo/enterprise#75227The multipage computation of xslx files was a bit overkill as it would convert the xlsx file to an o-spreadsheet json friendly form where it could simply explore the zip files. Furthermore, that convertion would create attachments for each media file present in the xlsx file. This is bad in 2 ways: - the created attachment would never be used again - we were creating attachment while calling a computed field (read/write mix is bad) Task-4213183 Forward-Port-Of: odoo/enterprise#70722
Original PR description
The multipage computation of xslx files was a bit overkill as it would convert the xlsx file to an o-spreadsheet json friendly form where it could simply explore the zip files. Furthermore, that convertion would create attachments for each media file present in the xlsx file. This is bad in 2 ways: - the created attachment would never be used again - we were creating attachment while calling a computed field (read/write mix is bad) Task-4213183 Forward-Port-Of: odoo/enterprise#70722
To reproduce: ============= - assign a user U without any group access to Appraisal app as manager of an appraisal - login as this user U and ask for feedback on the appraisal - fill the feedback, and change it's deadline to the past - try to consult the answers as user U -> redirected to survey expired error page Problem: ======== the access to appraisal feedback is checked based on the user's group access, but the user can be the manager of the appraisal without any group access to t
Original PR description
To reproduce: ============= - assign a user U without any group access to Appraisal app as manager of an appraisal - login as this user U and ask for feedback on the appraisal - fill the feedback, and change it's deadline to the past - try to consult the answers as user U -> redirected to survey expired error page Problem: ======== the access to appraisal feedback is checked based on the user's group access, but the user can be the manager of the appraisal without any group access to the appraisal app Solution: ========= in addition to the group access, check if the user is the manager of the appraisal opw-4354685 Forward-Port-Of: odoo/enterprise#75360
Steps to reproduce: - Install the l10n_cl_edi module - Create an invoice - Some terms are not translated : - Where it says: .. should say: .. - Donce dice: .. deberia decir: .. Issue: Some translation were missing making it incorect for the Chile localization. This comes from the [changes](https://github.com/odoo/enterprise/commit/33b6cafdf3985df255ef44) Fix: Updated the .pot and the .po accordingly to include the terms so the translation is correct. opw-4350114 For
Original PR description
Steps to reproduce: - Install the l10n_cl_edi module - Create an invoice - Some terms are not translated : - Where it says: .. should say: .. - Donce dice: .. deberia decir: .. Issue: Some translation were missing making it incorect for the Chile localization. This comes from the [changes](https://github.com/odoo/enterprise/commit/33b6cafdf3985df255ef44) Fix: Updated the .pot and the .po accordingly to include the terms so the translation is correct. opw-4350114 Forward-Port-Of: odoo/enterprise#74447
### Steps to reproduce: - Create two storable product: Final Product (FP) and Component (COMP) - Create and confirm an MO for FP with a raw move: 1 x COMP > The move should be: "not available" since 0 unit of COMP are in Stock - Go to the barcode module > Operations > Manufacturing - Remove the MO Ready filter > Click on your MO and then exit barcode - Go back to the MO in the back end (mrp module) #### > The raw move has been reserved and is hence marked as available. ### Cause of the
Original PR description
### Steps to reproduce: - Create two storable product: Final Product (FP) and Component (COMP) - Create and confirm an MO for FP with a raw move: 1 x COMP > The move should be: "not available" since…
### Steps to reproduce: - Create two storable product: Final Product (FP) and Component (COMP) - Create and confirm an MO for FP with a raw move: 1 x COMP > The move should be: "not available" since 0 unit of COMP are in Stock - Go to the barcode module > Operations > Manufacturing - Remove the MO Ready filter > Click on your MO and then exit barcode - Go back to the MO in the back end (mrp module) #### > The raw move has been reserved and is hence marked as available. ### Cause of the issue: Exiting the barcode will launch an rpc call of the `split_uncompleted_moves` in order to split uncomplete moves in 2 if necessary (for the records to be appropriately set the next time you enter the barcode): https://github.com/odoo/enterprise/blob/71f979d5bdf88207cb94c83bd6a69633da649d1e/stock_barcode/static/src/models/barcode_picking_model.js#L1327-L1329 https://github.com/odoo/enterprise/blob/71f979d5bdf88207cb94c83bd6a69633da649d1e/stock_barcode/models/stock_move.py#L9-L11 Furthermore, since c29f61fdded2e80d0bb3c06199c6a196feac8076 in case of a production the component move are rather splitted on the move lines to avoid odd split of the component moves on the MO. However, in that case if a unassigned move is splitted, a move line will be generated and associated to that move, which makes it reserved and hence available. opw-4338827 --- Forward-Port-Of: odoo/enterprise#74244