Monday, September 16, 2024
23 changes
8 changes
Resolved issues and error corrections
Project notification emails now keep the View Project button visible for internal users. The button is only hidden from customer portal recipients when the project is private, helping staff access project details directly from email while preserving intended customer visibility rules.
Original PR description
Before this commit, due to 715d6be, the `View Project` button in the email sent even if the receiver is an internal user, which is not really expected. This commit makes sure the button is only hidden for the customer portal when the project is private. X-Original-Commit: 715d6be Forward-port of #180257
Opening a CRM lead directly from a link now keeps the breadcrumb trail accurate, including the option to return to the broader list of records. This helps users navigate consistently when actions are launched indirectly in Odoo.
Original PR description
Before this commit when opening a CRM Lead from the URL, the breadcrumb doesn't show the multi-record controller. This occurs, because the CRM action is a server action that returns a window action, and the lazy controller is never created. Now, the lazy controller is correctly created also for the server actions.
Miscellaneous changes
The donation test relies on a complete payment flow using demo data. To avoid failures in environments without demo data, the test is now skipped when demo data is not loaded. This adjustment ensures accurate test results and prevents unnecessary failures in such environments. **During FW to 16:** Add check to be sure that payment_demo is available ```python payment_demo = self.env['ir.module.module']._get('payment_demo') if payment_demo.state != 'installed': self.skipTest("pay
Original PR description
The donation test relies on a complete payment flow using demo data.
To avoid failures in environments without demo data, the test is now
skipped when demo data is not loaded. This adjustment ensures accurate
test results and prevents unnecessary failures in such environments.
**During FW to 16:**
Add check to be sure that payment_demo is available
```python
payment_demo = self.env['ir.module.module']._get('payment_demo')
if payment_demo.state != 'installed':
self.skipTest("payment_demo module is not installed")
```
runbot-76571
Forward-Port-Of: odoo/odoo#179815
Forward-Port-Of: odoo/odoo#17976515 changes
Enhancements to existing features
The UrbanPiper point of sale integration was updated to match a renamed receipt header class in the main point of sale interface. This keeps the integration aligned with the latest receipt layout changes and helps avoid display or customization issues.
Original PR description
In this commit: - We have changed the class in the pos header reciept which is reflected in pos_urban_piper as well as it was used for xpath. Related PR: https://github.com/odoo/odoo/pull/178892 task- 4147609
### Steps to reproduce: - Create a product tracked by lot and register 4 lots of 10 units in stock : LOT001, LOT002, LOT003, LOT004 - Inventory > Configuration > Products > Product Categories - Change the Removal strategy of the "All" category to LIFO - Create and confirm a delivery order for 40 units of your product > Move lines are created for reservation in order LOT003, LOT002, LOT001 - Do not click on the detailed operation to see these LOTS and decrease the quantity of the move to
Original PR description
### Steps to reproduce: - Create a product tracked by lot and register 4 lots of 10 units in stock : LOT001, LOT002, LOT003, LOT004 - Inventory > Configuration > Products > Product Categories -…
### Steps to reproduce: - Create a product tracked by lot and register 4 lots of 10 units in stock : LOT001, LOT002, LOT003, LOT004 - Inventory > Configuration > Products > Product Categories - Change the Removal strategy of the "All" category to LIFO - Create and confirm a delivery order for 40 units of your product > Move lines are created for reservation in order LOT003, LOT002, LOT001 - Do not click on the detailed operation to see these LOTS and decrease the quantity of the move to 15 units ### Expected behavior: Since the lines were created respecting the removal strategy, they should be removed accordingly from the last one created to the first created > LOT001 and LOT002 should be removed and 5 units should be decreased from LOT003 ### Current behavior: LOT004 and LOT004 are removed and 5 units is removed from LOT002 ### Cause of the issue: On qty decrease, the `_process_decrease` of the `set_quantity` is called to decrease the qties on the associated sml and to unlink the one resulting with a 0 qty. However, the loop used to make this action is not based on the reversed order of creation of the lines but on their order itself. #### Note: This doe snot solve the issue for complex removal strategy that would require a complete recompute of the reservation on qty decrease such as "use the minimal amount of packages". ### Note 2: An other issue exists when you increase the demand of the move instead of decreasing it: while the qty done is increased no assignments are done so that a move line without lot id would be created to fulfill the increase of qty. This is because the `_action_assign` can not be triggered again in this process increase since the stockpocalypse the line was even commented here: https://github.com/odoo/odoo/blob/9f364cde276b8b3be73c30617515bd55a9f25aba/addons/stock/models/stock_move.py#L376-L378 he reason is that if an `_action_assign` was performed instead and if the units were not in stock to fulfill it the qty would only be increased by the available qty and the desired flow would be bloqued. THe behavior is being improved in master (18.0+) but the required change of the `_process_increase` is to risky to be applied in stable. co-authored by @naja628 opw-4074174 and opw-4071479 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#180082
Steps --- * create a set-up with 2 companies using different currencies. eg: * company 1: usd * company 2: eur * from the company 2: set a conversion rate from eur to usd in *Currencies* * from company 1: create a based on rules shipping method (with prices in usd) * from company 2: * create an SO for some products * add the shipping method * => the price in dollars is used unconverted as the price in eur Cause --- when we have a base_on_rule delivery without a speci
Original PR description
Steps --- * create a set-up with 2 companies using different currencies. eg: * company 1: usd * company 2: eur * from the company 2: set a conversion rate from eur to usd in *Currencies* * from company 1: create a based on rules shipping method (with prices in usd) * from company 2: * create an SO for some products * add the shipping method * => the price in dollars is used unconverted as the price in eur Cause --- when we have a base_on_rule delivery without a specified company, we convert prices as if the price was in the current company's currency. Fix --- Consider the price to be in the main company's currency instead opw-4105047 Forward-Port-Of: odoo/odoo#180123 Forward-Port-Of: odoo/odoo#177932
Removing Mantux11 from our CLA --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#180235
Original PR description
Removing Mantux11 from our CLA --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#180235
Added condition on check that ensured the organizer was an attendee on the event on create. This was added in a change that allowed the organizer to be changed on the Odoo side. However, this caused issues with the appointments app when creating an appointment that only used resources. The "organizer" who in this case is the creator of the appointment type would not be an attendee and therefore would cause an error and make the appointment type unbookable. Adding this condition allows t
Original PR description
Added condition on check that ensured the organizer was an attendee on the event on create. This was added in a change that allowed the organizer to be changed on the Odoo side. However, this caused issues with the appointments app when creating an appointment that only used resources. The "organizer" who in this case is the creator of the appointment type would not be an attendee and therefore would cause an error and make the appointment type unbookable. Adding this condition allows the appointment to bypass the check if the appointment type uses resources instead of users. opw-3841495 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#162927
This commit will remove the readonly constraint on the journal when an account move has been posted. task: 4028973 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#180266 Forward-Port-Of: odoo/odoo#171710
Original PR description
This commit will remove the readonly constraint on the journal when an account move has been posted. task: 4028973 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#180266 Forward-Port-Of: odoo/odoo#171710
The Helpdesk website form now uses the selected helpdesk team as a condition for showing relevant fields. This helps businesses present more appropriate form options to customers and keeps the support request experience cleaner.
Original PR description
task-3864606 see https://github.com/odoo/odoo/pull/169797
The accounting reports redirect prompt can now be reused with different messages and button labels. This makes it easier to guide users in different accounting workflows with clearer, context-specific wording.
Original PR description
Currently the redirect action component is only configured for the tax closing depending move. The goal here is to make it generic so we can have a different message and button text
The Documents and spreadsheet-related document views have been simplified to use newer, standard card layouts. This makes the interface easier to maintain and helps keep document views consistent without changing the core business workflow.
Original PR description
In this commit we have simplified the kanban arch for the documents and related modules. The goal is to simplify them, make them easier to read, and use bootstrap utility classnames. - Previously, we used `kanban-box`, but now we are using `kanban-card` instead. - Deprecated `oe_kanban_global_click` and `oe_kanban_global_click_edit`. - More use of `<field/>` tags - Removed the `oe_kanban_colorpicker` class and replaced it with the `kanban_color_picker` widget. - Changed type='edit' to type='open' to open records. Since version 16, records have always been open in edit mode by default. - `kanban_image` from rendering context, is deprecated so we use `<field name=... widget=image/>` instead Task-3992107
HR-related dashboard cards have been cleaned up to use newer, simpler display components and standard styling. This should make the dashboards easier to maintain while preserving the same day-to-day experience for users.
Original PR description
*hr_appraisal,hr_expense,hr_holidays,hr_recruitment In this commit we have simplified the kanban arch for the hr module dashboard. the goal is to simplify them, make them easier to read and use bootstrap utility classnames. - Previously, we used kanban-box, but now we are using kanban-card instead. - Deprecated oe_kanban_global_click and oe_kanban_global_click_edit. - More use of `<field/>` tags - Removed the oe_kanban_colorpicker class and replaced it with the kanban_color_picker widget. - Changed type='edit' to type='open' to open records. since version 16, records always open in edit mode by default. - kanban_image from rendering context, is deprecated so we use `<field name=... widget=image/>` instead - kanban_color, kanban_getcolor and kanban_getcolorname are deprecated use new attribute highlight_color=color_field_name on root node Task-3992107
Marketing Automation and PLM kanban screens were simplified to use newer Odoo interface patterns. This makes the views easier to maintain and keeps the user experience aligned with current platform standards, with little expected change to day-to-day workflows.
Original PR description
In this commit we have simplified the kanban arch for the marketing_automation and mrp_plm modules.the goal is to simplify them, make them easier to read and use bootstrap utility classnames. - Previously, we used kanban-box, but now we are using kanban-card instead. - Deprecated oe_kanban_global_click and oe_kanban_global_click_edit. - More use of `<field/>` tags - Removed the oe_kanban_colorpicker class and replaced it with the kanban_color_picker widget. - Changed type='edit' to type='open' to open records. since version 16, records always open in edit mode by default. - kanban_image from rendering context, is deprecated so we use `<field name="..." widget="image"/>` instead - kanban_color, kanban_getcolor and kanban_getcolorname are deprecated use new attribute highlight_color="color_field_name" on root node Task-3992107
Resolved issues and error corrections
A small cleanup stops the spreadsheet edition from trying to translate a blank piece of text. This avoids noisy warnings in automated logs without changing how users interact with spreadsheets.
Original PR description
Trying to extract the translation of an empty string will throw a warning (https://github.com/python-babel/babel/blob/master/babel/messages/extract.py#L356) (Can be observed in `test_only` logs of bundle `testing post_install from auth_totp to microsoft_outlook`) This commit removes the translation of the empty string.
This change updates an internal performance test for the appointment app to match the current expected database query count. It helps keep automated checks accurate so teams can detect real performance regressions without false alarms.
Original PR description
task-4141409
Miscellaneous changes
Take a demo invoice, print it. Go to general ledger, print Datev ATCH, the pdf is not attached. We should select the message_main_attachment_id, as it's the one we want to have in the zip anyway. opw-4162604 Forward-Port-Of: odoo/enterprise#70044
Original PR description
Take a demo invoice, print it. Go to general ledger, print Datev ATCH, the pdf is not attached. We should select the message_main_attachment_id, as it's the one we want to have in the zip anyway. opw-4162604 Forward-Port-Of: odoo/enterprise#70044
To reproduce: ============= 1. Add an image field on a worksheet template 2. Create a new task 3. Add a picture on the worksheet 4. Send the report to the customer -> the image is not displayed on the protal -> after signing the report, the image is not displayed on the signed report Problem: ======== - the image added to the worksheet is a binary field, so when compiling the Qweb template, this field can be either a base64 string or a url to the image. https://github.com/odoo/odoo
Original PR description
To reproduce: ============= 1. Add an image field on a worksheet template 2. Create a new task 3. Add a picture on the worksheet 4. Send the report to the customer -> the image is not displayed on the protal -> after signing the report, the image is not displayed on the signed report Problem: ======== - the image added to the worksheet is a binary field, so when compiling the Qweb template, this field can be either a base64 string or a url to the image. https://github.com/odoo/odoo/blob/f0af31dbe36bc77d50ec36e88b49e1e521b809c1/addons/web/models/ir_qweb_fields.py#L68-L74 - in this case the field is url to the image, so when the customer opens the worksheet on portal, the image is not loaded as the customer does not have read access to the binary field representing the image. Solution: ========= - represent image binary fields as base64 strings in the Qweb template insted of urls to the image. opw-3944993 Forward-Port-Of: odoo/enterprise#67156
Versions -------- - 17.0+ Steps ----- 1. Create a subscription SO w/ a subscription product; 2. set recurrence to monthly; 3. set start date to 3+ months ago; 4. confirm & create invoice. Issue ----- In the Other Info tab, the Invoice Status is displayed as fully invoiced, despite there still being several months to invoice. Cause ----- The `_compute_invoice_status` method doesn't doesn't check `next_invoice_date` to decide whether a line's status should be `invoiced` or `to
Original PR description
Versions -------- - 17.0+ Steps ----- 1. Create a subscription SO w/ a subscription product; 2. set recurrence to monthly; 3. set start date to 3+ months ago; 4. confirm & create invoice. Issue ----- In the Other Info tab, the Invoice Status is displayed as fully invoiced, despite there still being several months to invoice. Cause ----- The `_compute_invoice_status` method doesn't doesn't check `next_invoice_date` to decide whether a line's status should be `invoiced` or `to invoice`. Solution -------- Modify the override for `_compute_invoice_status` in sale_subscription, to change the `invoice_status` from `invoiced` to `to invoice` if the `next_invoice_date` is today or earlier. Also change compute dependency from `order_id.is_subscription` to `order_id.next_invoice_date`. This maintains a transitive dependency to `order_id.is_subscription`. opw-3849059 Forward-Port-Of: odoo/enterprise#65864
In two steps the outgoing shipment doesn't exist. So the computation on max ongoing rental is not correct. We fix it to correctly count the outgoing shipment Forward-Port-Of: odoo/enterprise#69966
Original PR description
In two steps the outgoing shipment doesn't exist. So the computation on max ongoing rental is not correct. We fix it to correctly count the outgoing shipment Forward-Port-Of: odoo/enterprise#69966
[FIX] *_spreadsheet_*: useless filter date granularity option In task 3887844 we added the possibilty to select which date granularities were available for a given period global filter. But this options was also displayed for relative and from/to global filters, where it made no sense. Task: [4176679](https://www.odoo.com/odoo/2328/tasks/4176679) Forward-Port-Of: odoo/enterprise#69998 Forward-Port-Of: odoo/enterprise#69775
Original PR description
[FIX] *_spreadsheet_*: useless filter date granularity option In task 3887844 we added the possibilty to select which date granularities were available for a given period global filter. But this options was also displayed for relative and from/to global filters, where it made no sense. Task: [4176679](https://www.odoo.com/odoo/2328/tasks/4176679) Forward-Port-Of: odoo/enterprise#69998 Forward-Port-Of: odoo/enterprise#69775
The aim of this commit is fixing the connected until widget to show the reconnect bank button when the expiration date is for today. The right to fix that, is doing the fix in the view but to avoid breaking the stable policy, we decide to make the change in the JS widget. task-4058051 Forward-Port-Of: odoo/enterprise#69858
Original PR description
The aim of this commit is fixing the connected until widget to show the reconnect bank button when the expiration date is for today. The right to fix that, is doing the fix in the view but to avoid breaking the stable policy, we decide to make the change in the JS widget. task-4058051 Forward-Port-Of: odoo/enterprise#69858
Since this commit [[1]], the bank synchronization flow is available in invoicing for enterprise user. It means that we have to update the access rights. It was done for the main flow but forgotten for the missing transactions flow. [1]: https://github.com/odoo-dev/enterprise/commit/c00c23cca9760533f0578ba3c93e3b59979589ce no task id Forward-Port-Of: odoo/enterprise#69931
Original PR description
Since this commit [[1]], the bank synchronization flow is available in invoicing for enterprise user. It means that we have to update the access rights. It was done for the main flow but forgotten for the missing transactions flow. [1]: https://github.com/odoo-dev/enterprise/commit/c00c23cca9760533f0578ba3c93e3b59979589ce no task id Forward-Port-Of: odoo/enterprise#69931