Thursday, September 9, 2021
34 changes · master
New functionality added to Odoo
Marketing teams can now test multiple versions of a mass mailing campaign, such as different subjects, templates, or designs, on a sample of recipients. The system tracks campaign versions and winners, helping users choose the best-performing message before sending more broadly.
Original PR description
Manage correctly a/b testing in mass_mailing. We can now organize a mass_mailing campaign by testing multiple mailings for the recipients targeted (subject, templates, design, ...) For this a new model is created that will contains the default mailing values and the information for the a/b testing part like the sample size and the testing mode (based_on or manual). For the purpose of the task, we also add some fields on the mailing.mailing model: - testing_mailing_id: contains the possible a/b testing campaign - version_id: categorize the mailing to differentiate it from the other mailings - is_winner: boolean to know which mailing is designated as the winner for the testing campaign task-2123242 UPG: odoo/upgrade#2656
Enhancements to existing features
Email template previews now show all attachments that will be included, including uploaded documents and generated reports. This helps users verify the full email content before sending, reducing mistakes and improving confidence.
Original PR description
# Purpose The prupose is when the user clicks on the preview button, he can see all attachments on the preview. # Specifications When previewing a template, the user can see and download all attachments, both static (documents attach to the template) and dynamic (report generated from Qweb). task-2150107
Resolved issues and error corrections
The Google Calendar automated test was adjusted so it no longer fails because of the new appointment link button. This helps keep quality checks reliable without changing the user-facing calendar experience.
Original PR description
Fix the test to ignore the new part which manages the new button for appointment link
Miscellaneous changes
**Description of the issue/feature this PR addresses:** - Go to runbot - create a second warehouse, resupply from the first - create a product, replenish W2 from W1 - Goto Inventory Forecast --> Issue value are wrong. An OUT is when WH source is Set and (WH dest is not set or destination location is 'transit'). An IN is when WH dest is Set and (WH source is not set or source location is 'transit'). **Current behavior before PR:** . An IN is when WH dest is Set and (WH source is not set or source location is 'transit'). **Current behavior before PR:**  **Desired behavior after PR is merged:**  @amoyaux @sla-subteno-it -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#67598
This update improves how Odoo manages database checkpoints during operations, ensuring temporary changes are properly cleaned up when a process finishes. This helps reduce hidden database state issues and makes imports, tests, and internal processing more reliable.
Original PR description
Ensure savepoints are *always* released when exiting the context: rolling back to a savepoint does not release it, so the savepoint remains "active" forever (just possibly shadowed if an other…
Ensure savepoints are *always* released when exiting the context: rolling back to a savepoint does not release it, so the savepoint remains "active" forever (just possibly shadowed if an other savepoint of the same name gets created). Also provide a `Savepoint` object to the user, with the followingfacilities: * `name`, in case there are useful things the user can do with a savepoint name. * `rollback` allows the user to rollback the savepoint to the initialisation state at any moment. * `close` allows the use of `contextlib.closing` as well as closing the savepoint while in the covered span. Closing a savepoint rolls it back by default (like cursors). Because there's no such thing as committing a savepoint, it's also possible to close *without* rolling back, which is similar (but not identical). NOTE: unlike some other constructs, the `Savepoint` object has no effect before the context is entered. Also make a `flushing` context manager for convenience, and provide a home-grown version of `contextlib.nullcontext` as that requires 3.7.
Project task forms now show a quick count of tasks that depend on the current task. This helps teams understand what work is being held up and prioritize tasks that unblock others.
Original PR description
This commit adds a stat button representing the number of dependent tasks, the current task is blocking. This is the inverse relation of "Blocked by". task-2638359 closes #76166 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
The point of sale now recognizes barcodes assigned to product packages, not just individual products. This helps cashiers quickly sell multi-item packs with the correct quantity, reducing manual entry and checkout mistakes.
Original PR description
[IMP] point_of_sale: Enable scanning of barcode packaging Actually we can't gie more one barcode for a product In inventory we can make "package" with various quantity So with this commit we add the possibility to add a package of product (1-n) with a specific barcode Task: 2610279
Invoice search filters were renamed and adjusted so users can more easily find unpaid, paid, and overdue invoices. The journal dashboard now treats only invoices or bills past their due date as late, avoiding items due today being shown as late.
Original PR description
Modify search filters on the invoice views: Open -> Unpaid Closed -> Paid (exclude reversed) Overdue -> Overdue Fix journal kanban view "late invoices/bills" should not include due date = today Task 2635664 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update improves Ecuador electronic invoicing support so companies can better generate, sign, and manage required tax documents. It also cleans up dependencies and structure, making the feature more reliable for review and future maintenance.
Original PR description
Change for runbot reviews with differents branch names
CRM spreadsheet templates have been refreshed to support newer spreadsheet features, including hyperlinks and list views. This makes pipeline and revenue reporting templates easier to navigate and more useful for sales analysis.
Original PR description
Update templates with new features such as: - insert hyperlinks - view lists Task 2615358
Website calendar appointments now include a clearer link button, making it easier for visitors or customers to access and share appointment booking pages. This improves the booking flow and helps businesses direct users to scheduling options more quickly.
Original PR description
TO DO: https://docs.google.com/presentation/d/1GtKtDumQ96Ts3L-MRTJp2dT67eVI4FfcBfngN5NDtVA/edit#slide=id.g8af3212726_0_1 task-2287846
Empty scheduling and project screens now show transparent sample content instead of appearing blank. This helps users understand what the views will look like and how to get started before real data is added.
This fixes an issue where attendee answers to registration questions were not being stored when completing an event signup. Businesses can now reliably collect the information they request from every event registrant.
Original PR description
When questions are displayed in the form for a registration, the answers were not save. Now, the answers are saved for all the registrations 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
This update fixes issues in the accrued sales and purchase order wizard that could reset user-entered values and prevent validation. It also improves the resulting accrual entries by making them clearer and less cluttered for accounting review.
Original PR description
* the cache_invalidate() was invalidating the changes made in the wizard as well, make it impossible to set any value other than the default one, even though the preview entry was updated accordingly. That also prevented to simply validate the wizard as the accrual account was required but reset anytime we changed its value. * the preview_data field was incorrectly set as Binary while the widget only supports Text -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents employee shifts from being stretched across multiple days when browser and employee time zones differ. It keeps planned hours aligned with the employee's expected daily working time, reducing scheduling mistakes and payroll or staffing confusion.
Original PR description
Description of the issue/feature this PR addresses: The search range for the closest work time is not assigned any value if the start date is different than the end date. The dates can be different…
Description of the issue/feature this PR addresses: The search range for the closest work time is not assigned any value if the start date is different than the end date. The dates can be different if the employee is in another timezone. Current behavior before PR: If the browser time is UTC+2 and a shift of an employee in UTC+6 is scheduled, the start time in UTC time will be 01/01/2000 22:00 and the end time will be 02/01/2000 21:59:59. Converted to the resource.tz timezone, the start date will become 02/01/2000 and the end date will be 03/01/2000. Due to the date difference, the search range is not assigned a value, the start of the shift will be at the employee start time on 02/01/2000 and the end of the shift will be around lunch break one day later. Desired behavior after PR is merged: The shift of the employee for a certain day doesn't span over two days or exceeds the hours per day for the employee Related to odoo/enterprise#20428 Task-2628876 ref https://github.com/odoo/odoo/pull/75527 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes unnecessary warnings that appeared when a window close action included extra information for the client interface. The change helps keep system logs and user workflows cleaner without changing business behavior.
Original PR description
Clientside, the only key got from an `ir.actions.act_window_close` type action is 'infos'. But this key isn't a part of the whitelisted readable fields server side, which means you will get a warning if you use it.
This fix restores unavailable time indicators in project Gantt views after a related field change caused them to stop working. Project planners can again see when assigned people are unavailable, helping avoid scheduling conflicts.
Original PR description
The `user_id` field was replaced in odoo/odoo#74087 by `user_ids` thus breaking the gantt unavailabilities mechanism. TaskID: 2638525
Spreadsheet document breadcrumbs now display with the correct sizing in Firefox. This keeps navigation labels visually consistent across browsers and avoids layout issues for users working with documents and spreadsheets.
Original PR description
window.getComputedStyle on Firefox does not return the "font" attribute, we have to create it from fontSize and fontFamily. Task-id 2623513
The order of options in the spreadsheet document context menu has been adjusted to make actions easier to find. This helps users navigate spreadsheet tools more predictably and reduces confusion when working with documents.
Timesheet users no longer encounter an error when creating their own timesheet entries. This fix ensures employees can record their work time without needing extra permissions, reducing disruption in daily time tracking.
Original PR description
Currently, when we connect as a user with the timesheet module and try to create a new timesheet entry, it throws an error. After this commit, user can also create their own timesheet. Task-Id : 2629541
Access rules for SMS templates were corrected so regular internal users can still read templates when other business processes need them. This helps prevent disruptions in features that rely on SMS templates while keeping restrictions on changing or deleting them.
Original PR description
Temporary PR, will be closed
Before this commit, 1: It was always calling method `_get_answer_score_values` even if we were getting `answer_score` in `vals`. 2: It was always accessing `user_input_id` and `question_id` from `vals` on and write method which might not exists in `vals`. With this Commit, 1: we are calling method `_get_answer_score_values` when its necessary get values for `answer_is_correct` and `answer_score`. 2: use `user_input_id` and `question_id` from `self` if it is not available in `vals` t
Original PR description
Before this commit, 1: It was always calling method `_get_answer_score_values` even if we were getting `answer_score` in `vals`. 2: It was always accessing `user_input_id` and `question_id` from `vals` on and write method which might not exists in `vals`. With this Commit, 1: we are calling method `_get_answer_score_values` when its necessary get values for `answer_is_correct` and `answer_score`. 2: use `user_input_id` and `question_id` from `self` if it is not available in `vals` to get values for `answer_is_correct` and `answer_score`. Fixes: #67429 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#68500
Some assets are missing from layout due to an incorrect namespace since conversion to new assets system. opw-2638542 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#76056
Original PR description
Some assets are missing from layout due to an incorrect namespace since conversion to new assets system. opw-2638542 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#76056
Steps to reproduce the issue: - Let's log in Odoo with a user U1 - Create a lead with user U2 as salesperson - Click on New quotation Bug: A SO was suggested with U1 as salesperson instead of U2 opw:2520827 Forward-Port-Of: odoo/odoo#76021 Forward-Port-Of: odoo/odoo#75787
Original PR description
Steps to reproduce the issue: - Let's log in Odoo with a user U1 - Create a lead with user U2 as salesperson - Click on New quotation Bug: A SO was suggested with U1 as salesperson instead of U2 opw:2520827 Forward-Port-Of: odoo/odoo#76021 Forward-Port-Of: odoo/odoo#75787
no need to make rounding during computing qty_available STEPS (see the test): * create product with uom dozens * create product with uom units * create bom kit to convert one to another * set qty on hand to 1 for product dozens * check qty for product units BEFORE: qty=11 AFTER: qty=12 --- opw-2632782 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 r
Original PR description
no need to make rounding during computing qty_available STEPS (see the test): * create product with uom dozens * create product with uom units * create bom kit to convert one to another * set qty on hand to 1 for product dozens * check qty for product units BEFORE: qty=11 AFTER: qty=12 --- opw-2632782 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#76145
Before this commit, Inventory Admin was not able to create new /edit picking type as Non-admin users doesn't have rights to create/edit sequence. With this commit, we are creating/editing `sequence_id` with sudo 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#75606
Original PR description
Before this commit, Inventory Admin was not able to create new /edit picking type as Non-admin users doesn't have rights to create/edit sequence. With this commit, we are creating/editing `sequence_id` with sudo 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#75606
The notification sent when starting a meeting used `partner.name` to display the name of the one who started the meeting. Therefore, it did not work properly with guests, for whom no partner is defined, resulting in `False started a live conference` being displayed. This commit fixes the issue by using `guest.name` instead of `partner.name` when no partner is defined. Also change some quotes to stick to the guidelines. Forward-Port-Of: odoo/odoo#76226
Original PR description
The notification sent when starting a meeting used `partner.name` to display the name of the one who started the meeting. Therefore, it did not work properly with guests, for whom no partner is defined, resulting in `False started a live conference` being displayed. This commit fixes the issue by using `guest.name` instead of `partner.name` when no partner is defined. Also change some quotes to stick to the guidelines. Forward-Port-Of: odoo/odoo#76226
…being done Following commit 637684fb50ff42a617cfa055d20aaa11b86c0b7b which improved the conditions under which the ComponentWrapper compatibility layer should trigger owl's `__callMounted` on all the owl children of a Legacy Widget. One case was forgotten though: when the current component (wherever it is in the hierarchy) is rendered BUT another rendering has been initiated meanwhile. In that case, we shouldn't mark the component as mounted. The owl's fiber.complete algorithm will
Original PR description
…being done Following commit 637684fb50ff42a617cfa055d20aaa11b86c0b7b which improved the conditions under which the ComponentWrapper compatibility layer should trigger owl's `__callMounted` on all the owl children of a Legacy Widget. One case was forgotten though: when the current component (wherever it is in the hierarchy) is rendered BUT another rendering has been initiated meanwhile. In that case, we shouldn't mark the component as mounted. The owl's fiber.complete algorithm will take care of calling __callMounted when it finishes. 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#75950
This reverts commit odoo/odoo@3d72a6a4d21cb12cbe68672610bf83e8fe80b87b . This code is not used as finally Kanban ribbon as a widget has not been added after review. Moreover current use of ribbon classes in kanban is broken. Forward-Port-Of: odoo/odoo#76268
Original PR description
This reverts commit odoo/odoo@3d72a6a4d21cb12cbe68672610bf83e8fe80b87b . This code is not used as finally Kanban ribbon as a widget has not been added after review. Moreover current use of ribbon classes in kanban is broken. Forward-Port-Of: odoo/odoo#76268
Before this commit, trying to autofill the total of a pivot with dates leads to traceback. Task-id 2623369 Forward-Port-Of: odoo/enterprise#20712 Forward-Port-Of: odoo/enterprise#20268
Original PR description
Before this commit, trying to autofill the total of a pivot with dates leads to traceback. Task-id 2623369 Forward-Port-Of: odoo/enterprise#20712 Forward-Port-Of: odoo/enterprise#20268
Considering the field declaration: https://github.com/odoo/odoo/blob/fe5deb4ee4c8e07aed2f2cff6210271bfaa61476/addons/point_of_sale/models/pos_order.py#L1121 `discount` is a rate, not an amount. Therefore, suppose a discount of 10%, when opening a POS-generated SO, the discount shouldn't be "$10". OPW-2629493 Forward-Port-Of: odoo/enterprise#20654
Original PR description
Considering the field declaration: https://github.com/odoo/odoo/blob/fe5deb4ee4c8e07aed2f2cff6210271bfaa61476/addons/point_of_sale/models/pos_order.py#L1121 `discount` is a rate, not an amount. Therefore, suppose a discount of 10%, when opening a POS-generated SO, the discount shouldn't be "$10". OPW-2629493 Forward-Port-Of: odoo/enterprise#20654
In task-2475732 a default role was created for templates that had no sign items, to allow adding new items while signing. However adding this new role prevented the accesses for the sign request to be sent in templates without sign items. This PR adds a new check to verify this case and allow again the email to be sent. Forward-Port-Of: odoo/enterprise#20628
Original PR description
In task-2475732 a default role was created for templates that had no sign items, to allow adding new items while signing. However adding this new role prevented the accesses for the sign request to be sent in templates without sign items. This PR adds a new check to verify this case and allow again the email to be sent. Forward-Port-Of: odoo/enterprise#20628
…holiday pay Combination of a9c2a31 d1fe81b f2d0119 2a26b47 Forward-Port-Of: #20646 Forward-Port-Of: odoo/enterprise#20694
Original PR description
…holiday pay Combination of a9c2a31 d1fe81b f2d0119 2a26b47 Forward-Port-Of: #20646 Forward-Port-Of: odoo/enterprise#20694
Forward-Port-Of: odoo/enterprise#20646
Original PR description
Forward-Port-Of: odoo/enterprise#20646