Friday, September 27, 2024
108 changes · master
Enhancements to existing features
This update improves Odoo's internal type hints so common record creation patterns are recognized correctly by developer tools. It helps reduce false error warnings during development and keeps the codebase easier to maintain without changing business functionality.
Original PR description
odoo/odoo#177609 added a bunch of typing, but that has a few issues: - `create` is not defined as taking a lone dict, which is the most common way to use it by an order of magnitude, so 9 cases out of 10 are marked as incorrect when trying to typecheck creates at least in pycharm, add ~~the relevant overloads (they don't seem to work correctly when create is being overridden tho)~~ proper typing to the decorators[^1][^2]. - The `M` typevar is not relevant to `api.py` (or its users), move it to `fields.py` where it makes sense - ~~Try to define the set of writeable values more precisely than `Any`, though it remains somewhat dodgy~~. [^1]: overloads "worked" but had to be repeated on every overload of the method which sucked (as overloading `create` is pretty normal) [^2]: so it still doesn't work in pycharm as it apparently doesn't understand typed decorators (at least not generic ones), it seems to work fine in mypy and pyright though which hit that it's the right solution
Emoji search now takes recently used emojis into account, so people are more likely to see their preferred emojis near the top of results. This makes composing messages faster and more personalized with less scrolling or repeated searching.
Original PR description
**Current behavior before PR:** prior to this PR, recent emojis were not considered in the search. **Desired behavior after PR is merged:** Updated search to include recent emojis, making them more prominent based on the search term. task-4144979 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Demo payroll data now includes two local banks with appropriate names and BIC codes for multiple country payroll localizations. This makes sample payroll setups feel more realistic and easier to evaluate in demonstrations or testing.
Resolved issues and error corrections
The subcontracting portal now provides enough viewing space for purchase order details. This makes it easier for users to review order information without struggling with a cramped display.
Original PR description
Prior to this commit, the portal view height was very small that users could not see purchase orders details easily. This commit fixes that issue. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Features or functions removed from Odoo
An obsolete internal accounting function was removed because it is no longer used and depended on another function that no longer exists. This reduces maintenance risk without changing day-to-day accounting workflows.
Original PR description
This function is no longer used anywhere. Additionally, it calls the _prepare_reconciliation_partials function which no longer exists either.
Code cleanup and technical improvements
Restaurant order transfers in Point of Sale have been streamlined by removing a fragile behind-the-scenes state tracking approach. This should make the transfer flow more reliable and easier to maintain without changing the core business process for users.
Original PR description
In pos restaurant when doing a transfer we set the order to transfer in
a key of `pos` and then whenever we have a click handler we have to
check if there is an order to transfer or not and adapt the code
accordingly. This is inconvenient and error prone.
In this commit we adapt the code such that we no longer need to store
this global state and that the transfering logic is handled in a
sequential way.
task: 4167376
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prMiscellaneous changes
### Steps to reproduce: - Create and confirm an SO for 5 units of a consumable product. - Validate the associated delivery. - Return and validate the return. - Return and validate the return of the return. - Change the demand of the SO from 5 to 8 units. #### > A delivery order for 8 units is created instead of 3. ### Cause of the issue: Changing the demand on the SO will trigger the ` _action_launch_stock_rule` to determine which procurement to trigger in order to fulfill the de
Original PR description
### Steps to reproduce: - Create and confirm an SO for 5 units of a consumable product. - Validate the associated delivery. - Return and validate the return. - Return and validate the return of the…
### Steps to reproduce: - Create and confirm an SO for 5 units of a consumable product. - Validate the associated delivery. - Return and validate the return. - Return and validate the return of the return. - Change the demand of the SO from 5 to 8 units. #### > A delivery order for 8 units is created instead of 3. ### Cause of the issue: Changing the demand on the SO will trigger the ` _action_launch_stock_rule` to determine which procurement to trigger in order to fulfill the delivery. During this call the qty to deliver will be computed by comparing the quantity handled by incoming and outgoing moves linked to the sol. However, the return of the return of an outgoing move will not be flagged as an outgoing move since it does not have a `location_final_id` since it was created as a return: https://github.com/odoo/odoo/blob/4a050ec0efb929f7605856f490025f7921d39672/addons/sale_stock/models/sale_order_line.py#L266-L267 https://github.com/odoo/odoo/blob/4a050ec0efb929f7605856f490025f7921d39672/addons/sale_stock/models/sale_order_line.py#L288-L292 opw-4105394 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#180492 Forward-Port-Of: odoo/odoo#179719
Original PR description
* = au, bd, eg, hk, jo, ke, lt, lu, ma, mx, nl, pl, ro, sk, and us. This PR improves the demo data for multiple l10n payroll modules by adding two banks (`res.bank`) with local bank names and BIC codes to each localization.
The point of sale interface now consistently shows unselected floating order tabs with proper button styling. This makes it clearer for staff that they can select and switch between floating orders, reducing confusion during checkout workflows.
Original PR description
Prior to this commit, the floating order button doesn't appear to be a button when unselected. This is because the `btn-secondary` is potentially removed by the framework because of redundant declaration. In this commit, we want the `btn-secondary` to be always there, and only the `active` class to be conditionally present. Before:  After: 
The work center form no longer shows two chatter panels when opened or when creating a new work center. This removes visual clutter and helps users interact with messages and activity tracking in the expected place.
Original PR description
Issue Before This Commit: =========================== When creating a new work center in mrp, forms contain 2 chatters in view. Steps to Produce: =================== 1. open mrp work center form 2. 2 chatters are visible With this commit: ==================== Removed the extra chatter that came in form view of the work center and the functionality now works as intended without any errors.
This draft work updates HR contract reporting and related dashboard data. It appears to address an issue found during automated validation, helping keep employee contract report information reliable for business review.
This fixes a validation issue in SEPA Direct Debit batch payments that could cause an error when several batches using different payment methods were checked together. It helps keep payment processing workflows stable and avoids unnecessary interruptions for accounting teams.
Original PR description
This constraint crashed when called on a recordset of multiple batch payments with different payment methods.
This update modernizes internal code patterns across project, timesheet, sales project, and related leave management areas. It should not change day-to-day functionality, but it helps keep the codebase easier to maintain and aligned with current development practices.
Original PR description
task-4213820 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 update modernizes internal code patterns across several service-related areas without changing business features or workflows. It helps keep the software easier to maintain and reduces future technical overhead.
Original PR description
task-4213820
This commit enables tracking of the costing method in chatter for the product category. Forward-Port-Of: odoo/odoo#181374
Original PR description
This commit enables tracking of the costing method in chatter for the product category. Forward-Port-Of: odoo/odoo#181374
Before this commit, attempting to add a product to the cart that did not have an archived variant would result in an error. opw-4212973 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181512
Original PR description
Before this commit, attempting to add a product to the cart that did not have an archived variant would result in an error. opw-4212973 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181512
Before this commit, adding a product to the cart became progressively slower after creating several orders in the PoS, especially when a high number of products were loaded. This performance issue was due to the search operation across all order lines for each product, which became increasingly inefficient with a large number of loaded products and created orders. To address this, "<-pos.order.line.product_id" is now utilized to directly find the corresponding order line, significantly reducing
Original PR description
Before this commit, adding a product to the cart became progressively slower after creating several orders in the PoS, especially when a high number of products were loaded. This performance issue was due to the search operation across all order lines for each product, which became increasingly inefficient with a large number of loaded products and created orders. To address this, "<-pos.order.line.product_id" is now utilized to directly find the corresponding order line, significantly reducing the time complexity and improving the responsiveness of product addition to the cart. opw-4209134 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181415
## [FIX] tools: variate `company_dependent` dates Following de302c2d36305c0d7562572a30587641eabfe914, `company_dependent` fields are stored as `jsonb` now, so the variation of dates needs to take that into account. ## [FIX] tools: allow populate for less priviledged `pg_roles` When running the `populate` with a `pg_roles` that doesn't have admin access or the group `session_replication_role` (only since PG15), the routine crashes with an Insufficient exception when trying to drop t
Original PR description
## [FIX] tools: variate `company_dependent` dates Following de302c2d36305c0d7562572a30587641eabfe914, `company_dependent` fields are stored as `jsonb` now, so the variation of dates needs to take…
## [FIX] tools: variate `company_dependent` dates Following de302c2d36305c0d7562572a30587641eabfe914, `company_dependent` fields are stored as `jsonb` now, so the variation of dates needs to take that into account. ## [FIX] tools: allow populate for less priviledged `pg_roles` When running the `populate` with a `pg_roles` that doesn't have admin access or the group `session_replication_role` (only since PG15), the routine crashes with an Insufficient exception when trying to drop the Fkey constriants. This context manager was initially added to speed up batch insertion by 10x, but we are adding a generic catch to ignore said optimisation when privileges are insufficient. ## [FIX] cli: show --help for populate CLI Group options were added with the respective `help` section for each arg, but the group was never added to the CLI arg parser. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181205
Before this commit, attempting to sync a paid order that had not been previously synced in a newly opened session would result in an error due to the absence of the `session_id`. opw-4182909 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181469 Forward-Port-Of: odoo/odoo#181015
Original PR description
Before this commit, attempting to sync a paid order that had not been previously synced in a newly opened session would result in an error due to the absence of the `session_id`. opw-4182909 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181469 Forward-Port-Of: odoo/odoo#181015
**Current behavior before PR:** - When a table was created within an empty list item `(li)`, it was inserted directly inside the `ul` and as a sibling of the list item `(li)`. Furthermore, an additional `li` element was generated after the table. **Desired behavior after PR is merged:** - Now, when a table created inside empty `li` elements, it will be correctly inserted within the list item itself instead of the `ul`. Additionally, no extra `li` element will be generated after the tabl
Original PR description
**Current behavior before PR:** - When a table was created within an empty list item `(li)`, it was inserted directly inside the `ul` and as a sibling of the list item `(li)`. Furthermore, an additional `li` element was generated after the table. **Desired behavior after PR is merged:** - Now, when a table created inside empty `li` elements, it will be correctly inserted within the list item itself instead of the `ul`. Additionally, no extra `li` element will be generated after the table. task-3550599 Forward-Port-Of: odoo/odoo#164304
Purpose: - Ensure that muted text is displayed exclusively on active lines while remaining absent from other lines. - Resolve the issue where muted text wasn't displaying on the checklist when the selection or cursor was on it. task-3875225 Forward-Port-Of: odoo/odoo#162804
Original PR description
Purpose: - Ensure that muted text is displayed exclusively on active lines while remaining absent from other lines. - Resolve the issue where muted text wasn't displaying on the checklist when the selection or cursor was on it. task-3875225 Forward-Port-Of: odoo/odoo#162804
This commit rename reporting menus to have consistent name with other reporting menus in sales. task-4209879 Forward-Port-Of: odoo/odoo#181497
Original PR description
This commit rename reporting menus to have consistent name with other reporting menus in sales. task-4209879 Forward-Port-Of: odoo/odoo#181497
Before this commit: In mobile view, when the 'Add a reaction' action is clicked, the EmojiPicker opens, but the native keyboard also appears due to the focus being on the input field. This causes the keyboard to block the view of the EmojiPicker. After this commit: Now, in mobile view, the input search bar will not be automatically focused when the EmojiPicker opens, preventing the native keyboard from appearing and obstructing the EmojiPicker. task-4208499 Forward-Port-Of: odoo/odoo#18
Original PR description
Before this commit: In mobile view, when the 'Add a reaction' action is clicked, the EmojiPicker opens, but the native keyboard also appears due to the focus being on the input field. This causes the keyboard to block the view of the EmojiPicker. After this commit: Now, in mobile view, the input search bar will not be automatically focused when the EmojiPicker opens, preventing the native keyboard from appearing and obstructing the EmojiPicker. task-4208499 Forward-Port-Of: odoo/odoo#181341
It was still possible to use it as an inner snippet, but since [1], it looked broken without further edition of the dropped inner snippet: - The form had a gray background (instead of transparent). - It was forced to be small-width and centered. - There was a big title coming with it, forcing the user to remove it. - ... Since then, [2] was introduced to regroup "main" snippets in a dedicated modal. The form snippet was moved there but also remained outside of it to keep the inner form
Original PR description
It was still possible to use it as an inner snippet, but since [1], it looked broken without further edition of the dropped inner snippet: - The form had a gray background (instead of transparent). -…
It was still possible to use it as an inner snippet, but since [1], it looked broken without further edition of the dropped inner snippet: - The form had a gray background (instead of transparent). - It was forced to be small-width and centered. - There was a big title coming with it, forcing the user to remove it. - ... Since then, [2] was introduced to regroup "main" snippets in a dedicated modal. The form snippet was moved there but also remained outside of it to keep the inner form snippet feature. This commit just splits the two usecases: - The original `s_website_form` snippet is now only suggested as an inner snippet. It was restored to be without title, background and other default styling features. - A new `s_title_form` is introduced, using the `s_website_form` inside, and suggested in the snippets modal instead of the original one. That one comes with a background color, title, etc. Note: in old databases and other codebase places, `s_website_form` will still be used as a main snippet so the code here also keeps that possibility to drop it as a main snippet and move it. It is just not suggested to be used as a main one anymore, but still possible. [1]: https://github.com/odoo/odoo/commit/a3b176bf21e4ad291f51b69360ca2194517617a0 [2]: https://github.com/odoo/odoo/commit/edf81c13d8f2f6d29a77d68cbfa0dc9216da3c2a Related to task-4206683 Forward-Port-Of: odoo/odoo#181596
Before this commit, the "tour pointers" that indicated to users that they needed to scroll the "snippets modal" were misaligned. Their position did not account for the iframe offset of the modal. task-4072655 Forward-Port-Of: odoo/odoo#181146
Original PR description
Before this commit, the "tour pointers" that indicated to users that they needed to scroll the "snippets modal" were misaligned. Their position did not account for the iframe offset of the modal. task-4072655 Forward-Port-Of: odoo/odoo#181146
Steps --------- 1. Install `accounting` and `sale_management` 2. Activate Accounting > Configuration > Settings > Analytics > Analytic Accounting 3. Accounting > Configuration > Analytic Accounting > Distribution Model 4. Create a new model and only put Deco Addict as partner, then save 5. Go to the Sale app 6. New quotation 7. Select Deco Addict as partner 8. Click `Add a product`, a traceback is raised. Problem --------- Using `|=` requires two objects of the same type. Unfortuna
Original PR description
Steps --------- 1. Install `accounting` and `sale_management` 2. Activate Accounting > Configuration > Settings > Analytics > Analytic Accounting 3. Accounting > Configuration > Analytic Accounting > Distribution Model 4. Create a new model and only put Deco Addict as partner, then save 5. Go to the Sale app 6. New quotation 7. Select Deco Addict as partner 8. Click `Add a product`, a traceback is raised. Problem --------- Using `|=` requires two objects of the same type. Unfortunately, when there is no distribution line, `analytic_distribution` is False whereas `res` is a dict. Solution --------- Use a empty dict instead when `analytic_distribution` is False. V18 Accounting PAD issues --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181673
readonly was added to product template in commit 0d75323600a14dd8964b0b3d29d69aa0fde3ee45 When it should've just been on product.product, so users were no longer able to set as favorite from form view. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181531
Original PR description
readonly was added to product template in commit 0d75323600a14dd8964b0b3d29d69aa0fde3ee45 When it should've just been on product.product, so users were no longer able to set as favorite from form view. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181531
Problem: When the option "Add a link to a Web Page" is enabled, the preview page always shows the T&C link regardless of the content added to the notes. This behavior is inconsistent with the T&C section in the PDF invoice. Steps to reproduce: - Enable "Add a link to a Web Page." - Create a new Sales Order (SO). - Add content (text or image) to the notes. - Confirm and preview the SO. - The added content does not appear in the T&C section. opw-4170021 --- I confirm I have signe
Original PR description
Problem: When the option "Add a link to a Web Page" is enabled, the preview page always shows the T&C link regardless of the content added to the notes. This behavior is inconsistent with the T&C section in the PDF invoice. Steps to reproduce: - Enable "Add a link to a Web Page." - Create a new Sales Order (SO). - Add content (text or image) to the notes. - Confirm and preview the SO. - The added content does not appear in the T&C section. opw-4170021 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181603
Before the commit: The button label remained as 'Claim' even when there were no rewards, which seemed inconsistent. After this commit: The button gets hidden when no rewards are available. Forward-Port-Of: odoo/odoo#181329
Original PR description
Before the commit: The button label remained as 'Claim' even when there were no rewards, which seemed inconsistent. After this commit: The button gets hidden when no rewards are available. Forward-Port-Of: odoo/odoo#181329
In the Inventory Adjustments view, it is currently possible to select any user for a count request or assign any user to a specific stock.quant, even portal users. This fix ensures only stock users are selected. task 4207784 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181376
Original PR description
In the Inventory Adjustments view, it is currently possible to select any user for a count request or assign any user to a specific stock.quant, even portal users. This fix ensures only stock users are selected. task 4207784 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181376
This commit moves the price list snippets to a more appropriate category: Text task-4212916 Requires: - https://github.com/odoo/design-themes/pull/942 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181510
Original PR description
This commit moves the price list snippets to a more appropriate category: Text task-4212916 Requires: - https://github.com/odoo/design-themes/pull/942 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181510
This commit Restore "Reset to Draft" on Payments "In Process". Only Validated & Sent Payments can not be Reset to Draft. task: 4213210 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181578
Original PR description
This commit Restore "Reset to Draft" on Payments "In Process". Only Validated & Sent Payments can not be Reset to Draft. task: 4213210 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181578
Website user/interactive tours are not properly working at the moment. This disables the "follow the tips" message in the website loader while waiting for a fix. Follow-up of https://github.com/odoo/odoo/pull/180471 Related to task-3084175 Forward-Port-Of: odoo/odoo#181544
Original PR description
Website user/interactive tours are not properly working at the moment. This disables the "follow the tips" message in the website loader while waiting for a fix. Follow-up of https://github.com/odoo/odoo/pull/180471 Related to task-3084175 Forward-Port-Of: odoo/odoo#181544
Steps to reproduce: - Go to Website - Open the menu Site > Optimize SEO - Try to add some keyword - Traceback occurs. Since [1], language codes in the front-end now follow the BCP 47 format. This commit ensures the proper application of jsToPyLocale and pyToJsLocale conversions. [1]: https://github.com/odoo/odoo/commit/42551616dcb563c39b915f2d510217a159668cb7 task-4210172 Forward-Port-Of: odoo/odoo#181339
Original PR description
Steps to reproduce: - Go to Website - Open the menu Site > Optimize SEO - Try to add some keyword - Traceback occurs. Since [1], language codes in the front-end now follow the BCP 47 format. This commit ensures the proper application of jsToPyLocale and pyToJsLocale conversions. [1]: https://github.com/odoo/odoo/commit/42551616dcb563c39b915f2d510217a159668cb7 task-4210172 Forward-Port-Of: odoo/odoo#181339
The markup was done before writing the rainbow_man_message in the localStorage. When getting it back, the markup was lost. Now the markup is done after getting it from the localStorage. And a DOMPurify is used to sanitize the rainbow_message that we got. TASK-ID: 4206377 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181408
Original PR description
The markup was done before writing the rainbow_man_message in the localStorage. When getting it back, the markup was lost. Now the markup is done after getting it from the localStorage. And a DOMPurify is used to sanitize the rainbow_message that we got. TASK-ID: 4206377 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181408
This commit update confirmation msg of ptav wizard to update product attributes message to add what it'll add to product instead just attribute name **Before**: `You are about to add "Black" to 10 products` **After**: `You are about to add the value "Black" to 10 product` Forward-Port-Of: odoo/odoo#181500
Original PR description
This commit update confirmation msg of ptav wizard to update product attributes message to add what it'll add to product instead just attribute name **Before**: `You are about to add "Black" to 10 products` **After**: `You are about to add the value "Black" to 10 product` Forward-Port-Of: odoo/odoo#181500
If markup is set to a value then reset to 0, the discount is not properly reset to 0. This commit removes `if item.price_markup` as it was wrong. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181391
Original PR description
If markup is set to a value then reset to 0, the discount is not properly reset to 0. This commit removes `if item.price_markup` as it was wrong. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181391
This PR corrects an issue introduced in [1], where the `base href` of mention URLs was converted from `web` to `odoo`, but the associated query parameters were not updated accordingly. As a result, the redirection to the proper record failed. [1]: https://github.com/odoo/odoo/pull/174516 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181633
Original PR description
This PR corrects an issue introduced in [1], where the `base href` of mention URLs was converted from `web` to `odoo`, but the associated query parameters were not updated accordingly. As a result, the redirection to the proper record failed. [1]: https://github.com/odoo/odoo/pull/174516 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181633
Purpose of this commit: Adjust the placeholder text for subchannels, as it previously included the '#' symbol, which typically denotes a channel rather than a thread Before  After  Forward-Port-Of: odoo/odoo#181356
Original PR description
Purpose of this commit: Adjust the placeholder text for subchannels, as it previously included the '#' symbol, which typically denotes a channel rather than a thread Before  After  Forward-Port-Of: odoo/odoo#181356
Before: The 'blocked by' stat button in the Project module incorrectly displays as 'Blocking Tasks'. After: The text of the 'blocked by' stat button has been updated from 'Blocking Tasks' to 'Blocked Tasks' in the Project module. task-4119271 Forward-Port-Of: odoo/odoo#178223
Original PR description
Before: The 'blocked by' stat button in the Project module incorrectly displays as 'Blocking Tasks'. After: The text of the 'blocked by' stat button has been updated from 'Blocking Tasks' to 'Blocked Tasks' in the Project module. task-4119271 Forward-Port-Of: odoo/odoo#178223
*in new API kanban views. Those attributes are no longer supported as the css rules associated with the classname they generate are scoped to legacy kanban. Instead, we want to encourage the use of bootstrap utility classes (e.g. fw-bold). Note: those attributes were no longer used in standard views. Note 2: we keep supporting them in legacy archs (those using "kanban-box"). The support of legacy archs will be dropped after v18. Part of task~3992107 Description of the issue/feature t
Original PR description
*in new API kanban views. Those attributes are no longer supported as the css rules associated with the classname they generate are scoped to legacy kanban. Instead, we want to encourage the use of bootstrap utility classes (e.g. fw-bold). Note: those attributes were no longer used in standard views. Note 2: we keep supporting them in legacy archs (those using "kanban-box"). The support of legacy archs will be dropped after v18. Part of task~3992107 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 Forward-Port-Of: odoo/odoo#181420
before this commit there is no space between 'sms' and 'chat' buttons. after this commit added a space between both buttons. enterprise PR-https://github.com/odoo/enterprise/pull/70742 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181006
Original PR description
before this commit there is no space between 'sms' and 'chat' buttons. after this commit added a space between both buttons. enterprise PR-https://github.com/odoo/enterprise/pull/70742 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181006
Steps to reproduce: -go to shop -choose product which has multi option attribute -tick atleast one attribute -add to cart Issue: -multi option values are not visible in cart description in mobile view. Cause: -the issue caused due to use of d-none and d-md-block classes, due to this it will not show in small size devices. Fix: -replace d-none and d-md-block with empty string, so now the values will show for all devices. opw-3853263 --- I confirm I have signed the CLA a
Original PR description
Steps to reproduce: -go to shop -choose product which has multi option attribute -tick atleast one attribute -add to cart Issue: -multi option values are not visible in cart description in mobile view. Cause: -the issue caused due to use of d-none and d-md-block classes, due to this it will not show in small size devices. Fix: -replace d-none and d-md-block with empty string, so now the values will show for all devices. opw-3853263 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178308
Item does not exist anymore on the employee list in the select cashier mixin. Adapt the code to use the correct variable name. Forward-Port-Of: odoo/odoo#181580
Original PR description
Item does not exist anymore on the employee list in the select cashier mixin. Adapt the code to use the correct variable name. Forward-Port-Of: odoo/odoo#181580
Before when deleting an order, we removed the order and after related records. This caused an error when trying to remove the order because the related records try to access the order. Now we remove the related records first and then the order. Forward-Port-Of: odoo/odoo#181402
Original PR description
Before when deleting an order, we removed the order and after related records. This caused an error when trying to remove the order because the related records try to access the order. Now we remove the related records first and then the order. Forward-Port-Of: odoo/odoo#181402
Before this commit it was not possible to cash in / out offline. This commit allows to cash in / out offline. Forward-Port-Of: odoo/odoo#180627
Original PR description
Before this commit it was not possible to cash in / out offline. This commit allows to cash in / out offline. Forward-Port-Of: odoo/odoo#180627
Before this commit, the @html_editor/image/Image transformation dissapear when selection change test was failing unpredictably. This commit fix it. Backward-port of #181200 Forward-Port-Of: odoo/odoo#181530
Original PR description
Before this commit, the @html_editor/image/Image transformation dissapear when selection change test was failing unpredictably. This commit fix it. Backward-port of #181200 Forward-Port-Of: odoo/odoo#181530
In the context of the industries we want to create custome js tours. The role of these tours is to explain some flows to the user in a more intuitive version than text. Currently those tours are counted in the mainenance line of code. This comportment is not intended. After this commit, we will look at the cloc_excluded argument in the manifest and exclude those from the maintenance line of code. task-4056239 Description of the issue/feature this PR addresses: Current behavior before
Original PR description
In the context of the industries we want to create custome js tours. The role of these tours is to explain some flows to the user in a more intuitive version than text. Currently those tours are counted in the mainenance line of code. This comportment is not intended. After this commit, we will look at the cloc_excluded argument in the manifest and exclude those from the maintenance line of code. task-4056239 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 Forward-Port-Of: odoo/odoo#178190
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 Forward-Port-Of: odoo/odoo#181557
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 Forward-Port-Of: odoo/odoo#181557
Steps: 1. have a horizontal rule (HR) and two paragraphs in the editor 2. make a selection across the two paragraphs 3. press backspace or delete Result: the HR gets filled with a BR element, leading to a vertical space being added below it. The isShrunkBlock function is typically used to detect blocks that need to have a BR element added to it, otherwise they would be displayed collapsed in the editor. Before this commit, the HR element was (incorrectly) considered as a shrunk block
Original PR description
Steps: 1. have a horizontal rule (HR) and two paragraphs in the editor 2. make a selection across the two paragraphs 3. press backspace or delete Result: the HR gets filled with a BR element, leading to a vertical space being added below it. The isShrunkBlock function is typically used to detect blocks that need to have a BR element added to it, otherwise they would be displayed collapsed in the editor. Before this commit, the HR element was (incorrectly) considered as a shrunk block. The issue described above happened because the deleteRange method, after removing nodes as joining blocks, looks for shrunk blocks and fills them with a BR element. Forward-Port-Of: odoo/odoo#181604
In commit [1], the new `s_cta_card` snippet has been added. It uses the `s_card` inner snippet. This commit fixes the card: - add the missing `data-snippet` attribute, - fix the versioning: indeed, it was using `data-vcss` while the inner snippet in fact uses `data-vxml`. This caused the card background colors to be washed out, instead of being the real selected color. - fix the `border-width` style: it was missing the `px` unit and the `!important` that would be added if we used the optio
Original PR description
In commit [1], the new `s_cta_card` snippet has been added. It uses the `s_card` inner snippet. This commit fixes the card: - add the missing `data-snippet` attribute, - fix the versioning: indeed, it was using `data-vcss` while the inner snippet in fact uses `data-vxml`. This caused the card background colors to be washed out, instead of being the real selected color. - fix the `border-width` style: it was missing the `px` unit and the `!important` that would be added if we used the option to set it. [1]: https://github.com/odoo/odoo/commit/4b88c63a96e84f5a603eea35fee3a395fbb4aae3 Related to task-4094392 Forward-Port-Of: odoo/odoo#181292
In https://github.com/odoo/odoo/pull/152286, we changed the documents that are added to the chatter of a BoM to be added to the product_product directly (or the template if there are no product on the BoM). However, some changes in mail made the just-added document not appear untill reload. This commit fixes it by reloading the chatter when adding an attachment. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178990
Original PR description
In https://github.com/odoo/odoo/pull/152286, we changed the documents that are added to the chatter of a BoM to be added to the product_product directly (or the template if there are no product on the BoM). However, some changes in mail made the just-added document not appear untill reload. This commit fixes it by reloading the chatter when adding an attachment. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178990
This commit adds the styling rules for the blockquote (present in the web_editor module), and fixes the padding for the hint that is displayed when the blockquote is empty. Before this commit, the hint would be displayed on the top left corner of the blockquote without any padding, which, other than looking bad, does not match the position in which the text is inserted after typing. task-4207507 Forward-Port-Of: odoo/odoo#181564
Original PR description
This commit adds the styling rules for the blockquote (present in the web_editor module), and fixes the padding for the hint that is displayed when the blockquote is empty. Before this commit, the hint would be displayed on the top left corner of the blockquote without any padding, which, other than looking bad, does not match the position in which the text is inserted after typing. task-4207507 Forward-Port-Of: odoo/odoo#181564
In the stock rule diagram, the table border color was not correct anymore. before:  after:  Retarget of https://github.com/odoo/odoo/pull/181395 task-id: 4207218 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181631
Original PR description
In the stock rule diagram, the table border color was not correct anymore. before:  after:  Retarget of https://github.com/odoo/odoo/pull/181395 task-id: 4207218 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181631
In a Spanish company if you don't have a certificate set on the company, the PoS would generate a proforma invoice instead of a normal invoice. Steps to reproduce: ------------------- * Install l10n_es_pos * Remove the l10n_es_edi_facturae_certificate_id from the company * Open PoS * Make an order and invoice it > Observation: The invoice generated is a proforma invoice instead of a normal invoice Why the fix: ------------ When generating the invoice data in `_generate_pdf_and_sen
Original PR description
In a Spanish company if you don't have a certificate set on the company, the PoS would generate a proforma invoice instead of a normal invoice. Steps to reproduce: ------------------- * Install l10n_es_pos * Remove the l10n_es_edi_facturae_certificate_id from the company * Open PoS * Make an order and invoice it > Observation: The invoice generated is a proforma invoice instead of a normal invoice Why the fix: ------------ When generating the invoice data in `_generate_pdf_and_send_invoice` the wizard would have `l10n_es_edi_facturae_checkbox_xml` checked by default This leads to the generation of a specific invoice that will fail because there are no certificate setup on the company. This will then fallback to the proforma invoice. opw-4074779 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#179107
Steps to reproduce: 1) Create new attribute value (do not save) 2) Click on delete 3) Confirm deletion in the dialog Reason: When the record is new it does not have resId. But `unlink` only accepts list of type 'number' otherwise it throws an error. Forward-Port-Of: odoo/odoo#181151
Original PR description
Steps to reproduce: 1) Create new attribute value (do not save) 2) Click on delete 3) Confirm deletion in the dialog Reason: When the record is new it does not have resId. But `unlink` only accepts list of type 'number' otherwise it throws an error. Forward-Port-Of: odoo/odoo#181151
https://github.com/odoo/enterprise/pull/69287 task-4027103 Forward-Port-Of: odoo/odoo#174366
Original PR description
https://github.com/odoo/enterprise/pull/69287 task-4027103 Forward-Port-Of: odoo/odoo#174366
In this commit: ==== - Order total was not shown properly when loading sales order in POS, instead of unpaid amount, total amount was shown everytime in due balance. - Fixed Traceback on adding product in cart which contains addons. - Fixed Traceback while opening an order that is in the payment stage in the restaurant from floorscreen. Forward-Port-Of: odoo/odoo#181174
Original PR description
In this commit: ==== - Order total was not shown properly when loading sales order in POS, instead of unpaid amount, total amount was shown everytime in due balance. - Fixed Traceback on adding product in cart which contains addons. - Fixed Traceback while opening an order that is in the payment stage in the restaurant from floorscreen. Forward-Port-Of: odoo/odoo#181174
Current behaviour: --- When going to /customers or /partners and selecting a partner, in the References section, if the text is too long, the image will be taking the text height Expected behaviour: --- The image fits the width but not the height Steps to reproduce: --- 1. Go to Website 2. Go to /customers 3. Select a partner that has references 4. Open the editor (top left) 5. Add long text to one of the reference 6. The image will match the text height Cause of the issue:
Original PR description
Current behaviour: --- When going to /customers or /partners and selecting a partner, in the References section, if the text is too long, the image will be taking the text height Expected behaviour: --- The image fits the width but not the height Steps to reproduce: --- 1. Go to Website 2. Go to /customers 3. Select a partner that has references 4. Open the editor (top left) 5. Add long text to one of the reference 6. The image will match the text height Cause of the issue: --- Caused by: https://github.com/odoo/odoo/commit/1efdb96227dab8f1b3bcb8e8854dbad5dd874e69 Fix: --- Removed h-100 and added w-100 opw-3970462 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#173363
In the multilevel dropdown, when the submenu dropdown is accessed within the parent dropdown, it closes the parent dropdown, making it inaccessible to the child dropdown menu. We don't want the BS dropdown to close when the sub dropdown is clicked Task-4037692 Forward-Port-Of: odoo/odoo#181541 Forward-Port-Of: odoo/odoo#173269
Original PR description
In the multilevel dropdown, when the submenu dropdown is accessed within the parent dropdown, it closes the parent dropdown, making it inaccessible to the child dropdown menu. We don't want the BS dropdown to close when the sub dropdown is clicked Task-4037692 Forward-Port-Of: odoo/odoo#181541 Forward-Port-Of: odoo/odoo#173269
In 17.0 the add a line of the res.partner.bank is no longer adding a line directly in the list view but opening a wizard. The xpath of the base_iban was no longer working like it should. task:4197710 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#180865
Original PR description
In 17.0 the add a line of the res.partner.bank is no longer adding a line directly in the list view but opening a wizard. The xpath of the base_iban was no longer working like it should. task:4197710 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#180865
Before this commit, entering a payment amount with cash rounding higher than one (e.g., 10) incorrectly triggered an error popup every time. opw-4124332 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#179859 Forward-Port-Of: odoo/odoo#177547
Original PR description
Before this commit, entering a payment amount with cash rounding higher than one (e.g., 10) incorrectly triggered an error popup every time. opw-4124332 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#179859 Forward-Port-Of: odoo/odoo#177547
This commit changes two things: 1. Adds `onReady` props to be able to call a method when the video scanner is ready. In the Barcode app for example, this prop will let us to prevent to close the camera during its initialization. 2. Avoids to set a timeout for `detectCode` if there is no more stream. Without this change, it could happens something goes wrong when closing the camera video scanner and then, it will loop infinitly on `detectCode` because the timeout code part is outside of the
Original PR description
This commit changes two things: 1. Adds `onReady` props to be able to call a method when the video scanner is ready. In the Barcode app for example, this prop will let us to prevent to close the camera during its initialization. 2. Avoids to set a timeout for `detectCode` if there is no more stream. Without this change, it could happens something goes wrong when closing the camera video scanner and then, it will loop infinitly on `detectCode` because the timeout code part is outside of the try/catch and so it is called anyway everytime `detectCode` is run. Enterprise PR: odoo/enterprise#70607 Forward-Port-Of: odoo/odoo#181294
Steps to reproduce: - Create 2 websites and give them a different domain - Go to any product page (shared between all websites) - Check the source code with https://validator.schema.org/: the URL and image microdata start with the wrong domain. => Case 1: if no company_id was set on the product, the URL returns `web.base.url`. => Case 2: if a company_id is set and that company has a website_id set, both websites return the company's website domain. This commit makes sure to return the cu
Original PR description
Steps to reproduce: - Create 2 websites and give them a different domain - Go to any product page (shared between all websites) - Check the source code with https://validator.schema.org/: the URL and image microdata start with the wrong domain. => Case 1: if no company_id was set on the product, the URL returns `web.base.url`. => Case 2: if a company_id is set and that company has a website_id set, both websites return the company's website domain. This commit makes sure to return the current website domain. opw-4113559 Forward-Port-Of: odoo/odoo#181307 Forward-Port-Of: odoo/odoo#179455
RATIONALE When invoked through cron, event schedulers currently run on all available registrations. This can lead to Memory or Time errors when dealing with big events. We should instead move towards an interactive sending, committing after each batch, to gradually send communications without errors and without sending multiple times mails, sms, whatsapp messages, ... SPECIFICATIONS Global approach for this PR * rewrite schedulers execution code, notably to have more control on
Original PR description
RATIONALE When invoked through cron, event schedulers currently run on all available registrations. This can lead to Memory or Time errors when dealing with big events. We should instead move towards…
RATIONALE
When invoked through cron, event schedulers currently run on all available
registrations. This can lead to Memory or Time errors when dealing with
big events. We should instead move towards an interactive sending, committing
after each batch, to gradually send communications without errors and without
sending multiple times mails, sms, whatsapp messages, ...
SPECIFICATIONS
Global approach for this PR
* rewrite schedulers execution code, notably to have more control on
input / output of each type: event-based or attendee-based schedulers,
give registrations to contact as input, ... ;
* introduce more performance oriented code: avoid filters on all attendees,
search for batches instead; find once attendees to contact then;
delegate the sending only to sub modules;
* make communications iterative
* event-based: use recently introduced "last_registration_id" field to know
at which point process was stopped, and resume communication sending;
* attendee-based: contact by batches;
* make code more defensive against ill defined templates and issues during
communication sending;
* add / improve tests;
See sub commits for more details.
Task-3814592: Event: Limit scheduler in cron mode
Task-3084943: Event: Improve communication scheduler scalability
Forward-Port-Of: odoo/odoo#177334This commit fixes the `s_text_cover` snippet template to: - remove the padding `pt pb` classes, as they are useless in grid mode, - fix the `g-height-*` classes, as they were not matching the number of rows and it is needed to resize smoothly, - fix a `col-lg-*` class as it needs to match with the grid one, - fix the mobile visibility classes: the mobile breakpoint is at `LG` and it was missing the `o_snippet_mobile_invisible` class. task-3665300 Forward-Port-Of: odoo/odoo#181532
Original PR description
This commit fixes the `s_text_cover` snippet template to: - remove the padding `pt pb` classes, as they are useless in grid mode, - fix the `g-height-*` classes, as they were not matching the number of rows and it is needed to resize smoothly, - fix a `col-lg-*` class as it needs to match with the grid one, - fix the mobile visibility classes: the mobile breakpoint is at `LG` and it was missing the `o_snippet_mobile_invisible` class. task-3665300 Forward-Port-Of: odoo/odoo#181532
https://github.com/odoo/enterprise/pull/69287 task-4027103 Forward-Port-Of: odoo/odoo#174366
Original PR description
https://github.com/odoo/enterprise/pull/69287 task-4027103 Forward-Port-Of: odoo/odoo#174366
Since https://github.com/odoo/odoo/pull/181529, we cannot search on display name for some models that define themselves the field without specifying the search method. The `display_name` field is defined (including its compute method) only when the model does not define it yet. Existing declarations were missing a `search` declaration. odoo/enterprise#70746 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181563
Original PR description
Since https://github.com/odoo/odoo/pull/181529, we cannot search on display name for some models that define themselves the field without specifying the search method. The `display_name` field is defined (including its compute method) only when the model does not define it yet. Existing declarations were missing a `search` declaration. odoo/enterprise#70746 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181563
Table linking in chrome on ios does not work if the floorplan has a bg image. When the user tries to drag a table, the context menu appears, which prevents the table dragging from taking place. This is because of a mistake in commit 894d7c25b7dd216ac6df1fd8ebedffccd20ef64e, where a line was removed. Task: 4196350 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181582
Original PR description
Table linking in chrome on ios does not work if the floorplan has a bg image. When the user tries to drag a table, the context menu appears, which prevents the table dragging from taking place. This is because of a mistake in commit 894d7c25b7dd216ac6df1fd8ebedffccd20ef64e, where a line was removed. Task: 4196350 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181582
Problem: When creating a sale order without selecting a partner or if the partner has no language set, the note field displays the default terms in English, regardless of the user's language. It should display the note in the current user's language instead. Steps to reproduce: - Add default terms and conditions in both English and Arabic. - Change the user language to Arabic. - Create a new quotation without selecting a partner. - The note is displayed in English, but it should be in Ar
Original PR description
Problem: When creating a sale order without selecting a partner or if the partner has no language set, the note field displays the default terms in English, regardless of the user's language. It should display the note in the current user's language instead. Steps to reproduce: - Add default terms and conditions in both English and Arabic. - Change the user language to Arabic. - Create a new quotation without selecting a partner. - The note is displayed in English, but it should be in Arabic as per the user’s language while no partner selected yet. opw-4176183 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181185
Currently, for other payment method options in xendit, the redirect flow will not be triggered. method `_get_specific_rendering_values` is supposed to return the API URL when the payment is not 'card'. Currently, it does the opposite, where it will only return the rendering_values when payment is in card (eventhough it won't be triggered when doing direct flow) 4212477 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#1817
Original PR description
Currently, for other payment method options in xendit, the redirect flow will not be triggered. method `_get_specific_rendering_values` is supposed to return the API URL when the payment is not 'card'. Currently, it does the opposite, where it will only return the rendering_values when payment is in card (eventhough it won't be triggered when doing direct flow) 4212477 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181752
The kitchen printing was broken due to a couple of bugs that prevented it from checking the product category correctly, and also using the wrong variable name for the tracking number. This PR fixes those issues. Steps to reproduce: - Go to the settings of default PoS Kiosk - Enable Preparation -> Prepartion Printers, and add a new Printer - Configure either IoT or Epson printer, and add 'Food' product category - Make sure the new printer is added in the Preparation Printers selection
Original PR description
The kitchen printing was broken due to a couple of bugs that prevented it from checking the product category correctly, and also using the wrong variable name for the tracking number. This PR fixes those issues. Steps to reproduce: - Go to the settings of default PoS Kiosk - Enable Preparation -> Prepartion Printers, and add a new Printer - Configure either IoT or Epson printer, and add 'Food' product category - Make sure the new printer is added in the Preparation Printers selection for the Kiosk - Open the kiosk session and make an order with a food item - Printer does not print on order confirmation - EXPECTED BEHAVIOR: Printer prints order details on confirmation --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#179803
Previously done in commit 683deecb51e240c5cbf1fd369e0eeefb0267530d but reverted in the refactor done in commit 0279c53930735b65e9342ca66fbb62ff61ac65f6 Objective: hide placeholder images if no image is provided on product --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181780
Original PR description
Previously done in commit 683deecb51e240c5cbf1fd369e0eeefb0267530d but reverted in the refactor done in commit 0279c53930735b65e9342ca66fbb62ff61ac65f6 Objective: hide placeholder images if no image is provided on product --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181780
This PR regroups some fixes about snippets with columns wrongly set to `display: flex` in order to have a "Vertical Alignment" option to align the content in it. Indeed, `display: flex` should be avoided, as any element in it tries to fill the available space, making the images not have their real size. Forward-Port-Of: odoo/odoo#180515
Original PR description
This PR regroups some fixes about snippets with columns wrongly set to `display: flex` in order to have a "Vertical Alignment" option to align the content in it. Indeed, `display: flex` should be avoided, as any element in it tries to fill the available space, making the images not have their real size. Forward-Port-Of: odoo/odoo#180515
Before this commit, when a message has a subject different from chatter name e.g. by renaming the record while some messages have been posted prior to rename, the subject was visible in prefix of message text content. The showing of subject is good, but currently the style is almost the same as the text content, and this is put inline before the text content, so the subject looks like actual text content. This commit improves the style so the subject is clearly different from the text cont
Original PR description
Before this commit, when a message has a subject different from chatter name e.g. by renaming the record while some messages have been posted prior to rename, the subject was visible in prefix of message text content. The showing of subject is good, but currently the style is almost the same as the text content, and this is put inline before the text content, so the subject looks like actual text content. This commit improves the style so the subject is clearly different from the text content of the message, when the subject is displayed on UI. Before <img width="999" alt="Screenshot 2024-09-27 at 13 39 23" src="https://github.com/user-attachments/assets/d8a299b6-6c3c-4605-aa36-6f6d8286fdbc"> After <img width="747" alt="Screenshot 2024-09-27 at 13 33 20" src="https://github.com/user-attachments/assets/a3919213-ba08-4662-8079-894183c68536"> Forward-Port-Of: odoo/odoo#181813
Currently, the product image is displayed in a large size, and the empty image is not shown. Both issues have been fixed in this commit. task-4188603 Forward-Port-Of: odoo/enterprise#70161
Original PR description
Currently, the product image is displayed in a large size, and the empty image is not shown. Both issues have been fixed in this commit. task-4188603 Forward-Port-Of: odoo/enterprise#70161
Currently bookkeepers do not have the rights to use the Secure Entries wizard. This is fixed in this commit. Forward-Port-Of: odoo/enterprise#70806
Original PR description
Currently bookkeepers do not have the rights to use the Secure Entries wizard. This is fixed in this commit. Forward-Port-Of: odoo/enterprise#70806
The Accounting and Benchmark dashboards were designed with a global filter working with months. But when filtering by quarter, everything breaks because formulas do not expect an input such as "Q4/2020". This commit disable the possibility to select quarters. Task: 4184088 Forward-Port-Of: odoo/enterprise#70836 Forward-Port-Of: odoo/enterprise#69991
Original PR description
The Accounting and Benchmark dashboards were designed with a global filter working with months. But when filtering by quarter, everything breaks because formulas do not expect an input such as "Q4/2020". This commit disable the possibility to select quarters. Task: 4184088 Forward-Port-Of: odoo/enterprise#70836 Forward-Port-Of: odoo/enterprise#69991
Steps: - create a bom for product A with 1 operation - add 2 steps to that operation with the same title, the same test_type_id and the same component(s) - create a 2 MOs for that bom - in the shopfloor, go on the workcenter for the operation - do: Update Instructions > Improvement Suggestion > Add a Step > validate - do the same for the other MO Issue 1: you get a traceback 'Expected singleton' because it cannot differentiate between the 2 pre-existing steps (same title, same test_t
Original PR description
Steps: - create a bom for product A with 1 operation - add 2 steps to that operation with the same title, the same test_type_id and the same component(s) - create a 2 MOs for that bom - in the…
Steps: - create a bom for product A with 1 operation - add 2 steps to that operation with the same title, the same test_type_id and the same component(s) - create a 2 MOs for that bom - in the shopfloor, go on the workcenter for the operation - do: Update Instructions > Improvement Suggestion > Add a Step > validate - do the same for the other MO Issue 1: you get a traceback 'Expected singleton' because it cannot differentiate between the 2 pre-existing steps (same title, same test_type_id, same component(s)) Issue 2: you get a traceback 'Expected singleton' because with at least 2 open MOs, it will select all checks without `previous_check_id` across all MOs of the same bom Fix: 1) if more than 1 step can be selected, take the first and remove it from the `points` list all the points in that list will be processed only once so it's ok to remove them after using them. 2) make sure that the selected check corresponds to the MO on which we are adding a step. Forward-Port-Of: odoo/enterprise#70753
Steps to reproduce: - enable debug mode - go to Documents - select My Drive - click on New > Spreadsheet => boom `OwlError: Invalid props for component 'TemplateDialog': 'folderId' is not a number` The props can also be a string like `"MY"`, `"COMPANY"` or `"TRASH"` Forward-Port-Of: odoo/enterprise#70842
Original PR description
Steps to reproduce: - enable debug mode - go to Documents - select My Drive - click on New > Spreadsheet => boom `OwlError: Invalid props for component 'TemplateDialog': 'folderId' is not a number` The props can also be a string like `"MY"`, `"COMPANY"` or `"TRASH"` Forward-Port-Of: odoo/enterprise#70842
### Steps to reproduce * install `l10n_th_reports` * create a Thai company and its branch * using the company selector, ensure the current company is the branch company, while selecting both parent and branch company * open the Thai Tax Report * attempt to export the "Sales Tax Report (xlsx)" You should be met with a traceback about a tax group External ID not being found ### Cause The system looks for an XML ID which is only present in the parent company, while using the branch
Original PR description
### Steps to reproduce * install `l10n_th_reports` * create a Thai company and its branch * using the company selector, ensure the current company is the branch company, while selecting both parent and branch company * open the Thai Tax Report * attempt to export the "Sales Tax Report (xlsx)" You should be met with a traceback about a tax group External ID not being found ### Cause The system looks for an XML ID which is only present in the parent company, while using the branch company opw-4181071 Forward-Port-Of: odoo/enterprise#70467
Steps to reproduce: - Employees > Configuration > Working schedules - Set your working schedule to have non round numbers (Not mandatory but makes the issue much easier to reproduce) - Timesheets > Edit to have the required hour total - Sometimes rounding errors will cause the formatting to change (Overtime of +0:00, display in red...) This issue is not deterministic but we currently use exact comparisons between floats to determine the formatting so it could happen anytime. The error mar
Original PR description
Steps to reproduce: - Employees > Configuration > Working schedules - Set your working schedule to have non round numbers (Not mandatory but makes the issue much easier to reproduce) - Timesheets > Edit to have the required hour total - Sometimes rounding errors will cause the formatting to change (Overtime of +0:00, display in red...) This issue is not deterministic but we currently use exact comparisons between floats to determine the formatting so it could happen anytime. The error margin was chosen to be much lower than what a difference of 1min could cause (Since the rounding errors are in the vicinity of 1e-16). opw-4123649 Forward-Port-Of: odoo/enterprise#69845
Since https://github.com/odoo/odoo/pull/181529, we cannot search on display name for some models that define themselves the field without specifying the search method. The `display_name` field is defined (including its compute method) only when the model does not define it yet. Existing declarations were missing a `search` declaration. odoo/odoo#181563 Forward-Port-Of: odoo/enterprise#70746
Original PR description
Since https://github.com/odoo/odoo/pull/181529, we cannot search on display name for some models that define themselves the field without specifying the search method. The `display_name` field is defined (including its compute method) only when the model does not define it yet. Existing declarations were missing a `search` declaration. odoo/odoo#181563 Forward-Port-Of: odoo/enterprise#70746
https://github.com/odoo/odoo/pull/174366 task-4027103 Forward-Port-Of: odoo/enterprise#69287
Original PR description
https://github.com/odoo/odoo/pull/174366 task-4027103 Forward-Port-Of: odoo/enterprise#69287
When a quality check of type 'spreadsheet' fails, we want to show the failure message and stay on the spreadsheet view. That way the user has the time to see what failed. They can still use the 'Shop Floor' link to return to the shopfloor view. Forward-Port-Of: odoo/enterprise#70799
Original PR description
When a quality check of type 'spreadsheet' fails, we want to show the failure message and stay on the spreadsheet view. That way the user has the time to see what failed. They can still use the 'Shop Floor' link to return to the shopfloor view. Forward-Port-Of: odoo/enterprise#70799
Internal transfers are no longer supported as per b4da30bfa8a82959f91f606cb94c0704d4afccb8. This commit adjusts payment initiations' payloads to reflect this change. Forward-Port-Of: odoo/enterprise#70750
Original PR description
Internal transfers are no longer supported as per b4da30bfa8a82959f91f606cb94c0704d4afccb8. This commit adjusts payment initiations' payloads to reflect this change. Forward-Port-Of: odoo/enterprise#70750
RATIONALE When invoked through cron, event schedulers currently run on all available registrations. This can lead to Memory or Time errors when dealing with big events. We should instead move towards an interactive sending, committing after each batch, to gradually send communications without errors and without sending multiple times mails, sms, whatsapp messages, ... SPECIFICATIONS Global approach for this PR * rewrite schedulers execution code, notably to have more control on
Original PR description
RATIONALE When invoked through cron, event schedulers currently run on all available registrations. This can lead to Memory or Time errors when dealing with big events. We should instead move towards…
RATIONALE
When invoked through cron, event schedulers currently run on all available
registrations. This can lead to Memory or Time errors when dealing with
big events. We should instead move towards an interactive sending, committing
after each batch, to gradually send communications without errors and without
sending multiple times mails, sms, whatsapp messages, ...
SPECIFICATIONS
Global approach for this PR
* rewrite schedulers execution code, notably to have more control on
input / output of each type: event-based or attendee-based schedulers,
give registrations to contact as input, ... ;
* introduce more performance oriented code: avoid filters on all attendees,
search for batches instead; find once attendees to contact then;
delegate the sending only to sub modules;
* make communications iterative
* event-based: use recently introduced "last_registration_id" field to know
at which point process was stopped, and resume communication sending;
* attendee-based: contact by batches;
* make code more defensive against ill defined templates and issues during
communication sending;
* add / improve tests;
See sub commits and linked community PR for more details.
Task-3814592: Event: Limit scheduler in cron mode
Task-3084943: Event: Improve communication scheduler scalability
Forward-Port-Of: odoo/enterprise#68658This commit enables the display of the home section in the documents search panel for portal users. This allows portal users, for example, to return to a view encompassing all folders and documents after inspecting the contents of a folder. task-3373836 Forward-Port-Of: odoo/enterprise#70794
Original PR description
This commit enables the display of the home section in the documents search panel for portal users. This allows portal users, for example, to return to a view encompassing all folders and documents after inspecting the contents of a folder. task-3373836 Forward-Port-Of: odoo/enterprise#70794
This commit fix the 'undefined' message when trying to drag and drop a single document in the kanban and list view. It also fix the owner avatar and activity icon to always stick to the bottom of the kanban card. Forward-Port-Of: odoo/enterprise#70772
Original PR description
This commit fix the 'undefined' message when trying to drag and drop a single document in the kanban and list view. It also fix the owner avatar and activity icon to always stick to the bottom of the kanban card. Forward-Port-Of: odoo/enterprise#70772
When portal users try to switch to the list view, they get a client error. The error is solved by keeping the studio service accessible to the ListRenderer. task-3373836 Forward-Port-Of: odoo/enterprise#70775
Original PR description
When portal users try to switch to the list view, they get a client error. The error is solved by keeping the studio service accessible to the ListRenderer. task-3373836 Forward-Port-Of: odoo/enterprise#70775
This commit makes it not possible to close the barcode video scanner during its initialization. It prevents a lot of issue. Community PR: odoo/odoo#181294 Forward-Port-Of: odoo/enterprise#70607
Original PR description
This commit makes it not possible to close the barcode video scanner during its initialization. It prevents a lot of issue. Community PR: odoo/odoo#181294 Forward-Port-Of: odoo/enterprise#70607
The meaning of inter-company transaction options (i.e. generate Purchase Order / Sale Order) changed in #55350, as they now indicate the opposite of what they used to (as they now take the PoV of the current company). But the conditions of warehouse/receipt type options weren't adapted to the new meaning: - `intercompany_receipt_type_id` is used to generate the purchase order triggered through `intercompany_generate_purchase_orders`. - `intercompany_warehouse_id` is used to know from which
Original PR description
The meaning of inter-company transaction options (i.e. generate Purchase Order / Sale Order) changed in #55350, as they now indicate the opposite of what they used to (as they now take the PoV of the current company). But the conditions of warehouse/receipt type options weren't adapted to the new meaning: - `intercompany_receipt_type_id` is used to generate the purchase order triggered through `intercompany_generate_purchase_orders`. - `intercompany_warehouse_id` is used to know from which warehouse to generate the sale order triggered trhough `intercompany_generate_sale_orders`. Task-4206898 Forward-Port-Of: odoo/enterprise#70660
### Steps to reproduce: - In the setting: enable Rental transfers - Create and confirm a rental order for 1 unit of a product. ##### > 2 transfers are created: one delivery and one receipt - Validate the delivery and then the receipt for your product. - Go back to the setting: disable Rental transfers #### Expected behavior: You are expected to be able to change this setting. In addition, you have already ended each of your flows that was sensitive to this settings so that nothing s
Original PR description
### Steps to reproduce: - In the setting: enable Rental transfers - Create and confirm a rental order for 1 unit of a product. ##### > 2 transfers are created: one delivery and one receipt - Validate…
### Steps to reproduce: - In the setting: enable Rental transfers - Create and confirm a rental order for 1 unit of a product. ##### > 2 transfers are created: one delivery and one receipt - Validate the delivery and then the receipt for your product. - Go back to the setting: disable Rental transfers #### Expected behavior: You are expected to be able to change this setting. In addition, you have already ended each of your flows that was sensitive to this settings so that nothing should be blocking. #### Current behavior: Error: caused by a foreign key violation: "stock_move_rule_id_fkey" on the table "stock_move". ### Cause of the issue: Push and pull Rules were refactored in saas-17.2 see commit a2ea658 along with this refactoring a method was added to delete the rules of the rental route in oreder to update them if the route is disabled: https://github.com/odoo/enterprise/blob/4647c62c3bd05b7346033cfa851770dfc399837e/sale_stock_renting/models/stock_warehouse.py#L15-L20 However, if the rule was already used on a stock move (just like in our flow) these rules will still be referenced by a move and you will not be allowed to delete the rules form the "stock_rule" table without violating the foreign key violation "stock_move_rule_id_fkey" on the "stock_move" table. ### opw-4131426 Forward-Port-Of: odoo/enterprise#70199
Fix staff user cards alignment when there is only 1 user and the appointment is unpublished. The card must be aligned with the "Unpublished" text. Task-4196414 Forward-Port-Of: odoo/enterprise#70492 Forward-Port-Of: odoo/enterprise#70309
Original PR description
Fix staff user cards alignment when there is only 1 user and the appointment is unpublished. The card must be aligned with the "Unpublished" text. Task-4196414 Forward-Port-Of: odoo/enterprise#70492 Forward-Port-Of: odoo/enterprise#70309
In the Native Mobile Apps when we use a Native method that requires a permission the promise is rejected on the first call. This commit avoids to generate `unhandledrejection` in this case. Forward-Port-Of: odoo/enterprise#70776
Original PR description
In the Native Mobile Apps when we use a Native method that requires a permission the promise is rejected on the first call. This commit avoids to generate `unhandledrejection` in this case. Forward-Port-Of: odoo/enterprise#70776
Previously, the _cron_try_auto_reconcile_statement_lines method was called directly from _fill_document_with_results, which could cause significant delays when triggered from the UI, resulting in long loading times for users. This commit resolves the issue by scheduling the reconciliation process as a background cron job, improving the responsiveness of the _fill_document_with_results function. Original task-4061457 Forward-Port-Of: odoo/enterprise#70762
Original PR description
Previously, the _cron_try_auto_reconcile_statement_lines method was called directly from _fill_document_with_results, which could cause significant delays when triggered from the UI, resulting in long loading times for users. This commit resolves the issue by scheduling the reconciliation process as a background cron job, improving the responsiveness of the _fill_document_with_results function. Original task-4061457 Forward-Port-Of: odoo/enterprise#70762
Before this commit, the 3c7775f4c7a3efaa891bc31072c41abff24edfad commit adds some style to correctly display the noContent helper inside the grid view. The problem is the selector used to apply that styling is too generic and not specific to the grid view which can alter the position of the no content helper in other views. This commit makes sure the style added for the grid view is only applied inside the grid view and not somewhere else. task-4207210 Forward-Port-Of: odoo/enterprise#705
Original PR description
Before this commit, the 3c7775f4c7a3efaa891bc31072c41abff24edfad commit adds some style to correctly display the noContent helper inside the grid view. The problem is the selector used to apply that styling is too generic and not specific to the grid view which can alter the position of the no content helper in other views. This commit makes sure the style added for the grid view is only applied inside the grid view and not somewhere else. task-4207210 Forward-Port-Of: odoo/enterprise#70580
Before this commit quarter strings on reports were not always explicit. If the fiscal year was not aligned to the calendar year, people would get confused by thinking the quarter was aligned on the fiscal year Now to avoid that we show the start and the end of the quarter. task-4200096 Forward-Port-Of: odoo/enterprise#70647
Original PR description
Before this commit quarter strings on reports were not always explicit. If the fiscal year was not aligned to the calendar year, people would get confused by thinking the quarter was aligned on the fiscal year Now to avoid that we show the start and the end of the quarter. task-4200096 Forward-Port-Of: odoo/enterprise#70647
Before when creating two appointment one by one, an error was raised for the second appointment. This was due to the fact that the calendar view was refreshed with a wrong active id. This commit remove the view refresh since the view itself make a RPC to get the new data. Forward-Port-Of: odoo/enterprise#70652
Original PR description
Before when creating two appointment one by one, an error was raised for the second appointment. This was due to the fact that the calendar view was refreshed with a wrong active id. This commit remove the view refresh since the view itself make a RPC to get the new data. Forward-Port-Of: odoo/enterprise#70652
This commit globally improves the bookings that need manual confirmation: - Adapt the mailing templates to take into account 'request' bookings ; - Send a confirmation email when the appointment status changes to 'booked' ; - Slightly tune the manual confirmation conditions. Task-3918889 Forward-Port-Of: odoo/enterprise#70759
Original PR description
This commit globally improves the bookings that need manual confirmation: - Adapt the mailing templates to take into account 'request' bookings ; - Send a confirmation email when the appointment status changes to 'booked' ; - Slightly tune the manual confirmation conditions. Task-3918889 Forward-Port-Of: odoo/enterprise#70759
Currently, an error occurs when the system tries to access the attribute name 'account_fiscal_id' through 'company_id' [1] but it is not available in 'res_company' model. Step to produce: - Install the 'l10n_ke_edi_oscu_stock' module. - Create a product, Set a company as Kenya, Change a 'Product Type' storable to service or consumable. - Again change a 'Product Type' to a storable product. ```AttributeError: 'res.company' object has no attribute 'account_fiscal_id'``` Link [1]: ht
Original PR description
Currently, an error occurs when the system tries to access the attribute name 'account_fiscal_id' through 'company_id' [1] but it is not available in 'res_company' model. Step to produce: - Install the 'l10n_ke_edi_oscu_stock' module. - Create a product, Set a company as Kenya, Change a 'Product Type' storable to service or consumable. - Again change a 'Product Type' to a storable product. ```AttributeError: 'res.company' object has no attribute 'account_fiscal_id'``` Link [1]: https://github.com/odoo/enterprise/blob/3f0113b0d95200466f51b9c1f75b58a3534fb34c/l10n_ke_edi_oscu_stock/models/product.py#L21-L22 To resolve this issue, Get a product country code from 'account_fiscal_country_id' instead of 'account_fiscal_id' Sentry-5862212825 Forward-Port-Of: odoo/enterprise#70244 Forward-Port-Of: odoo/enterprise#70148
Versions: ------------ saas-17.4 Steps to Reproduce: --------------------------- 1. Go to the All Documents menu. 2. Click on "Details" from the kanban dropdown. 3. Select "Request Signature" from the cog menu. Issue: --------- A `ValueError` occurs: `Wrong value for sign.request.reference_doc: 'sign.request,1'`. Cause: --------- The `reference_doc` field restricts the `sign.request` model in the `selection_target_model`. Solution: ----------- Hide the "Request Signature
Original PR description
Versions: ------------ saas-17.4 Steps to Reproduce: --------------------------- 1. Go to the All Documents menu. 2. Click on "Details" from the kanban dropdown. 3. Select "Request Signature" from the cog menu. Issue: --------- A `ValueError` occurs: `Wrong value for sign.request.reference_doc: 'sign.request,1'`. Cause: --------- The `reference_doc` field restricts the `sign.request` model in the `selection_target_model`. Solution: ----------- Hide the "Request Signature" option in the cog menu. task: 4175789 Forward-Port-Of: odoo/enterprise#69928
before this commit there is no space between 'sms' and 'chat' buttons. after this commit added a space between both buttons. Forward-Port-Of: odoo/enterprise#70742
Original PR description
before this commit there is no space between 'sms' and 'chat' buttons. after this commit added a space between both buttons. Forward-Port-Of: odoo/enterprise#70742
Before this commit, toggling the bold attribute on a field in a (new API) kanban view didn't work. This was because the feature wasn't fully implemented (in web) for new API kanban. Indeed, the class "o_text_bold" was correctly set, but the associated css rule was scoped for legacy kanban records. Instead of fixing it in web, we rather want to promote the use of bootstrap utility class. So instead of setting the `bold` attribute, we toggle the `fw-bold` classname. Forward-Port-Of: odoo/enter
Original PR description
Before this commit, toggling the bold attribute on a field in a (new API) kanban view didn't work. This was because the feature wasn't fully implemented (in web) for new API kanban. Indeed, the class "o_text_bold" was correctly set, but the associated css rule was scoped for legacy kanban records. Instead of fixing it in web, we rather want to promote the use of bootstrap utility class. So instead of setting the `bold` attribute, we toggle the `fw-bold` classname. Forward-Port-Of: odoo/enterprise#70669
**Before this commit** Tests on test_23_export_hardcoded_models_and_fields function break on single app tests because we are trying to find models from PRESET_MODELS_DEFAULTS in runbot that do not actually exist in self.env if we do not install extra modules like hr, crm, etc. **After this commit** This test checks beforehand if some needed modules are all installed. Forward-Port-Of: odoo/enterprise#70731
Original PR description
**Before this commit** Tests on test_23_export_hardcoded_models_and_fields function break on single app tests because we are trying to find models from PRESET_MODELS_DEFAULTS in runbot that do not actually exist in self.env if we do not install extra modules like hr, crm, etc. **After this commit** This test checks beforehand if some needed modules are all installed. Forward-Port-Of: odoo/enterprise#70731
Make ShopFloor use IoT task: 4017327 Forward-Port-Of: odoo/enterprise#70733 Forward-Port-Of: odoo/enterprise#68706
Original PR description
Make ShopFloor use IoT task: 4017327 Forward-Port-Of: odoo/enterprise#70733 Forward-Port-Of: odoo/enterprise#68706
Forward-Port-Of: odoo/enterprise#70567
Original PR description
Forward-Port-Of: odoo/enterprise#70567
This commit implements the feature of removing every entries related to a recordset. This is useful in following use case: - Have approvals on Sale Order - The sale order's life goes on and with it the approval flow - The sale order has a major problem business-wise down the line - It is rollbacked to the "draft" status => In that case we want all approval entries to be deleted, since the approval lifecycle must start from scratch when the sale order is resetted to draft. This commit i
Original PR description
This commit implements the feature of removing every entries related to a recordset. This is useful in following use case: - Have approvals on Sale Order - The sale order's life goes on and with it the approval flow - The sale order has a major problem business-wise down the line - It is rollbacked to the "draft" status => In that case we want all approval entries to be deleted, since the approval lifecycle must start from scratch when the sale order is resetted to draft. This commit implements this feature via the creation of Base Automations and Server Actions task-4123521 Forward-Port-Of: odoo/enterprise#70661
Starting d1a94147060083da54f9423f8c379676fbb7db66, when making ingenico payment, the pos app sends an `NaN` as `TransactionID`. As a result, users are unable to receive payments from Ingenico terminal. This change proposes to take the last 13 characters of the payment's uuid (after removing the `-` separators) and convert it as integer which will serve as the `TransactionID`. We're only taking the 13 characters because it's the number of characters that can be converted to JS int without exponen
Original PR description
Starting d1a94147060083da54f9423f8c379676fbb7db66, when making ingenico payment, the pos app sends an `NaN` as `TransactionID`. As a result, users are unable to receive payments from Ingenico terminal. This change proposes to take the last 13 characters of the payment's uuid (after removing the `-` separators) and convert it as integer which will serve as the `TransactionID`. We're only taking the 13 characters because it's the number of characters that can be converted to JS int without exponent. Forward-Port-Of: odoo/enterprise#70672