Friday, April 26, 2024
24 changes · master
Enhancements to existing features
The document spreadsheet test suite was adjusted to stay compatible with an updated spreadsheet library. This helps ensure document spreadsheet features continue to be validated reliably without changing day-to-day user workflows.
Odoo now checks for circular relationships in records using a more efficient database query. This helps prevent invalid loops in areas like payroll, knowledge articles, and marketing automation while improving reliability and performance behind the scenes.
Original PR description
Implement checking recursion using a single recursive SQL query. The query starts from self.ids and follows a relationship. We can use the same query for both many2many and many2one relationships. _has_cycle now will not return False if some reachable records are part of a loop and are not in self.ids. This is acceptable because this method is called after modifications with ids of changed records and we can suppose that unchanged records did not introduce a loop. https://github.com/odoo/odoo/pull/162656
Resolved issues and error corrections
Spreadsheet previews in Documents now show the latest visual changes when users return to the folder view. This avoids confusion from stale thumbnails and removes the need to manually reload the page to see updates.
Original PR description
steps to reproduce: - create a new spreadsheet - change the background color of some cells (so that it's well visible in the thumbnail) - go back to Documents with the breadcrumb - open the spreadsheet again - change the background color - go back again to Documents with the breadcrumb => the thumbnail is not up-to-date with the new background color. You need to reload the page to see it. Technical note: for regular documents, `unique` is the attachment checksum. It doesn't work for spreadsheets since the attachment actually doesn't change when a spreadsheet is updated. A revision is dispatched. The last revision uuid can be used as `unique` discriminant instead Task: 3887916
Miscellaneous changes
In [1] we added a domain on appointment actions to prevent a traceback when users visit the gantt appointment views when resources from different companies appear at the same time. However appointment_resource_id was deprecated in favor of appointment_resource_ids in stable since then. `appointment_resource_ids` should now be used in the domain. [1] ab7addece528d887f062e70732f96fde2ed76dca task-3893256 Forward-Port-Of: odoo/enterprise#61568 Forward-Port-Of: odoo/enterprise#61439
Original PR description
In [1] we added a domain on appointment actions to prevent a traceback when users visit the gantt appointment views when resources from different companies appear at the same time. However appointment_resource_id was deprecated in favor of appointment_resource_ids in stable since then. `appointment_resource_ids` should now be used in the domain. [1] ab7addece528d887f062e70732f96fde2ed76dca task-3893256 Forward-Port-Of: odoo/enterprise#61568 Forward-Port-Of: odoo/enterprise#61439
Employees who do not have a system login will now be automatically subscribed to their appraisal records and related meetings. This helps ensure they stay represented in the appraisal process and that communications reach the right contact.
Original PR description
With this commit, an employee no-user will be by default subscribed to his appraisal and his meeting task-3870088
In the case of a MultiRecordSelector, when modifying the filter and clicking out of the popup, the filter should be updated. However, since the dirtyFilter is not reactive it isn't the case. By using a useState on the variable the filters works as expected. task-3864795 Forward-Port-Of: odoo/enterprise#60745
Original PR description
In the case of a MultiRecordSelector, when modifying the filter and clicking out of the popup, the filter should be updated. However, since the dirtyFilter is not reactive it isn't the case. By using a useState on the variable the filters works as expected. task-3864795 Forward-Port-Of: odoo/enterprise#60745
To make correspondences between accounting entries and attachments, we need a new file and guid for the entries. Documentation can be found at https://developer.datev.de/datev/platform/en/node/6344 task-3888995 Forward-Port-Of: odoo/enterprise#61481 Forward-Port-Of: odoo/enterprise#61378
Original PR description
To make correspondences between accounting entries and attachments, we need a new file and guid for the entries. Documentation can be found at https://developer.datev.de/datev/platform/en/node/6344 task-3888995 Forward-Port-Of: odoo/enterprise#61481 Forward-Port-Of: odoo/enterprise#61378
This commit adds the financial reports of Rwanda and make sure they are balanced. task: 3627705 Forward-Port-Of: odoo/enterprise#57099
Original PR description
This commit adds the financial reports of Rwanda and make sure they are balanced. task: 3627705 Forward-Port-Of: odoo/enterprise#57099
Bug === Create in this order - 1 normal document - 1 link document - 1 normal document Select the first and second documents, the link button is not visible. Select the second and third documents, the link button is visible and shouldn't be. Similarly, the share button should be visible if at least one document is not archived, and not if the first document is not active. Task-3874111 Forward-Port-Of: odoo/enterprise#61449 Forward-Port-Of: odoo/enterprise#61118
Original PR description
Bug === Create in this order - 1 normal document - 1 link document - 1 normal document Select the first and second documents, the link button is not visible. Select the second and third documents, the link button is visible and shouldn't be. Similarly, the share button should be visible if at least one document is not archived, and not if the first document is not active. Task-3874111 Forward-Port-Of: odoo/enterprise#61449 Forward-Port-Of: odoo/enterprise#61118
To reproduce: ============= - create an employee having night shift from 21:30 to 06:00 configured as 21:30 -> 24:00 and 00:30 -> 06:00 (break of 30 minutes) - in planning create a role for this employee - create an open shift for that role from 21:30 to 06:00 - click auto plan -> shift is not assigned to the employee Problem: ======== when computing the rate of allocated hours for this shift we find out that it exceeds 100%, because the hour 24:00 is represented as 23:59:59.999999 w
Original PR description
To reproduce: ============= - create an employee having night shift from 21:30 to 06:00 configured as 21:30 -> 24:00 and 00:30 -> 06:00 (break of 30 minutes) - in planning create a role for this employee - create an open shift for that role from 21:30 to 06:00 - click auto plan -> shift is not assigned to the employee Problem: ======== when computing the rate of allocated hours for this shift we find out that it exceeds 100%, because the hour 24:00 is represented as 23:59:59.999999 which creates rounding issues. Solution: ========= round the allocated rate opw-3874283 Forward-Port-Of: odoo/enterprise#61438
**Steps to reproduce:** 1- Install Accounting, Fleet modules 2- Create a bill in accounting with a different currency than the company's default, and add a line with a chosen vehicle_id. 3- Go to the chosen vehicle in Fleet module 4- Navigate to the service created for this bill **Current behavior before PR:** If we create a bill for a vehicle using a different currency than the company's default. The fleet service that will be created will be having the company's currency but the va
Original PR description
**Steps to reproduce:** 1- Install Accounting, Fleet modules 2- Create a bill in accounting with a different currency than the company's default, and add a line with a chosen vehicle_id. 3- Go to the chosen vehicle in Fleet module 4- Navigate to the service created for this bill **Current behavior before PR:** If we create a bill for a vehicle using a different currency than the company's default. The fleet service that will be created will be having the company's currency but the value will be the amount in the currency used in the bill **Desired behavior after PR is merged:** We now create the fleet service using the value in debit not the unit price or the price subtotal. opw-3734743 Forward-Port-Of: odoo/enterprise#61427 Forward-Port-Of: odoo/enterprise#57639
Current behavior: When an order is invoided after the session has been closed, a reversed payment is created. This payment is not reconciled correctly with the invoice. This is creating an aged receivable for the partner. Steps to reproduce: - Change the bank payment method to "Identify customer" - Create an order in the PoS and pay with bank and specify a partner - Close the session - Open the session again, and create an invoice for the order - Go to the accounting module and look for
Original PR description
Current behavior: When an order is invoided after the session has been closed, a reversed payment is created. This payment is not reconciled correctly with the invoice. This is creating an aged receivable for the partner. Steps to reproduce: - Change the bank payment method to "Identify customer" - Create an order in the PoS and pay with bank and specify a partner - Close the session - Open the session again, and create an invoice for the order - Go to the accounting module and look for the aged receivable report you should see some entries under the partner you selected. - You can also go to the partner form and see that he has some due invoices. opw-3678298 Forward-Port-Of: odoo/enterprise#61321 Forward-Port-Of: odoo/enterprise#60248
Current behavior: When you add too much internal notes to an order line, the preparation display will not display them correctly. And the notes will be undreadable. Steps to reproduce: - Open PoS restaurant - Add a product to the order - Add some internal notes on the line (4-5 notes) - Go in the backend and open the preparation display linked to the PoS you just used - You will see the notes, but they are overlapping eachother and are undreadable Before the fix  - Go in the backend and open the preparation display linked to the PoS you just used - You will see the notes, but they are overlapping eachother and are undreadable Before the fix  After the fix:  opw-3878256 Forward-Port-Of: odoo/enterprise#61224
This adds tax calculation and EDI support for service transactions. All new functionality was added in new modules because this is taking place in a stable release. Avatax has different endpoints for submitting and cancelling service invoices. These two endpoints have fairly similar payloads so various overrides were made to remove/add information from the goods payloads to make them compatible with the service endpoints. A new account.external.tax.mixin l10n_br_is_service_transaction field i
Original PR description
This adds tax calculation and EDI support for service transactions. All new functionality was added in new modules because this is taking place in a stable release. Avatax has different endpoints for…
This adds tax calculation and EDI support for service transactions. All new functionality was added in new modules because this is taking place in a stable release. Avatax has different endpoints for submitting and cancelling service invoices. These two endpoints have fairly similar payloads so various overrides were made to remove/add information from the goods payloads to make them compatible with the service endpoints. A new account.external.tax.mixin l10n_br_is_service_transaction field is used to determine whether to follow the old, existing goods flow or go through the new service flow. The biggest difference is that service invoices go through an extra, asynchronous validation step. To achieve this, invoices that are successfully submitted end up in a new "pending" state. After this, their status can be checked with button_l10n_br_edi_get_service_invoice(). This function is also called periodically with a cron. In master, these modules will be merged into the already existing modules and deleted. task-3660574 Forward-Port-Of: odoo/enterprise#61413 Forward-Port-Of: odoo/enterprise#57868
### [FIX] l10n_co_edi: add a test for the vendor document Previously there was no test for the vendor document. This commit adds a (simple) test.c In the next commit of the same PR the code for the vendor document had to be adapted while keeping the result the same. This test helps in making sure nothing went wrong. The reason was that the electronic invoice and vendor document share some common code / logic but the shared parts had to be changed for an update to the electronic invoice
Original PR description
### [FIX] l10n_co_edi: add a test for the vendor document Previously there was no test for the vendor document. This commit adds a (simple) test.c In the next commit of the same PR the code for the…
### [FIX] l10n_co_edi: add a test for the vendor document Previously there was no test for the vendor document. This commit adds a (simple) test.c In the next commit of the same PR the code for the vendor document had to be adapted while keeping the result the same. This test helps in making sure nothing went wrong. The reason was that the electronic invoice and vendor document share some common code / logic but the shared parts had to be changed for an update to the electronic invoice spec (Anexo 1.9). (See the next commit for details) ### [FIX] l10n_co_edi: update for anexo 1.9 The spec for electronic invoices in Colombia was updated and is now known as Anexo 1.9. This commit updates the electronic invoice to meet the new spec A bit part of the new spec is the conversion of many fields from document to company currency / COP. There is also a vendor document. But it follows a different spec. Thus some shared logic / section with the electronic invoice was updated so that the vendor document remains unchanged. The following sections were removed since they are obsolete and also (basically) dead code: * OVT section: dead code * FE1 section: content is dead code Previously when creating a credit note from an invoice with the reversal wizard (account.move.reversal) there was the following bug. The Credit Note Concept (l10n_co_edi_description_code_credit on account.move) was set after posting. This was corrected in this commit (since a validation on post was added to check that the concept is there). ### task task-3639271 ### related PRs forward-port of https://github.com/odoo/enterprise/pull/54086 (15.0) https://github.com/odoo/enterprise/pull/55268 (16.0) https://github.com/odoo/enterprise/pull/55274 (saas-16.3) https://github.com/odoo/enterprise/pull/55279 (17.0) https://github.com/odoo/enterprise/pull/55280 (17.1) Forward-Port-Of: odoo/enterprise#61145
Runbot-56122 Forward-Port-Of: odoo/enterprise#61468
Original PR description
Runbot-56122 Forward-Port-Of: odoo/enterprise#61468
Purpose: -------- Add a button in the front end view that allows users to end the current booking (to make the room appear as free), as the only way to do it for now is to delete the booking, which is not suitable if one would like to track the bookings in the backend view. The "book now" button is reworded to "start now" and the "schedule booking" button to "Add a booking" because it was observed that users were sometimes confused with these two buttons. The "booked room" icon has be
Original PR description
Purpose: -------- Add a button in the front end view that allows users to end the current booking (to make the room appear as free), as the only way to do it for now is to delete the booking, which is not suitable if one would like to track the bookings in the backend view. The "book now" button is reworded to "start now" and the "schedule booking" button to "Add a booking" because it was observed that users were sometimes confused with these two buttons. The "booked room" icon has been changed to not use the same as in the new "end booking "button. Colors of the buttons have been updated. The remaining time is now centered vertically in all display formats (it was not always the case). Task-3792497 Forward-Port-Of: odoo/enterprise#61421 Forward-Port-Of: odoo/enterprise#61300
## Pull Request HOOT (PROOT) - part 15 Part 1: https://github.com/odoo/odoo/pull/152930 Part 2: https://github.com/odoo/odoo/pull/153018 Part 3: https://github.com/odoo/odoo/pull/153023 Part 4: https://github.com/odoo/odoo/pull/153203 Part 5: https://github.com/odoo/odoo/pull/153425 Part 6: https://github.com/odoo/odoo/pull/153700 Part 7: https://github.com/odoo/odoo/pull/154054 Part 8: https://github.com/odoo/odoo/pull/154579 Part 9: https://github.com/odoo/odoo/pull/155073 Part 10:
Original PR description
## Pull Request HOOT (PROOT) - part 15 Part 1: https://github.com/odoo/odoo/pull/152930 Part 2: https://github.com/odoo/odoo/pull/153018 Part 3: https://github.com/odoo/odoo/pull/153023 Part 4:…
## Pull Request HOOT (PROOT) - part 15 Part 1: https://github.com/odoo/odoo/pull/152930 Part 2: https://github.com/odoo/odoo/pull/153018 Part 3: https://github.com/odoo/odoo/pull/153023 Part 4: https://github.com/odoo/odoo/pull/153203 Part 5: https://github.com/odoo/odoo/pull/153425 Part 6: https://github.com/odoo/odoo/pull/153700 Part 7: https://github.com/odoo/odoo/pull/154054 Part 8: https://github.com/odoo/odoo/pull/154579 Part 9: https://github.com/odoo/odoo/pull/155073 Part 10: https://github.com/odoo/odoo/pull/155639 Part 11: https://github.com/odoo/odoo/pull/156255 / https://github.com/odoo/enterprise/pull/58135 Part 12: https://github.com/odoo/odoo/pull/156869 Part 13: https://github.com/odoo/odoo/pull/158384 / https://github.com/odoo/enterprise/pull/59019 Part 14: https://github.com/odoo/odoo/pull/158916 Community: https://github.com/odoo/odoo/pull/160292 This pull requests brings various improvements and fixes to Hoot and the Odoo unit test ecosystem. See the different commit messages for more details. Note: these changes are made in stable to avoid having to support multiple versions of the HOOT API. As such, these changes are intended to be strictly limited to unit tests as to not put the rest of the code base at risk. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/enterprise#59971
We make this module uninstallable until the certification is done. This commit will be reverted later. Forward-Port-Of: odoo/enterprise#50109
Original PR description
We make this module uninstallable until the certification is done. This commit will be reverted later. Forward-Port-Of: odoo/enterprise#50109
The way the chart templates refs work had changed in 16.2, but this test was never adapted (it never ran before as the needed environment variables were not set on runbot... They are now and this raises an error). Forward-Port-Of: odoo/enterprise#61385
Original PR description
The way the chart templates refs work had changed in 16.2, but this test was never adapted (it never ran before as the needed environment variables were not set on runbot... They are now and this raises an error). Forward-Port-Of: odoo/enterprise#61385
"here" = "aquí" in Spanish Forward-Port-Of: odoo/enterprise#61474
Original PR description
"here" = "aquí" in Spanish Forward-Port-Of: odoo/enterprise#61474
This should have been done using a bridge module to allow uninstalling SMS but hey. Runbot-27909 Forward-Port-Of: odoo/enterprise#61462
Original PR description
This should have been done using a bridge module to allow uninstalling SMS but hey. Runbot-27909 Forward-Port-Of: odoo/enterprise#61462
### Steps to reproduce 1. Activate "l10n_account_customer_statements" 3. Register payment for a large amount of invoices (6+) to the same customer 4. Tick the Group Payments box 5. Go to the customer's contact 6. Action / Print Customer Statements You should see that most of the information is outside the page ### Cause The whole table has the `text-nowrap` class. opw-3820027 Before:  to the same customer 4. Tick the Group Payments box 5. Go to the customer's contact 6. Action / Print Customer Statements You should see that most of the information is outside the page ### Cause The whole table has the `text-nowrap` class. opw-3820027 Before:  After:  Forward-Port-Of: odoo/enterprise#60808
Purpose ======= Prevent the horizontal scrolling of the inspector but allow the vertical scrolling for small screen sizes. Specifications ============== Reverting the addition of the "overflow-hidden" class on the documents inspector as it is preventing its horizontal but also its vertical scrolling. On lower screen sizes, a vertical scrolling is needed or else the inspector becomes pratically unusable. related PR: odoo/enterprise#59652 Task-3884149 Forward-Port-Of: odoo/enterprise
Original PR description
Purpose ======= Prevent the horizontal scrolling of the inspector but allow the vertical scrolling for small screen sizes. Specifications ============== Reverting the addition of the "overflow-hidden" class on the documents inspector as it is preventing its horizontal but also its vertical scrolling. On lower screen sizes, a vertical scrolling is needed or else the inspector becomes pratically unusable. related PR: odoo/enterprise#59652 Task-3884149 Forward-Port-Of: odoo/enterprise#61399 Forward-Port-Of: odoo/enterprise#61220