Tuesday, April 19, 2022
46 changes · master
Enhancements to existing features
This change updates many Odoo screen and widget templates to the newer Owl 2 format. It helps keep the user interface framework current and prevents older templates from becoming unsupported in future releases.
Original PR description
From now on, Owl will only accept owl 2 templates. Old templates will be considered old, and should be retired from active service. Note that this commit uses the simple "2" value, but you can use a more interesting expression. For example, owl="1+1" 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
Quiz takers will no longer see an awkward message saying they earned 0 XP after completing a quiz. When no XP is awarded, the site now shows a simple completion message, making the experience clearer and more polished.
Original PR description
Purpose ======= Avoid showing "Amazing! You earned 0xp". Task-2790997
Mail notifications now use a clearer internal structure for grouping and marking messages as read. This helps make notification behavior more reliable and easier to maintain, with minimal direct change for users.
Original PR description
Task-2579306
The mail app now has a cleaner way to manage message thread previews and mark them as read. This supports a smoother inbox experience and helps keep the underlying messaging interface easier to maintain.
Original PR description
Task-2579306
The mail app now has a cleaner way to manage preview entries for conversations that need attention, including marking them as read. This improves consistency in how unread items are tracked and prepared for display, supporting a smoother messaging experience.
Original PR description
Task-2579306
The mail app now handles focus changes within conversation views more consistently, including when chat windows are involved. This should make navigating and interacting with messages feel smoother and more reliable for users.
Original PR description
Task-2579306
The mail app now has a reusable autocomplete input view with placeholder support. This makes search and selection fields in chat and messaging areas more consistent and easier to understand for users.
Original PR description
Task-2817076
Mail-related interaction handling was moved into shared mail models instead of being kept in individual screen components. This is an internal maintainability improvement that should make future mail changes easier and more reliable without changing day-to-day user workflows.
Original PR description
This commit moves some handler methods from components to models, as a step closer to having most of business code in models. Having business code in models is desirable so that the code is much more maintainable: easier to change and more robust code. Task-2579306
The mail app's autocomplete input has been reorganized so more of its behavior is handled in the shared data model rather than the screen component. This internal improvement makes the messaging code easier to maintain and evolve, with little expected change for end users.
Original PR description
This commit moves some business logic from component AutocompleteInput To model AutocompleteInputView, as a step to move further to having essentially all business code in models. Having code in models is desirable to have very maintainable code, thanks to robust and declarative code with an ORM-like architecture. Task-2817076
Resolved issues and error corrections
Project pages now show recorded timesheet hours in the correct hour or day format. This helps users review project time totals accurately without being misled by incorrect conversions.
Original PR description
before this commit, the recorded hours are not correctly computed on the project.project form view so this commit fixes the issue by correctly computing recorded hours so that the project.project form view contains the correct recorded hour task-2788878
Code cleanup and technical improvements
This update simplifies the styling behind message author prefixes in Odoo's Mail app as part of a broader interface cleanup. It should help keep the messaging interface easier to maintain while preserving the existing user experience.
Original PR description
Part of the overall v16 SCSS optimization/restyle, task-2704984 task-2826482 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Miscellaneous changes
Steps to reproduce: - Create an invoice: select a product; set the price to 23.00$; change the currency to €; confirm the invoice. - Create a receiving payment from the same customer: select the $ currency and put 100$ - Go back to the invoice and select the payment/reconcile the invoice and the payment. Issue: Residual of 0.01€ to pay on the invoice. Cause: (conversion rate: 1.5289$/1€) 1) When the currency is changed or the price assigned, we convert the price EXCL. and then we c
Original PR description
Steps to reproduce: - Create an invoice: select a product; set the price to 23.00$; change the currency to €; confirm the invoice. - Create a receiving payment from the same customer: select the $…
Steps to reproduce:
- Create an invoice: select a product; set the price to 23.00$; change the currency to €; confirm the invoice.
- Create a receiving payment from the same customer: select the $ currency and put 100$
- Go back to the invoice and select the payment/reconcile the invoice and the payment.
Issue:
Residual of 0.01€ to pay on the invoice.
Cause:
(conversion rate: 1.5289$/1€)
1) When the currency is changed or the price assigned, we convert the price EXCL. and then we convert the tax amount.
https://github.com/odoo/odoo/blob/582b43bdf46c485be8219e1cbeb60dbed033f1e7/addons/account/models/account_move.py#L3953-L3954
In our example:
- price EXCL.: 23€ * 1.5289 = 35.1647$
price._convert() -> 35.16$
- Tax amount: 3.45€ * 1.5289 = 5.274705$
tax_amount._convert() -> 5.27$
Real Sum = 40,439405$
Sum returned after convertion = 40.43$ != 40.44$
2) To compute what is left to be paid, we use the converted amount and convert it back to the currency of the invoice. Double conversion, double mistake.
https://github.com/odoo/odoo/blob/582b43bdf46c485be8219e1cbeb60dbed033f1e7/addons/account/models/account_move.py#L4873-L4878
In our example:
3) We convert back the 40.43$ to know the residual:
- 40.43$ / 1.5289 = 26.443848519€ => rounded = 26.44€ != 26.45
We then compute the `debit_amount_residual_currency` (26.45€) by substracting from it the `min_debit_amount_residual_currency`(26.44€).
https://github.com/odoo/odoo/blob/582b43bdf46c485be8219e1cbeb60dbed033f1e7/addons/account/models/account_move.py#L4886-L4887
Which lefts us with a `debit_amount_residual_currency` 0.01€ (0.0099999..801).
https://github.com/odoo/odoo/blob/582b43bdf46c485be8219e1cbeb60dbed033f1e7/addons/account/models/account_move.py#L1421-L1437
ticket: 2765223
--
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#88166
Forward-Port-Of: odoo/odoo#87963The mobile mailbox selection screen in Discuss was simplified by replacing custom styling with shared interface classes. This reduces maintenance effort and includes a small visual correction so selected buttons no longer show an unintended outline.
Original PR description
Current SCSS is replaced with global Bootstrap classes, in order to reduce code lines and to increase performance. Task-2821469 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The mail message action list styling was simplified as part of a broader visual cleanup for Odoo 16. This helps keep the interface easier to maintain and supports a more consistent user experience without changing core business workflows.
Original PR description
Part of the overall v16 SCSS optimization/restyle, task-2704984 task-2826366 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
[VIDEO](https://drive.google.com/file/d/1Y2NxmGZvVJ_s7MBNGIbkSNk5B4qbbGEH/view) ## Description of the issue/feature this PR addresses: _get_payment_method_codes_to_exclude is not being used on _compute_payment_method_line_id ## Current behavior before PR: 1. Create a bank journal with only with incoming payment method "SEPA Direct Debit" 2. Create a customer payment: choose journal = the new bank 3. Set "internal transfer = True" 4. change payment_type to "send" and then to "receive"
Original PR description
[VIDEO](https://drive.google.com/file/d/1Y2NxmGZvVJ_s7MBNGIbkSNk5B4qbbGEH/view) ## Description of the issue/feature this PR addresses: _get_payment_method_codes_to_exclude is not being used on…
[VIDEO](https://drive.google.com/file/d/1Y2NxmGZvVJ_s7MBNGIbkSNk5B4qbbGEH/view) ## Description of the issue/feature this PR addresses: _get_payment_method_codes_to_exclude is not being used on _compute_payment_method_line_id ## Current behavior before PR: 1. Create a bank journal with only with incoming payment method "SEPA Direct Debit" 2. Create a customer payment: choose journal = the new bank 3. Set "internal transfer = True" 4. change payment_type to "send" and then to "receive" (to force _compute_payment_method_line_fields recomputation) 5. "SEPA Direct Debit" is selected on "Payment Method" but it's not a selectable value (try to choose again manually) ## Desired behavior after PR is merged: * Payment Method should be empty ## Changes on this PR 1. _get_payment_method_codes_to_exclude was not considered on _compute_payment_method_line_id 2. to avoid duplicating code on _compute_payment_method_line_id we can directly call available_payment_method_line_ids 3. to avoid re-defining dependencies (and make inheritance easier) we can use 'available_payment_method_line_ids' on _compute_payment_method_line_id 4. fix docstring, _compute_payment_method_fields does not exists anymore, it's called _compute_payment_method_line_fields 5. fix using "self" instead of pay when calling _get_payment_method_codes_to_exclude ## FIX on enterprise Another fix proposed on enterprise: https://github.com/odoo/enterprise/pull/26127 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#88444
Step to reproduce : -set your company country in Italy -install accounting -install contacts -create a new individual contact -set the country address of this contact to Italy Expected Behavior: No problem Current behavior: Error message in function _l10n_it_normalize_codice_fiscale Explanation: In this fix commit https://github.com/odoo/odoo/commit/702c01661f255fe9ebbfc04c90b2cd0fa194d1e8 the case where vat is unset but the country is Italy is not rejected anymore and a
Original PR description
Step to reproduce : -set your company country in Italy -install accounting -install contacts -create a new individual contact -set the country address of this contact to Italy Expected Behavior: No problem Current behavior: Error message in function _l10n_it_normalize_codice_fiscale Explanation: In this fix commit https://github.com/odoo/odoo/commit/702c01661f255fe9ebbfc04c90b2cd0fa194d1e8 the case where vat is unset but the country is Italy is not rejected anymore and a unset value is passed in _l10n_it_normalize_codice_fiscale opw-2822259 Forward-Port-Of: odoo/odoo#88790
Steps to reproduce the bug: - Go to inventory > Reporting > Inventory report - Click on “Inventory At Date” > Select a date > Confirm Problem: The date is not displayed in the breadcrumb, like in inventory valuation Before the fix:  After:  opw-27
Original PR description
Steps to reproduce the bug: - Go to inventory > Reporting > Inventory report - Click on “Inventory At Date” > Select a date > Confirm Problem: The date is not displayed in the breadcrumb, like in inventory valuation Before the fix:  After:  opw-2791566 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#87901
**Steps to reproduce the bug:** - Create the workcenter_1: - Time Efficiency: 100% - Capacity: 2 - Setup Time: 1 - Cleanup Time: 1 - Create the workcenter_2: - Time Efficiency: 100% - Capacity: 4 - Setup Time: 10 - Cleanup Time: 5 - Alternative Work centers: **workcenter_1** - Create a storable product “**P1**” with BOM: - Add any product as component - Add operation: - Duration: 60 - Work center: Workcenter_2 -
Original PR description
**Steps to reproduce the bug:** - Create the workcenter_1: - Time Efficiency: 100% - Capacity: 2 - Setup Time: 1 - Cleanup Time: 1 - Create the workcenter_2: - Time Efficiency: 100% - Capacity: 4 -…
**Steps to reproduce the bug:**
- Create the workcenter_1:
- Time Efficiency: 100%
- Capacity: 2
- Setup Time: 1
- Cleanup Time: 1
- Create the workcenter_2:
- Time Efficiency: 100%
- Capacity: 4
- Setup Time: 10
- Cleanup Time: 5
- Alternative Work centers: **workcenter_1**
- Create a storable product “**P1**” with BOM:
- Add any product as component
- Add operation:
- Duration: 60
- Work center: Workcenter_2
- Create a MO:
- select “P1” as Product
- Qty to produce: 4
- Confirm and Plan
**Problem:**
The workcenter_1 is chosen while work_center_2 is faster it can manufacture the 4 units at the same time
while workcenter_1 must do two cycles
As the Time Efficiency = 100%, so:
_Total duration_ = (Setup Time + Cleanup Time) + duration_by_unit * nb_cycle
_Work_center_1_ = (1 + 1) + 60 * 2 = 122
_Work_center_2_ = (10 + 5) + 60 = 75
The calculation is bad because we use the number of cycles necessary for the work_center defined in the BOM
in the calculation for the alternative work center
opw-2821749
--
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#88917
Forward-Port-Of: odoo/odoo#88808If the user triggers several orderpoints one by one, some purchase order lines may be merged while they shouldn't. To reproduce the issue: 1. In Settings, enable "Storage Locations" 2. Create a product P: - Type: Storable - With a vendor V - Route: Buy 3. Add two reordering rules to P: - Min=Max=1 at WH/Stock - Min=Max=2 at WH/Stock/Shelf 1 4. Inventory > Operations > Replenishment, trigger the orderpoints of P (one by one) 5. Open the generated PO Error: Th
Original PR description
If the user triggers several orderpoints one by one, some purchase order lines may be merged while they shouldn't. To reproduce the issue: 1. In Settings, enable "Storage Locations" 2. Create a…
If the user triggers several orderpoints one by one, some purchase order
lines may be merged while they shouldn't.
To reproduce the issue:
1. In Settings, enable "Storage Locations"
2. Create a product P:
- Type: Storable
- With a vendor V
- Route: Buy
3. Add two reordering rules to P:
- Min=Max=1 at WH/Stock
- Min=Max=2 at WH/Stock/Shelf 1
4. Inventory > Operations > Replenishment, trigger the orderpoints of P
(one by one)
5. Open the generated PO
Error: There is only one line with 3 x P, there should be two lines (1 x
P + 2 x P, one for each orderpoint). If the user confirms the PO and
receives the products, the destination location will be Stock or Shelf 1
(depending on the last orderpoint triggered)
Running the orderpoint leads to `_run_buy`, where we try to find an
existing PO line so we can update it (else we will create a new one):
https://github.com/odoo/odoo/blob/5b34adb51eda978aa9ef1a434ab77257d73b9594/addons/purchase_stock/models/stock_rule.py#L122-L129
Here is the issue: the filter in `_find_candidate` contains an `or True`
that makes a whole condition useless.
Considering [1], the condition on `move_dest_ids` is only relevant when
an orderpoint is defined. Therefore, we can remove the `or True` and
improve the condition
[1] 63fffa0beeb83f1cb857929959e72ff72a481304
OPW-2720868
Forward-Port-Of: odoo/odoo#88870In some cases, due to rounding errors, the state of a MO is incorrect OPW-2753598 Forward-Port-Of: odoo/odoo#88574 Forward-Port-Of: odoo/odoo#88391
Original PR description
In some cases, due to rounding errors, the state of a MO is incorrect OPW-2753598 Forward-Port-Of: odoo/odoo#88574 Forward-Port-Of: odoo/odoo#88391
Fixes #79460. Forward-Port-Of: odoo/odoo#88880 Forward-Port-Of: odoo/odoo#85254
Original PR description
Fixes #79460. Forward-Port-Of: odoo/odoo#88880 Forward-Port-Of: odoo/odoo#85254
Steps to repoduce: - Accounting > Customers > Invoices: select several invoices to send - Action > Send & Print > (deselect Print) > Send & Print Issue: - It sends only one invoice per company Cause: - the mail_compose_message sets the status of an email as `cancel` when a mail has already been sent to a specific adress mail in the batch Solution: - If the use of mass mailing is document-based (e.g.: sending multiple invoices) it will allow to send multiple emails to the same ad
Original PR description
Steps to repoduce: - Accounting > Customers > Invoices: select several invoices to send - Action > Send & Print > (deselect Print) > Send & Print Issue: - It sends only one invoice per company Cause: - the mail_compose_message sets the status of an email as `cancel` when a mail has already been sent to a specific adress mail in the batch Solution: - If the use of mass mailing is document-based (e.g.: sending multiple invoices) it will allow to send multiple emails to the same adress opw-2775121 Forward-Port-Of: odoo/odoo#88637 Forward-Port-Of: odoo/odoo#88125
### Description of the issue/feature this PR addresses: In res.partner the Fiscal Information Tab content was broken than to a bad adding of the Gross Income fields. This PR solves the problem. ### Current behavior before PR:  ### Desired behavior after PR is merged:  ### 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#88615
Steps to reproduce: - Go to discuss app and click on `Start a meeting` - Disconnect from the meeting (red phone button) - On the left sidebar, hover the channel and click on the cross to leave the channel, then confirm. Issue: Access error. Solution: Use `_action_remove_members` method to remove member from the channel; it is done as sudo to avoid ACLs issues with channel partners. opw-2820449 Forward-Port-Of: odoo/odoo#88820
Original PR description
Steps to reproduce:
- Go to discuss app and click on `Start a meeting`
- Disconnect from the meeting (red phone button)
- On the left sidebar, hover the channel and click on the cross to
leave the channel, then confirm.
Issue:
Access error.
Solution:
Use `_action_remove_members` method to remove member from the channel;
it is done as sudo to avoid ACLs issues with channel partners.
opw-2820449
Forward-Port-Of: odoo/odoo#88820[FIX] pos_loyalty: remove enterprise tag in loyalty option -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#88640
Original PR description
[FIX] pos_loyalty: remove enterprise tag in loyalty option -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#88640
**Description of the issue/feature this PR addresses:** Splits `_onDoRefund` into smaller function, to make the refund process overrideable. **Current behavior before PR:** It's not possible to override the way refunds are created. For example, adding extra information into the generated refund order lines. -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#88976 Forward-Port-Of: odoo/odoo#85436
Original PR description
**Description of the issue/feature this PR addresses:** Splits `_onDoRefund` into smaller function, to make the refund process overrideable. **Current behavior before PR:** It's not possible to override the way refunds are created. For example, adding extra information into the generated refund order lines. -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#88976 Forward-Port-Of: odoo/odoo#85436
Steps to reproduce: 1. pos.config is in company1 2. create a partner with company = company2 3. change pos.config to limited partners loading 4. open the pos ui (to call load_pos_data) old behavior: access error now: method is called without error -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#88783
Original PR description
Steps to reproduce: 1. pos.config is in company1 2. create a partner with company = company2 3. change pos.config to limited partners loading 4. open the pos ui (to call load_pos_data) old behavior: access error now: method is called without error -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#88783
In some cases, it is not possible to produce a tracked product that has been used as a component of another product. To reproduce the issue: 1. Create three products A, B, C: - A storable - B storable and tracked by lot - C consumable 2. Update on-hand qty of B - 10 x lot L01 - 5 x lot L02 3. Create two bills of materials - Product: A - Components: 1 x B - Product: B - Components: 1 x C 4. Produce 15 x A (MO01) - Note: it should u
Original PR description
In some cases, it is not possible to produce a tracked product that has been used as a component of another product. To reproduce the issue: 1. Create three products A, B, C: - A storable - B…
In some cases, it is not possible to produce a tracked product that has
been used as a component of another product.
To reproduce the issue:
1. Create three products A, B, C:
- A storable
- B storable and tracked by lot
- C consumable
2. Update on-hand qty of B
- 10 x lot L01
- 5 x lot L02
3. Create two bills of materials
- Product: A
- Components: 1 x B
- Product: B
- Components: 1 x C
4. Produce 15 x A (MO01)
- Note: it should use 10 L01 and 5 L02
5. Produce 15 x B with lot L03 (MO02)
Error: When marking MO02 as done, a user error is displayed: "Cannot set
the done quantity from this stock move, work directly with the move
lines." The user should be able to mark the MO as done.
When confirming MO02, it confirms the associated SMs. Since the
conditions are respected, we then try to assign both consumed and
finished moves. This is the issue, we should not try to assign the
finished move. Indeed, because of this, at some point it leads to
`_update_reserved_quantity`:
https://github.com/odoo/odoo/blob/9e5f76a759640e1072560a60c6e3d608296d7feb/addons/stock/models/stock_move.py#L1355-L1360
We try to reserve some quants in the production location. Thanks to step
4, two quants (L01 and L02) are available. As a result, two SMLs are
created. Lastly, when marking MO02 as done, since the user has not
defined the done quantity on each SML, the error is raised.
We should prevent the finished move to be assigned.
OPW-2752436
Forward-Port-Of: odoo/odoo#88944
Forward-Port-Of: odoo/odoo#88668Description of the issue/feature this PR addresses: Current behavior before PR: - If a user has Project/User group but does not have any Timesheets group or Analytic Accounting group, he cannot access the Project app (a security error message appears). - The problem is some of `project.project` model's fields is computing based on `account.analytic.line` model, which the Project/User group does not have the right to read it. Desired behavior after PR is merged: - This PR adds corres
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: - If a user has Project/User group but does not have any Timesheets group or Analytic Accounting group, he cannot access the Project app (a security error message appears). - The problem is some of `project.project` model's fields is computing based on `account.analytic.line` model, which the Project/User group does not have the right to read it. Desired behavior after PR is merged: - This PR adds corresponding groups to these computed fields, or changing the computing method to make sure there is no error if project user reads on the 'project.project' model. -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#87235 Forward-Port-Of: odoo/odoo#86622
Before this commit, the settings recovered from the localStorage were incorrectly loaded to the model fields. This commit fixes this issue. taskId-2823292 Forward-Port-Of: odoo/odoo#88772 Forward-Port-Of: odoo/odoo#88631
Original PR description
Before this commit, the settings recovered from the localStorage were incorrectly loaded to the model fields. This commit fixes this issue. taskId-2823292 Forward-Port-Of: odoo/odoo#88772 Forward-Port-Of: odoo/odoo#88631
This commit includes a fix in the way Owl schedule renderings: https://github.com/odoo/owl/pull/1176/commits 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#89014
Original PR description
This commit includes a fix in the way Owl schedule renderings: https://github.com/odoo/owl/pull/1176/commits 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#89014
Follow up of https://github.com/odoo/odoo/commit/2c9da836e5829b8a3d3a36afbeebfdd78f36d542/#diff-f884c81b21062d0a63935bbdbc9c7cf52dc69a6a29ea4dce13130196435b0591R53 Value was permanently undefined: writing value on itself rather than from env. Forward-Port-Of: odoo/odoo#88965 Forward-Port-Of: odoo/odoo#88940
Original PR description
Follow up of https://github.com/odoo/odoo/commit/2c9da836e5829b8a3d3a36afbeebfdd78f36d542/#diff-f884c81b21062d0a63935bbdbc9c7cf52dc69a6a29ea4dce13130196435b0591R53 Value was permanently undefined: writing value on itself rather than from env. Forward-Port-Of: odoo/odoo#88965 Forward-Port-Of: odoo/odoo#88940
Task-2823317 Forward-Port-Of: odoo/odoo#88645
Original PR description
Task-2823317 Forward-Port-Of: odoo/odoo#88645
Description of the issue/feature this PR addresses: Current behavior before PR: Currently, when accessing a URL with an invalid sorting value, the system will raise an error with a specific message, which feels unfriendly to the user as well as saves unnecessary logs in the log file. This becomes serious if someone spams with this url Example: Valid url: https://www.odoo.com/forum/help-1?sorting=relevancy+desc Invalid url: https://www.odoo.com/forum/help-1?sorting=relevancy%2Bdesc
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Currently, when accessing a URL with an invalid sorting value, the system will raise an error with a specific message, which feels unfriendly to the user as well as saves unnecessary logs in the log file. This becomes serious if someone spams with this url Example: Valid url: https://www.odoo.com/forum/help-1?sorting=relevancy+desc Invalid url: https://www.odoo.com/forum/help-1?sorting=relevancy%2Bdesc Desired behavior after PR is merged: Do not sort a page if the sorting value is not valid -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#88847 Forward-Port-Of: odoo/odoo#88209
Due to a python limitation we may have issues if reply-to of a sent email contains more than 78 characters. Even if this is technically ok with the RFC python seems to incorrectly handle it (please refer to [1] for more details and discussions). Until this is finally sorted out we decided to avoid issues by shortening reply-to. Heuristic is now * either ``"CompanyName RecordName" <email@domain.com>`` is under 78 and we keep it; * otherwise we try by stripping out CompanyName as
Original PR description
Due to a python limitation we may have issues if reply-to of a sent email
contains more than 78 characters. Even if this is technically ok with the
RFC python seems to incorrectly handle it (please refer to [1] for more
details and discussions).
Until this is finally sorted out we decided to avoid issues by shortening
reply-to. Heuristic is now
* either ``"CompanyName RecordName" <email@domain.com>`` is under 78 and we
keep it;
* otherwise we try by stripping out CompanyName as this information is not
crucial, keeping ``"RecordName" <email@domain.com>``;
* if this value is > 78 we strip record name extra characters, ending with
something like ``"TooLong [...]"" <email@domain.com>``;
* if email address itself is too long it is kept as it is without formating;
Task-2602862
OPW-2733513
[1] See https://bugs.python.org/issue44637
Forward-Port-Of: odoo/odoo#89008
Forward-Port-Of: odoo/odoo#83276Description of the issue/feature this PR addresses: Fix strange order 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#89030
Original PR description
Description of the issue/feature this PR addresses: Fix strange order 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#89030
adhoc 50943 / latam 774 ---- We receive a traceback error when trying to export a vat book sales and we have an invoice of a partner that have `”` character in the partner name.  The error shown is because we can not encode the partner name in the TXT fiiles we need to generate to then be loaded to AFIP: `UnicodeEncodeError(latin-1' codec can't encode character '\u201d'. `
Original PR description
adhoc 50943 / latam 774 ---- We receive a traceback error when trying to export a vat book sales and we have an invoice of a partner that have `”` character in the partner name.  The error shown is because we can not encode the partner name in the TXT fiiles we need to generate to then be loaded to AFIP: `UnicodeEncodeError(latin-1' codec can't encode character '\u201d'. `  With this PR we avoid this traceback error by simple skip the non-encodable characters. Forward-Port-Of: odoo/enterprise#26148
…nding twice Forward-Port-Of: odoo/enterprise#26350 Forward-Port-Of: odoo/enterprise#24574
Original PR description
…nding twice Forward-Port-Of: odoo/enterprise#26350 Forward-Port-Of: odoo/enterprise#24574
Quickwin for general ledger: do not fetch the currency if it won't be used. For an excel export file of 2000 lines, it is ~10% faster. Forward-Port-Of: odoo/enterprise#26332 Forward-Port-Of: odoo/enterprise#26199
Original PR description
Quickwin for general ledger: do not fetch the currency if it won't be used. For an excel export file of 2000 lines, it is ~10% faster. Forward-Port-Of: odoo/enterprise#26332 Forward-Port-Of: odoo/enterprise#26199
Steps: - On Accounting dashboard - Bank journal -> import bank statement - Upload file (eg CSV or CODA file) -> "Invalid fields: Dates format" The reason is that in the view, the field qif_date_format is display if the file format is qif, but the field is required in the model. opw-2821680 Forward-Port-Of: odoo/enterprise#26260
Original PR description
Steps: - On Accounting dashboard - Bank journal -> import bank statement - Upload file (eg CSV or CODA file) -> "Invalid fields: Dates format" The reason is that in the view, the field qif_date_format is display if the file format is qif, but the field is required in the model. opw-2821680 Forward-Port-Of: odoo/enterprise#26260
To reproduce ============ - create new analytic account - add a budget when selecting the budget *Budget 2023: Pessimistic* the line will be set to *Budget 2023: Optimistic* Purpose ======= an improvement was added to suggest a budget when dates are set, so when we select *Budget 2023: Pessimistic* date is set to `from : 01/01/2023 to : 12/31/2023`, so the suggestion function is triggered, and it search for budgets that verify a condition on their dates. in our case *Budget 202
Original PR description
To reproduce ============ - create new analytic account - add a budget when selecting the budget *Budget 2023: Pessimistic* the line will be set to *Budget 2023: Optimistic* Purpose ======= an improvement was added to suggest a budget when dates are set, so when we select *Budget 2023: Pessimistic* date is set to `from : 01/01/2023 to : 12/31/2023`, so the suggestion function is triggered, and it search for budgets that verify a condition on their dates. in our case *Budget 2023: Pessimistic* and *Budget 2023: Optimistic* have same dates so they will both show up in the search, then we suggest the first result which is *Budget 2023: Optimistic*. Specification ============= to solve the issue we verify if a budget is already set and its dates verify the condition, then we don't suggest anything. opw-2802610 Forward-Port-Of: odoo/enterprise#26156
Set up : DB with main company on the US. eCommerce, Inventory, Sales and Accounting installed. Full address (US) set on the company. Other full address (US) set on admin's partner. Taxcloud activated (with test credentials). Taxcloud fiscal position set as “detect automatically”. Shipping method activated for the US. Paypal activated. A product with a US Tax. Steps : Log in with admin. Go to client webshop and add this product to cart. Go to cart for checkout. Taxes are calculate
Original PR description
Set up : DB with main company on the US. eCommerce, Inventory, Sales and Accounting installed. Full address (US) set on the company. Other full address (US) set on admin's partner. Taxcloud activated…
Set up : DB with main company on the US. eCommerce, Inventory, Sales and Accounting installed. Full address (US) set on the company. Other full address (US) set on admin's partner. Taxcloud activated (with test credentials). Taxcloud fiscal position set as “detect automatically”. Shipping method activated for the US. Paypal activated. A product with a US Tax. Steps : Log in with admin. Go to client webshop and add this product to cart. Go to cart for checkout. Taxes are calculated automatically by TaxCloud Choose Paypal and process payment. Note that the tax amount is not taken into account when processing payment. Order seems to be successfully paid. In the database, the SO will show notes of the changing amounts and partial payment. The payment is not fully processed (taxcloud's taxes are out). Cause : website_sale_account_taxcloud/WebsiteSale._get_shop_payment_values() calls super()._get_shop_payment_values() before order.validate_taxes_on_sales_order(). So, in the result values of this method, the amount is written before having had the chance to be updated by taxcloud. Fix : Inverse the order of those operations. opw-2789262 Forward-Port-Of: odoo/enterprise#26271
Step to reproduce: Install expenses Create an expense with name A and select a product A_prod Make the expense reach the done (paid) state Archive the product A_prod Create an expense with name A and click somewhere outside the name input field Current behavior: The expense product is automatically filled with the archived product A_prod Expected behavior: The expense product is automatically filled with an active expense product opw-2810639 Forward-Port-Of: odoo/enterpri
Original PR description
Step to reproduce: Install expenses Create an expense with name A and select a product A_prod Make the expense reach the done (paid) state Archive the product A_prod Create an expense with name A and click somewhere outside the name input field Current behavior: The expense product is automatically filled with the archived product A_prod Expected behavior: The expense product is automatically filled with an active expense product opw-2810639 Forward-Port-Of: odoo/enterprise#26106
Since 15.0, batch payment doesn't require accounting anymore. Yet the wizard requires the access right that comes with it and is no longer available with only invoicing like it was in the past. The setting for it was removed as it was confusing. Thus, the wizard should only require the Billing role, the same as the batch payment itself. opw-2813664 Forward-Port-Of: odoo/enterprise#26230
Original PR description
Since 15.0, batch payment doesn't require accounting anymore. Yet the wizard requires the access right that comes with it and is no longer available with only invoicing like it was in the past. The setting for it was removed as it was confusing. Thus, the wizard should only require the Billing role, the same as the batch payment itself. opw-2813664 Forward-Port-Of: odoo/enterprise#26230
Before the commit: The daily report is showing invalid schema errors and rejection of the report. After the commit: Adding ```'__keep_empty_lines': True,``` to the _render call would solve the problem. Nevertheless, another workaround is needed to force the resending of the failed reports. Forward-Port-Of: odoo/enterprise#26114
Original PR description
Before the commit: The daily report is showing invalid schema errors and rejection of the report. After the commit: Adding ```'__keep_empty_lines': True,``` to the _render call would solve the problem. Nevertheless, another workaround is needed to force the resending of the failed reports. Forward-Port-Of: odoo/enterprise#26114
The _compute_payment_method_fields does not exists anymore, it's called _compute_payment_method_line_fields With this fix, now the payment methods are computed properly when changing the "is_transfer" field Forward-Port-Of: odoo/enterprise#26127
Original PR description
The _compute_payment_method_fields does not exists anymore, it's called _compute_payment_method_line_fields With this fix, now the payment methods are computed properly when changing the "is_transfer" field Forward-Port-Of: odoo/enterprise#26127