Friday, June 14, 2024
51 changes
31 changes
Resolved issues and error corrections
Uploading an empty XML file to a customer invoice no longer creates an unnecessary error report. The system now records this expected issue as a warning, reducing monitoring noise without changing the user workflow.
Original PR description
Currently, an exception is occurring when the user tries to upload an empty XML file in customer invoices.
Steps to produce:
1) Install `Accounting`
2) Try to upload an empty `XML` file in customer invoices.
3) In the backend a logger exception is encountered.
Error:-
```
ValueError: can only parse strings
File "addons/account/models/ir_attachment.py", line 38, in _decode_edi_xml
xml_tree = etree.fromstring(content)
File "src/lxml/etree.pyx", line 3255, in lxml.etree.fromstring
File "src/lxml/parser.pxi", line 1912, in lxml.etree._parseMemoryDocument
```
This causes noise in the sentry, So changing the exception to a warning can resolve this issue.
https://github.com/odoo/odoo/blob/14755d586a695df4c350f29e0c99c876c5811e4f/addons/account/models/ir_attachment.py#L40
sentry-4855416823
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prMiscellaneous changes
This traceback occurs when the user tries to update a `fiscal position` record by giving either only `from` or `to` value to `zip` range. To reproduce this issue:- 1) Install `Accounting` 2) Create a new `fiscal position` from `Accounting/Configuration` without `Detect Automatically` 3) Now update the record by enabling `Detect Automatically` 4) Select any country and give only the `from` value for `Zip Range` 5) Save the record Error:- ``` TypeError: object of type 'bool'
Original PR description
This traceback occurs when the user tries to update a `fiscal position` record by giving either only `from` or `to` value to `zip` range. To reproduce this issue:- 1) Install `Accounting` 2) Create a…
18 changes
Enhancements to existing features
The spreadsheet locale indicator now appears in a neutral blue instead of red when the spreadsheet locale differs from the user's locale. This keeps users informed about date and number formatting expectations without implying that something is wrong.
Original PR description
there's currently a small globe on the top-right corner displayed when the spreadsheet locale is different than the user's locale. The goal is to draw attention of the user that he needs to write numbers and dates accordingly. The globe is currently red, which might be scary. The user might think something is wrong. This task changes the globe color to a more neutral "info" blue. Task: 3989485
2 changes
Resolved issues and error corrections
The Partner Ledger report had a confusing "hide 0 lines" filter option that didn't work properly and didn't make logical sense for the report. This fix removes the option from the default view by setting it to "never," ensuring users see all partner transactions clearly without unnecessary filtering options.
Original PR description
Issue: It is possible to select the option "hide 0 lines" in the partner ledger. For one, it does not make sense as if a partner appears, it means that there are transactions. Even if the balance is set to 0, we should display the transactions. And then, the option simply does not work in partner ledger. Solution: Put as a default value "never" so it does not show up. opw-3981939
This traceback occurs when the user tries to update a `fiscal position` record by giving either only `from` or `to` value to `zip` range. To reproduce this issue:- 1) Install `Accounting` 2) Create a new `fiscal position` from `Accounting/Configuration` without `Detect Automatically` 3) Now update the record by enabling `Detect Automatically` 4) Select any country and give only the `from` value for `Zip Range` 5) Save the record Error:- ``` TypeError: object of type 'bool' has no len() ``` When the user updates the `fiscal position` with only `from or to` It triggers `_convert_zip_values` method with one from both. This leads to traceback, as `max()` is used between from and to. https://github.com/odoo/odoo/blob/eb04acf011838d9c8206bedd1908f7a991eb77e3/addons/account/models/partner.py#L143-L144 After applying this commit will resolve this issue by making the code more robust with an additional check. sentry-5284424770 Forward-Port-Of: odoo/odoo#169007 Forward-Port-Of: odoo/odoo#165712
This commit fixes an issue in the default form snippet, where the placeholder text for the "Your Question" field (a textarea) doesn't appear (bug introduced in the commit [1]). Steps to reproduce: - Navigate to website in edit mode - Drag & drop the "Form" snippet - Click on the "Your question" field to activate the snippet options - On the right panel, fill in the "Placeholder" field with anything - --> Bug. The placeholder doesn't appear in the field as it should This was caused
Original PR description
This commit fixes an issue in the default form snippet, where the placeholder text for the "Your Question" field (a textarea) doesn't appear (bug introduced in the commit [1]). Steps to reproduce: - Navigate to website in edit mode - Drag & drop the "Form" snippet - Click on the "Your question" field to activate the snippet options - On the right panel, fill in the "Placeholder" field with anything - --> Bug. The placeholder doesn't appear in the field as it should This was caused by an empty line between the opening and closing `<textarea>` tags in the template, which the browser interpreted as default content. The empty line has been removed to ensure the placeholder text is displayed correctly. [1]: https://github.com/odoo/odoo/commit/b993399f8a2283cf8ab571f399cf5f0eaf81bfce task-3665275 Forward-Port-Of: odoo/odoo#168295
3aa3a24c introduced a regression since textbbox is not available in Pillow < 8.0. Since focal has a lower version, this is breaking on odoosh and in PureFocal builds. Fixing it by making the call conditional. closes #162256 Forward-Port-Of: odoo/odoo#168683 Forward-Port-Of: odoo/odoo#168119
Original PR description
3aa3a24c introduced a regression since textbbox is not available in Pillow < 8.0. Since focal has a lower version, this is breaking on odoosh and in PureFocal builds. Fixing it by making the call conditional. closes #162256 Forward-Port-Of: odoo/odoo#168683 Forward-Port-Of: odoo/odoo#168119
Before this commit: - Graph chart metrics not properly visible in dark mode. After this commit: - White color is added to the text of the metrics, label and legends to make them properly visible in the dark mode. Task-3770589 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#168779 Forward-Port-Of: odoo/odoo#161027
Original PR description
Before this commit: - Graph chart metrics not properly visible in dark mode. After this commit: - White color is added to the text of the metrics, label and legends to make them properly visible in the dark mode. Task-3770589 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#168779 Forward-Port-Of: odoo/odoo#161027
Prior to this commit, when a product was created with the following: - An attribute assigned with the Creation Mode set to 'Instantly' - An attribute assigned with the Creation Mode set to 'Never' Upon trying to add each variant in the PoS, the pop-up menu to select attributes only appeared for one of the variants. opw-3921893 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#166872
Original PR description
Prior to this commit, when a product was created with the following: - An attribute assigned with the Creation Mode set to 'Instantly' - An attribute assigned with the Creation Mode set to 'Never' Upon trying to add each variant in the PoS, the pop-up menu to select attributes only appeared for one of the variants. opw-3921893 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#166872
Before this commit, when orders were loaded, if a partner was missing, it wouldn't be loaded. Steps to reproduce: 1. Create a new order and create a new customer related to this order 2. From another device, load the order. The order will appear but with no customer defined. opw-3926662 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#168199
Original PR description
Before this commit, when orders were loaded, if a partner was missing, it wouldn't be loaded. Steps to reproduce: 1. Create a new order and create a new customer related to this order 2. From another device, load the order. The order will appear but with no customer defined. opw-3926662 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#168199
The current version of lxml (4.9.2) is breaking Odoo on MacOS. This commit upgrades lxml to 4.9.3 which prevents the issue. With the current version, the following error is raised whenever we try to install any module that depends on Mail: lxml.etree.XMLSyntaxError: Char 0x0 out of allowed range This error is due to an emoji that got introduced here: 97ce0844ca0c3d531a7a2e2e47a867d89835b24e Original PR: #165997 (opening a new PR because of inability to reopen closed PRs after force-pus
Original PR description
The current version of lxml (4.9.2) is breaking Odoo on MacOS. This commit upgrades lxml to 4.9.3 which prevents the issue. With the current version, the following error is raised whenever we try to install any module that depends on Mail: lxml.etree.XMLSyntaxError: Char 0x0 out of allowed range This error is due to an emoji that got introduced here: 97ce0844ca0c3d531a7a2e2e47a867d89835b24e Original PR: #165997 (opening a new PR because of inability to reopen closed PRs after force-pushing in the branch 🥴) Forward-Port-Of: odoo/odoo#169164 Forward-Port-Of: odoo/odoo#168872
Description of the issue/feature this PR addresses: - During migration, the compute method `_compute_number_related_products` of model `product.attribute` is called and cause the `Memory Error` due to high number of records. - This method get the count of product_template_ids for particular product_attribute. **Traceback:** ```python Traceback (most recent call last): File "/tmp/tmpal_p0o26/migrations/base/tests/test_mock_crawl.py", line 255, in crawl_menu self.mock_action(act
Original PR description
Description of the issue/feature this PR addresses: - During migration, the compute method `_compute_number_related_products` of model `product.attribute` is called and cause the `Memory Error` due…
Description of the issue/feature this PR addresses:
- During migration, the compute method `_compute_number_related_products` of model `product.attribute` is called and cause the `Memory Error` due to high number of records.
- This method get the count of product_template_ids for particular product_attribute.
**Traceback:**
```python
Traceback (most recent call last):
File "/tmp/tmpal_p0o26/migrations/base/tests/test_mock_crawl.py", line 255, in crawl_menu
self.mock_action(action_vals)
File "/tmp/tmpal_p0o26/migrations/base/tests/test_mock_crawl.py", line 412, in mock_action
mock_method(model, view, fields_list, domain, group_by)
File "/tmp/tmpal_p0o26/migrations/base/tests/test_mock_crawl.py", line 441, in mock_view_form
[data] = record.read(fields_list)
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 3540, in read
return self._read_format(fnames=fields, load=load)
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 3751, in _read_format
vals[name] = convert(record[name], record, use_display_name)
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 6603, in __getitem__
return self._fields[key].__get__(self, self.env.registry[self._name])
File "/home/odoo/src/odoo/17.0/odoo/fields.py", line 1207, in __get__
self.compute_value(recs)
File "/home/odoo/src/odoo/17.0/odoo/fields.py", line 1389, in compute_value
records._compute_field_value(self)
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 4875, in _compute_field_value
fields.determine(field.compute, self)
File "/home/odoo/src/odoo/17.0/odoo/fields.py", line 102, in determine
return needle(*args)
File "/home/odoo/src/odoo/17.0/addons/product/models/product_attribute.py", line 68, in _compute_number_related_products
pa.number_related_products = len(pa.product_tmpl_ids)
File "/home/odoo/src/odoo/17.0/odoo/fields.py", line 2907, in __get__
return super().__get__(records, owner)
File "/home/odoo/src/odoo/17.0/odoo/fields.py", line 1156, in __get__
return self.convert_to_record(value, record)
File "/home/odoo/src/odoo/17.0/odoo/fields.py", line 4249, in convert_to_record
corecords = corecords.filtered(Comodel._active_name).with_prefetch(prefetch_ids)
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 6110, in filtered
return self.browse([rec.id for rec in self if func(rec)])
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 6110, in <listcomp>
return self.browse([rec.id for rec in self if func(rec)])
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 6109, in <lambda>
func = lambda rec: any(rec.mapped(name))
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 6087, in mapped
recs = recs._fields[name].mapped(recs)
File "/home/odoo/src/odoo/17.0/odoo/fields.py", line 1281, in mapped
self.__get__(first(remaining), type(remaining))
File "/home/odoo/src/odoo/17.0/odoo/fields.py", line 1182, in __get__
recs._fetch_field(self)
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 3777, in _fetch_field
self.fetch(fnames)
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 3827, in fetch
fetched = self._fetch_query(query, fields_to_fetch)
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 3920, in _fetch_query
rows = self.env.cr.fetchall()
MemoryError
```
Current behavior before PR:
Before fix:
- The standard compute method in version [17.0](https://github.com/odoo/odoo/blob/4b67a7bec2007d89dfa8d9ecc7a73d4fe86547a3/addons/product/models/product_attribute.py#L70C4-L73C104)
Desired behavior after PR is merged:
- The data is fetched using _read_group method in compute method and solve the memory error.
Task Link: [3906977](https://www.odoo.com/odoo/70/tasks/3906977?cids=2)
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#168507When a user selects many account moves and adds a group payment, there is a traceback when confirming the payment if the method requires valid bank accounts (singleton expected). They need to know which partner bank is not validated not the name of the payment method they already selected. Here is the original complain: Dans la V15, si il y avait un client avec un problème de compte, ça bloquait et Odoo nous indiquait un message avec le nom du client qui était problématique, cela nous permet
Original PR description
When a user selects many account moves and adds a group payment, there is a traceback when confirming the payment if the method requires valid bank accounts (singleton expected). They need to know which partner bank is not validated not the name of the payment method they already selected. Here is the original complain: Dans la V15, si il y avait un client avec un problème de compte, ça bloquait et Odoo nous indiquait un message avec le nom du client qui était problématique, cela nous permettait de régler le problème échéant puis relancer la demande. closes: #168938 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#169187
The old name caused caused some confusion from clients - Old: "Plan Contable Generico Argentino para Contadores Publicos" - New: "Plan Contable Genérico Argentino para Responsables Inscriptos" task-3921529 Forward-Port-Of: odoo/odoo#167055
Original PR description
The old name caused caused some confusion from clients - Old: "Plan Contable Generico Argentino para Contadores Publicos" - New: "Plan Contable Genérico Argentino para Responsables Inscriptos" task-3921529 Forward-Port-Of: odoo/odoo#167055
When importing XML invoice with multiple discounts in a line, the discount is not calculated correctly. task-3945345 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#167242
Original PR description
When importing XML invoice with multiple discounts in a line, the discount is not calculated correctly. task-3945345 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#167242
When Payment Difference amount equals Early Payment Discount, Don't show payment difference field and consider full reconciliation. task-3944830 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#168960 Forward-Port-Of: odoo/odoo#167065
Original PR description
When Payment Difference amount equals Early Payment Discount, Don't show payment difference field and consider full reconciliation. task-3944830 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#168960 Forward-Port-Of: odoo/odoo#167065
This commit fixes an issue introduced in 63285ce when merging `slide.slide.link` and `slide.slide.resource`. When a user would edit multiple resources at once, the compute done for the name would crash. This is caused by a read done on `self` instead a for loop, which causes a crash if `self` is a recordset. To fix this, the read on self is replaced by resource which would be a record inside of the recordset. task-3988760 --- I confirm I have signed the CLA and read the PR guidelin
Original PR description
This commit fixes an issue introduced in 63285ce when merging `slide.slide.link` and `slide.slide.resource`. When a user would edit multiple resources at once, the compute done for the name would crash. This is caused by a read done on `self` instead a for loop, which causes a crash if `self` is a recordset. To fix this, the read on self is replaced by resource which would be a record inside of the recordset. task-3988760 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#169172
Remove the 'user_ids' field (Assignees) from the 'Sort By:' options in the portal view. Since the 'user_ids' field is non-storable, So it cannot be used for sorting. To fix this, We have to remove the 'Assignees' from the 'Sort By:' list, This involves removing the following option from a dictionary ```'users': {'label': _('Assignees'), 'order': 'user_ids', 'sequence': 4},``` which is returned by '_task_get_searchbar_sortings' at [2]. link[2]: https://github.com/odoo/odoo/blob/843
Original PR description
Remove the 'user_ids' field (Assignees) from the 'Sort By:' options in the
portal view. Since the 'user_ids' field is non-storable, So it cannot be used
for sorting.
To fix this, We have to remove the 'Assignees' from the 'Sort By:'
list, This involves removing the following option from a dictionary
```'users': {'label': _('Assignees'), 'order': 'user_ids', 'sequence': 4},```
which is returned by '_task_get_searchbar_sortings' at [2].
link[2]: https://github.com/odoo/odoo/blob/84333c4fa1382edae188dc05f9837a9992798046/addons/project/controllers/portal.py#L273
sentry - 5405089817
Forward-Port-Of: odoo/odoo#167992
Forward-Port-Of: odoo/odoo#166969Before this commit, clicking on absence button of any department shows all the employees of all the department instead of the absent employees of that department. This commit brings, the list view of absent employees of that department after clicking on absence button of any department. task-3919504 Forward-Port-Of: odoo/odoo#165560
Original PR description
Before this commit, clicking on absence button of any department shows all the employees of all the department instead of the absent employees of that department. This commit brings, the list view of absent employees of that department after clicking on absence button of any department. task-3919504 Forward-Port-Of: odoo/odoo#165560
Before this commit, loading a product into the PoS via search or barcode would append the internal reference to the product name. This commit fixes the issue by ensuring the 'display_default_code' context is respected when loading products via barcode or name search. opw-3900842 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#167815
Original PR description
Before this commit, loading a product into the PoS via search or barcode would append the internal reference to the product name. This commit fixes the issue by ensuring the 'display_default_code' context is respected when loading products via barcode or name search. opw-3900842 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#167815
In Italy, an operator who exports more than 10% of all his revenues is considered a regular exporter. Regular exporters can purchase without paying VAT within certain limits. For this they have to do a declaration of intent with the authorities. The regular exporter then gives the declaration information to his suppliers. The supplier can then issue an invoice to the regular exported without taxes by noting the declaration of intent. This commit adds support for the supplier side of th
Original PR description
In Italy, an operator who exports more than 10% of all his revenues is considered a regular exporter. Regular exporters can purchase without paying VAT within certain limits. For this they have to do…
In Italy, an operator who exports more than 10% of all his revenues is considered a regular exporter. Regular exporters can purchase without paying VAT within certain limits. For this they have to do a declaration of intent with the authorities. The regular exporter then gives the declaration information to his suppliers. The supplier can then issue an invoice to the regular exported without taxes by noting the declaration of intent. This commit adds support for the supplier side of this use case. It is now possible to - Create declarations of intent (of regular exporters we want to sell to) - Use them on sales orders and invoices - The not yet invoiced, invoiced and remaining amount of each declaration / SO / invoiced are tracked. The declaration of intent information is also stated on the PDFs and electronic invoices. A dedicated tax and fiscal position was added to be applied in case a declaration of intent is used. Limitations: - The document currency has to be in EUR (more precisely the currency of the declaration of intent which defaults to EUR); else the declaration of intent cannot be applied - Lines containing the declaration of intent tax may not use any other tax - When adding lines on a credit note linked to a sales order those lines do not count for the invoiced amount of the sales order. The sales order would have to be adapted. (It is not really a limitation because that is just how it works: the new lines are not linked to the sales order.) - Documents can only use the declaration of intent if they lie inside the date range of the declaration and the declaration is in 'active' state. Exception: the invoiced amount is negative. task-3794632 Forward-Port-Of: odoo/odoo#161875
When we link a user on an existing employee, we look at the vehicle linked to the existing employee's partner, to re-assign it to the linked user's partner that will become the new work_contact_id. The main issues are the following: - When we create an employee and assign a user on it, it will set the user's partner on all vehicle without driver or futur driver - When we select the user in the form, it will save the changes on the car, even if the form is not saved, because the function is
Original PR description
When we link a user on an existing employee, we look at the vehicle linked to the existing employee's partner, to re-assign it to the linked user's partner that will become the new work_contact_id. The main issues are the following: - When we create an employee and assign a user on it, it will set the user's partner on all vehicle without driver or futur driver - When we select the user in the form, it will save the changes on the car, even if the form is not saved, because the function is called in an onchange. Side issue: - Whatever is the company of the employee, it'll search through all vehicles if you have activated multiple companies. Bugs introduced in https://github.com/odoo/odoo/pull/157057 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#168908
Steps to reproduce: - Manufacturing -> Configuration -> Work Centers - Create a new Work Center A with a cost per hour per workcenter of 10 - Operations -> Manufacturing Orders -> New - Create a MO with a workorder using A with a duration of 10 - Hit 'Validate' then 'Produce all'. - Go back to the Work Center and increase its cost to 100. - Go back to the MO and open the Overview Issue: The costs displayed for the operations correspond to the duration * the current cost of the workcen
Original PR description
Steps to reproduce: - Manufacturing -> Configuration -> Work Centers - Create a new Work Center A with a cost per hour per workcenter of 10 - Operations -> Manufacturing Orders -> New - Create a MO with a workorder using A with a duration of 10 - Hit 'Validate' then 'Produce all'. - Go back to the Work Center and increase its cost to 100. - Go back to the MO and open the Overview Issue: The costs displayed for the operations correspond to the duration * the current cost of the workcenter instead of the registred cost of the workcenter by the time the workorder was done. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#169124 Forward-Port-Of: odoo/odoo#131523
Currently, a traceback is occurring when the user deletes the master data of project name 'internal' and tries to install another module. To reproduce this issue:- 1) Install `project_timesheet_holidays` without demo data 2) Delete all `My Timesheets` data from `Timesheets` 3) Delete all the `My tasks` from the project after removing the default filters 4) Now delete the `internal` task stage from project/configuration/task stages 5) Try to install the `MRP` module Error:- ```
Original PR description
Currently, a traceback is occurring when the user deletes the master data of project name 'internal' and tries to install another module. To reproduce this issue:- 1) Install…
Currently, a traceback is occurring when the user deletes the master data of project name 'internal' and tries to install another module. To reproduce this issue:- 1) Install `project_timesheet_holidays` without demo data 2) Delete all `My Timesheets` data from `Timesheets` 3) Delete all the `My tasks` from the project after removing the default filters 4) Now delete the `internal` task stage from project/configuration/task stages 5) Try to install the `MRP` module Error:- ``` ValueError: External ID not found in the system: hr_timesheet.internal_project_default_stage ``` When the user installs another module after deleting the project `internal`, a traceback trigger as the `external_id` is referenced to create a project for master data. https://github.com/odoo/odoo/blob/5a26d5173cc54bcbed18a251854c5e725c2ba3b4/addons/project_timesheet_holidays/models/res_company.py#L15 After applying this commit will resolve this issue. sentry-5344711392 Forward-Port-Of: odoo/odoo#166474
Have a list with some groupby buttons. ``` <tree> <groupby="m2o"> <field name="display_name" /> <button type="object" .... /> </groupby> </tree> ``` If the group's value (the m2o on which records are grouped) is false (the m2o of each record is non-required and empty) then there was a crash. This commit fixes that and doesn't display those groupby buttons of there is no record to trigger the button on. task-3986706 Description of the issue/feature this PR addresse
Original PR description
Have a list with some groupby buttons.
```
<tree>
<groupby="m2o">
<field name="display_name" />
<button type="object" .... />
</groupby>
</tree>
```
If the group's value (the m2o on which records are grouped) is false (the m2o of each record is non-required and empty) then there was a crash.
This commit fixes that and doesn't display those groupby buttons of there is no record to trigger the button on.
task-3986706
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#169182Add parent company's payment methods on expense sheet Steps: - Create a child company and select it in the company selector - Create an expense paid by company and create report -> On the report view, there is no payment method available in the dropdow, we should have the payment methods from the parent company Fix: Adapt domain for `selectable_payment_method_line_ids` opw-3917271 Description of the issue/feature this PR addresses: Current behavior before PR: Des
Original PR description
Add parent company's payment methods on expense sheet Steps: - Create a child company and select it in the company selector - Create an expense paid by company and create report -> On the report view, there is no payment method available in the dropdow, we should have the payment methods from the parent company Fix: Adapt domain for `selectable_payment_method_line_ids` opw-3917271 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#169190 Forward-Port-Of: odoo/odoo#167060
This commit addresses the issue where the Product Configurator Popup was displayed unnecessarily when there was only one value for each attribute of a product. The implementation now includes a check to ensure that the popup is shown only when there are more that one choices available. This enhancement improves the user experience by avoiding the display of a redundant popup without viable options. opw-3903425 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/
Original PR description
This commit addresses the issue where the Product Configurator Popup was displayed unnecessarily when there was only one value for each attribute of a product. The implementation now includes a check to ensure that the popup is shown only when there are more that one choices available. This enhancement improves the user experience by avoiding the display of a redundant popup without viable options. opw-3903425 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#167791 Forward-Port-Of: odoo/odoo#164384
Usecase: - Create a sublocation of input with scrap checked - Use warehouse 2 steps - Do a delivery for 10 units - Scrap 2 to the sublocation of input - Validate the 8 units remaining (backorder doens't change anything) - Return 2 units - Edit the stock.move.line to take them from the sublocation of input - Validate Current behaviour: The quant in input's sublocation has -2 reserved quantity Expected Behaviour: The quant is deleted It happens because the `_synchronize_quant` m
Original PR description
Usecase: - Create a sublocation of input with scrap checked - Use warehouse 2 steps - Do a delivery for 10 units - Scrap 2 to the sublocation of input - Validate the 8 units remaining (backorder…
Usecase: - Create a sublocation of input with scrap checked - Use warehouse 2 steps - Do a delivery for 10 units - Scrap 2 to the sublocation of input - Validate the 8 units remaining (backorder doens't change anything) - Return 2 units - Edit the stock.move.line to take them from the sublocation of input - Validate Current behaviour: The quant in input's sublocation has -2 reserved quantity Expected Behaviour: The quant is deleted It happens because the `_synchronize_quant` method do a check but it's on the move. However in our case, the `stock.move` still have input as location and it's not a scrap, so it doesn't skip the quant update. We should force the location of the `stock.move.line` to ensure the check is done on the correct sublocation. opw-mri 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#169144
## Description `call_at` is a criteria used in the call `_get_all_ready_jobs` that can be frequently called on large database with many cron workers. This leads to very frequent Seq.Scan on the table, that may actually have a non-negligible number of records due to routines like the cron `ir_cron_campaign_execute_activities` which creates many triggers. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#169107
Original PR description
## Description `call_at` is a criteria used in the call `_get_all_ready_jobs` that can be frequently called on large database with many cron workers. This leads to very frequent Seq.Scan on the table, that may actually have a non-negligible number of records due to routines like the cron `ir_cron_campaign_execute_activities` which creates many triggers. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#169107
Previously, if a product had a vendor set with some minimum quantity, it wouldn't be displayed in the BoM Overview if the line quantity didn't match this minimum. This meant that if that vendor was the only one set for this product, then no resupply route would be displayed and no lead time would be found. This is an issue, as it's inconsistent with how it would actually work when creating a MO from that BoM. (i.e. create the PO to that vendor, but with its default price). Instead, when no s
Original PR description
Previously, if a product had a vendor set with some minimum quantity, it wouldn't be displayed in the BoM Overview if the line quantity didn't match this minimum. This meant that if that vendor was the only one set for this product, then no resupply route would be displayed and no lead time would be found. This is an issue, as it's inconsistent with how it would actually work when creating a MO from that BoM. (i.e. create the PO to that vendor, but with its default price). Instead, when no supplier is found for the right quantity, we display the first suitable vendor anyway, but with a different color. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#169150 Forward-Port-Of: odoo/odoo#165573
Currently the "Force PDV" button for mercado pago is visible in debug mode no matter if you select "mercado_pago" as the payment provider or not. This PR makes it so that it is only visible if 'mercado_pago' is selected as a payment provider   task-3988847 Forward-Port-Of: odoo/odoo#169174
Original PR description
Currently the "Force PDV" button for mercado pago is visible in debug mode no matter if you select "mercado_pago" as the payment provider or not. This PR makes it so that it is only visible if 'mercado_pago' is selected as a payment provider   task-3988847 Forward-Port-Of: odoo/odoo#169174
**Description of the issue/feature this PR addresses:** Before this commit the field can be wrongly computed in multi user environment. @oco-odoo --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#166837
Original PR description
**Description of the issue/feature this PR addresses:** Before this commit the field can be wrongly computed in multi user environment. @oco-odoo --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#166837
Problem --- When printing invoices involving different tax groups (from the actions in the invoice form view), the text baseline for the word 'on' and the rest of the text ("<tax_name> on <corresponding_amount>") in the taxes summary are different. (ie the word is misaligned) Steps --- IMPORTANT: the bug only appears on newer (~`0.13`) versions of `wkhtmltopdf` * create an invoice for 2 products, * make the products use different taxes, form at least 2 different tax groups (if needed co
Original PR description
Problem
---
When printing invoices involving different tax groups (from the actions in the invoice form view), the text baseline for the word 'on' and the rest of the text ("<tax_name> on <corresponding_amount>") in the taxes summary are different. (ie the word is misaligned)
Steps
---
IMPORTANT: the bug only appears on newer (~`0.13`) versions of `wkhtmltopdf`
* create an invoice for 2 products,
* make the products use different taxes, form at least 2 different tax groups (if needed configure in Accounting > Configuration > Taxes)
* Actions (cog) > print > Invoices => on the generated pdf the word 'on' is misaligned
Note
---
Fix tested on `wkhtmtopdf 0.13`.
On `wkhtmltopdf 0.12.6` -> already worked, but fix has no visual effect
---
opw-3940888
Forward-Port-Of: odoo/odoo#167247Backport of odoo/odoo@7aca17cf6d6f8487ebba615bc4f2e6bde5e0c4a1 This commit force the datetime_picker's cells to have the same aspect ratio without any specific width or height on small screen. So the datetime_picker can take the all width space available and be always responsive as each cells share the same width and the same height to respect the aspect ratio. We backport this commit so on small screen the date picker has a smaller width and doesn't overflow anymore. Steps to reproduc
Original PR description
Backport of odoo/odoo@7aca17cf6d6f8487ebba615bc4f2e6bde5e0c4a1 This commit force the datetime_picker's cells to have the same aspect ratio without any specific width or height on small screen. So the datetime_picker can take the all width space available and be always responsive as each cells share the same width and the same height to respect the aspect ratio. We backport this commit so on small screen the date picker has a smaller width and doesn't overflow anymore. Steps to reproduce (Small screen/Mobile): * Open CRM * Click on a lead * Click on Expected Closing => Bug the date picker overflow on the left opw-3957058 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#169228
Code cleanup and technical improvements
This update modernizes automated tests for Planning and related scheduling features without changing day-to-day functionality. It helps keep future changes safer by improving test coverage and maintainability across Planning, Project Forecast, and Sales Planning.
Original PR description
task-3890660
Miscellaneous changes
`l10n_co_dian` currently only depends on `l10n_co_edi`, which depends on `account`, and `account_edi_ubl_cii` is auto-installed when `account` is installed. The issue: when uninstalling `account_edi_ubl_cii`, `l10n_co_dian` will be kept since `account_edi_ubl_cii` is not in its dependencies, leaving `l10n_co_dian` in a corrupted state. Forward-Port-Of: odoo/enterprise#64427
Original PR description
`l10n_co_dian` currently only depends on `l10n_co_edi`, which depends on `account`, and `account_edi_ubl_cii` is auto-installed when `account` is installed. The issue: when uninstalling `account_edi_ubl_cii`, `l10n_co_dian` will be kept since `account_edi_ubl_cii` is not in its dependencies, leaving `l10n_co_dian` in a corrupted state. Forward-Port-Of: odoo/enterprise#64427
Problem: When enhancing reports for 16.4 compatibility, a VAT label was added to the followup report. This label will display even when no `vat` value exists. Purpose: Revert line similar to previous versions where if a `vat` value is present, then show the value. Otherwise, show nothing. Steps to Reproduce: 1. Have a contact with no `vat` value 2. Create an invoice for that contact 3. Send a followup report to that contact. opw-3970003 Forward-Port-Of: odoo/enterprise#64614
Original PR description
Problem: When enhancing reports for 16.4 compatibility, a VAT label was added to the followup report. This label will display even when no `vat` value exists. Purpose: Revert line similar to previous versions where if a `vat` value is present, then show the value. Otherwise, show nothing. Steps to Reproduce: 1. Have a contact with no `vat` value 2. Create an invoice for that contact 3. Send a followup report to that contact. opw-3970003 Forward-Port-Of: odoo/enterprise#64614
To access the xml, go to General Ledger, and export "Datev with Atch". You need invoices with attachment. This xml has a field date that should in fact contain a datetime! (following format 0001-01-01T00:00:00) opw-3976301 Forward-Port-Of: odoo/enterprise#64439
Original PR description
To access the xml, go to General Ledger, and export "Datev with Atch". You need invoices with attachment. This xml has a field date that should in fact contain a datetime! (following format 0001-01-01T00:00:00) opw-3976301 Forward-Port-Of: odoo/enterprise#64439
Create a Vendor Bill with a 0% purchase tax Check Reporting > EC Sales List Issue: Bill is reported This occurs because the system does not filter the tax type opw-3928085 Forward-Port-Of: odoo/enterprise#64574 Forward-Port-Of: odoo/enterprise#63206
Original PR description
Create a Vendor Bill with a 0% purchase tax Check Reporting > EC Sales List Issue: Bill is reported This occurs because the system does not filter the tax type opw-3928085 Forward-Port-Of: odoo/enterprise#64574 Forward-Port-Of: odoo/enterprise#63206
Problem --- On the order status page, the terms translations are ignored. This happens because it is a 'website=True' routed page, and modules which create website pages with translations need to let the http routing know about them by overloading `_get_translations_modules_name` Note: the page will typically be translated into the browser's preferred language and not the odoo user's. opw-3949394 Forward-Port-Of: odoo/enterprise#63915
Original PR description
Problem --- On the order status page, the terms translations are ignored. This happens because it is a 'website=True' routed page, and modules which create website pages with translations need to let the http routing know about them by overloading `_get_translations_modules_name` Note: the page will typically be translated into the browser's preferred language and not the odoo user's. opw-3949394 Forward-Port-Of: odoo/enterprise#63915
Purpose ======= Fix the appointment type intro message which, if not set yet, wasn't available for edition using the website editor. Specification ============= The "o_appointment_intro" element has been changed from inside, to next to the "o_appointment" element. Changing the selector to match the new "o_appointment_intro" position. Ref commit: https://github.com/odoo/enterprise/commit/4f68079b535c1ea54c42ae8dabae903f88d6e87f Also combining the 2 separate conditions that adds the
Original PR description
Purpose ======= Fix the appointment type intro message which, if not set yet, wasn't available for edition using the website editor. Specification ============= The "o_appointment_intro" element has been changed from inside, to next to the "o_appointment" element. Changing the selector to match the new "o_appointment_intro" position. Ref commit: https://github.com/odoo/enterprise/commit/4f68079b535c1ea54c42ae8dabae903f88d6e87f Also combining the 2 separate conditions that adds the d-none class into 1 single OR-ed condition for readability. Task-3976356 Forward-Port-Of: odoo/enterprise#64447 Forward-Port-Of: odoo/enterprise#64016
Currently, the `employee_cost` of a `mrp.workcenter.productivity` is recomputed each time we try to access its `total_cost`. This means that if you change the cost of the employee related to it some time after a MO was completed, if you end up accessing the `total_cost` field (like by opening the Overview), it will overwrite the previous `employee_cost`, and will alter the Cost Analysis report as well. Forward-Port-Of: odoo/enterprise#64481 Forward-Port-Of: odoo/enterprise#45609
Original PR description
Currently, the `employee_cost` of a `mrp.workcenter.productivity` is recomputed each time we try to access its `total_cost`. This means that if you change the cost of the employee related to it some time after a MO was completed, if you end up accessing the `total_cost` field (like by opening the Overview), it will overwrite the previous `employee_cost`, and will alter the Cost Analysis report as well. Forward-Port-Of: odoo/enterprise#64481 Forward-Port-Of: odoo/enterprise#45609
When a new bike is selected, it raises a traceback when trying to create the bike, because the state_new_request is not assigned if there is no new car. Introduced in: https://github.com/odoo/enterprise/pull/63020 Forward-Port-Of: odoo/enterprise#64585
Original PR description
When a new bike is selected, it raises a traceback when trying to create the bike, because the state_new_request is not assigned if there is no new car. Introduced in: https://github.com/odoo/enterprise/pull/63020 Forward-Port-Of: odoo/enterprise#64585
### Steps to reproduce the issue: 1. Go to _Settings > Technical > Email > Email Templates_ 2. Select a template that applies to a Contact 3. Add a mail address in the Cc field 4. Go to _Accounting > Customers > Follow-up Reports_ select one of the reports 5. Click on "Follow up" 6. Select the template with the Cc in the Content Template field 7. The Cc address is not added to the Email Recipients field 8. Click on Send Message in the chatter 9. Open the full view and add the template
Original PR description
### Steps to reproduce the issue: 1. Go to _Settings > Technical > Email > Email Templates_ 2. Select a template that applies to a Contact 3. Add a mail address in the Cc field 4. Go to _Accounting >…
### Steps to reproduce the issue: 1. Go to _Settings > Technical > Email > Email Templates_ 2. Select a template that applies to a Contact 3. Add a mail address in the Cc field 4. Go to _Accounting > Customers > Follow-up Reports_ select one of the reports 5. Click on "Follow up" 6. Select the template with the Cc in the Content Template field 7. The Cc address is not added to the Email Recipients field 8. Click on Send Message in the chatter 9. Open the full view and add the template with the Cc in the Load template field 10. The Cc address is added to the Recipients field ### Explanation: The field `email_recipient_ids` is not a computed field. Because of it, there is no change called when `template_id` is assigned a new value. ### Suggested fix: We need to change `email_recipients_ids` according to `template_id` while keeping its current properties (stored, writable). The method is adapted from `mail.compose.message._compute_partner_ids`. https://github.com/odoo/odoo/blob/1849b709f1acf0f5546582bf7551129a870e3113/addons/mail/wizard/mail_compose_message.py#L482-L496 opw-3878125 Forward-Port-Of: odoo/enterprise#64397 Forward-Port-Of: odoo/enterprise#61861
A traceback occurs when this specific call to `getReceiptHeaderData` is made without order. ``` Error: TypeError: Cannot read properties of undefined (reading 'l10n_cl_sii_regional_office') ``` To reproduce the error: - With a CL company setup - Open POS session - Click Cash In/Out - Select an amount - Confirm Ticket [link](https://www.odoo.com/web#model=project.task&id=3917776) opw-3917776 Forward-Port-Of: odoo/enterprise#62985
Original PR description
A traceback occurs when this specific call to `getReceiptHeaderData` is made without order. ``` Error: TypeError: Cannot read properties of undefined (reading 'l10n_cl_sii_regional_office') ``` To reproduce the error: - With a CL company setup - Open POS session - Click Cash In/Out - Select an amount - Confirm Ticket [link](https://www.odoo.com/web#model=project.task&id=3917776) opw-3917776 Forward-Port-Of: odoo/enterprise#62985
With an MX company setup Create a product with: - UNSPSC Category: 12352106 Ácidos orgánicos o sus sustitutos - Hazardous Material Designation Code (MX): - Hazardous Packaging (MX): - Tariff Fraction: 2917190800 Ácido fumárico. - UMT Aduana: kg - Weight: 1.00 Create a Sale Order with the product Confirm Go to Delivery Set: - Tansport Type: Federal Highways - In MX Tab add 'Vehicle Setup' and 'Gross Vehicle Weight' Validate and Generate Delivery Guide Error: Code : CP155 Mes
Original PR description
With an MX company setup Create a product with: - UNSPSC Category: 12352106 Ácidos orgánicos o sus sustitutos - Hazardous Material Designation Code (MX): - Hazardous Packaging (MX): - Tariff…
With an MX company setup Create a product with: - UNSPSC Category: 12352106 Ácidos orgánicos o sus sustitutos - Hazardous Material Designation Code (MX): - Hazardous Packaging (MX): - Tariff Fraction: 2917190800 Ácido fumárico. - UMT Aduana: kg - Weight: 1.00 Create a Sale Order with the product Confirm Go to Delivery Set: - Tansport Type: Federal Highways - In MX Tab add 'Vehicle Setup' and 'Gross Vehicle Weight' Validate and Generate Delivery Guide Error: Code : CP155 Message : El valor registrado en el atributo "Mercancia:MaterialPeligroso" no es válido o el valor registrado en el atributo “Mercancias:Mercancia:BienesTransp” contiene el valor "0" (cero) en la columna "Material peligroso" del catálogo catCartaPorte:c_ClaveProdServCP. This occurs because the MarierialPeligroso element is not filled In the ClaveProdServ tab of the CatalogoCartaPorte30 it is specified if a product or service is (1), not is (0) or may be (0,1) considered hazardous When having to deal with "may be" hazardous products it is required to set the 'MaterialPeligroso' element. Currently, the system does not allow to specify if the "may be" product is actually hazardous, but if the 'Hazardous Material Designation Code (MX)' field is not set the MaterialPeligroso element will not be filled, failing the validation The proposed workaround is to use the value '0' as flag to indicate that the maybe hazardous product should not be considered hazardous and 'MaterialPeligroso' will be set to 'No' opw-3955361 task-3668225 Forward-Port-Of: odoo/enterprise#64284 Forward-Port-Of: odoo/enterprise#63832
Forward-Port-Of: odoo/enterprise#64040
Original PR description
Forward-Port-Of: odoo/enterprise#64040
Steps to reproduce: - Install Accounting and l10n_co_edi - Switch to a Colombian company - Configure the Colombian localization (https://www.odoo.com/documentation/17.0/applications/finance/fiscal_localizations/colombia.html) - Create a vendor bill containing a section or a note - Confirm the bill - Process the bill by E-invoicing service : UBL 2.1 (Colombia) Issue: The generated electronic document is rejected by the E-invoicing service because the input number of lines is also counti
Original PR description
Steps to reproduce: - Install Accounting and l10n_co_edi - Switch to a Colombian company - Configure the Colombian localization (https://www.odoo.com/documentation/17.0/applications/finance/fiscal_localizations/colombia.html) - Create a vendor bill containing a section or a note - Confirm the bill - Process the bill by E-invoicing service : UBL 2.1 (Colombia) Issue: The generated electronic document is rejected by the E-invoicing service because the input number of lines is also counting section and note lines. Solution: Exclude section and note lines from the count as it is done for invoice. opw-3928949 Forward-Port-Of: odoo/enterprise#63588
The 'Totales' section is computed by aggregating amounts then rounding. The 'ImpuestosP' section is computed by making the sum of rounded values. So when the payment is expressed in MXN but not the invoices, we could have a rounding issue here. Forward-Port-Of: odoo/enterprise#64411 Forward-Port-Of: odoo/enterprise#64013
Original PR description
The 'Totales' section is computed by aggregating amounts then rounding. The 'ImpuestosP' section is computed by making the sum of rounded values. So when the payment is expressed in MXN but not the invoices, we could have a rounding issue here. Forward-Port-Of: odoo/enterprise#64411 Forward-Port-Of: odoo/enterprise#64013
Problem: When a portal user views a Task they are connected to, if `planned_date_begin` is set (using a date range on the Task rather that just `date_deadline`), 'Planned Date' will appear twice on Portal View. Purpose: We already have 'Planned Date'/'Deadline' shown with `project_enterprise.portal_my_task`, and this edited view comes from `industry_fsm`, which depends on `project_enterprise` anyways. Removing from `industry_fsm` lets the parent module take care of these fields. Steps to R
Original PR description
Problem: When a portal user views a Task they are connected to, if `planned_date_begin` is set (using a date range on the Task rather that just `date_deadline`), 'Planned Date' will appear twice on Portal View. Purpose: We already have 'Planned Date'/'Deadline' shown with `project_enterprise.portal_my_task`, and this edited view comes from `industry_fsm`, which depends on `project_enterprise` anyways. Removing from `industry_fsm` lets the parent module take care of these fields. Steps to Reproduce: 1. Create a SO with Service Product that creates Project/Task, assign portal user as Customer 2. Share Read-only with Portal user from Project 3. On Task, set Deadline start and end. 4. Login as portal User, navigate Projects -> SO -> Task 5. See duplicated 'Planned Date' line opw-3978845 Forward-Port-Of: odoo/enterprise#64306
When selecting the option "IoT-connected display" for customer display, and pos_iot is installed, there is no way from the res.config.settings form to specify the `proxy_ip` field which is used to send the customer display information. Because of this, using IoT-connected display for customer screen doesn't work. This commit introduces a way to infer the proxy_ip from the specify display device. Related: https://github.com/odoo/odoo/pull/168897 Forward-Port-Of: odoo/enterprise#64360
Original PR description
When selecting the option "IoT-connected display" for customer display, and pos_iot is installed, there is no way from the res.config.settings form to specify the `proxy_ip` field which is used to send the customer display information. Because of this, using IoT-connected display for customer screen doesn't work. This commit introduces a way to infer the proxy_ip from the specify display device. Related: https://github.com/odoo/odoo/pull/168897 Forward-Port-Of: odoo/enterprise#64360
This fix corrects an issue where VAT labels were appearing in follow-up reports even when customers didn't have a VAT number on file. The change ensures that the VAT label only displays when a VAT value actually exists, preventing confusing blank fields in customer communications.
Original PR description
Problem: When enhancing reports for 16.4 compatibility, a VAT label was added to the followup report. This label will display even when no `vat` value exists. Purpose: Revert line similar to previous versions where if a `vat` value is present, then show the value. Otherwise, show nothing. Steps to Reproduce: 1. Have a contact with no `vat` value 2. Create an invoice for that contact 3. Send a followup report to that contact. opw-3970003