Friday, June 9, 2023
50 changes · master
Enhancements to existing features
Course and slide sharing screens now only show email sharing when the required email template is configured. This avoids confusing error messages for learners and portal users who cannot resolve configuration issues themselves.
Original PR description
This commit improves the various sharing templates to check if there is a configured mail template before suggesting to share the course/slide by email. Currently the user gets an error message suggesting to configure templates, which is not ideal as the sharing feature can be used by everyone including portal users, that have no idea what that means. Task-3349606
A new menu entry makes city records available directly in the address extension area. This helps users view and manage city data without needing technical access or workarounds.
Original PR description
**Description of the issue/feature this PR addresses:** currently there is no menu to access the data of res.city model. **Current behavior before PR:** missing menu for cities **Desired behavior after PR is merged:** a new menu will be added to display data of res.city model --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Long names in the Portal view now show the trailing dots in the same color as the surrounding text. This creates a more consistent and polished experience when item names are shortened on screen.
Original PR description
Improve the following generic UX - Earlier in Portal view when the name was too long so it ended with ...(triple dots) but this ...(triple dot) was black in the portal but the text was similar to green color - Now this ...(triple dot) will adapt the color of the text before it in the Portal view task-3251721
Accounting reports now store their line grouping threshold directly on each report instead of relying on a shared configuration setting. This makes report behavior easier to manage and more consistent across accounting reports.
Original PR description
Since these commits: - https://github.com/odoo/enterprise/commit/d6e771f1f9ab4440e47188ea24c2fc80f58c2919 - https://github.com/odoo/enterprise/commit/51bc88bdec323035c5d1949a8ab76e2c032b26f2 Several reports were using a config parameter to define a threshold used to group report lines. The goal here is to replace this parameter by a new `prefix_groups_threshold` field on `account.report`. task-3330099 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Updates spreadsheet and document spreadsheet tests to align with a shared naming service. This helps keep spreadsheet-related features reliable as the underlying naming behavior is standardized.
Resolved issues and error corrections
This update corrects the appearance of mail notifications in the systray menu. It helps users see and interact with notifications more consistently without changing business workflows.
Original PR description
--- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Code cleanup and technical improvements
The mail app code was reorganized so rules for messages and attachments in discussion channels now live in the Discuss area. This does not change user features, but it makes the code easier to maintain and supports future improvements.
Miscellaneous changes
An accrual plan configured to give hours will give to many hours after reaching the maximum for the level, creating a leave and then accruing again, it will consider the maximum of time to add as days instead of hours, so if the limit is 80 hours, then 8 are spent on 1 day of free time, the next time the plan accrues, it will consider that the maximum it can give is 8 days instead of 8 hours. task 3354892 Forward-Port-Of: odoo/odoo#123940 Forward-Port-Of: odoo/odoo#123901
Original PR description
An accrual plan configured to give hours will give to many hours after reaching the maximum for the level, creating a leave and then accruing again, it will consider the maximum of time to add as days instead of hours, so if the limit is 80 hours, then 8 are spent on 1 day of free time, the next time the plan accrues, it will consider that the maximum it can give is 8 days instead of 8 hours. task 3354892 Forward-Port-Of: odoo/odoo#123940 Forward-Port-Of: odoo/odoo#123901
This fixes how manufacturing work center productivity values are updated so they are calculated automatically instead of only reacting to manual screen changes. It helps keep production time and productivity information consistent and reliable for business reporting.
Original PR description
In https://github.com/odoo/odoo/pull/107473, a few *onchange*s instead of *compute*s where introduced by mistake. This commit fix this error and change the functions names and body to be more coherent with the new *compute*s. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes a duplicate delivery terms field on purchase orders that was defined in two places. Removing the extra definition helps keep purchasing data consistent and reduces the risk of maintenance issues without changing day-to-day user workflows.
Original PR description
before this commit, the field incoterm_id is defined twice in purchase.order model, i.e., in purchase and purchase_stock modules after this commit incoterm_id field is removed from purchase_stock module issue: https://github.com/odoo/odoo/issues/65347 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
If a user adds a new SM to a picking without any scheduled date, traceback will appear To reproduce the issue: 1. create a new picking and remove the scheduled_date. 2. try to add a new storable product in move lines. Traceback on sentry: ``` KeyError: <NewId 0x7f41c8890700> File "odoo/api.py", line 958, in get cache_value = field_cache[record._ids[0]] CacheMiss: 'stock.move(<NewId 0x7f41c8890700>,).forecast_availability' File "odoo/fields.py", line 1142, in __get__
Original PR description
If a user adds a new SM to a picking without any scheduled date, traceback will appear To reproduce the issue: 1. create a new picking and remove the scheduled_date. 2. try to add a new storable…
If a user adds a new SM to a picking without any scheduled date,
traceback will appear
To reproduce the issue:
1. create a new picking and remove the scheduled_date.
2. try to add a new storable product in move lines.
Traceback on sentry:
```
KeyError: <NewId 0x7f41c8890700>
File "odoo/api.py", line 958, in get
cache_value = field_cache[record._ids[0]]
CacheMiss: 'stock.move(<NewId 0x7f41c8890700>,).forecast_availability'
File "odoo/fields.py", line 1142, in __get__
value = env.cache.get(record, self)
File "odoo/api.py", line 965, in get
raise CacheMiss(record, field)
TypeError: '>' not supported between instances of 'datetime.datetime' and 'bool'
File "odoo/http.py", line 2095, in __call__
response = request._serve_db()
File "odoo/http.py", line 1677, in _serve_db
return service_model.retrying(self._serve_ir_http, self.env)
File "odoo/service/model.py", line 134, in retrying
result = func()
File "odoo/http.py", line 1706, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 1903, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 149, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 708, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/web/controllers/dataset.py", line 28, in call_kw
return self._call_kw(model, method, args, kwargs)
File "addons/web/controllers/dataset.py", line 24, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "odoo/api.py", line 461, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
File "odoo/api.py", line 448, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "odoo/models.py", line 6542, in onchange
todo = [
File "odoo/models.py", line 6545, in <listcomp>
if name not in done and snapshot0.has_changed(name)
File "odoo/models.py", line 6328, in has_changed
return self[name] != record[name]
File "odoo/models.py", line 5887, in __getitem__
return self._fields[key].__get__(self, type(self))
File "odoo/fields.py", line 1191, in __get__
self.compute_value(recs)
File "odoo/fields.py", line 1350, in compute_value
records._compute_field_value(self)
File "odoo/models.py", line 4201, in _compute_field_value
getattr(self, field.compute)()
File "addons/stock/models/stock_move.py", line 506, in _compute_forecast_information
prefetch_virtual_available[key_virtual_available(move, incoming=True)].add(move.product_id.id)
File "addons/stock/models/stock_move.py", line 497, in key_virtual_available
return warehouse_id, max(move.date, now)
```
On the picking form, the default SM date is the scheduled date of the
picking:
https://github.com/odoo/odoo/blob/2c3f53d5a0380e7de27977f56f20307ff2bccabf/addons/stock/views/stock_picking_views.xml#L358
Therefore, in the above use case, when triggering the onchange/compute
methods, the field `date` of the SM will not be defined. At some
point, we need to get the forecasted quantities of the SM product
(see the method updated by this commit) and, to do so, we compare
the SM date with `now`. Since this date is `False`, it will lead to the
above traceback
sentry-3979281197
Forward-Port-Of: odoo/odoo#121423Steps to reproduce: 1. Navigate to Live chat and select a channel 2. Add a line in the Channel Rules tab 3. Select Show, Show with notification, or Open automatically 4. Add "Lead Generation Bot" (No error for Welcome Bot or Helpdesk Bot) 5. Save & Close 6. Navigate to Website and select the Live Chat button 7. Press the "x" 8. Crash `TypeError: LivechatController.visitor_leave_session() missing 1 required positional argument: 'uuid'` This happens because `visitor_leave_session`
Original PR description
Steps to reproduce: 1. Navigate to Live chat and select a channel 2. Add a line in the Channel Rules tab 3. Select Show, Show with notification, or Open automatically 4. Add "Lead Generation Bot" (No error for Welcome Bot or Helpdesk Bot) 5. Save & Close 6. Navigate to Website and select the Live Chat button 7. Press the "x" 8. Crash `TypeError: LivechatController.visitor_leave_session() missing 1 required positional argument: 'uuid'` This happens because `visitor_leave_session` requires an active livechat session, i.e. it needs an `uuid`. However, if no interaction happens in the livechat conversation (e.g. posting a 1st message), there's no livechat session, therefore there's no `uuid`. This commit fixes the issue by not calling this route if there is no active livechat session when closing the livechat. opw-3347443 Forward-Port-Of: odoo/odoo#124353 Forward-Port-Of: odoo/odoo#124232
PR odoo/odoo#109511 added in a related expiration_date field linked to its lot_id's expiration_date. This field was added as stored + readonly=False though, which was a mistake due to the following issues it causes: - bug - the related dates (use_date, removal_date, alert_date) won't correctly update, this is easily fixable - bug - [mostly a nuisance, but will be confusing for users], if there are 2 lines for the same lot (e.g. different locations) then updating the expiration_da
Original PR description
PR odoo/odoo#109511 added in a related expiration_date field linked to its lot_id's expiration_date. This field was added as stored + readonly=False though, which was a mistake due to the following…
PR odoo/odoo#109511 added in a related expiration_date field linked to its lot_id's expiration_date. This field was added as stored + readonly=False though, which was a mistake due to the following issues it causes: - bug - the related dates (use_date, removal_date, alert_date) won't correctly update, this is easily fixable - bug - [mostly a nuisance, but will be confusing for users], if there are 2 lines for the same lot (e.g. different locations) then updating the expiration_date for one line won't show in the other lines without a view refresh (could be fixed with custom JS, but not ideal) - bad UX - cluttered view of editable values - redundancy - the ability to edit the expiration_date is easily done by clicking on the lot name within the view - db bloat - the field is unnecessarily stored since it should always be consistent with the lot_id.expiration date anyways For stable we will make this field readonly, for master we will remove it from the db and leave it as an informative related field only (as well as the not used `removal_date`?) opw-3328901 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#123138
If you go to PLM > click on a primary button > click on the cog > import records, the buttons have a `.m-1` which is added on top of a `.gap-1`.This result in a double margin, which is not consistent with other CP's behavior and affects the whole CP layout. === AFTER === We remove these unnecessary `.m-1`, making sure that no matter how many buttons are shown they have a correct spacing. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forw
Original PR description
If you go to PLM > click on a primary button > click on the cog > import records, the buttons have a `.m-1` which is added on top of a `.gap-1`.This result in a double margin, which is not consistent with other CP's behavior and affects the whole CP layout. === AFTER === We remove these unnecessary `.m-1`, making sure that no matter how many buttons are shown they have a correct spacing. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#123950
When the value line.discount = 100 in 'get_total_discount' method, the traceback is generated. The main reason is because of 'BODMAS Rule - Bracket, Order, Division, Multiplication, Addition, and Subtraction Steps To Produce:- 1. Install point_of_sale module 2. Go to Point Of Sale Configuration 3. Make 'Line Discounts' True and save it 4. Create New Storable Product, ordered quantity with 100 cost and sales price then remove taxes and Vendor Taxes 5. Open POS Session and select th
Original PR description
When the value line.discount = 100 in 'get_total_discount' method, the traceback is generated. The main reason is because of 'BODMAS Rule - Bracket, Order, Division, Multiplication, Addition, and…
When the value line.discount = 100 in 'get_total_discount' method, the traceback
is generated. The main reason is because of 'BODMAS Rule - Bracket, Order,
Division, Multiplication, Addition, and Subtraction
Steps To Produce:-
1. Install point_of_sale module
2. Go to Point Of Sale Configuration
3. Make 'Line Discounts' True and save it
4. Create New Storable Product, ordered quantity with 100 cost and sales price
then remove taxes and Vendor Taxes
5. Open POS Session and select the newly created product
6. Apply discount = 100 % and validate payment and close the session
7. Go to Reporting > Sales Details, and add the date range based on the current
pos order, click on the 'Print' button.
Traceback will be generated.
See Traceback:-
```
ZeroDivisionError: float division by zero
File "addons/web/controllers/report.py", line 120, in report_download
response = self.report_routes(reportname, converter=converter, context=context, **data)
File "odoo/http.py", line 715, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/web/controllers/report.py", line 42, in report_routes
pdf = report.with_context(context)._render_qweb_pdf(reportname, docids, data=data)[0]
File "addons/account/models/ir_actions_report.py", line 57, in _render_qweb_pdf
return super()._render_qweb_pdf(report_ref, res_ids=res_ids, data=data)
File "odoo/addons/base/models/ir_actions_report.py", line 801, in _render_qweb_pdf
collected_streams = self._render_qweb_pdf_prepare_streams(report_ref, data, res_ids=res_ids)
File "addons/account_edi/models/ir_actions_report.py", line 14, in _render_qweb_pdf_prepare_streams
collected_streams = super()._render_qweb_pdf_prepare_streams(report_ref, data, res_ids=res_ids)
File "addons/account/models/ir_actions_report.py", line 20, in _render_qweb_pdf_prepare_streams
return super()._render_qweb_pdf_prepare_streams(report_ref, data, res_ids=res_ids)
File "odoo/addons/base/models/ir_actions_report.py", line 702, in _render_qweb_pdf_prepare_streams
html = self.with_context(**additional_context)._render_qweb_html(report_ref, res_ids_wo_stream, data=data)[0]
File "home/odoo/src/enterprise/saas-16.2/web_studio/models/ir_actions_report.py", line 19, in _render_qweb_html
return super(IrActionsReport, self)._render_qweb_html(report_ref, docids, data)
File "odoo/addons/base/models/ir_actions_report.py", line 877, in _render_qweb_html
data = self._get_rendering_context(report, docids, data)
File "odoo/addons/base/models/ir_actions_report.py", line 892, in _get_rendering_context
data.update(report_model._get_report_values(docids, data=data))
File "addons/point_of_sale/models/report_sale_details.py", line 321, in _get_report_values
data.update(self.get_sale_details(data['date_start'], data['date_stop'], configs.ids, data['session_ids']))
File "addons/point_of_sale/models/report_sale_details.py", line 241, in get_sale_details
discount_amount += session.get_total_discount()
File "addons/point_of_sale/models/pos_session.py", line 2026, in get_total_discount
original_price = line.price_subtotal_incl / (1 - line.discount / 100)
```
Applying these changes will resolve this issue.
sentry-4216418906
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#123087A rate of 17.5 is wrong for standard rate EU purchases in Ireland. The standard Sale and purchase VAT have an amount of 23. Forward-Port-Of: odoo/odoo#124357 Forward-Port-Of: odoo/odoo#124078
Original PR description
A rate of 17.5 is wrong for standard rate EU purchases in Ireland. The standard Sale and purchase VAT have an amount of 23. Forward-Port-Of: odoo/odoo#124357 Forward-Port-Of: odoo/odoo#124078
The "readonly iframe" mode of html_editor does not do the processing required to ensure all links target a new tab when the setup is called more than once. As this happens often, links effectively did not redirect to a new tab. Additionally sandboxedIframe did not allow new tabs to open. We add `allow-popups` and `allow-popups-to-escape-sandbox` to the sandbox attributes. This is safe as the popup will not have access to the odoo window. Which should mean it's as safe as opening a link
Original PR description
The "readonly iframe" mode of html_editor does not do the processing required to ensure all links target a new tab when the setup is called more than once. As this happens often, links effectively did not redirect to a new tab. Additionally sandboxedIframe did not allow new tabs to open. We add `allow-popups` and `allow-popups-to-escape-sandbox` to the sandbox attributes. This is safe as the popup will not have access to the odoo window. Which should mean it's as safe as opening a link without the sandbox. opw-3337670 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#124334 Forward-Port-Of: odoo/odoo#124233
=== ISSUE === If you navigate to Time Off > Configuration > Time Off Types and open a type, the layout of the display option is not consistent. The option should be displayed under the title and not next to it.  === AFTER === We remove the empty `group` tag and add the `string` attribute to the second one, in order to fix he layout.  === AFTER === We remove the empty `group` tag and add the `string` attribute to the second one, in order to fix he layout.  task-3332666 part of task-3326263 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#121953
**Steps to reproduce the bug:** - Create an attribute with "Variant Creation Mode" = Dynamically - In a product template, add the attributes and some values - Create a new BoM for this product - Click on "Overview" smart button **Problem:** Traceback is triggered, because the `_match_all_variant_values` function is called but without the product, while it takes at least one: https://github.com/odoo/odoo/blob/7b7f65d5047731978d2d8bcbd8d77cfa86ac1d53/addons/mrp/models/mrp_routing.py#L95
Original PR description
**Steps to reproduce the bug:** - Create an attribute with "Variant Creation Mode" = Dynamically - In a product template, add the attributes and some values - Create a new BoM for this product - Click on "Overview" smart button **Problem:** Traceback is triggered, because the `_match_all_variant_values` function is called but without the product, while it takes at least one: https://github.com/odoo/odoo/blob/7b7f65d5047731978d2d8bcbd8d77cfa86ac1d53/addons/mrp/models/mrp_routing.py#L95 https://github.com/odoo/odoo/blob/7b7f65d5047731978d2d8bcbd8d77cfa86ac1d53/addons/mrp/models/product.py#L209 As the variant creation mode is set to “dynamically”, we can skip the get of operation line. opw-3332902 Forward-Port-Of: odoo/odoo#122914
The `Preparation Display` is only available in the `enterprise` version, but it's setting does not reflect that This means that in community, one sees the option to enable the `Preparation Display`, without any sort of feedback as to why the optiondoes not actually work. This PR adds the `enterprise` flag next to the name of the option. Now, when a user of the `community` version tries to enable the option, they are greeted with a popup that explains the situation. Task: 3349726 ---
Original PR description
The `Preparation Display` is only available in the `enterprise` version, but it's setting does not reflect that This means that in community, one sees the option to enable the `Preparation Display`, without any sort of feedback as to why the optiondoes not actually work. This PR adds the `enterprise` flag next to the name of the option. Now, when a user of the `community` version tries to enable the option, they are greeted with a popup that explains the situation. Task: 3349726 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#123972 Forward-Port-Of: odoo/odoo#123719
This commit includes the exception details when logging an error in the registry module. By importing the sys module and using the exc_info() method, the commit ensures that the complete exception information is captured by Sentry. This modification improves the error reporting functionality by providing more comprehensive information about the encountered exceptions. This will aid in debugging and diagnosing issues, enabling faster resolution of potential problems. Forward-Port-Of: odoo/od
Original PR description
This commit includes the exception details when logging an error in the registry module. By importing the sys module and using the exc_info() method, the commit ensures that the complete exception information is captured by Sentry. This modification improves the error reporting functionality by providing more comprehensive information about the encountered exceptions. This will aid in debugging and diagnosing issues, enabling faster resolution of potential problems. Forward-Port-Of: odoo/odoo#124105 Forward-Port-Of: odoo/odoo#122432
CLA for flalexg --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#124065
Original PR description
CLA for flalexg --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#124065
=== ISSUE === If you navigate to Accounting > Accounting > Journal items and click on an item in the sidebar, there is an issue with longer number being hidden by the sidebar. This is mostly due to the fact that the font-size is now 14px instead of 13. === AFTER === We simply move the panel width from 50px to 54px. This is calculated based on the width of `.o_search_panel_category_value` with a `.o_treeEntry` class (41.12px) + the 6px `padding` from `.o_search_panel` with a `.acco
Original PR description
=== ISSUE === If you navigate to Accounting > Accounting > Journal items and click on an item in the sidebar, there is an issue with longer number being hidden by the sidebar. This is mostly due to the fact that the font-size is now 14px instead of 13. === AFTER === We simply move the panel width from 50px to 54px. This is calculated based on the width of `.o_search_panel_category_value` with a `.o_treeEntry` class (41.12px) + the 6px `padding` from `.o_search_panel` with a `.account_root` class, so 52px + 12px. task-3354841 part of task-3326263 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#123870
"ValueError: No record found for unique ID point_of_sale.product_product_tip. It may have been deleted." is generated when user delete 'Tips' from the product and try to enable tip payment from the POS setting. Step to produce: 1. Install point_of_sale 2. Open product and delete 'Tips' product 3. Open POS > Configure > Setting 4. Enable Tips in payment > select any product in tip product 5. click save >>> Traceback generated Tracebak on sentry: ``` ValueError: No record found for u
Original PR description
"ValueError: No record found for unique ID point_of_sale.product_product_tip. It may have been deleted." is generated when user delete 'Tips' from the product and try to enable tip payment from the…
"ValueError: No record found for unique ID point_of_sale.product_product_tip. It may have been deleted."
is generated when user delete 'Tips' from the product and try to enable tip payment from the POS setting.
Step to produce:
1. Install point_of_sale
2. Open product and delete 'Tips' product
3. Open POS > Configure > Setting
4. Enable Tips in payment > select any product in tip product
5. click save >>> Traceback generated
Tracebak on sentry:
```
ValueError: No record found for unique ID point_of_sale.product_product_tip. It may have been deleted.
File "odoo/http.py", line 2114, in __call__
response = request._serve_db()
File "odoo/http.py", line 1699, in _serve_db
return service_model.retrying(self._serve_ir_http, self.env)
File "odoo/service/model.py", line 133, in retrying
result = func()
File "odoo/http.py", line 1726, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 1921, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 190, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 716, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/web/controllers/dataset.py", line 30, in call_kw
return self._call_kw(model, method, args, kwargs)
File "addons/web/controllers/dataset.py", line 26, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "odoo/api.py", line 462, in call_kw
model.env.flush_all()
File "odoo/api.py", line 706, in flush_all
self._recompute_all()
File "odoo/api.py", line 702, in _recompute_all
self[field.model_name]._recompute_field(field)
File "odoo/models.py", line 6377, in _recompute_field
field.recompute(records)
File "odoo/fields.py", line 1365, in recompute
apply_except_missing(self.compute_value, recs)
File "odoo/fields.py", line 1338, in apply_except_missing
func(records)
File "odoo/fields.py", line 1387, in compute_value
records._compute_field_value(self)
File "odoo/models.py", line 4486, in _compute_field_value
fields.determine(field.compute, self)
File "odoo/fields.py", line 99, in determine
return needle(*args)
File "addons/point_of_sale/models/pos_config.py", line 248, in _compute_tip_product_id
pos_config.tip_product_id = self.env.ref("point_of_sale.product_product_tip")
File "odoo/api.py", line 575, in ref
raise ValueError('No record found for unique ID %s. It may have been deleted.' % (xml_id))
```
This commit solves the above issue by passing 'raise_if_not_found=False' to ensure
it does not throw an error when the tip product is not found.
sentry-4232555961
Forward-Port-Of: odoo/odoo#124055To set the lost reason you currently need to toggle a field in the wizard if you are marking a lead as lost. As the loss reason isn't technically necessary, we can just let users choose whether to input anything or not without having to click anything We also introduce groups so field strings are displayed. As the first field cannot easily be implied to be the loss reason anymore. task-3356095 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit
Original PR description
To set the lost reason you currently need to toggle a field in the wizard if you are marking a lead as lost. As the loss reason isn't technically necessary, we can just let users choose whether to input anything or not without having to click anything We also introduce groups so field strings are displayed. As the first field cannot easily be implied to be the loss reason anymore. task-3356095 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#124103
Recent commit [1] introduce a test that fails undeterministically. It was waiting for the jSignature lib to commit its changes before making some assertions, but it was not waiting to the lib user's component to render. [1]: https://github.com/odoo/odoo/commit/0a4bc245ad595054907661d0ece4efdae04b6ea4 fixes undeterministic error 21803 Forward-Port-Of: odoo/odoo#124328 Forward-Port-Of: odoo/odoo#124249
Original PR description
Recent commit [1] introduce a test that fails undeterministically. It was waiting for the jSignature lib to commit its changes before making some assertions, but it was not waiting to the lib user's component to render. [1]: https://github.com/odoo/odoo/commit/0a4bc245ad595054907661d0ece4efdae04b6ea4 fixes undeterministic error 21803 Forward-Port-Of: odoo/odoo#124328 Forward-Port-Of: odoo/odoo#124249
[FIX] web: fix sub-dropdown alignment Since [1], the sub-dropdowns are misaligned as soon as the user interacts with them. **Before this commit** ![before] **After this commit** ![after] [1]: https://github.com/odoo/odoo/commit/e6bdce9025fb106bc9dd7bc99c67be4df6365f22 [before]: https://github.com/odoo/odoo/assets/1159815/a293ebe1-30cc-4397-9e17-c0813846922b [after]: https://github.com/odoo/odoo/assets/1159815/7a151e51-a4e5-45e0-a1bf-61e89ae8aabb Forward-Port-Of: odoo/odoo#12434
Original PR description
[FIX] web: fix sub-dropdown alignment Since [1], the sub-dropdowns are misaligned as soon as the user interacts with them. **Before this commit** ![before] **After this commit** ![after] [1]: https://github.com/odoo/odoo/commit/e6bdce9025fb106bc9dd7bc99c67be4df6365f22 [before]: https://github.com/odoo/odoo/assets/1159815/a293ebe1-30cc-4397-9e17-c0813846922b [after]: https://github.com/odoo/odoo/assets/1159815/7a151e51-a4e5-45e0-a1bf-61e89ae8aabb Forward-Port-Of: odoo/odoo#124341 Forward-Port-Of: odoo/odoo#123917
Before this PR, when multi vat was activated and a foreign vat number was set on a fiscal position it was not printed on the invoice for the following layout: Striped, light and boxed. The Bold layout is not impacted since it does not use company details. This PR adds the foreign vat on the invoice when it's necessary. task-id: 3168705 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#124370 Forward-Port-Of: odoo/od
Original PR description
Before this PR, when multi vat was activated and a foreign vat number was set on a fiscal position it was not printed on the invoice for the following layout: Striped, light and boxed. The Bold layout is not impacted since it does not use company details. This PR adds the foreign vat on the invoice when it's necessary. task-id: 3168705 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#124370 Forward-Port-Of: odoo/odoo#118782
When user tries to quick create a field where model is not specified, the error will occur. Steps to reproduce: 1. Turn on developer mode. 2. Go to Settings > Technical > Fields Selection. 3. Create a new record and quick create a field. Traceback will be generated. See this traceback: ``` AssertionError: missing model name for {'field_description': 'image'} File "odoo/http.py", line 2115, in __call__ response = request._serve_db() File "odoo/http.py", line 1698, in _serve
Original PR description
When user tries to quick create a field where model is not specified, the error will occur. Steps to reproduce: 1. Turn on developer mode. 2. Go to Settings > Technical > Fields Selection. 3. Create…
When user tries to quick create a field where model is not specified, the error will occur.
Steps to reproduce:
1. Turn on developer mode.
2. Go to Settings > Technical > Fields Selection.
3. Create a new record and quick create a field.
Traceback will be generated.
See this traceback:
```
AssertionError: missing model name for {'field_description': 'image'}
File "odoo/http.py", line 2115, in __call__
response = request._serve_db()
File "odoo/http.py", line 1698, in _serve_db
return service_model.retrying(self._serve_ir_http, self.env)
File "odoo/service/model.py", line 134, in retrying
result = func()
File "odoo/http.py", line 1725, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 1922, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "addons/website/models/ir_http.py", line 234, in _dispatch
response = super()._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 154, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 715, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/web/controllers/dataset.py", line 28, in call_kw
return self._call_kw(model, method, args, kwargs)
File "addons/web/controllers/dataset.py", line 24, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "odoo/api.py", line 457, in call_kw
result = _call_kw_model(method, model, args, kwargs)
File "odoo/api.py", line 430, in _call_kw_model
result = method(recs, *args, **kwargs)
File "odoo/models.py", line 1603, in name_create
record = self.create({self._rec_name: name})
File "<decorator-gen-32>", line 2, in create
File "odoo/api.py", line 409, in _model_create_multi
return create(self, [arg])
File "odoo/addons/base/models/ir_model.py", line 890, in create
assert vals.get('model'), f"missing model name for {vals}"
```
Applying this commit will fix this issue.
sentry-3956146718
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#123667Before this commit, the Product (backend link) is not readable to the community and in the enterprise, it's not matching with the rest other backend links (blueish) (e.g. New) due to the default text color. After this commit, the backend link is readable for the community and matches with others in the enterprise version by using `$o-navbar-entry-color` task-3346020 Forward-Port-Of: odoo/odoo#123262
Original PR description
Before this commit, the Product (backend link) is not readable to the community and in the enterprise, it's not matching with the rest other backend links (blueish) (e.g. New) due to the default text color. After this commit, the backend link is readable for the community and matches with others in the enterprise version by using `$o-navbar-entry-color` task-3346020 Forward-Port-Of: odoo/odoo#123262
… wizard - Create an invoice - Send it using sent & print - Re-open the wizard - Click on 'Cancel' => The PDF has been deleted. This is because we want to remove the attachments manually added by the user but the condition to do it is wrong. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#124268
Original PR description
… wizard - Create an invoice - Send it using sent & print - Re-open the wizard - Click on 'Cancel' => The PDF has been deleted. This is because we want to remove the attachments manually added by the user but the condition to do it is wrong. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#124268
**Current behavior before PR:** Preview of some PDF documents were broking. **Desired behavior after PR is merged:** All PDF documents are previewable now. Task-3305415 Forward-Port-Of: odoo/odoo#121760
Original PR description
**Current behavior before PR:** Preview of some PDF documents were broking. **Desired behavior after PR is merged:** All PDF documents are previewable now. Task-3305415 Forward-Port-Of: odoo/odoo#121760
*: account, base_import, board, website This PR enhances the "cog menu" by fixing several UX flaws. Notable improvements include: - Reordering entries in a more logical manner, enhancing user intuitiveness. - Assigning icons to common actions for quick comprehension. - Grouping both print actions and module-specific actions for better organization. Enterprise: - https://github.com/odoo/enterprise/pull/41851 Co-authored-by: Brieuc-brd [brd@odoo.com](mailto:brd@odoo.com) Co-authored
Original PR description
*: account, base_import, board, website This PR enhances the "cog menu" by fixing several UX flaws. Notable improvements include: - Reordering entries in a more logical manner, enhancing user intuitiveness. - Assigning icons to common actions for quick comprehension. - Grouping both print actions and module-specific actions for better organization. Enterprise: - https://github.com/odoo/enterprise/pull/41851 Co-authored-by: Brieuc-brd [brd@odoo.com](mailto:brd@odoo.com) Co-authored-by: Pierre Paridans [app@odoo.com](mailto:app@odoo.com) Co-authored-by: stefanorigano (SRI) [sri@odoo.com](mailto:sri@odoo.com) task-3337951 task-3355224 (milk post-merge fixes) part of task-3326263 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#121872
=== ISSUE === If you navigate to Project > Task > Gantt view > magnifying glass and select some items, the arrow inside the `unselect all` component is not aligned with the text. This is due to the fact that the `.oi-large` class uses a CSS variable called `--oi-vertical-align` which aligns the icon a little bit under the middle. === AFTER === We add a `.align-text-bottom` class to the icon in order to align the icon with its label. task-3338235 part of task-332626 --- I con
Original PR description
=== ISSUE === If you navigate to Project > Task > Gantt view > magnifying glass and select some items, the arrow inside the `unselect all` component is not aligned with the text. This is due to the fact that the `.oi-large` class uses a CSS variable called `--oi-vertical-align` which aligns the icon a little bit under the middle. === AFTER === We add a `.align-text-bottom` class to the icon in order to align the icon with its label. task-3338235 part of task-332626 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#122293
In case of error, the send & print wizard is crashing or log an error on the invoice chatter. In that case, nothing is send to the end-customer. This is problematic for all flows in which we want to send a mail to the customer automatically. For example, e-commerce with automatic invoicing or subscription/recurring invoices. To avoid that, the current logic of the send & print has been reshaped. In case of error, a proforma PDF is sent instead. This is exactly the same document as the PDF but
Original PR description
In case of error, the send & print wizard is crashing or log an error on the invoice chatter. In that case, nothing is send to the end-customer. This is problematic for all flows in which we want to…
In case of error, the send & print wizard is crashing or log an error on the invoice chatter. In that case, nothing is send to the end-customer. This is problematic for all flows in which we want to send a mail to the customer automatically. For example, e-commerce with automatic invoicing or subscription/recurring invoices. To avoid that, the current logic of the send & print has been reshaped. In case of error, a proforma PDF is sent instead. This is exactly the same document as the PDF but without the legal layer. To do that, a lot of refactoring has been necessary to always provide the cumulated data for invoices to be able to access the generated proforma report and to allow the overrides to know exactly in which mode the hooks are called. Also, this commit renames the method by something less generic about invoices. Indeed, this wizard needs to be usable for others documents than invoices. That's the purpose of the invoice_single/invoice_multi mode. For that reason, all methods about invoices are now expricitely prefixed by 'invoice'. Fix also a performance issue on multi-invoices since the invoice_pdf_report_id document was invalided for the whole model instead of the current record. When dealing with X invoices, the whole model was invalidated X times. Task 3339352. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#124093 Forward-Port-Of: odoo/odoo#122451
This handles a series of issues regarding the conversion of e-mails for client compatibility, in particular regarding responsiveness, images and the Masonry snippet. task-3278001 task-3184107 opw-3185231 opw-3244705 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#124264 Forward-Port-Of: odoo/odoo#119325
Original PR description
This handles a series of issues regarding the conversion of e-mails for client compatibility, in particular regarding responsiveness, images and the Masonry snippet. task-3278001 task-3184107 opw-3185231 opw-3244705 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#124264 Forward-Port-Of: odoo/odoo#119325
Avatar didn't sync when changed due to miss reading the cache key. Part of task-3265211 Forward-Port-Of: odoo/odoo#124418
Original PR description
Avatar didn't sync when changed due to miss reading the cache key. Part of task-3265211 Forward-Port-Of: odoo/odoo#124418
--- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#124427
Original PR description
--- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#124427
…lback Task-3346388 Forward-Port-Of: odoo/odoo#123665
Original PR description
…lback Task-3346388 Forward-Port-Of: odoo/odoo#123665
When user change the move_type of account_move to 'entry'. And when user try to access 'partner_credit' field from the from view using debug mode. The error will be generated. Steps to Produce:- 1. Install 'account_accountant' and 'sales' module 2. Change move_type of account_move to 'entry' 3. Go to 'Edit View : Form' of Journal Entries in account_accountant using debug mode 4. Add field 'partner_credit' to the form view and click on save 5. Click on any Journal Entry Trace-back in
Original PR description
When user change the move_type of account_move to 'entry'. And when user try to access 'partner_credit' field from the from view using debug mode. The error will be generated. Steps to Produce:- 1.…
When user change the move_type of account_move to 'entry'. And when user try to access 'partner_credit' field from the from view using debug mode. The error will be generated.
Steps to Produce:-
1. Install 'account_accountant' and 'sales' module
2. Change move_type of account_move to 'entry'
3. Go to 'Edit View : Form' of Journal Entries in account_accountant using debug mode
4. Add field 'partner_credit' to the form view and click on save
5. Click on any Journal Entry
Trace-back in sentry -
```
KeyError: 1
File "odoo/api.py", line 958, in get
cache_value = field_cache[record._ids[0]]
CacheMiss: 'account.bank.statement.line(1,).partner_credit'
File "odoo/fields.py", line 1158, in __get__
value = env.cache.get(record, self)
File "odoo/api.py", line 965, in get
raise CacheMiss(record, field)
KeyError: 2
File "odoo/api.py", line 958, in get
cache_value = field_cache[record._ids[0]]
CacheMiss: 'account.move(2,).partner_credit'
File "odoo/fields.py", line 1158, in __get__
value = env.cache.get(record, self)
File "odoo/api.py", line 965, in get
raise CacheMiss(record, field)
TypeError: 'bool' object is not subscriptable
File "odoo/http.py", line 2116, in __call__
response = request._serve_db()
File "odoo/http.py", line 1698, in _serve_db
return service_model.retrying(self._serve_ir_http, self.env)
File "odoo/service/model.py", line 134, in retrying
result = func()
File "odoo/http.py", line 1725, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 1923, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "addons/website/models/ir_http.py", line 234, in _dispatch
response = super()._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 154, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 715, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/web/controllers/dataset.py", line 28, in call_kw
return self._call_kw(model, method, args, kwargs)
File "addons/web/controllers/dataset.py", line 24, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "odoo/api.py", line 461, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
File "odoo/api.py", line 448, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "odoo/models.py", line 3004, in read
return self._read_format(fnames=fields, load=load)
File "odoo/models.py", line 3191, in _read_format
vals[name] = convert(record[name], record, use_name_get)
File "odoo/models.py", line 5942, in __getitem__
return self._fields[key].__get__(self, type(self))
File "odoo/fields.py", line 1209, in __get__
self.compute_value(recs)
File "odoo/fields.py", line 1387, in compute_value
records._compute_field_value(self)
File "odoo/models.py", line 4312, in _compute_field_value
fields.determine(field.compute, self)
File "odoo/fields.py", line 102, in determine
return needle(records, *args)
File "odoo/fields.py", line 706, in _compute_related
record[self.name] = self._process_related(value[self.related_field.name])
File "odoo/models.py", line 5942, in __getitem__
return self._fields[key].__get__(self, type(self))
File "odoo/fields.py", line 1209, in __get__
self.compute_value(recs)
File "odoo/fields.py", line 1387, in compute_value
records._compute_field_value(self)
File "addons/mail/models/mail_thread.py", line 395, in _compute_field_value
return super()._compute_field_value(field)
File "odoo/models.py", line 4312, in _compute_field_value
fields.determine(field.compute, self)
File "odoo/fields.py", line 99, in determine
return needle(*args)
File "addons/sale/models/account_move.py", line 155, in _compute_partner_credit
move.tax_totals['amount_total'],
```
Applying these changes will resolve this issue.
Sentry-4222621594
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#123659## Current behaviour In the timesheet's grid view, if we set the timesheet's UOM to `Days/Half days` in the settings, the cells are toggle buttons that cycle between 0 -> 0.5 -> 1 -> 0 ... When we click on the magnifier glass on a cell, which should open a new view and show the analytic lines related to that day, a click on the cell goes through, editing the content of the cell. ## Expected behaviour When we click on the magnifier glass, the cell shouldn't be edited. ## Steps to reproduc
Original PR description
## Current behaviour In the timesheet's grid view, if we set the timesheet's UOM to `Days/Half days` in the settings, the cells are toggle buttons that cycle between 0 -> 0.5 -> 1 -> 0 ... When we…
## Current behaviour In the timesheet's grid view, if we set the timesheet's UOM to `Days/Half days` in the settings, the cells are toggle buttons that cycle between 0 -> 0.5 -> 1 -> 0 ... When we click on the magnifier glass on a cell, which should open a new view and show the analytic lines related to that day, a click on the cell goes through, editing the content of the cell. ## Expected behaviour When we click on the magnifier glass, the cell shouldn't be edited. ## Steps to reproduce - Install Timesheets - Timesheets App > Configuration > Settings > change the encoding method to `Days/Half days` - Go the Timesheet's app main grid view - Click on a magnifier glass of one of the cells (for example a cell that has 0 as value). - A new list view opens, but the value is 0.5, when you go back via the breadcrumbs, you can see the cell's value has changed to 0.5, should have stayed 0. ## Reason for the problem There are 2 `onClick` listeners, 1 on the cell component, another one the magnifier glass component, which is inside the cell component. So when we press the magnifier glass, it's `onClick` is triggered, then the `click` event *bubbles* up the components, and triggers the `onClick` of the cell component, which updates the content of the cell. ## Fix Use the target of the click event to know on what we clicked and trigger the `onChange` based on that. ## Affected versions - saas-16.2 - saas-16.3 - master --- opw-3325115 Forward-Port-Of: odoo/enterprise#41388
…readability task-3300756 Forward-Port-Of: odoo/enterprise#42146
Original PR description
…readability task-3300756 Forward-Port-Of: odoo/enterprise#42146
Before this commit, an employee with no Payroll rights that wanted to confirm a time off for an employee for which they're set as the time off approver, and if the time off type approbation is set to "Employee's Approver" only, the user would get an access error due to rights on work entries. This commit fixes that issue. task-3329557 Forward-Port-Of: odoo/enterprise#42208
Original PR description
Before this commit, an employee with no Payroll rights that wanted to confirm a time off for an employee for which they're set as the time off approver, and if the time off type approbation is set to "Employee's Approver" only, the user would get an access error due to rights on work entries. This commit fixes that issue. task-3329557 Forward-Port-Of: odoo/enterprise#42208
Before this commit, When selecting multiple URL-type documents the link button is enabled After this commit, The link button is only enabled when selecting a single URL-type document task:-3262263 Forward-Port-Of: odoo/enterprise#40111
Original PR description
Before this commit, When selecting multiple URL-type documents the link button is enabled After this commit, The link button is only enabled when selecting a single URL-type document task:-3262263 Forward-Port-Of: odoo/enterprise#40111
Some components in Studio instanciate the Record component and Many2X field widget component directly (that is, without field.js). Before the commits [1] and [2], the domain of those fields were retrieved via the RelationalModel. After those commits, the domain should be passed individually to each component. This commit adapts the components in Studio for the domains to be correctly passed. [1]: https://github.com/odoo/odoo/commit/2ecfed335d469 [2]: https://github.com/odoo/odoo/commit
Original PR description
Some components in Studio instanciate the Record component and Many2X field widget component directly (that is, without field.js). Before the commits [1] and [2], the domain of those fields were retrieved via the RelationalModel. After those commits, the domain should be passed individually to each component. This commit adapts the components in Studio for the domains to be correctly passed. [1]: https://github.com/odoo/odoo/commit/2ecfed335d469 [2]: https://github.com/odoo/odoo/commit/91111f33ef59df7550ee8b2f987fae528a307e0e should fix runbot-error-20813 Forward-Port-Of: odoo/enterprise#42210
*: documents_spreadsheet,website_helpdesk_knowledge Mirror community changes: - https://github.com/odoo/odoo/pull/121872 task-3337951 task-3355224 (milk post-merge fixes) part of task-3326263 Forward-Port-Of: odoo/enterprise#41851
Original PR description
*: documents_spreadsheet,website_helpdesk_knowledge Mirror community changes: - https://github.com/odoo/odoo/pull/121872 task-3337951 task-3355224 (milk post-merge fixes) part of task-3326263 Forward-Port-Of: odoo/enterprise#41851
The title is now optional for Behavior toolbars, and not used anymore for the template Beahvior (/clipboard). Task-3291771 Forward-Port-Of: odoo/enterprise#42213
Original PR description
The title is now optional for Behavior toolbars, and not used anymore for the template Beahvior (/clipboard). Task-3291771 Forward-Port-Of: odoo/enterprise#42213
The "Time Off Without Joined Document" warning was not checking for the leave's company, resulting in AccessError. Forward-Port-Of: odoo/enterprise#42162 Forward-Port-Of: odoo/enterprise#40854
Original PR description
The "Time Off Without Joined Document" warning was not checking for the leave's company, resulting in AccessError. Forward-Port-Of: odoo/enterprise#42162 Forward-Port-Of: odoo/enterprise#40854
- 390f9c8725855581bc39af7d2264982c288788be : Prior to this commit, the empty preview had no rounded corners, which broke the rounded corners of the form view. This commit fixes this issue. 👉 https://www.awesomescreenshot.com/image/39784922?key=1859ce67a0011d36f55c1eb9803a43c9 - 75d67158d9ffe33244c3bdea4ddcca11b8e937d7 : Prior to this commit, the `post-stats` part of the post view was broken since the font size was increased in Milk. This commit fixes and improves the layout to work i
Original PR description
- 390f9c8725855581bc39af7d2264982c288788be : Prior to this commit, the empty preview had no rounded corners, which broke the rounded corners of the form view. This commit fixes this issue. 👉 https://www.awesomescreenshot.com/image/39784922?key=1859ce67a0011d36f55c1eb9803a43c9 - 75d67158d9ffe33244c3bdea4ddcca11b8e937d7 : Prior to this commit, the `post-stats` part of the post view was broken since the font size was increased in Milk. This commit fixes and improves the layout to work in all cases, depending on the language used and the amounts displayed. Also, this commit fixes a missing border when the post contains attachments. 👉 https://www.awesomescreenshot.com/image/40060030?key=50831c6f8c68c90adab18b9a58803686 task-3335076 Part of task-3326263 Forward-Port-Of: odoo/enterprise#41299
With this commit, we make sure that the already selected lines are not removed from the wiazrd when selecting a reconciliation model to suggest a counterpart entry. Steps: - Create a reconciliation model X to suggest counterpart entry - Another reconciliation model to match inv/bills - Create a VB for 1000$ - Create a statement line for -1200$ - Open reconciliation widget, the payable line from VB should be selected, thanks to the perfect match reco model - Select model X -> The payable
Original PR description
With this commit, we make sure that the already selected lines are not removed from the wiazrd when selecting a reconciliation model to suggest a counterpart entry. Steps: - Create a reconciliation model X to suggest counterpart entry - Another reconciliation model to match inv/bills - Create a VB for 1000$ - Create a statement line for -1200$ - Open reconciliation widget, the payable line from VB should be selected, thanks to the perfect match reco model - Select model X -> The payable line has been removed from widget opw-3290904 Forward-Port-Of: odoo/enterprise#41417