Wednesday, May 24, 2023
46 changes · master
Enhancements to existing features
Stock valuation records can now be searched directly by their reference, such as a picking name. This makes it easier for users to find relevant valuation entries without creating custom filters.
Original PR description
before this commit, reference field is not added in the search view of the stock valuation, which contains the information like picking name, and users need to use custom filters to filter using this field. after this commit, the reference field will be added to the search view, and end users can easily search using this field without using custom filters.  --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Payment notifications from Adyen and Stripe now return clearer success or error responses. This helps payment providers detect failed notifications correctly instead of treating every response as successful, improving reliability for payment processing.
Original PR description
to return the response with correct status code as json-rpc returned status code 200 even if there was an error task-2835711
The replenishment wizard now gives users clearer planning information, including forecasted quantities by warehouse and easier route selection. It also improves the form layout, scheduled date display, vendor visibility, and prevents inappropriate dropship route choices, making replenishment decisions faster and less error-prone.
Original PR description
With this commit: ======================== - Added a new field `forecasted_qty` in replenishment to display the forecasted qty based on a selected warehouse in the wizard - Changed the `route_ids`(m2m) field to `route_id`(m2o) so that we can apply a specific route for the replenishment instead of the product's default routes - Reduced the width of all the fields - Remove the seconds from the `scheduled date` and make the `unit` field not editable. - Can see vendor information with info icon field when buy is selected - Hide the Dropship route from the Route TaskId: 2579425
Helpdesk ticket screens are easier to navigate, with less clutter and clearer links to related invoices and tickets. Email alias handling for helpdesk teams is also improved so teams keep or regain a usable alias instead of showing an inactive one.
Original PR description
- Impacted modules: - helpdesk - helpdesk_sale_timesheet - helpdesk_stock - helpdesk_timesheet - Detailed changes: - helpdesk.ticket form view: - tickets stat button: The helpdesk tickets stat button…
- Impacted modules:
- helpdesk
- helpdesk_sale_timesheet
- helpdesk_stock
- helpdesk_timesheet
- Detailed changes:
- helpdesk.ticket form view:
- tickets stat button: The helpdesk tickets stat button doesn't
take into account anymore tickets from customers that share
the same email domain address as the customer set on the
current ticket.
- invoices stat button: add an 'invoices' stat button
representing the invoices linked to the SO of the SOL set on
the ticket.
- notebook: move the fields company_id, product_id, lot_id and
analytic_account_id in a new notebook page "Extra info", only
visible if at least one of those fields is visible.
- helpdesk.team configuration view:
- helpdesk.team > email alias: if the user leaves the alias
field empty, set the existing alias of the team back or
generate a new alias for the team on save instead of
displaying 'inactive alias' (and instead of disable the option
use_alias, hence reverting part of https://github.com/odoo/enterprise/pull/37526 ).
task-3101459VAT report line pages in the Argentinian localization now show the related move name in navigation breadcrumbs instead of technical record IDs. This makes the interface easier to understand when users open or switch between VAT report entries.
Original PR description
before this commit, rec_name was not defined for the model and the breadcrump was showing like account.ar.vat.line(1), account.ar.vat.line(2) etc, which is not user friendly. after this commit, move_name will be shown in breadcrump instead of account.ar.vat.line(1) 
Resolved issues and error corrections
The Peppol accounting app is no longer easily installable in normal use for now. This limits availability to testing environments while the team decides when it should be broadly accessible.
Original PR description
We do not want to make account_peppol easily installable at the moment. This commit restricts installation to testing. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Features or functions removed from Odoo
Odoo removes Jinja2 as a standard server dependency because it is only needed for specific IoT hardware modules and developer scaffolding. This reduces unnecessary production dependencies while keeping the functionality available where it is still needed.
Original PR description
**Description of the issue/feature this PR addresses:** Jinja2 is not really used anymore, other than two cases: 1) Used by some `hw_*` modules. _Required only on the iotbox, not on the server._ _On the iotbox, it's installed by the `init_posbox_image.sh` script_ 2) The `odoo scaffold` command. _Required only for development purposes, not on production environments._ Thus, it's kept as an optional dependency only for running the `odoo scaffold` command Bonus: Also removed the unused `odoo.tools.rendering_tools.relativedelta_proxy` method, as it isn't used nor referenced anywhere. It's a leftover from jinja mail templating AFAICS --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Code cleanup and technical improvements
This update simplifies the Point of Sale codebase by removing unused screens and small one-off interface components. It should make future maintenance and testing easier without changing the normal cashier or restaurant sales experience.
Original PR description
This PR cleans up miscellaneous things: - some utility components that were used once or twice have been inlined - the ad-hoc mecanism for shared state in pos_sale has been moved into the pos store - some dead code has been removed (MobileOrderManagementScreen) enterprise: https://github.com/odoo/enterprise/pull/41336
Miscellaneous changes
Steps to reproduce: - Open Odoo on small screen - Go to "Project" app - Select project > Traceback The Kanban progress bar's refactoring [1] didn't completely took into account the fact that, on smaller screen, the "folded" columns aren't actually folded (like on dekstop-like screen sizes) but instead their records aren't loaded by default. As a result, in one case the progress bar is shown (small screen) and in the other hidden. As the progressbar's information is memoized in `ge
Original PR description
Steps to reproduce: - Open Odoo on small screen - Go to "Project" app - Select project > Traceback The Kanban progress bar's refactoring [1] didn't completely took into account the fact that, on smaller screen, the "folded" columns aren't actually folded (like on dekstop-like screen sizes) but instead their records aren't loaded by default. As a result, in one case the progress bar is shown (small screen) and in the other hidden. As the progressbar's information is memoized in `getGroupInfo`, this getter should have been called wherever those information are read. This commit fixes the issue by properly calling the `getGroupInfo` getter instead of using the "private" `_groupsInfo` object (which may not yet have been populated, due to the memoization). task-3336233 [1] https://github.com/odoo/odoo/commit/58ca40b03215ef4c6c575267494dc8bccc30a033 Forward-Port-Of: odoo/odoo#122065
This fix prevents an error during installation or upgrade of manufacturing subcontracting when the standard Buy route has been deleted. Businesses can continue configuring inventory and subcontracting workflows without being blocked by a system traceback.
Original PR description
when the user deletes the route of the `stock` module that is present in the data file of `Purchase Stock`. while installing or upgrading the `MRP Subcontracting` module the user gets an error as the…
when the user deletes the route of the `stock` module that is present in the data file of `Purchase Stock`. while installing or upgrading the `MRP Subcontracting` module the user gets an error as the stock route referenced from the `Purchase Stock` module has been deleted.
Steps to reproduce :
1. Install the Inventory module.
2. Install the purchase and MRP module.
3. Open the Inventory app.
4. Go to configuration > settings.
5. Enable Multi-steps routes and save them.
6. Open configuration > Routes.
7. Delete the `Buy` route.
8. Install the `MRP Subcontracting` module.
9. Traceback generated.
Traceback in sentry :
```
UserError: Can't find any generic route Buy.
File "odoo/tools/convert.py", line 550, in _tag_root
f(rec)
File "odoo/tools/convert.py", line 279, in _tag_function
_eval_xml(self, rec, env)
File "odoo/tools/convert.py", line 204, in _eval_xml
return odoo.api.call_kw(model, method_name, 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 "addons/mrp_subcontracting/models/stock_warehouse.py", line 37, in write
res = super().write(vals)
File "addons/mrp/models/stock_warehouse.py", line 282, in write
return super(StockWarehouse, self).write(vals)
File "addons/stock/models/stock_warehouse.py", line 197, in write
warehouse.write(picking_type_vals)
File "addons/mrp_subcontracting/models/stock_warehouse.py", line 37, in write
res = super().write(vals)
File "addons/mrp/models/stock_warehouse.py", line 282, in write
return super(StockWarehouse, self).write(vals)
File "addons/stock/models/stock_warehouse.py", line 206, in write
global_rules = warehouse._get_global_route_rules_values()
File "addons/mrp_subcontracting/models/stock_warehouse.py", line 90, in _get_global_route_rules_values
rules = super(StockWarehouse, self)._get_global_route_rules_values()
File "addons/purchase_stock/models/stock.py", line 35, in _get_global_route_rules_values
'route_id': self._find_global_route('purchase_stock.route_warehouse0_buy', _('Buy')).id,
File "addons/stock/models/stock_warehouse.py", line 379, in _find_global_route
raise UserError(_('Can\'t find any generic route %s.') % (route_name))
ParseError: while parsing /home/odoo/src/odoo/saas-16.2/addons/mrp_subcontracting/data/mrp_subcontracting_data.xml:10, somewhere inside
<function model="stock.warehouse" name="write">
<value model="stock.warehouse" eval="obj().env['stock.warehouse'].search([]).ids"/>
<value eval="{'subcontracting_to_resupply': True}"/>
</function>
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 "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 32, in call_button
action = 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/addons/base/models/res_config.py", line 614, in execute
installation_status = self._install_modules(to_install)
File "odoo/addons/base/models/res_config.py", line 32, in _install_modules
result = to_install_modules.button_immediate_install()
File "home/odoo/src/custom/trial/saas_trial/models/module.py", line 80, in button_immediate_install
return super(IrModuleModule, self).button_immediate_install()
File "<decorator-gen-73>", line 2, in button_immediate_install
File "odoo/addons/base/models/ir_module.py", line 76, in check_and_log
return method(self, *args, **kwargs)
File "odoo/addons/base/models/ir_module.py", line 472, in button_immediate_install
return self._button_immediate_function(type(self).button_install)
File "home/odoo/src/custom/trial/saas_trial/models/module.py", line 52, in _button_immediate_function
res = super(IrModuleModule, self)._button_immediate_function(function)
File "odoo/addons/base/models/ir_module.py", line 596, in _button_immediate_function
registry = modules.registry.Registry.new(self._cr.dbname, update_module=True)
File "<decorator-gen-14>", line 2, in new
File "odoo/tools/func.py", line 87, in locked
return func(inst, *args, **kwargs)
File "odoo/modules/registry.py", line 90, in new
odoo.modules.load_modules(registry, force_demo, status, update_module)
File "odoo/modules/loading.py", line 481, in load_modules
processed_modules += load_marked_modules(env, graph,
File "odoo/modules/loading.py", line 365, in load_marked_modules
loaded, processed = load_module_graph(
File "odoo/modules/loading.py", line 226, in load_module_graph
load_data(env, idref, mode, kind='data', package=package)
File "odoo/modules/loading.py", line 71, in load_data
tools.convert_file(env, package.name, filename, idref, mode, noupdate, kind)
File "odoo/tools/convert.py", line 613, in convert_file
convert_xml_import(env, module, fp, idref, mode, noupdate)
File "odoo/tools/convert.py", line 679, in convert_xml_import
obj.parse(doc.getroot())
File "odoo/tools/convert.py", line 599, in parse
self._tag_root(de)
File "odoo/tools/convert.py", line 550, in _tag_root
f(rec)
File "odoo/tools/convert.py", line 563, in _tag_root
raise ParseError('while parsing %s:%s, somewhere inside\n%s' % (
```
Applying these changes will resolve this issue.
sentry - 4128085959This fixes when Odoo starts its real-time notification connection on the frontend. By restoring lazy loading, the system avoids starting live chat-related background work unless it is actually needed, helping reduce unnecessary resource use.
Original PR description
Since [1], the notifications of type `simple_notification` are handled by a service in the bus module. Before [2] those notifications were handled by the messaging handler which was only loaded in the backend. This commit restores the previous behavior as the simple notification service starts the bus service which result in the websocket worker being loaded why it should be done lazily (i.e. only when the livechat is used). [1]: https://github.com/odoo/odoo/pull/119243 [2]: https://github.com/odoo/odoo/pull/110188
Invoice uploads that include VAT details no longer fail because a required VAT validation component is missing. This helps businesses import supplier invoices more reliably and avoids blocked processing caused by a hidden setup dependency.
Original PR description
AttributeError: "res.partner" object has no attribute '_run_vat_test' log error is generated, and nothing is imported when users upload invoice file that have a VAT field. This is because the…
AttributeError: "res.partner" object has no attribute '_run_vat_test' log error
is generated, and nothing is imported when users upload invoice file that have a
VAT field. This is because the "_run_vat_test" attribute is defined in the
"base_vat" module and is not installed due to countries not having VAT.
Traceback on sentry:
```
AttributeError: 'res.partner' object has no attribute '_run_vat_test'
File "addons/account/models/account_move.py", line 2898, in _extend_with_attachments
success = decoder(invoice, file_data, new)
File "addons/account_edi_ubl_cii/models/account_edi_common.py", line 294, in _import_invoice_ubl_cii
logs = self._import_fill_invoice_form(invoice, tree, qty_factor)
File "addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py", line 228, in _import_fill_invoice_form
self._import_retrieve_and_fill_partner(invoice, name=name, phone=phone, mail=mail, vat=vat)
File "addons/account_edi_ubl_cii/models/account_edi_common.py", line 352, in _import_retrieve_and_fill_partner
if vat and self.env['res.partner']._run_vat_test(vat, country_code, invoice.partner_id.is_company):
```
This commit add the 'base_vat' in depends to prevent above error.
sentry-4074943505Manufacturing backorders no longer create hidden quality checks for work orders that were already completed and cancelled. This prevents users from being blocked by incorrect quality-check warnings when finishing valid backorders.
Original PR description
To reproduce the bug this commit fixes do the following: 1) Create a bom with 2 operations. 2) Create a quality point for each operation. 3) Create an MO based on the bom with quantity to produce 2.…
To reproduce the bug this commit fixes do the following: 1) Create a bom with 2 operations. 2) Create a quality point for each operation. 3) Create an MO based on the bom with quantity to produce 2. 4) For the first workorder, set quantity producing to 2 and pass the check, mark done. 5) For the second workorder, set the quantity producing to 1 and pass the check, mark done. 6) Go back to the MO, quantity to produce should be 1 / 2, click produce. 7) A backorder pop up appears, create backorder. 8) The fully finished workorder should appear cancelled in the backorder. 9) Process the second workorder and pass the check. 10) Go back to backorder and click produce, a UserError shows up asking to process all checks Expected: Should be able to produce the backorder since the workorder was already processed and marked as cancelled Explanation: The bug was that there were hidden quality checks created for the cancelled workorder when the backorder workorders were confirmed.
The appraisal publish action now consistently warns any user who is allowed to publish an employee appraisal, including additional managers assigned on the appraisal. This helps prevent accidental publication and makes appraisal access behavior more consistent across related appraisal screens.
Original PR description
An employee in the manager_ids fields was not considered a manager by the computation and was not getting the warning when toggling on publication for the employee appraisal. This is now corrected and the computation has been refactored to correctly compute the status like it was written in previous commit message. task 3217812
This change keeps the Point of Sale IoT interface aligned with recent updates in the main Odoo Point of Sale code. It helps ensure related screens and automated checks continue to work correctly after the underlying layout changed.
Original PR description
community: https://github.com/odoo/odoo/pull/122035
## Current behaviour If we add a blockquote in the `website_description` of a product on the e-shop, we cannot checkout the product. Silent HTTP 400 error code, due to an exception raised by https://github.com/odoo/odoo/blob/bf772181933ce5334da35c8368455963b2478399/odoo/fields.py#L1987-L1993 ## Expected behaviour You should be able to checkout products even if they have blockquote in their `website_description`. ## Steps to reproduce - Install eCommerce, sale_quotation_builder (issue i
Original PR description
## Current behaviour If we add a blockquote in the `website_description` of a product on the e-shop, we cannot checkout the product. Silent HTTP 400 error code, due to an exception raised by…
## Current behaviour If we add a blockquote in the `website_description` of a product on the e-shop, we cannot checkout the product. Silent HTTP 400 error code, due to an exception raised by https://github.com/odoo/odoo/blob/bf772181933ce5334da35c8368455963b2478399/odoo/fields.py#L1987-L1993 ## Expected behaviour You should be able to checkout products even if they have blockquote in their `website_description`. ## Steps to reproduce - Install eCommerce, sale_quotation_builder (issue is present only after installing sale_quotation_builder) - On a product, with the website editor, add a `blockquote` to the description of the product > Save - In a private browser window, as public user, visit the product on the e-shop and try to checkout with it. - Observe there is no visible error, and we do not proceed in the checkout process. ## Reason for the problem The exception mentioned above is triggered when there is a difference between the html content that is saved in the DB and after sanitization, meaning that someone with escalated privilege saved the HTML content by overriding the sanitization with `sanitize_overridable`. In our use case the only diff is the presence of the attribute `data-o-mail-quote-node` which is removed after the sanitization. ## Fix This issue can be resolved two ways: 1) Adding `data-o-mail-quote-node` to the list of save attributes, meaning it will not be removed during the sanitization process. Since this is an attribute that we add on `<blockquote>` nodes, it can be considered safe, just like `data-o-mail-quote`. 2) Remove the attribute sanitization of the `website_description`, just like it is done in the website_sale module. Since the `website_description` and `quotation_description` are both computed from one-another, they should have the same sanitization level. I am implementing both solutions, 1) because adding the attribute to the safe list seems safe in general, and may prevent future issues of this sort. 2) because it is the root cause of the issue, since the bug is present only after installation of the `sale_quotation_builder` module. ## Affected versions - 16.0 - saas-16.1 - saas-16.2 - master --- opw-3297237 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#120764
Before this commit, trying to access "My Time Off" was not possible if connected on a company while some leaves were created from another company. This commit restricts that view to the leave created from the companies the user is logged into. Forward-Port-Of: odoo/odoo#122039
Original PR description
Before this commit, trying to access "My Time Off" was not possible if connected on a company while some leaves were created from another company. This commit restricts that view to the leave created from the companies the user is logged into. Forward-Port-Of: odoo/odoo#122039
To reproduce the issue: (Need `stock_barcode` and a real barcode scanner) 1. Create two products P01 and P02, each one with a barcode 2. Barcode > Operations > Receipts, Create 3. Scan P01 4. Scan P02 5. Click on the `+1` button on the line of P01 6. Scan P02 Error: Both lines are incremented. Scanning P01 should not impact the quantity of P01 Because of step 5, the focus is still on that button when scanning again P02 (step 6). Moreover, the scanner ends the barcode transmission
Original PR description
To reproduce the issue: (Need `stock_barcode` and a real barcode scanner) 1. Create two products P01 and P02, each one with a barcode 2. Barcode > Operations > Receipts, Create 3. Scan P01 4. Scan P02 5. Click on the `+1` button on the line of P01 6. Scan P02 Error: Both lines are incremented. Scanning P01 should not impact the quantity of P01 Because of step 5, the focus is still on that button when scanning again P02 (step 6). Moreover, the scanner ends the barcode transmission of P02 with an `enter` -> it will generate an event on the `+1` button, which explains why the quantity of P01 is also incremented. OPW-3232437 Forward-Port-Of: odoo/odoo#122125
In Knowledge, the scrollParent for the `Y` axis of an embedded ungrouped Kanban view is the article body, which contains the draggable `container` (which is itself contained in the scrollParent for the `X` axis). This commit introduce 2 fixes related to the `draggable_hook_builder`: - In `draggable_hook_builder`, `updateRects` was modifying values of the `containerRect` from values of the `scrollParent`. Then, the `containerRect` was used in `handleEdgeScrolling` to compute a scroll
Original PR description
In Knowledge, the scrollParent for the `Y` axis of an embedded ungrouped Kanban view is the article body, which contains the draggable `container` (which is itself contained in the scrollParent for…
In Knowledge, the scrollParent for the `Y` axis of an embedded ungrouped Kanban view is the article body, which contains the draggable `container` (which is itself contained in the scrollParent for the `X` axis). This commit introduce 2 fixes related to the `draggable_hook_builder`: - In `draggable_hook_builder`, `updateRects` was modifying values of the `containerRect` from values of the `scrollParent`. Then, the `containerRect` was used in `handleEdgeScrolling` to compute a scroll value to apply on the `scrollParent`, and when updating the dragged element position, to compute the boundaries for the dragged element. This commit stores values for `scrollParent` in `scrollParentRect` alongside the modified `containerRect`. `scrollParentRect` will be used to compute the scroll value based only on the dimensions of the scrollParent, and the modified `containerRect` will be used to compute the boundaries. - The `scrollParent` in the `X` axis can be different from the `scrollParent` in the `Y` axis. This commit stores both of them individually so that one is not neglected when higher in the DOM than the other. Task-3291771 Forward-Port-Of: odoo/odoo#122127 Forward-Port-Of: odoo/odoo#121089
Before this patch, the naive dsn parser `_dsn_to_dict` would choke on `application_name` containing spaces or the equal sign. --- I confirm I have signed the CLAFOUTIS and read the PIERRE guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#122010
Original PR description
Before this patch, the naive dsn parser `_dsn_to_dict` would choke on `application_name` containing spaces or the equal sign. --- I confirm I have signed the CLAFOUTIS and read the PIERRE guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#122010
Impacted versions: - saas-16.3 Changes: This commit improve below features: - Fix unit test for FPS QR code - Add additional data field into qr code vals - Override the additional data field in l10n_hk to support the new field - Update l10n_hk unit tests - Change FPS Identifier label X-original-commit: odoo/odoo@9113a17 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#121765
Original PR description
Impacted versions: - saas-16.3 Changes: This commit improve below features: - Fix unit test for FPS QR code - Add additional data field into qr code vals - Override the additional data field in l10n_hk to support the new field - Update l10n_hk unit tests - Change FPS Identifier label X-original-commit: odoo/odoo@9113a17 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#121765
Steps to reproduce: - Go to a website page > Add a 'Form' block > Set an input "Placeholder" value. - Go to the page (in 'edit_translations' mode) > The translation of the input "Placeholder" attribute doesn't mark the input as translated and even after saving the translation, the input is still marked as "to_translate". The goal of this commit is to fix this issue by extending the same behaviour on the translated `<select/>` options (using `.oe_translated` class) and setting the righ
Original PR description
Steps to reproduce: - Go to a website page > Add a 'Form' block > Set an input "Placeholder" value. - Go to the page (in 'edit_translations' mode) > The translation of the input "Placeholder" attribute doesn't mark the input as translated and even after saving the translation, the input is still marked as "to_translate". The goal of this commit is to fix this issue by extending the same behaviour on the translated `<select/>` options (using `.oe_translated` class) and setting the right translation state on the input from the linked attribute translation `<span/>`. task-3323245 Forward-Port-Of: odoo/odoo#121843 Forward-Port-Of: odoo/odoo#121128
Create an invoice Send & Print Go to Journal items Select created invoice line Issue: No preview is shown This occurs because the attachment was created with `res_field` 'invoice_pdf_report_file' When we search without `res_field`, the method `_search` of `ir.attachment` will add `('res_field', '=', False)` to the domain So we don't find the generated report opw-3301344 opw-3271602 Description of the issue/feature this PR addresses: Current behavior before PR: Desired beh
Original PR description
Create an invoice
Send & Print
Go to Journal items
Select created invoice line
Issue: No preview is shown
This occurs because the attachment was created with `res_field`
'invoice_pdf_report_file'
When we search without `res_field`, the method `_search` of
`ir.attachment` will add `('res_field', '=', False)` to the domain
So we don't find the generated report
opw-3301344
opw-3271602
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#120949### Before this PR: The only way to neutralize the database is running cli command "neutralize". In on-premise installation there is no way to duplicate a database and neutralize it ### After this PR: There is a new checkbox "neutralize database" in Duplicate database and Restore database dialog that neutralize the database after duplication/restore. I also moved the neutralization code to the external module so it can be called also outside the cli . --- I confirm I have signed
Original PR description
### Before this PR: The only way to neutralize the database is running cli command "neutralize". In on-premise installation there is no way to duplicate a database and neutralize it ### After this PR: There is a new checkbox "neutralize database" in Duplicate database and Restore database dialog that neutralize the database after duplication/restore. I also moved the neutralization code to the external module so it can be called also outside the cli . --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#121569
Numbers should be alinged on the right in rtl langauge same as ltr langs Steps to reproduce the isse : 1- Change the language to arabic 2- To to the list of invoices in accounting and you can see that the numbers are aligned to the left The origin of the problem is that rtlcss reverse the alignment from right to left opw-3295573 Forward-Port-Of: odoo/odoo#121689
Original PR description
Numbers should be alinged on the right in rtl langauge same as ltr langs Steps to reproduce the isse : 1- Change the language to arabic 2- To to the list of invoices in accounting and you can see that the numbers are aligned to the left The origin of the problem is that rtlcss reverse the alignment from right to left opw-3295573 Forward-Port-Of: odoo/odoo#121689
The value of custom ptavs is store on the sale order line. Currently, they are ordered by ptav id but they are ordered by the ptav sequence everywhere in Odoo. Now, on the sale order line, custom ptav are ordered by ptav sequence. opw-3234669 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#122161
Original PR description
The value of custom ptavs is store on the sale order line. Currently, they are ordered by ptav id but they are ordered by the ptav sequence everywhere in Odoo. Now, on the sale order line, custom ptav are ordered by ptav sequence. opw-3234669 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#122161
Turn the call to filtered after the search on `purchase.order.line` into a call to _search. This allows to remove filtered by adding an additional leaf in the search domain. Add read calls to fetch fields from db and store them in cache on recordset batches. #### speedup Customer database with 280 000 `purchase.order.line` and 1.2M `stock.move` Timing of `_compute_on_time_rate` for partners with increasing number of related `purchase.order.line` | Number of POL | Before PR | After
Original PR description
Turn the call to filtered after the search on `purchase.order.line` into a call to _search. This allows to remove filtered by adding an additional leaf in the search domain. Add read calls to fetch fields from db and store them in cache on recordset batches. #### speedup Customer database with 280 000 `purchase.order.line` and 1.2M `stock.move` Timing of `_compute_on_time_rate` for partners with increasing number of related `purchase.order.line` | Number of POL | Before PR | After PR (mean) | After PR (std)<sup>1</sup> | |:----------------:|:-----------:|:--------:|:----------------------:| | 20 | 67ms | 76ms | 32ms | | 150 | 61ms | 63ms | 1ms | | 1013 | 62ms | 63ms| 1ms| | 7080 | 540ms | 495ms | 12ms| | 20403 | 893ms | 596ms | 10ms | | 136555 | 6.3ss | 3.24s| 156ms | 1: std explaning the timing difference for the 20 POL case --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#120658
To reproduce ============ create many Expenses records, go to expenses in List View scrolling not working Problem ======= some style classes are not applied on the correct element, which leads to this behavior Solution ======== apply the classes on the correct element opw-3300041 Forward-Port-Of: odoo/odoo#122060 Forward-Port-Of: odoo/odoo#120915
Original PR description
To reproduce ============ create many Expenses records, go to expenses in List View scrolling not working Problem ======= some style classes are not applied on the correct element, which leads to this behavior Solution ======== apply the classes on the correct element opw-3300041 Forward-Port-Of: odoo/odoo#122060 Forward-Port-Of: odoo/odoo#120915
…tity Use case: Create an import file for a picking with stock.move.line directly in it and add some reserved quantity on the stock.move.line. The import of stock.move.line is not possible directly via a stock.move.line menu but it still possible on a picking or mrp.production import. However the create does not expect that and never reserve the quants. So it result with quant <-> sml inconcistencies in the data and the error can not reserve more than you have in stock. opw-3277938 For
Original PR description
…tity Use case: Create an import file for a picking with stock.move.line directly in it and add some reserved quantity on the stock.move.line. The import of stock.move.line is not possible directly via a stock.move.line menu but it still possible on a picking or mrp.production import. However the create does not expect that and never reserve the quants. So it result with quant <-> sml inconcistencies in the data and the error can not reserve more than you have in stock. opw-3277938 Forward-Port-Of: odoo/odoo#121703 Forward-Port-Of: odoo/odoo#119201
…calizations 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#119994
Original PR description
…calizations 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#119994
Markup usage has been enforced in the mail module since [1]. Since the `chatbot_restart` method doesn't make use of it, the content is escaped and the whole html structure is printed to the DOM. This PR fixes this issue. Forward-Port-Of: odoo/odoo#122132
Original PR description
Markup usage has been enforced in the mail module since [1]. Since the `chatbot_restart` method doesn't make use of it, the content is escaped and the whole html structure is printed to the DOM. This PR fixes this issue. Forward-Port-Of: odoo/odoo#122132
In Send and Print wizard (`account_move_send`): 1. Choose a company, eligible for ubl 2. Create two invoices for different partners: one that can receive ubl and one that cannot 3. Select both invoices in the list view and try to send them A traceback occurs because one of the partners has `ubl_cii_format` and the other one doesn't. So we try to get `code_to_label[False]` and it breaks. The ubl xml file will be generated only for the valid invoice anyway, so this fix should not cause any s
Original PR description
In Send and Print wizard (`account_move_send`): 1. Choose a company, eligible for ubl 2. Create two invoices for different partners: one that can receive ubl and one that cannot 3. Select both invoices in the list view and try to send them A traceback occurs because one of the partners has `ubl_cii_format` and the other one doesn't. So we try to get `code_to_label[False]` and it breaks. The ubl xml file will be generated only for the valid invoice anyway, so this fix should not cause any side effects. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#122084
This PR resolves 2 bugs. The first one is that, in a PoS without pos_restaurant installed, if we delete the last order of the list, we get a traceback. This is resolved by adding an empty order if there is no order left in the order list. task-id: task-id: 3291831 The second bug is that, with pos_restaurant installed, when going to a retail PoS, if we createan order with some products, then create a new order from the TicketScreen, add some products, go the the TicketScreen and delete the
Original PR description
This PR resolves 2 bugs. The first one is that, in a PoS without pos_restaurant installed, if we delete the last order of the list, we get a traceback. This is resolved by adding an empty order if…
This PR resolves 2 bugs. The first one is that, in a PoS without pos_restaurant installed, if we delete the last order of the list, we get a traceback. This is resolved by adding an empty order if there is no order left in the order list. task-id: task-id: 3291831 The second bug is that, with pos_restaurant installed, when going to a retail PoS, if we createan order with some products, then create a new order from the TicketScreen, add some products, go the the TicketScreen and delete the current order and then click back, we have in the ProductScreen the order that is supposed to be deleted. This order doesn't show up in the ticket screen anymore. This comes from the fact that the _selectNextOrder function is not correctly implemented, leading to the next order not being chosen because we do not have a table (we are in classic PoS). This fix resolves this problem by changing the _selectNextOrder function and the newly added addOrderIfEmpty function in models.js. task-id: 3291821 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#122130 Forward-Port-Of: odoo/odoo#120097
Steps to reproduce: 1. Create a bill from the document or from the vendor bills page. 2. Fill in the PO in auto-complete, confirm, and check the bills list. 3. The source document is not populated in the list. What is the current behavior that you observe? The source document is in the log but not in the list view. What would be your expected behavior in this case? The PO should show up in the source document in the vendor bills list OPW-3284992 --- I confirm I have signed
Original PR description
Steps to reproduce: 1. Create a bill from the document or from the vendor bills page. 2. Fill in the PO in auto-complete, confirm, and check the bills list. 3. The source document is not populated in the list. What is the current behavior that you observe? The source document is in the log but not in the list view. What would be your expected behavior in this case? The PO should show up in the source document in the vendor bills list OPW-3284992 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#121562
If applied, this commit will solve the issue of missing product issue while installing the following modules: loyalty_delivery, pos_loyalty, sale_loyalty, website_sale_loyalty Steps to produce: - Install loyalty module. - Go to 'Products' or 'Product Variants'. - Delete the product 'Gift Card'. - Now install the 'sale_loyalty' module. This commit will raise an userError while deleting the loyalty products. sentry - 4112536971 see - https://tinyurl.com/2bm5qw3f Forward-Port-Of: odo
Original PR description
If applied, this commit will solve the issue of missing product issue while installing the following modules: loyalty_delivery, pos_loyalty, sale_loyalty, website_sale_loyalty Steps to produce: - Install loyalty module. - Go to 'Products' or 'Product Variants'. - Delete the product 'Gift Card'. - Now install the 'sale_loyalty' module. This commit will raise an userError while deleting the loyalty products. sentry - 4112536971 see - https://tinyurl.com/2bm5qw3f Forward-Port-Of: odoo/odoo#121189 Forward-Port-Of: odoo/odoo#119926
Before / After (white) <img width="341" alt="before-white" src="https://github.com/odoo/odoo/assets/6569390/77523c25-834b-456a-90f9-2841e76d4e84"> <img width="338" alt="after-white" src="https://github.com/odoo/odoo/assets/6569390/d536ea03-da11-4687-bc36-0a82f1350695"> Before / After (dark) <img width="345" alt="before-dark" src="https://github.com/odoo/odoo/assets/6569390/2ed1a8e5-266e-43a3-8e85-bae31bb35f2b"> <img width="345" alt="after-dark" src="https://github.com/odoo/odoo/assets/65693
Original PR description
Before / After (white) <img width="341" alt="before-white" src="https://github.com/odoo/odoo/assets/6569390/77523c25-834b-456a-90f9-2841e76d4e84"> <img width="338" alt="after-white" src="https://github.com/odoo/odoo/assets/6569390/d536ea03-da11-4687-bc36-0a82f1350695"> Before / After (dark) <img width="345" alt="before-dark" src="https://github.com/odoo/odoo/assets/6569390/2ed1a8e5-266e-43a3-8e85-bae31bb35f2b"> <img width="345" alt="after-dark" src="https://github.com/odoo/odoo/assets/6569390/f3459658-0446-43c7-bc61-4a58e8eb7243"> Forward-Port-Of: odoo/odoo#122256
Steps to reproduce: - Install `Events` module - Create a new event and set it to `Autoconfirmation` - Create a new attendee and confirm it Issue: Mail that confirm registration is not sent to attendee. Cause: When computing the `schedule_date`, it takes the value of the `registration_id.create_date` WITH the microseconds. When creating a new attendee, at some point we run the mail scheduler that compare if the `schedule_date <= now`. `schedule_date` and `
Original PR description
Steps to reproduce: - Install `Events` module - Create a new event and set it to `Autoconfirmation` - Create a new attendee and confirm it Issue: Mail that confirm registration is not sent to attendee. Cause: When computing the `schedule_date`, it takes the value of the `registration_id.create_date` WITH the microseconds. When creating a new attendee, at some point we run the mail scheduler that compare if the `schedule_date <= now`. `schedule_date` and `now` have same value except for the microseconds (set on `schedule_date` but not on `now`). Therefore, `schedule_date > now` and the mail is not sent. Solution: Remove microseconds from the schedule_date. opw-3079389 Forward-Port-Of: odoo/odoo#120917
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#122220
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#122220
If applied, this commit will solve the min-max issues for efaktur. - invalid literal for int() with base 10: when we enter all characters string in the min or max it will raise an error like this. - Error is also raised when the min or max is blank and try to save the record. So, I have updated the value as 0 if the min value or max value not generated. see - https://tinyurl.com/2lx9j2kr Sentry - 3936020226 Forward-Port-Of: odoo/odoo#112850
Original PR description
If applied, this commit will solve the min-max issues for efaktur. - invalid literal for int() with base 10: when we enter all characters string in the min or max it will raise an error like this. - Error is also raised when the min or max is blank and try to save the record. So, I have updated the value as 0 if the min value or max value not generated. see - https://tinyurl.com/2lx9j2kr Sentry - 3936020226 Forward-Port-Of: odoo/odoo#112850
1. Timesheet - missing space before play/pause icon in task's … - Steps to reproduce:- - Installed timesheet_grid module - Open the task kanban view - Start the timer - Missing space between the date and play icon. - Issue: This issue when the start date is displayed in task's kanban. There is no space between start date and play icon. - In this commit, we inserted the left margin before the play and pause icon. 2. Planning: mis
Original PR description
1. Timesheet - missing space before play/pause icon in task's … - Steps to reproduce:- - Installed timesheet_grid module - Open the task kanban view - Start the timer - Missing space between the date…
1. Timesheet - missing space before play/pause icon in task's …
- Steps to reproduce:-
- Installed timesheet_grid module
- Open the task kanban view
- Start the timer
- Missing space between the date and play icon.
- Issue:
This issue when the start date is displayed in task's kanban. There is no space
between start date and play icon.
- In this commit, we inserted the left margin before the play and pause icon.
2. Planning: missing space between clock icon and start date in slot's kanban view
- Steps to reproduce:-
- Installed planning module
- Open shift kanban view
- Missing space between the clock icon and the start date.
- Issue:
clock icon and start date between no space in the planning slot's kanban view.
- In this commit, we add right margin after the clock icon in planning slot's kanban view.
task-3083430
Forward-Port-Of: odoo/enterprise#41224
Forward-Port-Of: odoo/enterprise#34498Prior to this commit the `o_view_scale_selector` was flickering when we closed it. This was related to a conflict with `z-index` applied to `o_gantt_header`. To fix this, this commit applies this class only when necessary. task-3330230 Part of task-3326263 Forward-Port-Of: odoo/enterprise#41195
Original PR description
Prior to this commit the `o_view_scale_selector` was flickering when we closed it. This was related to a conflict with `z-index` applied to `o_gantt_header`. To fix this, this commit applies this class only when necessary. task-3330230 Part of task-3326263 Forward-Port-Of: odoo/enterprise#41195
TypeError: object of type 'bool' has no len() This error occurs when the variable 'account_online_accounts' value is False. So,when len(False) attempts to calculate the length of 'account_online_accounts' this error arises. see stack trace: ``` TypeError: object of type 'bool' has no len() 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) Fil
Original PR description
TypeError: object of type 'bool' has no len() This error occurs when the variable 'account_online_accounts' value is False. So,when len(False) attempts to calculate the length of…
TypeError: object of type 'bool' has no len()
This error occurs when the variable 'account_online_accounts' value is False. So,when len(False) attempts to calculate the length of 'account_online_accounts' this error arises.
see stack trace:
```
TypeError: object of type 'bool' has no len()
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 "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 "home/odoo/src/enterprise/saas-16.2/account_online_synchronization/models/account_online.py", line 564, in success
return method()
File "home/odoo/src/enterprise/saas-16.2/account_online_synchronization/models/account_online.py", line 603, in _success_link
if len(account_online_accounts) == 1:
```
After applying this commit will fix this issue.
sentry - 4175199444
Forward-Port-Of: odoo/enterprise#41231Before this commit, the super._compute_discount was called for subscription lines who were not upsells. These lines could not have computed discount from the sale module because the price is always taken from the temporal logic. The following issue would occurs: Product without pricelist and buy with "without_discount" pricelist will have its discount reset on save/confirm Avoid this reset if the product has no pricelist for it opw-3227722 Description of the issue/feature this PR
Original PR description
Before this commit, the super._compute_discount was called for subscription lines who were not upsells. These lines could not have computed discount from the sale module because the price is always taken from the temporal logic. The following issue would occurs: Product without pricelist and buy with "without_discount" pricelist will have its discount reset on save/confirm Avoid this reset if the product has no pricelist for it opw-3227722 Description of the issue/feature this PR addresses: For recurrent product that not have pricelist link, when we add discounts while creating a new sale order: All discounts are reset out when we save the sale order. All discounts are reset out when we confirm the sale order. Current behavior before PR: Discount reset to 0 on save/confirm Desired behavior after PR is merged: Discount keep the input value from the user taskid: 3271466 Forward-Port-Of: odoo/enterprise#41145 Forward-Port-Of: odoo/enterprise#39646
When we create a rental order with a service which have plan services and confirm it , then cancel it and then set to quotation (set to draft again) it will show an error. Steps to reproduce the error : 1- install rental and planning 2- create a product set its type as service , and select plan services , select developer for example 3- create a rental order with that product and confirm it 4- Cancel the created order and the click on "set to quotation" 5- You will get an error The
Original PR description
When we create a rental order with a service which have plan services and confirm it , then cancel it and then set to quotation (set to draft again) it will show an error. Steps to reproduce the error : 1- install rental and planning 2- create a product set its type as service , and select plan services , select developer for example 3- create a rental order with that product and confirm it 4- Cancel the created order and the click on "set to quotation" 5- You will get an error The error was coming from the a cache miss for the value virtual_available_at_date (https://github.com/odoo/odoo/blob/6b7f3f6ec40eb819dd1d94a94722610a63d5697a/odoo/fields.py#L1214C1-L1215) . On the update I checked that the value is indeed in the cache but setting up warehouse_id to False seems to be the source of the problem since the function depends on it and we update it later to False. opw-3300970 Forward-Port-Of: odoo/enterprise#41129
Currently, the button allowing the user to close the sidebar when the sidebar is revealed no longer work. The id `knowledge_search_bar` has been moved in the dom hierarchy. As a result, the css selector `#knowledge_search_bar > a` used to select the button and add the click listener to close the sidebar does not match with an element. Therefore, the button doesn't do anything. This PR will fix the issue by updating that css selector. Related: https://github.com/odoo/enterprise/commit/d66829ca
Original PR description
Currently, the button allowing the user to close the sidebar when the sidebar is revealed no longer work. The id `knowledge_search_bar` has been moved in the dom hierarchy. As a result, the css selector `#knowledge_search_bar > a` used to select the button and add the click listener to close the sidebar does not match with an element. Therefore, the button doesn't do anything. This PR will fix the issue by updating that css selector. Related: https://github.com/odoo/enterprise/commit/d66829ca7fcbf25bd4683963908d0973734abf96 Forward-Port-Of: odoo/enterprise#41344
**Current behavior before PR:** When creating a new post from social post form view and selecting some social media platform then our post content will be rendered to all social platforms (selected and not selected both) and a preview will be created for all, also whenever we try to change content it will again render to all platforms. After this PR, the content will be rendered only for the social media platforms that we selected, so the preview loading time will decrease. **Task**-32702
Original PR description
**Current behavior before PR:** When creating a new post from social post form view and selecting some social media platform then our post content will be rendered to all social platforms (selected and not selected both) and a preview will be created for all, also whenever we try to change content it will again render to all platforms. After this PR, the content will be rendered only for the social media platforms that we selected, so the preview loading time will decrease. **Task**-3270260 Forward-Port-Of: odoo/enterprise#41281 Forward-Port-Of: odoo/enterprise#40077