Friday, June 21, 2024
44 changes · saas-17.2
Resolved issues and error corrections
Fixed an issue that could cause an error when using the Scan button on Vendor Bills with debug mode enabled. This improves reliability for accounting users scanning Indian vendor bill QR codes without changing the normal workflow.
Original PR description
Steps to reproduce ================== 1. Go to the Accounting module 2. Open Vendor Bills 3. Click on the Scan button with debugger mode ON => Hence gives traceback Cause of the issue ================== The Issue was due to the `BillQrScan` component doing the props validation same as the `Dialog` component, the `slots` object is a mandatory prop for Dialog component but not needed for `BillQrScan`. This commit solves the traceback generating due to props validation on `BillQrScan` component.
This fixes an unreliable automated test for VoIP audio input switching. The change helps prevent false test failures, making release validation more stable without changing the user experience.
Original PR description
"Switch audio input" test failed in an undeterminitic manner on this line: https://github.com/odoo/enterprise/blob/e808e583e9d406735a05dab42bf24f8b89899b67/voip/static/tests/softphone/device_selection_dialog.test.js#L54 After clicking the "Call" button, func `makeCall` has asynchronous call before setTimeout: https://github.com/odoo/enterprise/blob/e808e583e9d406735a05dab42bf24f8b89899b67/voip/static/src/core/user_agent_service.js#L268 https://github.com/odoo/enterprise/blob/e808e583e9d406735a05dab42bf24f8b89899b67/voip/static/src/core/user_agent_service.js#L284 It may happen that because of the asynchronous call, our `advanceTime(5000)` is executed before we call `setTimeout` in `makeCall`. To avoid this, we check the dom change to make sure the asynchronous call has finished before we continue.
Updates the rental stock test suite so it matches recent inventory behavior for negative procurements. This helps ensure rental orders continue to be validated correctly when returns or adjustments create negative stock movements.
Original PR description
Adapt the tests to match the changes done community-side to properly handle negative procurements. Community PR: odoo/odoo#165100
This fixes an issue where opening an employee's work information in debug mode could show an error after clearing the working hours field. The change keeps the Employee Contracts screen usable for administrators and support teams when validating or troubleshooting employee contract data.
Original PR description
Steps to reproduce: ------------------- - Install `Employee Contracts` module - Go to `Employees` and open any employee with a contract - Click on `Work Information` tab - Set `Working Hours` to nothing and save - Activate debug mode - Click again on `Work Information` tab Issue: ------ Error : `Invalid props for component 'ContractWarningTooltip'`. Cause: ------ In debug mode, we activate the validation of the props, and since there are not declared on the widget component, it is raising an error. Solution: --------- Set the default props (`standardWidgetProps`) on the widget component. opw-3972488
Miscellaneous changes
Versions -------- - 15.0+ Steps ----- 1. Sync with Google Calendar; 2. create a recurrent all day event in google calendar; 3. make sure it shows as "busy"; 4. make an appointment via website on that day. Issue ----- You are allowed to make an appointment on slots that overlap the synced event. Cause ----- Recurrent day events synced via Google Calendar have their start & end date equal to each other, so the event's "end date" could be 24 hours before the actual end. Commi
Original PR description
Versions -------- - 15.0+ Steps ----- 1. Sync with Google Calendar; 2. create a recurrent all day event in google calendar; 3. make sure it shows as "busy"; 4. make an appointment via website on that…
Versions -------- - 15.0+ Steps ----- 1. Sync with Google Calendar; 2. create a recurrent all day event in google calendar; 3. make sure it shows as "busy"; 4. make an appointment via website on that day. Issue ----- You are allowed to make an appointment on slots that overlap the synced event. Cause ----- Recurrent day events synced via Google Calendar have their start & end date equal to each other, so the event's "end date" could be 24 hours before the actual end. Commit ad4219876cee4f4b996a7cc72fd176b51be3a063 added an the `_slot_availability_prepare_values_meetings` method, optimized to not include conditions on `start_date` and `allday`. Instead, it filters event by date ranges. In our scenario, an `allday` event with start & end dates set to something like `2022-02-14 00:00:00`, may get excluded from the search when this is also the value of the starting point of the search, due to `stop` not being strictly greater than the starting point. Solution -------- Do an inclusive range search instead of an exclusive one. opw-3793009 Forward-Port-Of: odoo/enterprise#65023 Forward-Port-Of: odoo/enterprise#63761
In accounting, when exporting journal report to pdf, the Taxes Applied table size is limited thus forcing long number to wrap. Steps to reproduce: 1.go to Accounting > Reporting > Audit Reports > Journal Report 2.click on Pdf button 3.the "Taxes Applied" table will be spanning accross 2 column of the parent table leading to wrapped values Cause: "Taxes Applied" and "Tax Grid" are sharing the same row to render 2 different table and there is not enough room especially if the numbers are
Original PR description
In accounting, when exporting journal report to pdf, the Taxes Applied table size is limited thus forcing long number to wrap. Steps to reproduce: 1.go to Accounting > Reporting > Audit Reports > Journal Report 2.click on Pdf button 3.the "Taxes Applied" table will be spanning accross 2 column of the parent table leading to wrapped values Cause: "Taxes Applied" and "Tax Grid" are sharing the same row to render 2 different table and there is not enough room especially if the numbers are long. Solution: Up the colspan for "Taxes Applied" to 3, not the ideal solution if each column are diplayed and filled with long numbers but it is stable friendly. + this issue is fixed in 17.3 opw-3959560 Forward-Port-Of: odoo/enterprise#64467
Resolve issue when having a positive equity capital in the chosen report year and having a negative equity capital in the latest comparison period. Info: @wt-io-it Forward-Port-Of: odoo/enterprise#64748
Original PR description
Resolve issue when having a positive equity capital in the chosen report year and having a negative equity capital in the latest comparison period. Info: @wt-io-it Forward-Port-Of: odoo/enterprise#64748
### Steps to reproduce the issue: 1. Go to _Accounting > Customers > Follow-up Reports_ select one of the reports 2. Click on "Follow up" 3. Open the template in the Content Template field 4. Empty the To (Partners) field in this template 5. Save and close 6. Close the Follow Up and reopen it 5. There is no address in the field ### Explanation: With previous fix, we removed the `default_get` value but did not add a default one in the compute. ### Suggested fix: The default v
Original PR description
### Steps to reproduce the issue: 1. Go to _Accounting > Customers > Follow-up Reports_ select one of the reports 2. Click on "Follow up" 3. Open the template in the Content Template field 4. Empty the To (Partners) field in this template 5. Save and close 6. Close the Follow Up and reopen it 5. There is no address in the field ### Explanation: With previous fix, we removed the `default_get` value but did not add a default one in the compute. ### Suggested fix: The default value will be the same as the one previously in `default_get`. The purpose is to restore the previous workflow and then add the template's values. opw-3878125 Forward-Port-Of: odoo/enterprise#65038 Forward-Port-Of: odoo/enterprise#64902
Forward-Port-Of: odoo/enterprise#64863
Original PR description
Forward-Port-Of: odoo/enterprise#64863
reverts [1] as [2] was reverted and it is no longer needed. As some side effects were noticed and there may be more too subtle to find during manual tour testing. task-3983664 1: a187b096ceca1e0335f86f23469894c11f9b983b 2: e6c55e1683d679efd12e7d1cfca85b736fcbea01 Forward-Port-Of: odoo/enterprise#65059 Forward-Port-Of: odoo/enterprise#64478
Original PR description
reverts [1] as [2] was reverted and it is no longer needed. As some side effects were noticed and there may be more too subtle to find during manual tour testing. task-3983664 1: a187b096ceca1e0335f86f23469894c11f9b983b 2: e6c55e1683d679efd12e7d1cfca85b736fcbea01 Forward-Port-Of: odoo/enterprise#65059 Forward-Port-Of: odoo/enterprise#64478
Current behavior in gstr1 report: - For invoices and credit notes, if there are nil rated tax grid journal items then these tax lines are considered in both GSTR summary tables i.e self category (b2b/b2c) table and nil category table. After fix: - Now, the journal items are considered for their respective GSTR summary tables only. - For, `special economic zone` the nil-rated journal items are considered in their category i.e b2b/b2cs/b2cl, not in the nil summary table. task-3866787 Fo
Original PR description
Current behavior in gstr1 report: - For invoices and credit notes, if there are nil rated tax grid journal items then these tax lines are considered in both GSTR summary tables i.e self category (b2b/b2c) table and nil category table. After fix: - Now, the journal items are considered for their respective GSTR summary tables only. - For, `special economic zone` the nil-rated journal items are considered in their category i.e b2b/b2cs/b2cl, not in the nil summary table. task-3866787 Forward-Port-Of: odoo/enterprise#65042 Forward-Port-Of: odoo/enterprise#61433
This commit fixes an issue where the retweeted message would only display a part of the retweeted message while twitter displays it in full. This is a limitation of the Twitter API which only sends a limited part of the tweet. To fix this, we are setting the message value to the text of the referenced tweet. task-3653108 Forward-Port-Of: odoo/enterprise#59579 Forward-Port-Of: odoo/enterprise#55642
Original PR description
This commit fixes an issue where the retweeted message would only display a part of the retweeted message while twitter displays it in full. This is a limitation of the Twitter API which only sends a limited part of the tweet. To fix this, we are setting the message value to the text of the referenced tweet. task-3653108 Forward-Port-Of: odoo/enterprise#59579 Forward-Port-Of: odoo/enterprise#55642
…ter its parent web_enterprise modifies the js template for the list_renderer by introducing an upsell point for Studio in the optional columns dropdown. That inheritance spec was not at any particular place in the inheritance hierarchy. On some views (e.g. account invoices) this feature was not available. This commit fixes the issue by manually forcing the extension in web_enterprise to go just after list_renderer.xml from the web module. After this commit, the upsell feature is ava
Original PR description
…ter its parent web_enterprise modifies the js template for the list_renderer by introducing an upsell point for Studio in the optional columns dropdown. That inheritance spec was not at any particular place in the inheritance hierarchy. On some views (e.g. account invoices) this feature was not available. This commit fixes the issue by manually forcing the extension in web_enterprise to go just after list_renderer.xml from the web module. After this commit, the upsell feature is available on the views that did not have it before. Forward-Port-Of: odoo/enterprise#64875 Forward-Port-Of: odoo/enterprise#64776
Purpose ======= Fix the appointment type "Share" modal buttons which were badly displayed on mobile. Specification ============= Usual modal buttons are direct children of the footer tag. However here, we're using a custom widget to add a modal button. The widget is encapsulated into a "o_widget" div which messes up the button display. Restoring a good display by making the widget button take all the available space on mobile view and only the necessary space on higher screen sizes
Original PR description
Purpose ======= Fix the appointment type "Share" modal buttons which were badly displayed on mobile. Specification ============= Usual modal buttons are direct children of the footer tag. However here, we're using a custom widget to add a modal button. The widget is encapsulated into a "o_widget" div which messes up the button display. Restoring a good display by making the widget button take all the available space on mobile view and only the necessary space on higher screen sizes. Task-3981072 Forward-Port-Of: odoo/enterprise#64848 Forward-Port-Of: odoo/enterprise#64235
# How to reproduce - Create product: P1, storable | tracked by lot | barcode set - Create Receipt for 2 units of P1 - In barcode App: - Scan product "P1" - Scan lot "lot1" - Scan lot "lot2" - Select line with "lot1" - Scan dest location "2601892" (Stock/Shelf1 in runbot) => New line created for P1 with quantity 0 https://github.com/odoo/enterprise/assets/29302288/2892a5dc-43e7-4437-9eb7-c079d1b2f807 The selected line is always done first. Usually the selected line
Original PR description
# How to reproduce - Create product: P1, storable | tracked by lot | barcode set - Create Receipt for 2 units of P1 - In barcode App: - Scan product "P1" - Scan lot "lot1" - Scan lot "lot2" - Select…
# How to reproduce
- Create product: P1, storable | tracked by lot | barcode set
- Create Receipt for 2 units of P1
- In barcode App:
- Scan product "P1"
- Scan lot "lot1"
- Scan lot "lot2"
- Select line with "lot1"
- Scan dest location "2601892" (Stock/Shelf1 in runbot)
=> New line created for P1 with quantity 0
https://github.com/odoo/enterprise/assets/29302288/2892a5dc-43e7-4437-9eb7-c079d1b2f807
The selected line is always done first.
Usually the selected line is the last one without reserved quantity, it is not split, and we steal the reserved quantity of the sibling.
However, if the line with incomplete reserved quantity is done first, then it is split. When the next line is done, it steals quantity from the created line, leaving it with reserved_uom_qty = 0 and qty_done = 0.
---
To fix this issue, we assign the reserved quantity from the sibling on all lines before changing the dest location and doing a split.
OPW-3942171
Forward-Port-Of: odoo/enterprise#64592Added support for currency_rate from the world oldest central bank, Sveriges Riksbank. Forward-Port-Of: odoo/enterprise#64344
Original PR description
Added support for currency_rate from the world oldest central bank, Sveriges Riksbank. Forward-Port-Of: odoo/enterprise#64344
This PR update the Demo Campaign Double Opt-in's Trigger Value to 0 Hour, so that subscribers of a newsletter get a close-to instant confirmation instead of an hour later. Task-3976448 Forward-Port-Of: odoo/enterprise#64998
Original PR description
This PR update the Demo Campaign Double Opt-in's Trigger Value to 0 Hour, so that subscribers of a newsletter get a close-to instant confirmation instead of an hour later. Task-3976448 Forward-Port-Of: odoo/enterprise#64998
Before this commit only admin can add pivot in dashbord. <img width="680" alt="image" src="https://github.com/odoo/enterprise/assets/16716992/a301451f-1bf1-42f7-81fa-d93ab9223d05"> Forward-Port-Of: odoo/enterprise#65048
Original PR description
Before this commit only admin can add pivot in dashbord. <img width="680" alt="image" src="https://github.com/odoo/enterprise/assets/16716992/a301451f-1bf1-42f7-81fa-d93ab9223d05"> Forward-Port-Of: odoo/enterprise#65048
Before commit: To reproduce the error: A device may send non-JSON data to the IoT controller, or the CDN might return an error in a non-JSON format. We just get a very non-explicit error: "Expecting value: line 1 column 1 (char 0)". After commit: We add a catch for non-JSON data and log the error along with the incorrect data to have more information. opw-3876631 Forward-Port-Of: odoo/odoo#169938
Original PR description
Before commit: To reproduce the error: A device may send non-JSON data to the IoT controller, or the CDN might return an error in a non-JSON format. We just get a very non-explicit error: "Expecting value: line 1 column 1 (char 0)". After commit: We add a catch for non-JSON data and log the error along with the incorrect data to have more information. opw-3876631 Forward-Port-Of: odoo/odoo#169938
When an image is set to a cover from the website builder, this commit will automatically convert it to webp. task-3761728 Forward-Port-Of: odoo/odoo#169949 Forward-Port-Of: odoo/odoo#156554
Original PR description
When an image is set to a cover from the website builder, this commit will automatically convert it to webp. task-3761728 Forward-Port-Of: odoo/odoo#169949 Forward-Port-Of: odoo/odoo#156554
Have a list view grouped by 2 fields (e.g. Contacts: Salesperson > name). Open a group which contains more groups than the limit (set the groups_limit attribute on the arch if necessary). Next to the name of the group, the total number of records belonging to that group is displayed (e.g. Mitchel Admin (32)). In the group header row, the pager allows to browser the inner **groups**, so the total displayed there is the total number of inner groups in that group (e.g. 1-10 / 31). From that poi
Original PR description
Have a list view grouped by 2 fields (e.g. Contacts: Salesperson > name). Open a group which contains more groups than the limit (set the groups_limit attribute on the arch if necessary). Next to the…
Have a list view grouped by 2 fields (e.g. Contacts: Salesperson > name). Open a group which contains more groups than the limit (set the groups_limit attribute on the arch if necessary). Next to the name of the group, the total number of records belonging to that group is displayed (e.g. Mitchel Admin (32)). In the group header row, the pager allows to browser the inner **groups**, so the total displayed there is the total number of inner groups in that group (e.g. 1-10 / 31). From that point, clicking on a column header to sort by a given field produces a reload, and the group pager is updated with the wrong total: it now displays the number of records, not the number of groups (1-10 / 32 in the example). This commit fixes that issue. The test also hihglighted another issue: when reloaded, we sometimes have to keep former groups that became empty and that weren't returned by the last call to web_read_group (e.g. we drag and dropped the last record from a group to another group). We only do that if search query parameters didn't change. However, we forgot to take the orderBy into account, so when sorting groups, groups that were no longer on the current page were still displayed, with count 0. This commit also fixes that issue. 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#170099
Incorporate Andrea Manenti (maneandrea) as Vauxoo's contributor. I confirm I have signed the CLA and read the PR guidelines at http://www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170040
Original PR description
Incorporate Andrea Manenti (maneandrea) as Vauxoo's contributor. I confirm I have signed the CLA and read the PR guidelines at http://www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170040
Commit [1] introduced a way for an editable list view to open the record inside a form view in the current window (adding itself to the breadcrumb) when clicked. It's done by adding a `open_form_view` attribute on the tree node, which then adds automatically a "View" button/action on each tree lines. But there was an unseen issue where when that x2m (tree) field was set as readonly, the button would not be shown, preventing the navigation. [1]: https://github.com/odoo/odoo/commit/258e6a
Original PR description
Commit [1] introduced a way for an editable list view to open the record inside a form view in the current window (adding itself to the breadcrumb) when clicked. It's done by adding a `open_form_view` attribute on the tree node, which then adds automatically a "View" button/action on each tree lines. But there was an unseen issue where when that x2m (tree) field was set as readonly, the button would not be shown, preventing the navigation. [1]: https://github.com/odoo/odoo/commit/258e6a019a21042bf4f6cf70fcce386d37afd50c task-3973116 Forward-Port-Of: odoo/odoo#170106
Activate a second lang (ex French) and set it to the demo user Set "Cash Discount Tax Reduction" to "Always" Create an invoice with tax Set Payment term to "2/7 Net 30" [1] Go to "journal items" tab Early payment discount lines are set correctly Now with the demo user create a credit note for the invoice Issue: Additional journal item is created, which cancels out the tax refund. This occurs because in https://github.com/odoo-dev/odoo/commit/5a256af35e5d612efed9ed8af1cf23fd62bd83f4
Original PR description
Activate a second lang (ex French) and set it to the demo user Set "Cash Discount Tax Reduction" to "Always" Create an invoice with tax Set Payment term to "2/7 Net 30" [1] Go to "journal items" tab Early payment discount lines are set correctly Now with the demo user create a credit note for the invoice Issue: Additional journal item is created, which cancels out the tax refund. This occurs because in https://github.com/odoo-dev/odoo/commit/5a256af35e5d612efed9ed8af1cf23fd62bd83f4 we addressed a duplicated key in the `existing` dict with a workaround: we add a translated 'Discount' term to the line name and if we detect it later at tax key creation we change the display_type. Unfortunately this works only if the two operations are performed with the same lang context. [1] Payment terms: 30 Days, 2% Early Payment Discount under 7 days opw-3922267 Forward-Port-Of: odoo/odoo#170058 Forward-Port-Of: odoo/odoo#169881
To display rewards for gift cards and e-wallets in debug mode (where rules and rewards were hidden by default), a kanban view for rewards was duplicated in a previous bugfix (related to Commit 3e1b12961d1a2c4bd83863a151ac1bb780e3abf1) inside `loyalty_program_view_form`. This led to an error when trying to render the rewards kanban view a second time in debug mode. To solve this, the kanban view for rewards has been moved directly into the `loyalty_program_gift_ewallet_view_form`, replacing bo
Original PR description
To display rewards for gift cards and e-wallets in debug mode (where rules and rewards were hidden by default), a kanban view for rewards was duplicated in a previous bugfix (related to Commit 3e1b12961d1a2c4bd83863a151ac1bb780e3abf1) inside `loyalty_program_view_form`. This led to an error when trying to render the rewards kanban view a second time in debug mode. To solve this, the kanban view for rewards has been moved directly into the `loyalty_program_gift_ewallet_view_form`, replacing both rules and rewards by just rewards (in debug mode only). This prevents duplication and rendering errors. opw-3903363 Forward-Port-Of: odoo/odoo#169877 Forward-Port-Of: odoo/odoo#164396
Issue: ====== Clicking enter in a banner inside a list breaks the layout in chrome browser. Steps to reproduce the issue: ============================= - Open chrome browser - Go to to-do - Create a list and add 1 item - Click enter (Second element of the list) and add a banner in the item - Click enter - Doesn't work as expected Origin of the issue: ==================== This is a browser issue, chrome in this specific case doesn't work properly, all the events until `textInput
Original PR description
Issue: ====== Clicking enter in a banner inside a list breaks the layout in chrome browser. Steps to reproduce the issue: ============================= - Open chrome browser - Go to to-do - Create a…
Issue:
======
Clicking enter in a banner inside a list breaks the layout in chrome browser.
Steps to reproduce the issue:
=============================
- Open chrome browser
- Go to to-do
- Create a list and add 1 item
- Click enter (Second element of the list) and add a banner in the item
- Click enter
- Doesn't work as expected
Origin of the issue:
====================
This is a browser issue, chrome in this specific case doesn't work properly, all the events until `textInput` are called when clicking `enter` but the last event is never triggerged which is the `input` event. The specific case can be reproduced with this:
```
<div contenteditable="true">
<ul>
<div contenteditable="false">
<div contenteditable="true">
<p>
text[]
</p>
</div>
</div>
</ul
</div>
```
Solution:
==========
We manually trigger the `input` event in this specific case.
Issue:
======
List inside a banner under a list doesn't align correctly
steps to reproduce the issue:
=============================
- Go to do
- Add a list and first item
- Add a banner
- Add a list inside the banner
- It's not correctly centered
Origin of the issue:
====================
Since the list inside the banner is considered nested list under the top
list, the `margin-bottom` is removed.
Solution:
=========
Reassign the style again when we are inside the banner.
task-3857296
Forward-Port-Of: odoo/odoo#162204When the arguments for the creation of the SpreadsheetPivotTable are computed, an array was created for each subgroups (due to `concat`). This allows to reduce by +/- 62% the time spent in the creation of the arguments. It was done by using `push` instead of `concat`. Note that `splice` has been evaluated but it was sightly slower than `push`. Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confir
Original PR description
When the arguments for the creation of the SpreadsheetPivotTable are computed, an array was created for each subgroups (due to `concat`). This allows to reduce by +/- 62% the time spent in the creation of the arguments. It was done by using `push` instead of `concat`. Note that `splice` has been evaluated but it was sightly slower than `push`. 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#170159
Previously, the validation error message contained HTML content. This PR converts the error message into plain text. Task-3989829 Forward-Port-Of: odoo/odoo#169733
Original PR description
Previously, the validation error message contained HTML content. This PR converts the error message into plain text. Task-3989829 Forward-Port-Of: odoo/odoo#169733
The is_explicit attribute was useful to prevent saving a session when the session_id was coming from an untrusted source (e.g. a client forged http header). We removed the feature to set explicit headers, the attribute is gone, we forgot to adapt this one. Forward-Port-Of: odoo/odoo#169185
Original PR description
The is_explicit attribute was useful to prevent saving a session when the session_id was coming from an untrusted source (e.g. a client forged http header). We removed the feature to set explicit headers, the attribute is gone, we forgot to adapt this one. Forward-Port-Of: odoo/odoo#169185
**Current behavior:** Switching from manual to automated valuation on a product that has a negative quantity will create entries in the valuation journal with incorrect debit/credit figures. **Expected behavior:** The lines generated in this manner should look like ones created when the valuation is generated for a product that was already valuated with the automated option. **Steps to reproduce:** 1. Create a product category with the default manual valuation method, create a storable
Original PR description
**Current behavior:** Switching from manual to automated valuation on a product that has a negative quantity will create entries in the valuation journal with incorrect debit/credit figures.…
**Current behavior:**
Switching from manual to automated valuation on a product that has a negative quantity will create entries in the valuation journal with incorrect debit/credit figures.
**Expected behavior:**
The lines generated in this manner should look like ones created when the valuation is generated for a product that was already valuated with the automated option.
**Steps to reproduce:**
1. Create a product category with the default manual valuation method, create a storable product that belongs to it
2. Sell some quantity of the new product without adding any on-hand quantity (so that the qty is negative), confirm the order and generate the invoice
3. Swap to automated valuation in the product category that was created in step 1
4. In the entries for the stock valuation journal, observe that:
A) the stock valuation account is getting *debited* instead of credited, and
B) the other entry generated is for the stock input account
instead of stock output, and
C) the debit/credit amounts should be swapped here as well
**Cause of the issue:**
The negative quantity case is not considered when we do the empty/replenish sequence on valuation method change.
**Fix:**
Add an explicit check for negative quantity in the replenish step of changing valuation method.
opw-3810779
Forward-Port-Of: odoo/odoo#169601
Forward-Port-Of: odoo/odoo#165179This is a missing test for odoo/odoo#165753. It also checks the first condition from the `_get_default_dest_location` method, since the test for it was also missing. 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#169290 Forward-Port-Of: odoo/odoo#167955
Original PR description
This is a missing test for odoo/odoo#165753. It also checks the first condition from the `_get_default_dest_location` method, since the test for it was also missing. 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#169290 Forward-Port-Of: odoo/odoo#167955
In Point of Sale > Configuration > Settings enable 'Global Discounts' Create a tax [TAX A] included in price Create a tax [TAX G] as group of taxes, including only [TAX A] Configure a product [PROD] with [TAX G] Open POS session Add [PROD], hit 'Discount' button, add 50% discount Issue: Tax will not be included in the discount This occurs because the system does not take into account the tax group opw-3576452 Forward-Port-Of: odoo/odoo#169858 Forward-Port-Of: odoo/odoo#146337
Original PR description
In Point of Sale > Configuration > Settings enable 'Global Discounts' Create a tax [TAX A] included in price Create a tax [TAX G] as group of taxes, including only [TAX A] Configure a product [PROD] with [TAX G] Open POS session Add [PROD], hit 'Discount' button, add 50% discount Issue: Tax will not be included in the discount This occurs because the system does not take into account the tax group opw-3576452 Forward-Port-Of: odoo/odoo#169858 Forward-Port-Of: odoo/odoo#146337
## Issue: - When purchasing consecutive appointments on the website using eWallet, an error occurs: "It is forbidden to modify a sales order which is not in draft status." ## Steps To Reproduce: - Create an eWallet program and generate a coupon for the test user. - On the eCommerce site, navigate to the "Appointments" tab. - Select a paid appointment and pay using eWallet credit. - After completing the payment, return to the "Appointments" tab. - Repeat the same steps to purchase anothe
Original PR description
## Issue: - When purchasing consecutive appointments on the website using eWallet, an error occurs: "It is forbidden to modify a sales order which is not in draft status." ## Steps To Reproduce: -…
## Issue: - When purchasing consecutive appointments on the website using eWallet, an error occurs: "It is forbidden to modify a sales order which is not in draft status." ## Steps To Reproduce: - Create an eWallet program and generate a coupon for the test user. - On the eCommerce site, navigate to the "Appointments" tab. - Select a paid appointment and pay using eWallet credit. - After completing the payment, return to the "Appointments" tab. - Repeat the same steps to purchase another appointment. - Encounter the error: "It is forbidden to modify a sales order which is not in draft status." ## Solution: - In `shop_payment_validate`, when an order is fully paid using a discount or eWallet, the eCommerce website context are not cleared. - To fix this, call the `sale_reset` method before redirecting to the SO page. opw-3885533 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#169723 Forward-Port-Of: odoo/odoo#167133
This commit addresses the same issue as in https://github.com/odoo/odoo/pull/137214 which is overflowing of search bar menu items when their name is too long while also adapting some width values and make it apply to the website name column. It also adds a height value to the containers so that the bottom is no longer squished when the content overflows and finally adds tooltips for long item names which will most likely be truncated. opw-3963754 Forward-Port-Of: odoo/odoo#169958 Forward-Po
Original PR description
This commit addresses the same issue as in https://github.com/odoo/odoo/pull/137214 which is overflowing of search bar menu items when their name is too long while also adapting some width values and make it apply to the website name column. It also adds a height value to the containers so that the bottom is no longer squished when the content overflows and finally adds tooltips for long item names which will most likely be truncated. opw-3963754 Forward-Port-Of: odoo/odoo#169958 Forward-Port-Of: odoo/odoo#169655
Since 17.0, the account_token field is limited to 43 characters But some database created before that version might still have some `iap.account` records with token longer than 34 characters. If the neutralization script tries to add `+disabled` (9 characters) to such records, it fails. This prevents the creation of duplicates on the SaaS and PaaS until the invalid records are purged for the database, which is not really obvious if you don't already know the details of the implementatio
Original PR description
Since 17.0, the account_token field is limited to 43 characters But some database created before that version might still have some `iap.account` records with token longer than 34 characters. If the neutralization script tries to add `+disabled` (9 characters) to such records, it fails. This prevents the creation of duplicates on the SaaS and PaaS until the invalid records are purged for the database, which is not really obvious if you don't already know the details of the implementation of the `iap.account` model. With this commit, the neutralization script will only try to retain the original value of the token (with `+disabled` appended) if it is going to succeed, and falls back to a dummy value in other cases. opw-3999439 Forward-Port-Of: odoo/odoo#170004
Commit 95726f3d99ba7cf5796a9acd1c13a631db63fbd7 made it so that rewards are archived instead of unlinked when linked to a specific SO/PO, but forgot to bypass access rights to search the linked PO/SO. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170094
Original PR description
Commit 95726f3d99ba7cf5796a9acd1c13a631db63fbd7 made it so that rewards are archived instead of unlinked when linked to a specific SO/PO, but forgot to bypass access rights to search the linked PO/SO. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170094
reverts e6c55e1683d679efd12e7d1cfca85b736fcbea01 We notice too many usability issues as a result of this commit. As it was stated that the security concerns were not that bad we let users delete any mail attachment they may find necessary. task-3983664 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170090 Forward-Port-Of: odoo/odoo#168832
Original PR description
reverts e6c55e1683d679efd12e7d1cfca85b736fcbea01 We notice too many usability issues as a result of this commit. As it was stated that the security concerns were not that bad we let users delete any mail attachment they may find necessary. task-3983664 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170090 Forward-Port-Of: odoo/odoo#168832
Currently the top line of a combo product is always showing a 0$ price. Steps to reproduce: ------------------- * Open a POS Shop session * Add a combo product, confirm selection choices > Observation: The first order line representing the combo product will show a price of 0$ Why the fix: ------------ In saas-17.3 the price is not shown on the combo parent line anymore to avoid any confusion. Discussed with the PO and he asked to put this in 17.0 as well if possible. Here is the
Original PR description
Currently the top line of a combo product is always showing a 0$ price. Steps to reproduce: ------------------- * Open a POS Shop session * Add a combo product, confirm selection choices > Observation: The first order line representing the combo product will show a price of 0$ Why the fix: ------------ In saas-17.3 the price is not shown on the combo parent line anymore to avoid any confusion. Discussed with the PO and he asked to put this in 17.0 as well if possible. Here is the commit that did the change in saas-17.3: https://github.com/odoo/odoo/commit/72267340663e47581d42f46deded6830c72fbda3 Slight change as in saas-17.3 `combo_line_ids` is always a list, empty or not and in 17.0 if you have a simple product, `combo_line_ids` will be `undefined`. opw-3942339 Forward-Port-Of: odoo/odoo#170029 Forward-Port-Of: odoo/odoo#169587
### Steps to reproduce (on mobile mode): - Go to Expenses app - Create a new expense - Select 'Company' for the 'Paid By' field - Action > Create Report - Click on the field 'Payment Method' - The view displayed does not show the journals, so there can be several 'Manual' for example ### Cause: There are no kanban view for account.payment.method.line and the default one only shows the name and not the journal. ### Solution: Create a new kanban view for account.payment.method.line t
Original PR description
### Steps to reproduce (on mobile mode): - Go to Expenses app - Create a new expense - Select 'Company' for the 'Paid By' field - Action > Create Report - Click on the field 'Payment Method' - The view displayed does not show the journals, so there can be several 'Manual' for example ### Cause: There are no kanban view for account.payment.method.line and the default one only shows the name and not the journal. ### Solution: Create a new kanban view for account.payment.method.line that displays the journal. opw-3896011 Forward-Port-Of: odoo/odoo#167797
When unlocking a picking and adding a new line, the 'picked' field would be False for both the new stock.move and stock.move.line. The main issue it creates is that no stock.valuation.layer would be created on stock_account. https://github.com/odoo/odoo/assets/29302288/f11b7122-dd64-40f3-a0c3-1de6f442c9b7 OPW-3980565 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170191 Forward-Port-Of: odoo/odoo#169816
Original PR description
When unlocking a picking and adding a new line, the 'picked' field would be False for both the new stock.move and stock.move.line. The main issue it creates is that no stock.valuation.layer would be created on stock_account. https://github.com/odoo/odoo/assets/29302288/f11b7122-dd64-40f3-a0c3-1de6f442c9b7 OPW-3980565 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170191 Forward-Port-Of: odoo/odoo#169816
(note for reviewer: I reset my branch on 15.0) The `werkzeug.proxy_fix.orig` is set when running in --proxy-mode, it holds the original value of various headers before the ProxyFix class changed them according to the `X-Forwarded-` headers. It is a dictionnary with the following entries: orig_remote_addr = environ_get("REMOTE_ADDR") orig_wsgi_url_scheme = environ_get("wsgi.url_scheme") orig_http_host = environ_get("HTTP_HOST") "werkzeug.proxy_fix.orig": { "RE
Original PR description
(note for reviewer: I reset my branch on 15.0) The `werkzeug.proxy_fix.orig` is set when running in --proxy-mode, it holds the original value of various headers before the ProxyFix class changed them…
(note for reviewer: I reset my branch on 15.0)
The `werkzeug.proxy_fix.orig` is set when running in --proxy-mode, it holds the original value of various headers before the ProxyFix class changed them according to the `X-Forwarded-` headers.
It is a dictionnary with the following entries:
orig_remote_addr = environ_get("REMOTE_ADDR")
orig_wsgi_url_scheme = environ_get("wsgi.url_scheme")
orig_http_host = environ_get("HTTP_HOST")
"werkzeug.proxy_fix.orig": {
"REMOTE_ADDR": orig_remote_addr,
"wsgi.url_scheme": orig_wsgi_url_scheme,
"HTTP_HOST": orig_http_host,
"SERVER_NAME": environ_get("SERVER_NAME"),
"SERVER_PORT": environ_get("SERVER_PORT"),
"SCRIPT_NAME": environ_get("SCRIPT_NAME"),
}
All those sub-entries are already allow-listed by the Odoo's HTTPRequest class.
Accessing those values is handy when debugging the --proxy-mode, it allows to see at a glance if the proxy-mode was effective for this request: the `werkzeug.proxy_fix.orig` entry is present; or not: the entry is absent.
Forward-Port-Of: odoo/odoo#169566
Forward-Port-Of: odoo/odoo#168841- In Odoo v16 and above, the Place of Supply information was not displayed on the invoice report, unlike in previous versions. - This PR rectifies the issue, ensuring that the Place of Supply is correctly printed on the invoice report, maintaining consistency with earlier versions. **task**:3983822 Forward-Port-Of: odoo/odoo#170221 Forward-Port-Of: odoo/odoo#169202
Original PR description
- In Odoo v16 and above, the Place of Supply information was not displayed on the invoice report, unlike in previous versions. - This PR rectifies the issue, ensuring that the Place of Supply is correctly printed on the invoice report, maintaining consistency with earlier versions. **task**:3983822 Forward-Port-Of: odoo/odoo#170221 Forward-Port-Of: odoo/odoo#169202
Hongkong was removed from tzdata in ubuntu Noble, `Asia/Honk_Kong` must be used instead. Forward-Port-Of: odoo/odoo#170217 Forward-Port-Of: odoo/odoo#170146
Original PR description
Hongkong was removed from tzdata in ubuntu Noble, `Asia/Honk_Kong` must be used instead. Forward-Port-Of: odoo/odoo#170217 Forward-Port-Of: odoo/odoo#170146
Steps to reproduce ================== - Use a webkit based browser (safari or epiphany) - Go to accounting > configuration > journals - Open the cash record - Switch to the incoming payments tab - In the optional column dropdown, enable the outstanding receipts accounts => The column is hidden but should be displayed Cause of the issue ================== The table width was computed with a fixed table layout. At that point in safari, the width was not yet correctly computed.
Original PR description
Steps to reproduce ================== - Use a webkit based browser (safari or epiphany) - Go to accounting > configuration > journals - Open the cash record - Switch to the incoming payments tab - In the optional column dropdown, enable the outstanding receipts accounts => The column is hidden but should be displayed Cause of the issue ================== The table width was computed with a fixed table layout. At that point in safari, the width was not yet correctly computed. Solution ======== We can revert commit 4163f1f4ff3f28c04cfde5427e6b25323d62a857: [FIX] web: prevent inline x2many list view overflows The original issue fixed by that commit isn't present anymore. It has probably been fixed due to some unrelated code changes or browser update. opw-3869696 Forward-Port-Of: odoo/odoo#170283 Forward-Port-Of: odoo/odoo#170139