Saturday, April 22, 2023
29 changes · master
Enhancements to existing features
Bank statement lines can now store extra details about the related transaction. This helps businesses keep more complete payment information directly with their bank reconciliation records.
Original PR description
For some reasons, we need to store information about a transaction in the bank statement line. This commit adds the field to handle this information. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The spreadsheet component was updated to a newer version with improvements to undo/redo behavior, including a redo shortcut, and several performance optimizations. Users should experience smoother spreadsheet interactions, better filter icon alignment, and fewer interface glitches.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/6304f41c [REL] 16.3.0-alpha.5 https://github.com/odoo/o-spreadsheet/commit/5d6d39ff [IMP] history: add the possibility…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/6304f41c [REL] 16.3.0-alpha.5 https://github.com/odoo/o-spreadsheet/commit/5d6d39ff [IMP] history: add the possibility to repeat commands at redo Task: 2508693 https://github.com/odoo/o-spreadsheet/commit/f48587de [IMP] grid: add F4 shortcut to redo Task: 2508693 https://github.com/odoo/o-spreadsheet/commit/6ada2a17 [REF] history: transform history into a UI plugin Task: 2508693 https://github.com/odoo/o-spreadsheet/commit/f8490e90 [IMP] *: use deepCopy instead of JSON.parse(JSON.stringify) Task: 3272878 https://github.com/odoo/o-spreadsheet/commit/65387405 [IMP] model: store handler arrays Task: 3272878 https://github.com/odoo/o-spreadsheet/commit/5ebc4e30 [IMP] formats: performance of `splitNumber()` Task: 3272878 https://github.com/odoo/o-spreadsheet/commit/a4b68944 [IMP] sheet: move cells methods performance Task: 3272878 https://github.com/odoo/o-spreadsheet/commit/0b4b8ab0 [IMP] header_visibility: improve perfs of `findVisibleHeader` Task: 3272878 https://github.com/odoo/o-spreadsheet/commit/4178abad [FIX] grid: don't focus input if it's unmounted https://github.com/odoo/o-spreadsheet/commit/9c801ee0 [IMP] xml_bundle: make bundling xml templates sync https://github.com/odoo/o-spreadsheet/commit/58a15c79 [IMP] FilterIconsOverlay: vertical align for filter icon Task: 3162258 https://github.com/odoo/o-spreadsheet/commit/76141f75 [FIX] test: jest.setTimeout() pushed by error
The appointment app now uses clearer wording for shared booking links, helping users understand what the links are for and how to create them. The menu label was also updated from “Share Links” to “Shared Links,” and users can now start creating a shared link directly from the helper message.
Original PR description
Detail the action helper wording for shared links. Also add a button on the helper that opens the dialog form view of appointment_invite model to create them directly from there. Rename the record / menu from 'Share Links' to 'Shared Links' Task-3252407
Odoo Studio onboarding tours are now given lower priority, so users are less likely to be prompted to customize Odoo too early. This helps new users first become familiar with standard Odoo workflows before being introduced to advanced customization tools.
Original PR description
Studio is anm advanced tool and should be the last one to be pushed in the user's face - let the user get used to Odoo before askin them to modify it. Task-3279135
The bank reconciliation widget now shows additional transaction details and presents internal form notes in a cleaner, easier-to-read way. This helps accounting users review bank entries faster and make reconciliation decisions with better context.
Resolved issues and error corrections
This fixes an issue where grouped data requests in the web interface could be sent in the wrong format. The change helps prevent errors when users view or analyze grouped information, improving reliability without changing visible features.
Original PR description
A mistake introduced in 234db70d861a7bc9c6620f9ef6a24dbe98eabb98, the `groupby` of `_read_group` should be list/tuple of `str`, not a `str`.
Features or functions removed from Odoo
This update removes unused internal code from the Mail module. It helps keep the system cleaner and easier to maintain without changing how users interact with Odoo.
Code cleanup and technical improvements
The chat history function has been moved from the general mail area into the live chat module, where it is actually used. This is an internal cleanup that helps prepare Odoo for a clearer separation between messaging and discussion features, with no expected change for end users.
Original PR description
It is only used there. In preparation of splitting discuss and mail modules. Part of task-3265211
Miscellaneous changes
When you create an entry on Miscellaneous Operations journal and schedule an activity on that entry, the Accounting dashboard crashes and gets completely inaccessible because of an untranslated field on mail.activity.type. Task: 3283382 opw: 3277677 Forward-Port-Of: odoo/odoo#119232
Original PR description
When you create an entry on Miscellaneous Operations journal and schedule an activity on that entry, the Accounting dashboard crashes and gets completely inaccessible because of an untranslated field on mail.activity.type. Task: 3283382 opw: 3277677 Forward-Port-Of: odoo/odoo#119232
When importing documents that have a `date` or a `datetime` field a conversion is done on the format string in case it was still in the old moment format (e.g. YYYYMMDD). The problem is that this conversion was done regardless if the format string was valid or not. This was producing botched format strings that would prevent any import having a date or datetime field with proper format string. Forward-Port-Of: odoo/odoo#119193
Original PR description
When importing documents that have a `date` or a `datetime` field a conversion is done on the format string in case it was still in the old moment format (e.g. YYYYMMDD). The problem is that this conversion was done regardless if the format string was valid or not. This was producing botched format strings that would prevent any import having a date or datetime field with proper format string. Forward-Port-Of: odoo/odoo#119193
Forward-Port-Of: odoo/odoo#118977 Forward-Port-Of: odoo/odoo#118707
Original PR description
Forward-Port-Of: odoo/odoo#118977 Forward-Port-Of: odoo/odoo#118707
Steps to reproduce: - install website_sale; - install website_sale_picking; - enable just "Pay in store when picking the product" provider; - pusblish just "[On Site Pick] My Shop 1" shipping method; - go to ecommerce and make the purchase flow. Issue: A traceback appears on the "/shop/payment" page. Cause: We use the `txContext` field in the `_setPaymentFlow` method before it is initialized. Indeed during the `start` method, we have to wait for the end of the super before `txConte
Original PR description
Steps to reproduce: - install website_sale; - install website_sale_picking; - enable just "Pay in store when picking the product" provider; - pusblish just "[On Site Pick] My Shop 1" shipping method; - go to ecommerce and make the purchase flow. Issue: A traceback appears on the "/shop/payment" page. Cause: We use the `txContext` field in the `_setPaymentFlow` method before it is initialized. Indeed during the `start` method, we have to wait for the end of the super before `txContext` is initialized. Since the `start` method is asynchronous, this will not block the `_setPaymentFlow` method call which will use the uninitialized field. opw-3257641 Forward-Port-Of: odoo/odoo#119225 Forward-Port-Of: odoo/odoo#118608
Search a product on shop, Filter on shop must compute data and take care of product's company opw-3251404 Description of the issue/feature this PR addresses: Price range filter has a max value that not linked to a item in the shop Current behavior before PR: Webshop price range filter's data is compute without taking care of product's company Desired behavior after PR is merged: Webshop price range filter's data is compute and take care of product's company --- I confir
Original PR description
Search a product on shop, Filter on shop must compute data and take care of product's company opw-3251404 Description of the issue/feature this PR addresses: Price range filter has a max value that not linked to a item in the shop Current behavior before PR: Webshop price range filter's data is compute without taking care of product's company Desired behavior after PR is merged: Webshop price range filter's data is compute and take care of product's company --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#118049
If applied, this commit will solve the issue of QWebException when the user clicks on the 'Customer Preview' button and the sale order have a section in 'Order Lines' and the pricelist is not set. Steps to produce: - Create a sale order without a pricelist. - Add a section in Order Lines. - Click on the 'Customer Preview' button. Solve the issue by using the sale order's currency instead of the pricelist's currency. sentry - 4092292347 see - https://tinyurl.com/26gt5hoh Forward-Por
Original PR description
If applied, this commit will solve the issue of QWebException when the user clicks on the 'Customer Preview' button and the sale order have a section in 'Order Lines' and the pricelist is not set. Steps to produce: - Create a sale order without a pricelist. - Add a section in Order Lines. - Click on the 'Customer Preview' button. Solve the issue by using the sale order's currency instead of the pricelist's currency. sentry - 4092292347 see - https://tinyurl.com/26gt5hoh Forward-Port-Of: odoo/odoo#119043
Prior, application_count was computed in batch. In order to do so, the complex query was used, which can be error prone. As the field is only used for smart button on the form, we can assume that the method will be called for one record at a time, thus using ORM methods will not make big difference in terms of speed, while it is more elegant and secure. Note: that we still need to have _compute_application_count in batch, as it is a compute method. task - 3266694 Forward-Port-Of: odoo/
Original PR description
Prior, application_count was computed in batch. In order to do so, the complex query was used, which can be error prone. As the field is only used for smart button on the form, we can assume that the method will be called for one record at a time, thus using ORM methods will not make big difference in terms of speed, while it is more elegant and secure. Note: that we still need to have _compute_application_count in batch, as it is a compute method. task - 3266694 Forward-Port-Of: odoo/odoo#119017
This commit fixes a bug that was occurring in the code sections when using Shift+Enter (soft return) for new lines. Steps to reproduce: - in a code section (a `<pre>` node) - write two or more lines separated with Shift+Enter - make the last line over one character long. - place the cursor at the end of the section and press backspace, or before the last character of the section and press delete. Unexpected behaviors: - an extra line is inserted before the current line - the cursor i
Original PR description
This commit fixes a bug that was occurring in the code sections when using Shift+Enter (soft return) for new lines. Steps to reproduce: - in a code section (a `<pre>` node) - write two or more lines…
This commit fixes a bug that was occurring in the code sections when using Shift+Enter (soft return) for new lines. Steps to reproduce: - in a code section (a `<pre>` node) - write two or more lines separated with Shift+Enter - make the last line over one character long. - place the cursor at the end of the section and press backspace, or before the last character of the section and press delete. Unexpected behaviors: - an extra line is inserted before the current line - the cursor is teleported at the beginning of the current line The bug originated from method `enforceWhitespace` which iterates over the dom from the cursor's position. There, the conditions unintendedly allowed the iteration to pursue until a `BR` node was found, in which case a rule which should not have been enforced would add another `BR` node, which also had the side effect of teleporting the cursor. This commit adds a break statement such that if none of the "main" conditions are met in the first iteration, it is stopped right away instead. Meeting those conditions still allows the iteration to proceed as before. Not meeting any of those conditions only happened in code sections as far as we can tell, as they are explicitly excluded because of their lower-level management of spaces. Should other cases occur, they should have their own conditions added and not rely on a top-level "else-by-default" to continue the iteration indefinitely. task-3239097 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#118899
Reproduction: 1. Create a /checklist, switch the direction by /swith 2. Type something and the list element is rtl, but the checkbox is on the left Fix: add margin to the right for checklist with the same value as the eft, reset left and right position for the li element with rtl direction For LI's child elements, it's a special case for direction change and we add the dir style to LI. We consider both LI and the childe nodes are changed, so the text-align attribute can be set/reset cor
Original PR description
Reproduction: 1. Create a /checklist, switch the direction by /swith 2. Type something and the list element is rtl, but the checkbox is on the left Fix: add margin to the right for checklist with the same value as the eft, reset left and right position for the li element with rtl direction For LI's child elements, it's a special case for direction change and we add the dir style to LI. We consider both LI and the childe nodes are changed, so the text-align attribute can be set/reset correctly opw-3215701 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#115634
The lockdate date should not be included in the check for sequence holes warning, as it is supposed to be locked. In the resequencing, if an account.move new name correspond to an old name, it could trigger the unique constraint ValidationError. This temporarily forces the concerned moves state to draft to avoid triggering the constraint Task-3280680 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: -
Original PR description
The lockdate date should not be included in the check for sequence holes warning, as it is supposed to be locked. In the resequencing, if an account.move new name correspond to an old name, it could trigger the unique constraint ValidationError. This temporarily forces the concerned moves state to draft to avoid triggering the constraint Task-3280680 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#119233
Revert the following commit : https://github.com/odoo/odoo/commit/66672cf7f63548638ad218d5cae44cde5868b318 The reason is that it is at the end not functionally desired. We do want to see the task reminder for tax return on journal dashboard no matter the date. task : 3231957 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#119355
Original PR description
Revert the following commit : https://github.com/odoo/odoo/commit/66672cf7f63548638ad218d5cae44cde5868b318 The reason is that it is at the end not functionally desired. We do want to see the task reminder for tax return on journal dashboard no matter the date. task : 3231957 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#119355
The computation of `use_in_tax_closing` was overlooked when refactoring[^1] the CoA templates. Since it was using a `onchange` with an extra code in `create` of the `account.tax.repartition.line.template`, it didn't work on its own after the refactoring. [^1]: 512574861691f425ec6a17f20fe4b586bb88a299 Forward-Port-Of: odoo/odoo#119175
Original PR description
The computation of `use_in_tax_closing` was overlooked when refactoring[^1] the CoA templates. Since it was using a `onchange` with an extra code in `create` of the `account.tax.repartition.line.template`, it didn't work on its own after the refactoring. [^1]: 512574861691f425ec6a17f20fe4b586bb88a299 Forward-Port-Of: odoo/odoo#119175
Description of the issue/feature this PR addresses: The footer 'selected count' button in the plan gantt view wasn't aligned, but it's the case for every dialogbox where you can select many records, simply removed a forced `bottom-margin` on the container Task-3254488 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#117161
Original PR description
Description of the issue/feature this PR addresses: The footer 'selected count' button in the plan gantt view wasn't aligned, but it's the case for every dialogbox where you can select many records, simply removed a forced `bottom-margin` on the container Task-3254488 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#117161
Before this commit, since https://github.com/odoo/odoo/pull/119014, the audio context could be closed when already. Until the implementation of AudioContext.state*, we have to catch the error. This commit also removes the forwarding to the destination that was not necessary. `* https://webaudio.github.io/web-audio-api/#widl-AudioContext-state Forward-Port-Of: odoo/odoo#119441 Forward-Port-Of: odoo/odoo#119392
Original PR description
Before this commit, since https://github.com/odoo/odoo/pull/119014, the audio context could be closed when already. Until the implementation of AudioContext.state*, we have to catch the error. This commit also removes the forwarding to the destination that was not necessary. `* https://webaudio.github.io/web-audio-api/#widl-AudioContext-state Forward-Port-Of: odoo/odoo#119441 Forward-Port-Of: odoo/odoo#119392
[FIX] sale_loyalty_taxcloud: do no remove tax when confirming SO ### Summary When the `sale_loyalty_taxcloud` is installed, confirming a SO clears all the tax. ### Setup - install `sale_management` and `sale_loyalty_taxcloud` - install, activate and publish the "Demo" payment provider - activated Taxcloud (with test credentials*) - set the Taxcloud fiscal position to “detect automatically” - Have a product available in your eShop ### Steps to reproduce 1. Go to the /sho
Original PR description
[FIX] sale_loyalty_taxcloud: do no remove tax when confirming SO ### Summary When the `sale_loyalty_taxcloud` is installed, confirming a SO clears all the tax. ### Setup - install `sale_management`…
[FIX] sale_loyalty_taxcloud: do no remove tax when confirming SO ### Summary When the `sale_loyalty_taxcloud` is installed, confirming a SO clears all the tax. ### Setup - install `sale_management` and `sale_loyalty_taxcloud` - install, activate and publish the "Demo" payment provider - activated Taxcloud (with test credentials*) - set the Taxcloud fiscal position to “detect automatically” - Have a product available in your eShop ### Steps to reproduce 1. Go to the /shop page, add a product to the cart and process checkout 2. On the payment page, leave everything to default and click `Pay Now` You should be met with a warning stating that the order could not be confirmed because the amount of your payment does not match the amount of your cart. The customer is charged the full amount (with taxes), however if you check the associated SO, you will notice that there's no tax. ### Cause In 16, when `sale_loyalty` is installed, confirming a sales order triggers the discounts to be updated: https://github.com/odoo/odoo/blob/2e5c0bf6568f9ed12a0a93d1519bdee75c5eec80/addons/sale_loyalty/models/sale_order.py#L57-L62 However, when `sale_loyalty_taxcloud` is installed, updating discounts has the side effect of also clearing the tax on all order lines: https://github.com/odoo/enterprise/blob/05ef12ccf5335272a41d5053cc5051c5bec54222/sale_loyalty_taxcloud/models/sale_order.py#L16-L22 ### Fix Also recompute the the taxcloud taxes when the SO is validated. opw-3242350 Forward-Port-Of: odoo/enterprise#39497
…ticket_id Before this commit: suitable_sale_order_ids gets populated with all sale orders in state 'sale' when creating a return without a ticket_id. This crashes whenever there are too many sales orders. After this commit: When there is no ticket_id, the field suitable_sale_order_ids is not used, therefore we can simply set it to False. OPW-3270381 Forward-Port-Of: odoo/enterprise#40072 Forward-Port-Of: odoo/enterprise#40009
Original PR description
…ticket_id Before this commit: suitable_sale_order_ids gets populated with all sale orders in state 'sale' when creating a return without a ticket_id. This crashes whenever there are too many sales orders. After this commit: When there is no ticket_id, the field suitable_sale_order_ids is not used, therefore we can simply set it to False. OPW-3270381 Forward-Port-Of: odoo/enterprise#40072 Forward-Port-Of: odoo/enterprise#40009
When posting to LinkedIn using their API, special characters such as parentheses, braces, angle brackets, and square brackets in the comment text were being skipped or encoded incorrectly. This commit fixes the issue by properly encoding these characters using double backslashes. Additionally, when retrieving posts from LinkedIn using their API, some special characters were not properly decoded and contained backslashes. This commit fixes the issue by replacing escaped special characters
Original PR description
When posting to LinkedIn using their API, special characters such as parentheses, braces, angle brackets, and square brackets in the comment text were being skipped or encoded incorrectly. This commit fixes the issue by properly encoding these characters using double backslashes. Additionally, when retrieving posts from LinkedIn using their API, some special characters were not properly decoded and contained backslashes. This commit fixes the issue by replacing escaped special characters with regular special characters using the replace function. These changes ensure that special characters are properly handled in both directions when communicating with the LinkedIn API. opw-3203020 Forward-Port-Of: odoo/enterprise#39842 Forward-Port-Of: odoo/enterprise#37297
…er bank sync with timeout Before this commit, when we import bank transaction we don't directly try to auto-reconcile, it is done through a cron asynchronously. This PR calls the auto-reconciliation synchronously after fetching transactions. It will try to reconcile as many records as possible within the time allocated. We also added a button on reconciliation models that are set to auto_reconcile to trigger the automatic reconciliation synchronously within allocated time, once again.
Original PR description
…er bank sync with timeout Before this commit, when we import bank transaction we don't directly try to auto-reconcile, it is done through a cron asynchronously. This PR calls the auto-reconciliation synchronously after fetching transactions. It will try to reconcile as many records as possible within the time allocated. We also added a button on reconciliation models that are set to auto_reconcile to trigger the automatic reconciliation synchronously within allocated time, once again. Task: 3259126 Forward-Port-Of: odoo/enterprise#40071 Forward-Port-Of: odoo/enterprise#39143
If applied, this commit will solve division by zero issue in the appointments. Before this commit When the appointment duration is 00:00 Hrs and there is only one Availability line. It will raise an issue while previewing the appointment slots. After this commit Added constraints for the appointment durations as it is taking 00:00 as the required value. It will solve the issue and stop the user while saving the record if there are 00:00 hours or negative hours. see - https://tinyurl.
Original PR description
If applied, this commit will solve division by zero issue in the appointments. Before this commit When the appointment duration is 00:00 Hrs and there is only one Availability line. It will raise an issue while previewing the appointment slots. After this commit Added constraints for the appointment durations as it is taking 00:00 as the required value. It will solve the issue and stop the user while saving the record if there are 00:00 hours or negative hours. see - https://tinyurl.com/2okxbnpr configuration - https://tinyurl.com/2gw5t2ex sentry - 3978288761 Forward-Port-Of: odoo/enterprise#37872
The 'clear' button of relational model filters was partly hidden. Task: 3213475 Forward-Port-Of: odoo/enterprise#40099 Forward-Port-Of: odoo/enterprise#39552
Original PR description
The 'clear' button of relational model filters was partly hidden. Task: 3213475 Forward-Port-Of: odoo/enterprise#40099 Forward-Port-Of: odoo/enterprise#39552
…conversion This commit adds missing multi-company currency conversion in partner ledger queries for account move lines without partners Forward-Port-Of: odoo/enterprise#39437
Original PR description
…conversion This commit adds missing multi-company currency conversion in partner ledger queries for account move lines without partners Forward-Port-Of: odoo/enterprise#39437