Friday, March 4, 2022
29 changes · master
New functionality added to Odoo
This update adds ready-to-use positioning helpers for Odoo web screens, aligning them with newer Bootstrap 5 capabilities. It helps developers place interface elements more consistently and efficiently, with minimal direct impact on end users.
Original PR description
Add "BTS5 ready" position utility classes. https://getbootstrap.com/docs/5.1/utilities/position/#arrange-elements -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Enhancements to existing features
Odoo no longer relies on the hardcoded “postmaster-odoo” bounce address for outgoing email handling. This allows businesses to use their normal email aliases and mail servers more consistently, reducing special configuration assumptions.
Original PR description
Coming from odoo/odoo@a4597fe34fcfa8dae28b156410080346bb33af33 . This code is not necessary anymore since we better handle From, SMTP-From, as well as allowing mail server filtering. We can now use standard aliases and servers instead of relying on hardcoded value "postmaster-odoo". Task-2710804 (Mail: Clean MailThread API)
Resolved issues and error corrections
The Point of Sale now loads the messaging service needed by related communication features such as VoIP. This prevents failures caused by missing messaging support in the POS environment and helps keep store operations stable.
Original PR description
POS is an environment that uses a lot of `web.backend_assets`, in fact much more than it really needs. It's too much effort to remove features, like discuss code or voip. With recent changes, `voip` requires the `messaging` service, it was not deployed. This commit now ensures `messaging` is deployed in POS. Enterprise: https://github.com/odoo/enterprise/pull/24970
Features or functions removed from Odoo
Odoo’s web module no longer includes an old compatibility file for browser features that are now standard. This slightly reduces the size of web assets, helping pages load more efficiently without changing normal user workflows.
Original PR description
Since Odoo now accepts ES2019 code anyway, I think that this polyfill can safely be removed, to reduce assets size. 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
Code cleanup and technical improvements
The mail tracking value tests were moved into the dedicated test_mail area to support upcoming improvements in how test models are defined. This is an internal reorganization that helps keep future testing easier to maintain without changing day-to-day product behavior.
Original PR description
This move is done to prepare the use of server side model definitions during tests. Indeed, a model having all type of tracked fields will be needed to ease tracking value testing. This model will be added to the test_mail module so the tracking value tests need to be there as well. [](https://github.com/tsm-odoo)task-2767820
Miscellaneous changes
When a user cancels a six payment method, he won't be able to select another six payment method To reproduce the issue: (Use demo data. Install l10n_be so your company is in EUR) 1. Create two Payment Methods PM01, PM02 that use the same payment terminal (a Six one) 2. Add the methods to the POS 3. Start a POS session 4. Select a product and go to payment page 5. Select PM01, send it then remove the line 6. Select PM02, send Error: Nothing happens (the terminal doesn't receive the
Original PR description
When a user cancels a six payment method, he won't be able to select another six payment method To reproduce the issue: (Use demo data. Install l10n_be so your company is in EUR) 1. Create two…
When a user cancels a six payment method, he won't be able to select another six payment method To reproduce the issue: (Use demo data. Install l10n_be so your company is in EUR) 1. Create two Payment Methods PM01, PM02 that use the same payment terminal (a Six one) 2. Add the methods to the POS 3. Start a POS session 4. Select a product and go to payment page 5. Select PM01, send it then remove the line 6. Select PM02, send Error: Nothing happens (the terminal doesn't receive the instructions). After several seconds, an error message is displayed "Transaction was not processed correctly: apiConnectionLostTerminal" When starting the POS, because there are two payments methods, both are instanced, each one with its own instance of `PaymentSix`. However, in the above case, both payment methods use the same terminal. Therefore, when sending the transaction with the second method (step 6), the API creates a second WebSocket (for the second instance of `PaymentSix`) between the POS and the terminal while such a `WebSocket` already exists (first instance of `PaymentSix`) OPW-2679181 Forward-Port-Of: odoo/odoo#85043
The pager component styling was simplified to make it easier to maintain and more consistent across the interface. The older pager version was also adjusted so users see the same visual behavior while the legacy component remains in use.
Original PR description
This PR simplifies the SCSS of the Pager component. After the revamp of the pager, the Legacy Pager was broken because it used the same SCSS file. This commit adds some BS classes on the Legacy Pager to keep consistency between both versions while waiting for the removal of the legacy one. task-2733437
This update removes an older workaround in Mail screens that is no longer needed because the underlying platform now handles these fields directly. It simplifies maintenance without changing expected business workflows or user-facing behavior.
Original PR description
Revert of https://github.com/odoo/odoo/commit/d3f6c3b579f39b313401c63d97b95ce690501591. Cleanup. The JS has already been adapted to many2one_reference fields. **Description of the issue/feature this PR addresses:** Commit https://github.com/odoo/odoo/commit/d3f6c3b579f39b313401c63d97b95ce690501591 was done as a quick fix, before the framework actually made that field type globally supported. But nowadays, the framework has been adapted already. Thus, we can revert that commit as there is no need to specify the widget manually in those cases anymore. 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
The mail app’s live communication recovery logic was reorganized to make reconnection timing easier to maintain. This is an internal improvement that should help future reliability work without changing the user experience directly.
Original PR description
Task-2734101
This update removes old database shortcuts that are no longer needed for the mail composer. The change simplifies the underlying mail setup and may slightly reduce maintenance overhead without changing user-facing behavior.
Original PR description
Those indexes probably come from previous implementation of composer model when it was inheriting from mail.message. It was also inheriting from the custom search / read manual ACLs implementation doing some SQL directly to check access. Those indexes should not be necessary anymore as anyway this is a transient model. Prepares Task-2088884 (MailComposer: Onchange to editable computed stored)
This update improves how Odoo Mail manages audio call disconnection monitoring behind the scenes. It helps make real-time communication behavior easier to maintain, with minimal direct impact on day-to-day users.
Original PR description
Task-2734101
This update adds and strengthens automated checks for Field Service project creation across multiple companies. It helps ensure the correct projects and pricing behavior continue to work reliably as the product evolves.
Original PR description
Before these changes:
- The feature mentioned in the title was not unit tested
After these changes:
- A Unit Test added with this scenario:
1) Assert first company is created with Field Service project
2) Add second company and assert second Field Service project is created
3) Create new user with allowed_company_ids = [first_company, second_company]
4) Get Field Service Project with the 2 companies and assert project display name has this format "Field Service - {Company Name}"
Task-2783686The Time Off request form layout has been adjusted to make it easier for managers to review and act on leave requests. These small usability improvements help managers find key information more quickly and handle approvals more smoothly.
Original PR description
Small changes in the layout of the hr_leave form view, mainly for the manager's view point Task : #2734842 [Time Off] ux changes
The VoIP calling tools were updated to use a newer internal communication approach, reducing reliance on older framework components. This prepares the feature for future improvements while helping keep call-related behavior stable and easier to maintain.
Original PR description
Replace `trigger_up`s in `user_agent.js` with bus events. The reason for this change is to remove the dependency of the user agent on the legacy EventDispatcher to allow it to be rewritten as a model.
* Studio generate computed field "count" when the user add a button in the button box. Since those lines are written by studio with drag and drop it should not be counted for the maintenance subscription. * We can detect them because field created by the user in studio start with x_studio and fields created outside studio does not have studio_customization xml_id * Add test to make no standard module introduce customization in the database during the install the will be counted by clo
Original PR description
* Studio generate computed field "count" when the user add a button in the button box. Since those lines are written by studio with drag and drop it should not be counted for the maintenance subscription. * We can detect them because field created by the user in studio start with x_studio and fields created outside studio does not have studio_customization xml_id * Add test to make no standard module introduce customization in the database during the install the will be counted by cloc See https://github.com/odoo/enterprise/pull/22664 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#85713 Forward-Port-Of: odoo/odoo#80594
Steps : Install Sale / E-commerce. Create product P (price = 100). Create price list L. Create price rule R (product = P, price = 50). Go to product P > Price Rules > archive R. Create a quotation. / Website > click 'Go to website' > Shop. Select price list L. Create a SOL with product P. / Search for product P. Issue : Price is 50. Cause : Archived price rules are included in the 'search' of _compute_price_rule_get_items(). Fix : Exclude them. opw-2752184 Description
Original PR description
Steps : Install Sale / E-commerce. Create product P (price = 100). Create price list L. Create price rule R (product = P, price = 50). Go to product P > Price Rules > archive R. Create a quotation. / Website > click 'Go to website' > Shop. Select price list L. Create a SOL with product P. / Search for product P. Issue : Price is 50. Cause : Archived price rules are included in the 'search' of _compute_price_rule_get_items(). Fix : Exclude them. opw-2752184 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#85548 Forward-Port-Of: odoo/odoo#85323
clean commit a038607bfdbe764fd436a94ce8149720fdca87ff Forward-Port-Of: odoo/odoo#85698
Original PR description
clean commit a038607bfdbe764fd436a94ce8149720fdca87ff Forward-Port-Of: odoo/odoo#85698
…hen success to not have something weird still in the view 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#85529
Original PR description
…hen success to not have something weird still in the view 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#85529
add missing _set_consumed_qty parameter in _split_productions overloading fix typo in cancel_remaining_qty parameter task: 2783912 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#85802
Original PR description
add missing _set_consumed_qty parameter in _split_productions overloading fix typo in cancel_remaining_qty parameter task: 2783912 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#85802
task-2783076 Forward-Port-Of: odoo/odoo#85764
Original PR description
task-2783076 Forward-Port-Of: odoo/odoo#85764
Forward-Port-Of: odoo/odoo#85831
Original PR description
Forward-Port-Of: odoo/odoo#85831
Create a [SO] for partner [DEMO], confirm Create a downpayment invoice for the sale order Create a bank statement with: - [DEMO] as partner - [SO] as label - less amount than the downpayment invoice Confirm and try to reconcile Traceback will raise when trying to add any line in Customer/Vendor Matching or Miscellaneous Matching because the mode will be stuck to 'saleorder' opw-2759554 Forward-Port-Of: odoo/enterprise#24895
Original PR description
Create a [SO] for partner [DEMO], confirm Create a downpayment invoice for the sale order Create a bank statement with: - [DEMO] as partner - [SO] as label - less amount than the downpayment invoice Confirm and try to reconcile Traceback will raise when trying to add any line in Customer/Vendor Matching or Miscellaneous Matching because the mode will be stuck to 'saleorder' opw-2759554 Forward-Port-Of: odoo/enterprise#24895
Step to reproduce: - Give Demo access to company B, but with base company A - As Demo (can see and use own doc) on company B - Go to Sign + 'Upload a PDF To Sign' - Click on send Current Behaviour: - Traceback due to access error - Notification is send with Demo base's company info - Demo is not on company A so he cannot access company A data Behaviour after PR: - Notification is send with current company opw-2778807 Forward-Port-Of: odoo/enterprise#24953
Original PR description
Step to reproduce: - Give Demo access to company B, but with base company A - As Demo (can see and use own doc) on company B - Go to Sign + 'Upload a PDF To Sign' - Click on send Current Behaviour: - Traceback due to access error - Notification is send with Demo base's company info - Demo is not on company A so he cannot access company A data Behaviour after PR: - Notification is send with current company opw-2778807 Forward-Port-Of: odoo/enterprise#24953
Steps to reproduce the bug: - Create a product with variants - Create a BOM for each variant and manufacture them - Go to the product and view the cost analysis report Problem: Only the cost for the first variant is displayed Solution: 1:/ Display the cost of each variant 2:/ currently, when we print the cost for each variant, the name is printed rather than the display name. So we can't tell the difference between the variants, this might be confusing, it would be better to pri
Original PR description
Steps to reproduce the bug: - Create a product with variants - Create a BOM for each variant and manufacture them - Go to the product and view the cost analysis report Problem: Only the cost for the first variant is displayed Solution: 1:/ Display the cost of each variant 2:/ currently, when we print the cost for each variant, the name is printed rather than the display name. So we can't tell the difference between the variants, this might be confusing, it would be better to print the display name instead opw-2755215 Forward-Port-Of: odoo/enterprise#24934 Forward-Port-Of: odoo/enterprise#24898
Before this commit, since the refactor of some base64 decoding flows*, some non base64 blobs were treated as base64 which caused some flows in documents to return corrupted files. This commit fixes this issue. * https://github.com/odoo/enterprise/commit/680db8197731dae175027f81a705c38b0abf94da Forward-Port-Of: odoo/enterprise#24361
Original PR description
Before this commit, since the refactor of some base64 decoding flows*, some non base64 blobs were treated as base64 which caused some flows in documents to return corrupted files. This commit fixes this issue. * https://github.com/odoo/enterprise/commit/680db8197731dae175027f81a705c38b0abf94da Forward-Port-Of: odoo/enterprise#24361
add missing _set_consumed_qty parameter in _split_productions overloading fix typo in cancel_remaining_qty parameter task: 2783912 Forward-Port-Of: odoo/enterprise#24984
Original PR description
add missing _set_consumed_qty parameter in _split_productions overloading fix typo in cancel_remaining_qty parameter task: 2783912 Forward-Port-Of: odoo/enterprise#24984
Adds a new helper's method, `getSubline`. Its purpose is to give explicit message in case the method can't get the expected line, so it will be easier to know where and why a JS tour fails. Forward-Port-Of: odoo/enterprise#24434
Original PR description
Adds a new helper's method, `getSubline`. Its purpose is to give explicit message in case the method can't get the expected line, so it will be easier to know where and why a JS tour fails. Forward-Port-Of: odoo/enterprise#24434
Purpose ======= When working with multi-company, on **Field Service** model, when grouping by responsible, all users of the database are listed, even those who don't belong to the current company (or selected companies) where the user is performing the action. The issue is that when the users list is computed, there is no domain that applies a condition on the company. Specification ============= To solve the issue a domain on comany_id was added when computing the users list.
Original PR description
Purpose ======= When working with multi-company, on **Field Service** model, when grouping by responsible, all users of the database are listed, even those who don't belong to the current company (or selected companies) where the user is performing the action. The issue is that when the users list is computed, there is no domain that applies a condition on the company. Specification ============= To solve the issue a domain on comany_id was added when computing the users list. opw-2744423 Forward-Port-Of: odoo/enterprise#24947 Forward-Port-Of: odoo/enterprise#24653
The fields mobile and commercial_company_name were not displayed on vcard. Reference: https://datatracker.ietf.org/doc/html/rfc6350#section-6.4.1 opw:2742739 Forward-Port-Of: odoo/enterprise#23960
Original PR description
The fields mobile and commercial_company_name were not displayed on vcard. Reference: https://datatracker.ietf.org/doc/html/rfc6350#section-6.4.1 opw:2742739 Forward-Port-Of: odoo/enterprise#23960