Sunday, March 30, 2025
41 changes · master
Enhancements to existing features
Calendar event previews now use the same local time format as regular calendar entries. This removes confusion when selecting afternoon time slots and keeps the calendar display consistent for users.
Original PR description
Steps: - Install 'calendar' - Open calendar - Select week - Calendar lines headers are in 24h format - Select a timerange after 12pm - Highlighted mirror event are in 12 hours format Before this commit, regulars events (with existing records) have 24h time format, but not highlighted mirror events Now both are consistent and use the same formatting task-4575307
Users setting up pricelist rules now see clearer guidance about whether the original price will appear on sales orders and the website. This helps sales and eCommerce teams understand discount display behavior after the older discount policy option was removed.
Original PR description
**Description of the issue/feature this PR addresses:** - Clarification of price display behavior in pricelist rules. **Current behavior before PR:** - Since the discount policy has been removed from pricelists, users may find it difficult to determine when a discount is applied and when it is not. **Desired behavior after PR is merged:** - When selecting the price computation method in pricelist rules, users will see a clarification indicating whether the original price will be displayed on the sale order line and website. - When discounts are enabled from settings, add alert boxes for user information based on the selected price type. affected version - master task - [4502296](https://www.odoo.com/odoo/project.task/4502296) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Users can now mention a role in conversations to notify a whole group at once. This makes it easier to reach the right people quickly and reduces the need to tag individuals one by one.
Original PR description
In this task, we are introducing the concept of roles, making it possible to ping a group of users at once. task-4045282 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update improves documentation around Odoo's internal field and domain behavior, making it easier for developers to understand and use correctly. Better documentation can reduce implementation mistakes and speed up future customization work, with no expected direct impact on end users.
Original PR description
--- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Online bank synchronization now stores imported transaction details in a structured format instead of as formatted text. This improves data consistency behind the scenes and removes those details from the list view to keep the reconciliation workflow cleaner.
Original PR description
This commit changes the transaction_details field of account.bank.statement.line.transient model from HTML to JSON. It's also removed from the list view. Related fixes: https://github.com/odoo/odoofin/commit/401745222095a7ac6d9f9d52a9c2d1b3d4619678 https://github.com/odoo/enterprise/commit/ed7eee1872b734166c060e34b770003929d8ffce task-4596181
Rental product suggestions still identify rental items during selection, but sales order lines and printed quotations no longer include the extra “Rental” label. Rental period times are also simplified by removing seconds, making customer-facing documents clearer and more professional.
Original PR description
**Description of the feature this PR addresses:** - Excludes displaying `(Rental)` in name/description. - Removing seconds from the rental period description **Behaviour before PR:** - In rental app, while adding rental products `(Rental)` tag is appended in product suggestion(autocomplete) - This `(Rental)` tag stays in order lines as well as in SO prints. - Time include seconds in rental period in description of order lines. **Desired Behaviour after PR is merged:** - `(Rental)` can be only seen in autocomplete for rental products in rental app. - order lines and SO prints don't include the `(Rental)` tag now. - Seconds are removed from the rental period description. Task-4547144
Resolved issues and error corrections
The web module now more accurately identifies plain data objects and avoids treating dates, lists, maps, or functions as the same type of value. This reduces the risk of incorrect behavior in shared web utilities and related screens while keeping the change internal and low impact for users.
Original PR description
This commit modifies the `isObject` helper in Web to only validate "basic" objects (or "dictionnaries"), i.e. direct instances of the `Object` class, such as `{}` or `Object.create(null)`.
The reason for this change is that the previous implementation validated any non-primitive value (basically a glorified `x instanceof Object`), and this has been determined to not be the most generic use case; in most cases, we only want to validate basic objects, and discriminate against any other JavaScript object (`Date`, `Map`, `Array`, `Function`, etc.).
As such, cases where the previous implementation was legitimate have been replaced with `x instanceof Object`.
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prMiscellaneous changes
[IMP] web: eslint the new l10n_br_edi_pos module task-3564171 ---- [IMP] point_of_sale: add some hooks for l10n_br_edi_pos This doesn't change behavior, only adds a way to modify the behavior from other modules. task-3564171 Forward-Port-Of: odoo/odoo#202616 Forward-Port-Of: odoo/odoo#193834
Original PR description
[IMP] web: eslint the new l10n_br_edi_pos module task-3564171 ---- [IMP] point_of_sale: add some hooks for l10n_br_edi_pos This doesn't change behavior, only adds a way to modify the behavior from other modules. task-3564171 Forward-Port-Of: odoo/odoo#202616 Forward-Port-Of: odoo/odoo#193834
Accrued entries can now be created for upsell sales orders that include subscription discount lines without causing an error. These discount-style note lines are ignored during accrual processing, keeping subscription upsell accounting workflows reliable.
Original PR description
Create a subscription Create an upsell On the SO of the upsell, create an accrued entry => Traceback The subscription_discount is like a line_note, and so should be ignored. For order lines, only these types of lines have a display type as the only possibilities are line_note and line_section (and subscription_discount now). So we can filter them by the presence of the display_type. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The point of sale payment screen now keeps scrolling focused on the payment method list when many options are available. This makes checkout easier to use and prevents the whole screen from moving unexpectedly.
Original PR description
When to much payment method are available in the payment screen, the scroll is on the whole screen and not only on the payment method list. This commit fix the scroll on the payment method list. taskId: 4672440
Fixes a problem in the Website editor where changing carousel arrow or indicator settings could trigger an error. This helps users edit carousel blocks reliably without interruptions.
Original PR description
Steps to reproduce: - In Website edit mode, - Drag and drop a "Carousel" block onto the page. - Click on the "Carousel" and try to change the "Arrows" or "Indicators" options. - Bug: A traceback occurs. The issue was introduced by [1], where the horizontal controller options were shared between the "Intro" carousel and the new "Cards" carousel added by this same commit. This change accidentally shared specific code for these two snippets across all carousels, which caused the bug. [1]: https://github.com/odoo/odoo/commit/a06bb677876fc4d61e592dca74699b1a4783a6c2 task-4662034
When a quotation has been confirmed, the invoice generated and confirmed by an accountant, the salesman of that first quotation has access to the invoice and its button "Send & Print". However, when trying to generate the document and send it, he receives an access right error. The salesman should be able to Send & Print when the invoice has been confirmed by an accountant. task-4378899 Forward-Port-Of: odoo/odoo#203473 Forward-Port-Of: odoo/odoo#191823
Original PR description
When a quotation has been confirmed, the invoice generated and confirmed by an accountant, the salesman of that first quotation has access to the invoice and its button "Send & Print". However, when trying to generate the document and send it, he receives an access right error. The salesman should be able to Send & Print when the invoice has been confirmed by an accountant. task-4378899 Forward-Port-Of: odoo/odoo#203473 Forward-Port-Of: odoo/odoo#191823
FIX FOR MASTER −1 ------------------------------------------------------- After version 15 they display types stopped doing anything. Make them change the visual style again. task-4554655 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#203464 Forward-Port-Of: odoo/odoo#201186
Original PR description
FIX FOR MASTER −1 ------------------------------------------------------- After version 15 they display types stopped doing anything. Make them change the visual style again. task-4554655 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#203464 Forward-Port-Of: odoo/odoo#201186
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#203509 Forward-Port-Of: odoo/odoo#201780
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#203509 Forward-Port-Of: odoo/odoo#201780
Required upgrade to sdk 5.65.0 or higher: https://docs.adyen.com/online-payments/release-notes/?Web+Components%2FDrop-in=&title%5B0%5D=Web+Components%2FDrop-in#releaseNote=2024-05-27-web-componentsdrop-in-5.65.0 Upgrade sdk to 6.9.0 and api to 71 task-4649327 Forward-Port-Of: odoo/odoo#202498
Original PR description
Required upgrade to sdk 5.65.0 or higher: https://docs.adyen.com/online-payments/release-notes/?Web+Components%2FDrop-in=&title%5B0%5D=Web+Components%2FDrop-in#releaseNote=2024-05-27-web-componentsdrop-in-5.65.0 Upgrade sdk to 6.9.0 and api to 71 task-4649327 Forward-Port-Of: odoo/odoo#202498
Steps to reproduce: ------------------- 1. Enable "basic receipt" from pos configs 2. Make an order and on the ticket screen, click "Print basic receipt" -> The price info are shown on the printed receipt, even though it shouldn't be the case since a basic ticket is meant for gifts for instance. Reason and fix: --------------- Commit b83b13030d8fbc1ca51731c13d88b194d93945ac showed some prices infor without taking into consideration the prop `basic_receipt`, which was fixed by this com
Original PR description
Steps to reproduce: ------------------- 1. Enable "basic receipt" from pos configs 2. Make an order and on the ticket screen, click "Print basic receipt" -> The price info are shown on the printed receipt, even though it shouldn't be the case since a basic ticket is meant for gifts for instance. Reason and fix: --------------- Commit b83b13030d8fbc1ca51731c13d88b194d93945ac showed some prices infor without taking into consideration the prop `basic_receipt`, which was fixed by this commit. opw-4652730 Forward-Port-Of: odoo/odoo#203085
The computed fields were not correctly triggered when there was some concurrency issues. One of those fields is `made_sequence_gap`, which was then set to `True` after being posted because it was still holding the value of when it wasn't posted. Forward-Port-Of: odoo/odoo#204057 Forward-Port-Of: odoo/odoo#203796
Original PR description
The computed fields were not correctly triggered when there was some concurrency issues. One of those fields is `made_sequence_gap`, which was then set to `True` after being posted because it was still holding the value of when it wasn't posted. Forward-Port-Of: odoo/odoo#204057 Forward-Port-Of: odoo/odoo#203796
LATAM task 1299 / Adhoc Task 47453 --- ### Description of the issue/feature this PR addresses: Update the Argentinean Legal Invoice Report regarding ARCA's new legal requirement: Tax breakdown on B2C. This only affects Factura B and related documents. Now, we will show an extra tax detail section with the title "Fiscal Transparency Regime for the Final Consumer (Law 27.743)" and show the details of the taxes grouped by type: VAT Taxes and Other National Internal Indirect Taxes. For m
Original PR description
LATAM task 1299 / Adhoc Task 47453 --- ### Description of the issue/feature this PR addresses: Update the Argentinean Legal Invoice Report regarding ARCA's new legal requirement: Tax breakdown on…
LATAM task 1299 / Adhoc Task 47453 --- ### Description of the issue/feature this PR addresses: Update the Argentinean Legal Invoice Report regarding ARCA's new legal requirement: Tax breakdown on B2C. This only affects Factura B and related documents. Now, we will show an extra tax detail section with the title "Fiscal Transparency Regime for the Final Consumer (Law 27.743)" and show the details of the taxes grouped by type: VAT Taxes and Other National Internal Indirect Taxes. For more info about the RG, go to https://servicioscf.afip.gob.ar/publico/sitio/contenido/novedad/ver.aspx?id=4448 ### Current behavior before PR: Old version of legal PDF report; we are not showing vat taxes, and summarying internal and national taxes on the tax totals  ### Desired behavior after PR is merged: We add a special table at the end of the report (ask required in the RG) with the detail of the taxes group by type: vat taxes, and other internal and national taxes  --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#204055 Forward-Port-Of: odoo/odoo#201257
Purpose ======= We want to enforce the web style in the Documents app, therefor we enable the eslint configuration for the application. Forward-Port-Of: odoo/odoo#203890
Original PR description
Purpose ======= We want to enforce the web style in the Documents app, therefor we enable the eslint configuration for the application. Forward-Port-Of: odoo/odoo#203890
In order to correctly filter recipients in both default and suggested computation, it is easier to do it in two steps. First one is to compute all potential recipients, then filter them. Default and suggested recipients now both filter aliases or alias domains emails. Todo for master: somehow make code and return types coherent between default and suggested recipients computation. Task-4668703 Forward-Port-Of: odoo/odoo#203123
Original PR description
In order to correctly filter recipients in both default and suggested computation, it is easier to do it in two steps. First one is to compute all potential recipients, then filter them. Default and suggested recipients now both filter aliases or alias domains emails. Todo for master: somehow make code and return types coherent between default and suggested recipients computation. Task-4668703 Forward-Port-Of: odoo/odoo#203123
Before this PR, live chats were sometimes displayed under the wrong category. Steps to reproduce: - Ensure you have one live chat pinned in the sidebar. - Go to the inbox, fold the live chat category. - Reload the page. - Open the live chat category. - The chat is displayed under the wrong category. Since [1], the t-key used in the side bar template is the index of the category which is not reliable. Change it to the id field which is also unique but more reliable. [1]: https://git
Original PR description
Before this PR, live chats were sometimes displayed under the wrong category. Steps to reproduce: - Ensure you have one live chat pinned in the sidebar. - Go to the inbox, fold the live chat category. - Reload the page. - Open the live chat category. - The chat is displayed under the wrong category. Since [1], the t-key used in the side bar template is the index of the category which is not reliable. Change it to the id field which is also unique but more reliable. [1]: https://github.com/odoo/odoo/pull/203150  Forward-Port-Of: odoo/odoo#203673 Forward-Port-Of: odoo/odoo#203416
### Steps to reproduce: - Create a storable product tracked by serial number available from the pos and with a set pos category. - Open a pos session and click on your product. > A dialog openns for you to register serial numbers. - Edit a first SN: SN001 and press enter > A new line can now be set to create a second one. - Edit a second SN: SN002 and press enter - Confirm the dialog #### > The quantity displayed on teh POS order line is 1 rather than 2. ### Cause of the issue: C
Original PR description
### Steps to reproduce: - Create a storable product tracked by serial number available from the pos and with a set pos category. - Open a pos session and click on your product. > A dialog openns for…
### Steps to reproduce: - Create a storable product tracked by serial number available from the pos and with a set pos category. - Open a pos session and click on your product. > A dialog openns for you to register serial numbers. - Edit a first SN: SN001 and press enter > A new line can now be set to create a second one. - Edit a second SN: SN002 and press enter - Confirm the dialog #### > The quantity displayed on teh POS order line is 1 rather than 2. ### Cause of the issue: Clicking on the product card from the pos will trigger a call of the `AddProductToCurrentOrder` that will add a quantity of the product set via the options: https://github.com/odoo/odoo/blob/6197233ef1611ddd974cfdb06ae2568e4af369de/addons/point_of_sale/static/src/app/store/pos_store.js#L1965-L1978 However, the `getAddProductOptions` call sets a quantity to add of 1 no matter if you added multiple or even removed multiple registered SN. https://github.com/odoo/odoo/blob/6197233ef1611ddd974cfdb06ae2568e4af369de/addons/point_of_sale/static/src/app/store/models.js#L180 On the other hand, since at the moment of this call we do not have the info of the lines that were removed in the dialog it is not possible to always provide the correct (possibly negative) quantity to add to the line for the qty to be correctly handledby the posorder line. However, just as when you edit the line dirrectly this can be achieved by updating the quantity based on the relevant lots present on the line: https://github.com/odoo/odoo/blob/6197233ef1611ddd974cfdb06ae2568e4af369de/addons/point_of_sale/static/src/app/store/models.js#L570-L572 opw-4554842 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#202887 Forward-Port-Of: odoo/odoo#199127
**Steps to reproduce:** 1. Create a company with IQD as its currency 1. Create a product with average costing and real_time accounting 2. Create an exchange rate from USD to IQD (e.g, 0.00075758 USD per IQD) 3. Create a purchase order for the product like: a. currency: USD b. price unit: 12.6 c. qty: 6 d. discount: 33.33% 4. Confirm the order 5. Receive the product 6. Create the bill 7. Open the journal items tree view The credit/debit amounts of the journal entrie
Original PR description
**Steps to reproduce:** 1. Create a company with IQD as its currency 1. Create a product with average costing and real_time accounting 2. Create an exchange rate from USD to IQD (e.g, 0.00075758 USD…
**Steps to reproduce:**
1. Create a company with IQD as its currency
1. Create a product with average costing and real_time accounting
2. Create an exchange rate from USD to IQD (e.g, 0.00075758 USD per IQD)
3. Create a purchase order for the product like:
a. currency: USD
b. price unit: 12.6
c. qty: 6
d. discount: 33.33%
4. Confirm the order
5. Receive the product
6. Create the bill
7. Open the journal items tree view
The credit/debit amounts of the journal entries for the reception and the invoice don't match. The `amount_currency` is the same, but there are additional exchange differences items.
The reception journal item balance is taken from the `stock.valuation.layer`.
In the example, `unit_cost` is in the company currency IQD:
https://github.com/odoo/odoo/blob/191d44c91a4578445d8cb59d3172042022cb5a9a/addons/stock_account/models/product.py#L177
The invoice's balance is computed with `amount_currency`, which is converted to USD with the exchange rate and rounded:
https://github.com/odoo/odoo/blob/4e724323d811dec76c186b5cfff6e4b0135b2128/addons/account/models/account_move_line.py#L1570
The difference between the roundings (depending on the conversion rate) may generate exchange differences that shouldn't be there.
**Fix:**
Try to prepare the AML balance while creating it from a purchase
line- we have the unrounded `price_unit_discounted` that may be
used to find an accurate balance.
Ticket [link](https://www.odoo.com/odoo/project/967/tasks/4103167)
opw-4103167
Forward-Port-Of: odoo/odoo#203386
Forward-Port-Of: odoo/odoo#190043In this commit, we're removing the initial delay from macro.js. This parameter was introduced to try to optimize macro execution times. However, in practice, it doesn't change much. The debounceDelay is only used if there's a trigger in a step. 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#20
Original PR description
In this commit, we're removing the initial delay from macro.js. This parameter was introduced to try to optimize macro execution times. However, in practice, it doesn't change much. The debounceDelay is only used if there's a trigger in a step. 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#203579 Forward-Port-Of: odoo/odoo#203505
- Open a Contact; - Click on the Accounting tab; Before this commit, a recursion occurred which blocked the interface. This issue arises due to the FieldMany2ManyTagsBanks component always saving the record on its setup. Additionally, since [1], a saved record without changes will be updated with the initial values. This will generate a re-rendering and the FieldMany2ManyTagsBanks will force the record to be saved again, and this will create a recursion. Now, the FieldMany2ManyTagsBanks w
Original PR description
- Open a Contact; - Click on the Accounting tab; Before this commit, a recursion occurred which blocked the interface. This issue arises due to the FieldMany2ManyTagsBanks component always saving the record on its setup. Additionally, since [1], a saved record without changes will be updated with the initial values. This will generate a re-rendering and the FieldMany2ManyTagsBanks will force the record to be saved again, and this will create a recursion. Now, the FieldMany2ManyTagsBanks will only save dirty records. opw-4675973 opw-4676949 opw-4677092 opw-4677086 opw-4677856 opw-4678211 [1] : https://github.com/odoo/odoo/commit/43fb8a45ac629c1883ca9521a8879cf19ca7538b Forward-Port-Of: odoo/odoo#203818
Currently, atraceback is occurring when the user tries to generate an e-Waybill. To reproduce this issue: 1) Install `l10n_in_ewaybill_irn` and switch to Indian company 2) Create a posted customer Invoice with aml containing taxes 3) Click `Create e-Waybill` button and provide the required values. 4) Now click on the `Generate e-Waybill` button Error:- ``` AttributeError: 'NoneType' object has no attribute 'get' ``` This error occurred after the refactoring was done from th
Original PR description
Currently, atraceback is occurring when the user tries to generate an e-Waybill. To reproduce this issue: 1) Install `l10n_in_ewaybill_irn` and switch to Indian company 2) Create a posted customer…
Currently, atraceback is occurring when the user tries to generate an e-Waybill. To reproduce this issue: 1) Install `l10n_in_ewaybill_irn` and switch to Indian company 2) Create a posted customer Invoice with aml containing taxes 3) Click `Create e-Waybill` button and provide the required values. 4) Now click on the `Generate e-Waybill` button Error:- ``` AttributeError: 'NoneType' object has no attribute 'get' ``` This error occurred after the refactoring was done from the commit(https://github.com/odoo/odoo/pull/191920/commits/c985becafc4a1245c441451e9ca0d2b2c4efda21) But in the previous version an else block was there to pass and empty dict if there is no indian edi. https://github.com/odoo/odoo/blob/eb4a03f4e00c35b74aafa16533c8c8b74004542f/addons/l10n_in_edi/models/account_move.py#L49-L52 However after the above commit, it was removed https://github.com/odoo/odoo/blob/3be945c89dcd1276551a855189f2d5f908908651/addons/l10n_in_edi/models/account_move.py#L156-L159 This leads to the above traceback from the below line. https://github.com/odoo/odoo/blob/3be945c89dcd1276551a855189f2d5f908908651/addons/l10n_in_ewaybill_irn/models/l10n_in_ewaybill.py#L45 sentry-6442414522 Forward-Port-Of: odoo/odoo#203070
Issue: In Barcode, performing certain operations and then reverting your changes can drastically affect the state of records: "picked" status or the visual demand of the move. ### Steps to reproduce: - Create a storable product tracked by SN. Put 2 SN in stock SN1 and SN2 - Create a delivery order for 2 units and mark as to do. > The two SN's should be reserved on your delivery. - Go to the barcode app, scan SN1. - Edit edit the SN1 line to set the qty back to 0. - Leave the barcode a
Original PR description
Issue: In Barcode, performing certain operations and then reverting your changes can drastically affect the state of records: "picked" status or the visual demand of the move. ### Steps to reproduce:…
Issue: In Barcode, performing certain operations and then reverting your changes can drastically affect the state of records: "picked" status or the visual demand of the move. ### Steps to reproduce: - Create a storable product tracked by SN. Put 2 SN in stock SN1 and SN2 - Create a delivery order for 2 units and mark as to do. > The two SN's should be reserved on your delivery. - Go to the barcode app, scan SN1. - Edit edit the SN1 line to set the qty back to 0. - Leave the barcode app and come back to the record. #### > The subline related to SN1 displays now a demand of 0. A new barcode line has been created with a demand of 1 for SN1. In short an extra record was created unecessarily. ### Cause of the issue: In the barcode app the demand of each line is measured by the quantity present on its move lines. In our set up, the move is related to 2 moves lines with a quantity of 1 that are not picked. Scanning SN1 will update the qty_done of its line to 1. As such, the move line quantity will be set from 1 to 1 and the move line will be picked: https://github.com/odoo/enterprise/blob/e8c831a540c12019c560cc19abf7abe8785d0e0e/stock_barcode/models/stock_move_line.py#L58-L61 In turns, the picked state of the move will be set to picked: https://github.com/odoo/odoo/blob/7bc38562f1988ba15525c04168e30c06a8f1d33c/addons/stock/models/stock_move.py#L208-L212 Now, editing the qty done of the move once more from 1 to 0 to reset the reservation will not revert the process for 2 reasons: 1. The quantity of the move line will be reset form its current value to 0, altering the demand of the barcode line to 0. 2. Even if the move line was unpicked in this process, the picked compute method of the move will never reset the picked state as the compute method can only set a True value. We therefore end up with a picked move without any picked move line and for which one of the picked move line has a quantity of 0. Now, leaving the barcode app will launch the split_uncompleted_moves method in order to not lose the changes made to the record and since the move is picked for the wrong reason, the move will be splitted in 2 instead of escaping the split process. https://github.com/odoo/enterprise/blob/e8c831a540c12019c560cc19abf7abe8785d0e0e/stock_barcode/models/stock_move.py#L21-L22 Enterprise: https://github.com/odoo/enterprise/pull/80675 opw-4600565 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#202882 Forward-Port-Of: odoo/odoo#200167
When you create a new server action and select the type "Webhook", you get a traceback because no model is set yet on the server action. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#203423
Original PR description
When you create a new server action and select the type "Webhook", you get a traceback because no model is set yet on the server action. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#203423
When a step in an onboarding tour ask for an edit on an autocomplete input, selecting a dropdown item valid the step. And if the next step was a click on a dropdown item, this step is also validated. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#203519
Original PR description
When a step in an onboarding tour ask for an edit on an autocomplete input, selecting a dropdown item valid the step. And if the next step was a click on a dropdown item, this step is also validated. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#203519
Before this commit and since https://github.com/odoo/odoo/pull/110188, The people invited to a channel by someone in a call in that channel wouldn't receive a call invitation, as the invitation parameter was omitted during the refactor. This commit fixes this issue. Forward-Port-Of: odoo/odoo#200878 Forward-Port-Of: odoo/odoo#199580
Original PR description
Before this commit and since https://github.com/odoo/odoo/pull/110188, The people invited to a channel by someone in a call in that channel wouldn't receive a call invitation, as the invitation parameter was omitted during the refactor. This commit fixes this issue. Forward-Port-Of: odoo/odoo#200878 Forward-Port-Of: odoo/odoo#199580
Commit https://github.com/odoo/enterprise/commit/0461225242188dd64b50a663d54fd9dcbf4a8bae removed the partial namespace, but it should only have been removed for `OsobaNiefizyczna`. Also fixed the `country_code` for foreign VAT companies with the VAT number that does not begin with the `country_code`. Ticket [link](https://www.odoo.com/odoo/project/967/tasks/4502550) opw-4502550 Forward-Port-Of: odoo/enterprise#81359
Original PR description
Commit https://github.com/odoo/enterprise/commit/0461225242188dd64b50a663d54fd9dcbf4a8bae removed the partial namespace, but it should only have been removed for `OsobaNiefizyczna`. Also fixed the `country_code` for foreign VAT companies with the VAT number that does not begin with the `country_code`. Ticket [link](https://www.odoo.com/odoo/project/967/tasks/4502550) opw-4502550 Forward-Port-Of: odoo/enterprise#81359
- Introduces a custom report handler for the Italian "Libro Giornale" variant of journal report. - Fetches and processes journal entry data, including date, journal name, labels, debit, credit, and account details. - Builds an SQL query to retrieve and structure accounting transactions in chronological order. - Groups journal entries, formats columns, and calculates total debit and credit values. - Ensures proper date formatting (`YYYY-MM-DD`) and structured report output for complia
Original PR description
- Introduces a custom report handler for the Italian "Libro Giornale" variant of journal report. - Fetches and processes journal entry data, including date, journal name, labels, debit, credit, and account details. - Builds an SQL query to retrieve and structure accounting transactions in chronological order. - Groups journal entries, formats columns, and calculates total debit and credit values. - Ensures proper date formatting (`YYYY-MM-DD`) and structured report output for compliance with Italian accounting standards. - Adds the report generation date to the PDF upon extraction - I have added display_type in the query of journal report to use it in sorting task-4502158 Forward-Port-Of: odoo/enterprise#82493 Forward-Port-Of: odoo/enterprise#78746
Issue: In Barcode, performing certain operations and then reverting your changes can drastically affect the state of records: "picked" status or the visual demand of the move. ### Steps to reproduce: - Create a storable product tracked by SN. Put 2 SN in stock SN1 and SN2 - Create a delivery order for 2 units and mark as to do. > The two SN's should be reserved on your delivery. - Go to the barcode app, scan SN1. - Edit edit the SN1 line to set the qty back to 0. - Leave the barcode a
Original PR description
Issue: In Barcode, performing certain operations and then reverting your changes can drastically affect the state of records: "picked" status or the visual demand of the move. ### Steps to reproduce:…
Issue: In Barcode, performing certain operations and then reverting your changes can drastically affect the state of records: "picked" status or the visual demand of the move. ### Steps to reproduce: - Create a storable product tracked by SN. Put 2 SN in stock SN1 and SN2 - Create a delivery order for 2 units and mark as to do. > The two SN's should be reserved on your delivery. - Go to the barcode app, scan SN1. - Edit edit the SN1 line to set the qty back to 0. - Leave the barcode app and come back to the record. #### > The subline related to SN1 displays now a demand of 0. A new barcode line has been created with a demand of 1 for SN1. In short an extra record was created unecessarily. ### Cause of the issue: In the barcode app the demand of each line is measured by the quantity present on its move lines. In our set up, the move is related to 2 moves lines with a quantity of 1 that are not picked. Scanning SN1 will update the qty_done of its line to 1. As such, the move line quantity will be set from 1 to 1 and the move line will be picked: https://github.com/odoo/enterprise/blob/e8c831a540c12019c560cc19abf7abe8785d0e0e/stock_barcode/models/stock_move_line.py#L58-L61 In turns, the picked state of the move will be set to picked: https://github.com/odoo/odoo/blob/7bc38562f1988ba15525c04168e30c06a8f1d33c/addons/stock/models/stock_move.py#L208-L212 Now, editing the qty done of the move once more from 1 to 0 to reset the reservation will not revert the process for 2 reasons: 1. The quantity of the move line will be reset form its current value to 0, altering the demand of the barcode line to 0. 2. Even if the move line was unpicked in this process, the picked compute method of the move will never reset the picked state as the compute method can only set a True value. We therefore end up with a picked move without any picked move line and for which one of the picked move line has a quantity of 0. Now, leaving the barcode app will launch the split_uncompleted_moves method in order to not lose the changes made to the record and since the move is picked for the wrong reason, the move will be splitted in 2 instead of escaping the split process. https://github.com/odoo/enterprise/blob/e8c831a540c12019c560cc19abf7abe8785d0e0e/stock_barcode/models/stock_move.py#L21-L22 Community: https://github.com/odoo/odoo/pull/200167 opw-4600565 Forward-Port-Of: odoo/enterprise#82065 Forward-Port-Of: odoo/enterprise#80675
Follow-up of b5cc3c15, forgotten change in saas-18.1 FW-port. Task-4678100 Forward-Port-Of: odoo/enterprise#82312
Original PR description
Follow-up of b5cc3c15, forgotten change in saas-18.1 FW-port. Task-4678100 Forward-Port-Of: odoo/enterprise#82312
Even if follower, customer is now suggested. Task-4668703 Forward-Port-Of: odoo/enterprise#82385
Original PR description
Even if follower, customer is now suggested. Task-4668703 Forward-Port-Of: odoo/enterprise#82385
With the new LIPE export, posting a closing entry opens an export wizard which breaks some tests. This PR implements a workaround to not open that wizard. --- Community PR: https://github.com/odoo/odoo/pull/195948 task-4507942 Forward-Port-Of: odoo/enterprise#82470 Forward-Port-Of: odoo/enterprise#80009
Original PR description
With the new LIPE export, posting a closing entry opens an export wizard which breaks some tests. This PR implements a workaround to not open that wizard. --- Community PR: https://github.com/odoo/odoo/pull/195948 task-4507942 Forward-Port-Of: odoo/enterprise#82470 Forward-Port-Of: odoo/enterprise#80009
Forward-Port-Of: odoo/enterprise#82212 Forward-Port-Of: odoo/enterprise#81465
Original PR description
Forward-Port-Of: odoo/enterprise#82212 Forward-Port-Of: odoo/enterprise#81465
The list of approvers is computed based on the selected category for the approval request. Before the fix, the list would keep previous approvers when changing the category. This could lead to issues where users could add themselves as approvers on unauthorized categories. Steps to reproduce: - Create an approval request category (c1) with yourself as approver. - Create another approval request category (c2) with someone else as approver. - Create a request with category c1 and change to c
Original PR description
The list of approvers is computed based on the selected category for the approval request. Before the fix, the list would keep previous approvers when changing the category. This could lead to issues where users could add themselves as approvers on unauthorized categories. Steps to reproduce: - Create an approval request category (c1) with yourself as approver. - Create another approval request category (c2) with someone else as approver. - Create a request with category c1 and change to category c2. - You are now an approver of the approval request. This commit fixes the issue by reseting the list of approvers to only take the ones configured on the category. task-4637083 Forward-Port-Of: odoo/enterprise#82133 Forward-Port-Of: odoo/enterprise#81129
Issue: - Try to pay zero amount subscrption traceback. Cause: - From payment we send `None` amount when there is no amount and we try to compare the amount and because of that it gives traceback. Fix: - Set zero to amount if it is None. Forward-Port-Of: odoo/enterprise#82042
Original PR description
Issue: - Try to pay zero amount subscrption traceback. Cause: - From payment we send `None` amount when there is no amount and we try to compare the amount and because of that it gives traceback. Fix: - Set zero to amount if it is None. Forward-Port-Of: odoo/enterprise#82042
Versions -------- - 17.0+ Steps ----- 1. Have a salesman user without accounting rights; 2. assign user to a subscription; 3. create an invoice for the subscription; 4. assign a different salesman to the subscription; 5. as the initial salesman, try to close the subscription. Issue ----- Depending on the state of the cache, one of two things happen: 1. You get a validation error, saying the subscription has no invoices. 2. You get an access error if the invoice lines exist in t
Original PR description
Versions -------- - 17.0+ Steps ----- 1. Have a salesman user without accounting rights; 2. assign user to a subscription; 3. create an invoice for the subscription; 4. assign a different salesman to the subscription; 5. as the initial salesman, try to close the subscription. Issue ----- Depending on the state of the cache, one of two things happen: 1. You get a validation error, saying the subscription has no invoices. 2. You get an access error if the invoice lines exist in the cache. Cause ----- The salesman only has read access to their own invoices. The first error happens because they cannot search for others' invoices. The second error happens because they cannot read the cached records. Solution -------- Use `sudo` to check for existing invoices. opw-4554639 Forward-Port-Of: odoo/enterprise#82243
This module implements issueing NFC-e receipts through the POS. The process is conceptually similar to what we do for invoices. First taxes are calculated, and then we e-invoice. The calculated taxes will never change the order total. NFC-e mandates taxes to always be included in the price so we don't need any additional RPC call before payment. One way of achieving this was through l10n_br_edi, forcing every pos.order to be invoiced and then following the implemented flows on account.move
Original PR description
This module implements issueing NFC-e receipts through the POS. The process is conceptually similar to what we do for invoices. First taxes are calculated, and then we e-invoice. The calculated taxes…
This module implements issueing NFC-e receipts through the POS. The process is conceptually similar to what we do for invoices. First taxes are calculated, and then we e-invoice. The calculated taxes will never change the order total. NFC-e mandates taxes to always be included in the price so we don't need any additional RPC call before payment. One way of achieving this was through l10n_br_edi, forcing every pos.order to be invoiced and then following the implemented flows on account.move. We decided against it because: - It leads to a large amount of mostly unnecessary invoices, - It's conceptually strange to the user, NFC-e "invoices" resemble POS receipts more than they do invoices, - The flow in the POS is simpler, we handle tax calculation and EDI in one atomic step. We therefore chose to re-implement EDI for pos.order. The downside of this approach is that we temporarily need to copy some code from l10n_br_edi. In master this code can be consolidated in a common mixin. The integration tries to never block POS sales. You're allowed to retry EDI later. When EDI fails, the POS user is informed and we fall back to the standard receipt (marked as a "receipt without fiscal value"). For refunds we still go through account.move, as NFC-e doesn't support refunds (must be NF-e, which is what we already support for account.move). task-3564171 Forward-Port-Of: odoo/enterprise#81796 Forward-Port-Of: odoo/enterprise#77206