Daily updates from Odoo
Monday, November 25, 2024
37 changes · master
Enhancements to existing features
The Point of Sale is being improved so it can continue operating when the internet connection drops. Key screen assets and business data are cached locally, helping stores keep serving customers and sync with updates when data changes.
Original PR description
*: iot, l10n_cl_edi, l10n_ec_edi, l10n_mx_edi, l10n_pe_edi, pos_blackbox_be, pos_iot, pos_preparation_display, pos_restaurant_appointment, pos_settle_due, pos_urban_piper Adding service worker in PoS to allow it to work offline. The service worker will cache all javascript and css assets. For data, we will use IndexedDB to store the data. These cached data will be used everytime since a change is detected in the data. taskId: 4270078
Financial reports now use a consistent company selector instead of a hidden mode that only considered the active company and its branches. This makes report behavior clearer for users and reduces confusion when working across multiple companies.
Original PR description
*l10n_es_reports The 'disabled' value of the multi-company filter is used to tell the report it should only consider the active company (and its branches), ignoring all other companies that would be selected. Though, it's not widely used, and the reports using it probably might run just as well with 'selector'. Also, it can create a bit of confusion, since it's not obvious to the user which report uses or doesn't use the selector. In the related enterprise commit, we simplify this by removing the 'disabled' value for the multi-company filter. This commit adapt the existing code to this change. task-4260664 Related to https://github.com/odoo/odoo/pull/184553 Related to https://github.com/odoo/upgrade/pull/6646
This update aligns Indian GST reporting components with changes from the e-way bill refactor. It keeps return-period and report logic compatible with shared invoice processing improvements, reducing future maintenance risk without changing day-to-day workflows.
Original PR description
Related PR - https://github.com/odoo/odoo/pull/170679 - https://github.com/odoo/upgrade/pull/6624
Payroll declaration screens are now clearer and easier to manage across several localizations. Users can delete declarations, see eligible employee counts more clearly, and only get XML creation options when there are eligible employees to include.
Original PR description
* = {,l10n_{be, ch, hk, ke}_}hr_payroll
Some UX improvment are done in this commit :
- Allow to delete a declaration
- To help the user to understand the flow, a gray stat button
"eligible employees" is added when a declaration doesn't have any eligible employees.
- The button "create xml" will be displayed only if a declaration
have at least one eligible employee.
- The title of the field lines_count is replaced by "Eligible
Employees".
task-3770878The Twitter/X comment tooltip now tells users they can see older replies on x.com. The comment links directly to the original post, making it easier to navigate and review the full conversation.
Original PR description
**Specifications:** Change the comment tooltip to 'See older replies on x.com,' where the comment is a hyperlink to the post. **After this PR:** The comment tooltip will be updated, allowing the user to easily navigate to the post and check older replies. Task-4146085
US payroll labels for the GROSS salary rule and category have been renamed from "Taxable Salary" to "Gross Pay." This makes payslip and payroll terminology clearer and better aligned with common business language.
Original PR description
The previously named 'Taxable Salary' for the salary rule 'GROSS' and the category 'GROSS' should be renamed in the US to 'Gross Pay'. Task: 4329661
Users can now print Mexican CFDI payment receipts directly from invoice payment records and bank transactions. This makes it easier to provide payment proof without navigating through extra steps or workarounds.
Original PR description
This commit add a new print button on the cfdi document view for payment, which allow the user to print the payment receipt directly from the invoice. Also, this print button allow the user to print a payment receipt from a bank transaction, as it was not possible before this commit. task-4161205
Spreadsheet charts now use a simpler shared runtime generation approach and support dataset design directly in Odoo charts. This reduces custom maintenance work while giving users a more consistent chart design experience.
Original PR description
[REF] spreadsheet: generate odoo chart runtime with helpers With the changes in o-spreadsheet, we can now generate the odoo chart runtimes with imported helpers, with way less odoo custom code. Task: 4286137 [IMP] spreadsheet: handle dataset design in odoo chart This commit add the handling of the dataset design in the odoo charts. It's only a few line of code in the chart classes, and it allows us to remove the custom design panel of odoo charts. Task: [4286137](https://www.odoo.com/odoo/2328/tasks/4286137)
Resolved issues and error corrections
Salary rules will no longer automatically expand when grouped by salary structure. This keeps the payroll configuration view less cluttered and easier to navigate for users managing salary rules.
Original PR description
This will remove the expanding of the group by salary structure of the salary rules.
This change makes an automated timesheet test wait correctly before checking overtime shown after hovering over a total cell. It helps keep quality checks stable and reduces false test failures without changing the user experience.
Original PR description
Before this commit, a test hoot in timesheet_grid failed because we don't wait enough time to see the overtime once the user hovers a total grid cell. This commit replaces `animationFrame()` by `advanceTime(10)` since there is a debounce on mouse over event. runbot-104322
Fixed an issue where renewed subscriptions could revert to a product's default unit of measure instead of keeping the unit selected on the original sales order line. This helps ensure renewal quantities and billing remain aligned with what the customer agreed to.
Original PR description
This commit fix default uom issue when user update uom on sol and renew their subscription it should take uom from SOL not default uom on product. Issue introduced by e98f1bc5433fb7f5f8831770744860e59286e9a7
The employee form now disables the Goals button when the employee's company is not selected in the company selector. This helps prevent users from opening or managing appraisal goals in the wrong company context.
Original PR description
Disable the goals on button on the employee form when the employee's company is not selected in the widget. task-4307014
Code cleanup and technical improvements
The General Ledger and Trial Balance reports have been reworked to use a dedicated reporting engine. This should make them easier to customize for more complex business reporting needs and improve performance when expanding all report details.
Original PR description
- GL and TB now use a custom engine, rather than a dynamic lines generator. This enables the reports to be extended using non-standard groupbys. - Great unfold-all performance using a custom_unfold_all_batch_data_ generator. taskid: 3748928
Miscellaneous changes
Problem ---------- Dropdown fields in the salary configurator (like company car, company bike or spouse income) can be set to null with the red cross Objective ---------- Set these fields non-nullable : remove the cross Solution ---------- Add the "is_required" field for benefits like in personal infos. Remove the not hidden condition for the personal info drop down. task-4188242 Forward-Port-Of: odoo/enterprise#72115
Original PR description
Problem ---------- Dropdown fields in the salary configurator (like company car, company bike or spouse income) can be set to null with the red cross Objective ---------- Set these fields non-nullable : remove the cross Solution ---------- Add the "is_required" field for benefits like in personal infos. Remove the not hidden condition for the personal info drop down. task-4188242 Forward-Port-Of: odoo/enterprise#72115
Let's say you have: - One statement line of 3000 USD / 1000 MXN (rate 1:3) - Three invoices of 1000 USD / 500MXN (rate 1:2) => If you reconcile in the bank widget, the statement entry amounts will be divided by 3 ending with 3 lines of 1000 USD and 333.33 MXN leaving a 0.01 unmatched. This can be an issue for the validation of payment EDI for localizations like Mexican one. This PR gives more flexibility to user when dealing when bank reconciliation in multiple currencies by allowing to
Original PR description
Let's say you have: - One statement line of 3000 USD / 1000 MXN (rate 1:3) - Three invoices of 1000 USD / 500MXN (rate 1:2) => If you reconcile in the bank widget, the statement entry amounts will be divided by 3 ending with 3 lines of 1000 USD and 333.33 MXN leaving a 0.01 unmatched. This can be an issue for the validation of payment EDI for localizations like Mexican one. This PR gives more flexibility to user when dealing when bank reconciliation in multiple currencies by allowing to edit amounts on generated exchange moves to allocate this small difference. opw-4128899 Forward-Port-Of: odoo/enterprise#72928 Forward-Port-Of: odoo/enterprise#72212
In case we are not in a multi currency environment the currency of the journal is falsy, so if there is not a currency set, we take the one from the company task: 4293986 Forward-Port-Of: odoo/enterprise#73006
Original PR description
In case we are not in a multi currency environment the currency of the journal is falsy, so if there is not a currency set, we take the one from the company task: 4293986 Forward-Port-Of: odoo/enterprise#73006
Issue ----- With helpdesk_fsm installed, uninstall helpdesk_fsm or any module that will trigger its uninstallation (e.g. helpdesk): Error: ``` in fields.py: fields = records.pool.field_computed[self] KeyError: 'helpdesk.team.fsm_project_id' ``` Cause ----- Issue since 1da1467115726263e5cdc50354b4413f8bb7ca7d and the addition of `use_fsm` as a dependency of `_compute_fsm_project_id` When we uninstall any helpdesk module, we set to False the associated fields of all helpdesk team
Original PR description
Issue ----- With helpdesk_fsm installed, uninstall helpdesk_fsm or any module that will trigger its uninstallation (e.g. helpdesk): Error: ``` in fields.py: fields = records.pool.field_computed[self]…
Issue ----- With helpdesk_fsm installed, uninstall helpdesk_fsm or any module that will trigger its uninstallation (e.g. helpdesk): Error: ``` in fields.py: fields = records.pool.field_computed[self] KeyError: 'helpdesk.team.fsm_project_id' ``` Cause ----- Issue since 1da1467115726263e5cdc50354b4413f8bb7ca7d and the addition of `use_fsm` as a dependency of `_compute_fsm_project_id` When we uninstall any helpdesk module, we set to False the associated fields of all helpdesk teams (mapped in `_get_field_modules`) for all uninstalled modules. https://github.com/odoo/enterprise/blob/9fba5f841c3c0710eb0cce00263bf914dac03dc6/helpdesk/models/ir_module.py#L13-L16 The change of `use_fsm` means `fsm_project_id` is marked as a field to be recomputed. This happens at some point during a `flush_all`, but after the field has been deleted in DB and a new registry has been loaded without that field. Change ----- Force a recomputation by flushing the records. opw-4338172 opw-4339801 Forward-Port-Of: odoo/enterprise#74255
To reproduce: ============= - with `documents_account` installed, go to documents - upload an xml file with an embedded pdf (you can find it on opw) - download the xml file from documents -> the downloaded file is PDF instead of xml Problem: ======== the controller route `documents_content` can be used for previewing and downloading the file, we use a parameter `download` to specify if we want to download the file or not, which should have `True` as default value, but it was changed
Original PR description
To reproduce: ============= - with `documents_account` installed, go to documents - upload an xml file with an embedded pdf (you can find it on opw) - download the xml file from documents -> the downloaded file is PDF instead of xml Problem: ======== the controller route `documents_content` can be used for previewing and downloading the file, we use a parameter `download` to specify if we want to download the file or not, which should have `True` as default value, but it was changed to `False` in the override in `documents_account` Solution: ========= set the default value of `documents_content` to `True` in the override to match the original value. opw-4329268 Forward-Port-Of: odoo/enterprise#74260
Steps to reproduce: ------------------- 1. Install Inventory app 2. Go in Inventory > Overview > Receipts > Remove all existing pickings (or filter so that you have no pickings appearing) 3. Go in the map view 4. A traceback occurs Fix: ------------------- The traceback is caused by a TypeError: Cannot read properties of undefined (reading 'warehouse_address_id'). We should ensure that there is at least one stock picking, an additional check is added for that purpose. version-18.0
Original PR description
Steps to reproduce: ------------------- 1. Install Inventory app 2. Go in Inventory > Overview > Receipts > Remove all existing pickings (or filter so that you have no pickings appearing) 3. Go in the map view 4. A traceback occurs Fix: ------------------- The traceback is caused by a TypeError: Cannot read properties of undefined (reading 'warehouse_address_id'). We should ensure that there is at least one stock picking, an additional check is added for that purpose. version-18.0 related-https://github.com/odoo/enterprise/pull/70099/commits/48401e9b083e5ecdf03b6863d4536a10f3896be7 Forward-Port-Of: odoo/enterprise#74356
Currently, when an operation is loaded in the barcode app, the frontend executes a request to get_barcode_data which will perform a read on all relevant barcode data from the backend to cache it on the frontend. The problem is, when loading the records of `stock.quant.packages`, it will attempt to read all empty packages with no location id. There are cases where these packages are way too many i.e. 500K and thus to read fields on these records, it would be terribly slow. As this is done upon op
Original PR description
Currently, when an operation is loaded in the barcode app, the frontend executes a request to get_barcode_data which will perform a read on all relevant barcode data from the backend to cache it on…
Currently, when an operation is loaded in the barcode app, the frontend executes a request to get_barcode_data which will perform a read on all relevant barcode data from the backend to cache it on the frontend. The problem is, when loading the records of `stock.quant.packages`, it will attempt to read all empty packages with no location id. There are cases where these packages are way too many i.e. 500K and thus to read fields on these records, it would be terribly slow. As this is done upon opening every operation in the barcode app, it's making the app feel sluggish. To workaround the problem, this PR introduces a config paramter `stock_barcode.usable_packages_limit` which will limit the total number of empty packages being read to feed the frontend cache. This gives the option to tradeoff between cache locality and network connection. Setting this limit to a smaller number will result in more rpc calls instead of suffering a slowdown on one big rpc call to load all data once. Benchmarks: This will totally depend on the configured limit. Lower limit would mean higher speedup and vice versa. As an example, setting a limit of 1000 cut down the loading of get_barcode_data from 13.87 s to 768 ms opw-4245980 Forward-Port-Of: odoo/enterprise#74096
### Steps to reproduce: - Install "l10n_cl" and switch to a Chilian company - Give another user the role "Bookkeeper" - Switch to this user - Select an invoice and try to generate a Credit note - This user has not the right to create `l10n_cl.account.invoice.reference` ### Cause: The record `l10n_cl.account.invoice.reference` can only be created by managers (Accountant). ### Solution: Change the access rights to give full access on the record to users with the role "Billing". opw
Original PR description
### Steps to reproduce: - Install "l10n_cl" and switch to a Chilian company - Give another user the role "Bookkeeper" - Switch to this user - Select an invoice and try to generate a Credit note - This user has not the right to create `l10n_cl.account.invoice.reference` ### Cause: The record `l10n_cl.account.invoice.reference` can only be created by managers (Accountant). ### Solution: Change the access rights to give full access on the record to users with the role "Billing". opw-4291981 Forward-Port-Of: odoo/enterprise#74387 Forward-Port-Of: odoo/enterprise#74015
**Steps:** - Install the hr_appraisal module - Open the employee appraisal form view ---- **Description of the issue/feature this PR addresses:** In the appraisal form view, when feedback is unpublished, the feedback section overlaps with the chatter area. ---- **Cause:** This issue arises due to unhandled overflow in cases where feedback is unpublished. ---- **Fix:** This PR resolves the overlap by applying CSS overflow hidden, which hides the overflowing content and prev
Original PR description
**Steps:** - Install the hr_appraisal module - Open the employee appraisal form view ---- **Description of the issue/feature this PR addresses:** In the appraisal form view, when feedback is unpublished, the feedback section overlaps with the chatter area. ---- **Cause:** This issue arises due to unhandled overflow in cases where feedback is unpublished. ---- **Fix:** This PR resolves the overlap by applying CSS overflow hidden, which hides the overflowing content and prevents overlap with the chatter section. task-4320069 Forward-Port-Of: odoo/enterprise#73645
Users have encountered invoice rejections from the ISS due to an incompatible document type when creating automatic invoices. This modification ensures that the correct document type is assigned based on the customer's taxpayer type, allowing the invoice to be approved by the ISS. task-4299210 Forward-Port-Of: odoo/enterprise#73945
Original PR description
Users have encountered invoice rejections from the ISS due to an incompatible document type when creating automatic invoices. This modification ensures that the correct document type is assigned based on the customer's taxpayer type, allowing the invoice to be approved by the ISS. task-4299210 Forward-Port-Of: odoo/enterprise#73945
Steps - Have a subscription product with two variants, each having one different possible pricing. - Go to the eCommerce page of this product and add to cart the second variant (the one which is not selected by default). ** The variant is added to the cart with the wrong plan ** Cause When only 1 pricing is possible for a combination, there's no select element on the page to select a plan and we fallback on the data attribute of the `add_to_cart` button. https://github.com/odoo/enterprise
Original PR description
Steps - Have a subscription product with two variants, each having one different possible pricing. - Go to the eCommerce page of this product and add to cart the second variant (the one which is not selected by default). ** The variant is added to the cart with the wrong plan ** Cause When only 1 pricing is possible for a combination, there's no select element on the page to select a plan and we fallback on the data attribute of the `add_to_cart` button. https://github.com/odoo/enterprise/blob/e9f74bce15e564695733577c181ce3f6d6d063a8/website_sale_subscription/static/src/js/website_sale_subscription.js#L15 However, this element is only rendered once for the initial product combination and never updated when changing to a new combination. https://github.com/odoo/enterprise/blob/e9f74bce15e564695733577c181ce3f6d6d063a8/website_sale_subscription/views/templates.xml#L90-L94 opw-4197528 Forward-Port-Of: odoo/enterprise#73639
In this commit, we replace the use of _legacyIsVisible by the visible option of hoot which refers to isVisible function of hoot-dom.js. This change implies changes in a few tours. For information, _legacyIsVisible accepts elements with a width of 0 or a length of 0 (which is a bit absurd) while isVisible does not, which implies the changes where we just add :not(:visible) to the trigger. The other main modifications implies tours where you have to hover the trigger to then see the element you w
Original PR description
In this commit, we replace the use of _legacyIsVisible by the visible option of hoot which refers to isVisible function of hoot-dom.js. This change implies changes in a few tours. For information, _legacyIsVisible accepts elements with a width of 0 or a length of 0 (which is a bit absurd) while isVisible does not, which implies the changes where we just add :not(:visible) to the trigger. The other main modifications implies tours where you have to hover the trigger to then see the element you want to click on. task~3974087 https://github.com/odoo/odoo/pull/187894 Forward-Port-Of: odoo/enterprise#74171
Backport of https://github.com/odoo/enterprise/pull/70278 task-4345648 Forward-Port-Of: odoo/enterprise#74158
Original PR description
Backport of https://github.com/odoo/enterprise/pull/70278 task-4345648 Forward-Port-Of: odoo/enterprise#74158
The medical assistance work entry should be behaving like the credit-time and should have the same DMFA code. Task: 4247631 Forward-Port-Of: odoo/enterprise#73938 Forward-Port-Of: odoo/enterprise#71872
Original PR description
The medical assistance work entry should be behaving like the credit-time and should have the same DMFA code. Task: 4247631 Forward-Port-Of: odoo/enterprise#73938 Forward-Port-Of: odoo/enterprise#71872
## 1st Issue **[FIX] l10n_es_reports: hanldle new expressions in mod349** In report line, if there is no related expression pointing at it, it is being created by shortcut syntaxes. Before this PR[^1], there were no expressions pointing at these report lines: 1. mod_349_supplies 2. mod_349_acquisitions 3. mod_349_triangular 4. mod_349_services_sold 5. mod_349_services_acquired 6. mod_349_supplies_without_taxes 7. mod_349_supplies_without_taxes_legal_representative 8. mod_349
Original PR description
## 1st Issue **[FIX] l10n_es_reports: hanldle new expressions in mod349** In report line, if there is no related expression pointing at it, it is being created by shortcut syntaxes. Before this…
## 1st Issue
**[FIX] l10n_es_reports: hanldle new expressions in mod349**
In report line, if there is no related expression pointing at it,
it is being created by shortcut syntaxes.
Before this PR[^1], there were no expressions pointing at
these report lines:
1. mod_349_supplies
2. mod_349_acquisitions
3. mod_349_triangular
4. mod_349_services_sold
5. mod_349_services_acquired
6. mod_349_supplies_without_taxes
7. mod_349_supplies_without_taxes_legal_representative
8. mod_349_supplies_refunds
9. mod_349_acquisitions_refunds
10. mod_349_triangular_refunds
11. mod_349_services_sold_refunds
12. mod_349_services_acquired_refunds
13. mod_349_supplies_without_taxes_refunds
14. mod_349_supplies_without_taxes_legal_representative_refunds
After that PR, all of the report lines now include expressions with `engine=custom` and `label=balance`. For databases on version >= `16.0` before the PR, these report lines already have expressions without an IMD. However, during an upgrade, the addition of new expressions with an IMD triggers the creation of duplicates, resulting in a UNIQUE constraint violation on `(report_line_id, balance)`.
Steps to reproduce the issue:
1. Install `l10n_es_reports` in version `16.0` before that PR
2. Try to upgrade it to `17.0` after that PR
You will get error similar to this:
```
2024-10-30 13:56:05,428 3470006 WARNING test_l10n_es_report odoo.modules.loading: Transient module states were reset
2024-10-30 13:56:05,430 3470006 ERROR test_l10n_es_report odoo.modules.registry: Failed to load registry
Traceback (most recent call last):
File "/home/odoo/src/odoo/17.0/odoo/tools/convert.py", line 556, in _tag_root
f(rec)
File "/home/odoo/src/odoo/17.0/odoo/tools/convert.py", line 462, in _tag_record
self._tag_record(child_rec, extra_vals={inverse_name: record.id})
File "/home/odoo/src/odoo/17.0/odoo/tools/convert.py", line 462, in _tag_record
self._tag_record(child_rec, extra_vals={inverse_name: record.id})
File "/home/odoo/src/odoo/17.0/odoo/tools/convert.py", line 462, in _tag_record
self._tag_record(child_rec, extra_vals={inverse_name: record.id})
File "/home/odoo/src/odoo/17.0/odoo/tools/convert.py", line 456, in _tag_record
record = model._load_records([data], self.mode == 'update')
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 5088, in _load_records
records = self._load_records_create([data['values'] for data in to_create])
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 4999, in _load_records_create
return self.create(values)
File "<decorator-gen-216>", line 2, in create
File "/home/odoo/src/odoo/17.0/odoo/api.py", line 415, in _model_create_multi
return create(self, arg)
File "/home/odoo/src/odoo/17.0/addons/account/models/account_report.py", line 620, in create
result = super().create(vals_list)
File "<decorator-gen-123>", line 2, in create
File "/home/odoo/src/odoo/17.0/odoo/api.py", line 415, in _model_create_multi
return create(self, arg)
File "/home/odoo/src/upgrade-util/src/util/orm.py", line 244, in wrapper
return f(*args, **kwargs)
File "/home/odoo/src/upgrade/migrations/base/0.0.0/pre-models-match_uniq.py", line 25, in create
return super().create(vals_list)
File "<decorator-gen-12>", line 2, in create
File "/home/odoo/src/odoo/17.0/odoo/api.py", line 415, in _model_create_multi
return create(self, arg)
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 4627, in create
records = self._create(data_list)
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 4815, in _create
cr.execute(SQL(
File "/home/odoo/src/odoo/17.0/odoo/sql_db.py", line 332, in execute
res = self._obj.execute(query, params)
psycopg2.errors.UniqueViolation: duplicate key value violates unique constraint "account_report_expression_line_label_uniq"
DETAIL: Key (report_line_id, label)=(480, balance) already exists.
```
## 2nd Issue
**[FIX] l10n_es_reports: fix subformulas' of expressions in mod349**
In this PR[^1], the expressions `mod_349_statistics_invoices_total_amount_balance`
and `mod_349_statistics_refunds_total_amount_balance` was modified so the engine of
both of them changed from `domain` to `aggregation`. Also the subformula from both
of them were removed. But during the upgrade the engines are being modified but
the subformulas kept same.
Expected condition is having NULL on both of the expressions' subformula.
Because of they are not being changed during upgrade, they end up being `sum`
at the end.
When we try to open the `Tax report mod 349` after upgrade, the new engine and old
subformula are conflicting and facing issue here[^2].
Steps to reproduce
1. Install `l10n_es_reports` before the PR above in version `16.0`
2. Upgrade the db to `17.0` by solving the 1st issue of this PR
3. Try to open `Tax report mod 349`
you will see error like this:
```
.....
result = getattr(recs, name)(*args, **kwargs)
File "/home/odoo/src/enterprise/saas-17.4/account_reports/models/account_report.py", line 4869, in get_report_information
all_column_groups_expression_totals = self._compute_expression_totals_for_each_column_group(self.line_ids.expression_ids, options, warnings=warnings)
File "/home/odoo/src/enterprise/saas-17.4/account_reports/models/account_report.py", line 2826, in _compute_expression_totals_for_each_column_group
current_group_expression_totals = self._compute_expression_totals_for_single_column_group(
File "/home/odoo/src/enterprise/saas-17.4/account_reports/models/account_report.py", line 3011, in _compute_expression_totals_for_single_column_group
aggregation_formula_results = self._compute_totals_no_batch_aggregation(column_group_options, aggregation_formulas_dict, column_group_expression_totals, cross_report_expr_totals_by_scope)
File "/home/odoo/src/enterprise/saas-17.4/account_reports/models/account_report.py", line 3208, in _compute_totals_no_batch_aggregation
expression_result = self._aggregation_apply_bounds(column_group_options, expression.subformula, formula_result)
File "/home/odoo/src/enterprise/saas-17.4/account_reports/models/account_report.py", line 3266, in _aggregation_apply_bounds
group_values = match.groupdict()
AttributeError: 'NoneType' object has no attribute 'groupdict'
```
[^1]: https://github.com/odoo/enterprise/pull/65074
[^2]: https://github.com/odoo/enterprise/blob/3a7a46ff2404a5c4ca1c0ad676529fc17d9a2234/account_reports/models/account_report.py#L3455-L3461
Forward-Port-Of: odoo/enterprise#74328
Forward-Port-Of: odoo/enterprise#73082The existing FedEx implementation used the old FedEx SOAP API which is no longer in development. This new version makes use of the current REST APIs available at developer.fedex.com task-3759206 Forward-Port-Of: odoo/enterprise#74180 Forward-Port-Of: odoo/enterprise#73579
Original PR description
The existing FedEx implementation used the old FedEx SOAP API which is no longer in development. This new version makes use of the current REST APIs available at developer.fedex.com task-3759206 Forward-Port-Of: odoo/enterprise#74180 Forward-Port-Of: odoo/enterprise#73579
An error will raise when users try to open a locked SO where taxes are automatically computed Set up Avatax on the current company In Settings > Sales > Quotations& Orders active 'Lock Confirmed Sales' Create a SO with fiscal position 'Automatic Tax Mapping (AvaTax)' Add a partner and product having avatax category defined Compute taxes Confirm order, it will be automatically locked - With only sale_external_tax installed: Click "Preview" - With sale_subscription_external_tax installe
Original PR description
An error will raise when users try to open a locked SO where taxes are automatically computed Set up Avatax on the current company In Settings > Sales > Quotations& Orders active 'Lock Confirmed Sales' Create a SO with fiscal position 'Automatic Tax Mapping (AvaTax)' Add a partner and product having avatax category defined Compute taxes Confirm order, it will be automatically locked - With only sale_external_tax installed: Click "Preview" - With sale_subscription_external_tax installed: Click "Confirm" Issue: Action will be blocked by User Error ``` It is forbidden to modify the following fields in a locked order ``` This occurs because the system attempt to recompute external taxes after confirming the sale order, which has been locked, so the action will be blocked opw-4261396 Forward-Port-Of: odoo/enterprise#74169
Currently, the accounting firm's VAT is used for the CodaBox connection but sometimes, accounting firms need to use a different VAT as their contract number. This adds a system parameter that if filled, is used instead of the firm's VAT. task-4335294 Forward-Port-Of: odoo/enterprise#74368 Forward-Port-Of: odoo/enterprise#73883
Original PR description
Currently, the accounting firm's VAT is used for the CodaBox connection but sometimes, accounting firms need to use a different VAT as their contract number. This adds a system parameter that if filled, is used instead of the firm's VAT. task-4335294 Forward-Port-Of: odoo/enterprise#74368 Forward-Port-Of: odoo/enterprise#73883
Users require the name of the invoice report to be the same as the xml. task-4284482 Forward-Port-Of: odoo/enterprise#73335
Original PR description
Users require the name of the invoice report to be the same as the xml. task-4284482 Forward-Port-Of: odoo/enterprise#73335
…loyee doc How to reproduce: - Install documents_hr - Activate "Human resources" Centralize your employees' documents - Open "Abigail Peterson" employee form - Click on the "Documents" stat button - Upload a document - Click on the "Share" button "Abigail Peterson" is set as viewer of the document but mustn't. To solve the problem, we avoid to set automatically the employee as viewer of a document uploaded in the Document app. But if a file is uploaded in the chatter of the employ
Original PR description
…loyee doc How to reproduce: - Install documents_hr - Activate "Human resources" Centralize your employees' documents - Open "Abigail Peterson" employee form - Click on the "Documents" stat button - Upload a document - Click on the "Share" button "Abigail Peterson" is set as viewer of the document but mustn't. To solve the problem, we avoid to set automatically the employee as viewer of a document uploaded in the Document app. But if a file is uploaded in the chatter of the employee record, the employee will be viewer of the document automatically created when the centralize employee documents option is enabled. This exception is introduced to cover the use-case of uploading a C4 of an employee in the document app that the employee must not have access to but that must be linked to the employee record. Task-4212817 Forward-Port-Of: odoo/enterprise#70717
All the Colorado and Washington taxes rules should be above the Post Tax Deductions and should all be of the category Taxes. Task: 4329645 Forward-Port-Of: odoo/enterprise#74009 Forward-Port-Of: odoo/enterprise#73762
Original PR description
All the Colorado and Washington taxes rules should be above the Post Tax Deductions and should all be of the category Taxes. Task: 4329645 Forward-Port-Of: odoo/enterprise#74009 Forward-Port-Of: odoo/enterprise#73762
Steps to reproduce: - List/grid view - Click 'New' - Change project field (1 or more times) - Switch to kanban view => Timer started and many records created Source of the bug: - due to this condition 'record.isNew && record.data.project_id', introduced in commit 576c0eac3b8431a5080b6383ae256a0699ba7c7d, each time project_id field is changed, action_start_new_timesheet_timer is called to start the timer and create a new record. Fix: - Start the timer
Original PR description
Steps to reproduce:
- List/grid view
- Click 'New'
- Change project field (1 or more times)
- Switch to kanban view
=> Timer started and many records created
Source of the bug:
- due to this condition 'record.isNew && record.data.project_id', introduced in commit 576c0eac3b8431a5080b6383ae256a0699ba7c7d,
each time project_id field is changed, action_start_new_timesheet_timer is called to start the timer and create a new record.
Fix:
- Start the timer only if new is called from the header timer by checking is_timer_running for that record.
task-4210112
Forward-Port-Of: odoo/enterprise#70752To ensure that products created from sale order lines correctly use the uom set on the line, a new `default_uom_id` has been added to the field `context`. This commit makes sure the same change is applied in rental & subscriptions, as both modules inherit from the base `sale` view and overwrite the `context` attribute to add their own keys. opw-4316426 Forward-Port-Of: odoo/enterprise#73800
Original PR description
To ensure that products created from sale order lines correctly use the uom set on the line, a new `default_uom_id` has been added to the field `context`. This commit makes sure the same change is applied in rental & subscriptions, as both modules inherit from the base `sale` view and overwrite the `context` attribute to add their own keys. opw-4316426 Forward-Port-Of: odoo/enterprise#73800
Change the checkbox label of stacked charts from `stacked linechart` to `stacked line chart` in the chart configuration panel. Same for bar charts. Also removed padding between `stacked` and `cumulative` checkboxes in the line chart panel. Task: [4290275](https://www.odoo.com/web#id=4290275&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#72867
Original PR description
Change the checkbox label of stacked charts from `stacked linechart` to `stacked line chart` in the chart configuration panel. Same for bar charts. Also removed padding between `stacked` and `cumulative` checkboxes in the line chart panel. Task: [4290275](https://www.odoo.com/web#id=4290275&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#72867