Thursday, February 17, 2022
14 changes · master
New functionality added to Odoo
This change adds a dedicated test module to make sure rental product configuration flows work reliably with the needed sales dependency. It also expands automated checks around configurator behavior, reducing the risk of future issues in rental and sales setup screens.
Original PR description
Before this commit, some tours from `sale_product_configurator` and `sale_product_matrix` were not working since there wasn't a dependency with `sale_management`. They are now in a test module with all the other configurators and the missing dependency. Additionally, other tests are added to improve the coverage of the configurators' logic. task-2049081 See also: - https://github.com/odoo/odoo/pull/82108
Enhancements to existing features
Businesses can now choose different digitization modes for vendor bills and customer invoices. This helps companies use automated invoice extraction where it is valuable, such as supplier bills, without applying it unnecessarily to customer invoices.
Original PR description
The settings that determines the digitalization mode (disabled, manual or automatic) used to be common for both vendor bills and customer invoices. As many users only want to use the service on vendor bills and not on customer invoices, the settings has been split for both types of invoices. Task: 2751408
Resolved issues and error corrections
A barcode-related automated test was adjusted to avoid occasional false failures caused by timing conflicts. This helps keep the validation pipeline stable without changing how users interact with the barcode app.
Original PR description
The JS tour test `test_gs1_and_packaging` can fail because of a concurrency error. This commit makes the trigger more specific to avoid that issue. Fixes runbot build error id 3303.
Miscellaneous changes
[[FIX] l10n_lu_reports: Profit & Loss: don't ignore moves with fiscal positions when exporting ECDF] The Luxembourg Profit & Loss report's ECDF XML export calls account.coa.report. For this, it forges new options for it. However, due to the fact _get_options() wasn't called, some option keys stayed uninitialized. This was wrong, and led to an unexpected behavior: since the usually mandatory 'fiscal_position' key wasn't provided in the options, get_options_domain (more precisely _get_options_f
Original PR description
[[FIX] l10n_lu_reports: Profit & Loss: don't ignore moves with fiscal positions when exporting ECDF] The Luxembourg Profit & Loss report's ECDF XML export calls account.coa.report. For this, it…
[[FIX] l10n_lu_reports: Profit & Loss: don't ignore moves with fiscal positions when exporting ECDF]
The Luxembourg Profit & Loss report's ECDF XML export calls account.coa.report. For this, it forges new options for it. However, due to the fact _get_options() wasn't called, some option keys stayed uninitialized. This was wrong, and led to an unexpected behavior: since the usually mandatory 'fiscal_position' key wasn't provided in the options, get_options_domain (more precisely _get_options_fiscal_position_domain) entered an unwanted condition and returned [('move_id.fiscal_position_id', '=', False)], which then caused the Luxembourg XML file to ignore every move with a fiscal position set.
[IMP] account_reports: make get_options_domain more robust when fiscal_position option is missing]
Before, when 'fiscal_position' option wasn't set in the options dictionary, we entered the else and added [('move_id.fiscal_position_id', '=', False)] to the domain, which was wrong. Though this case doesn't happen when properly initializing options with a call to _get_options(), we had a case in Luxembourg where it wasn't done. Making this change makes the code more robust against any future misuse of this nature.
OPW 2751338
Forward-Port-Of: odoo/enterprise#24416Administrators can now change the background image used in the Referrals app, matching the existing ability to customize other visuals such as friends and levels. This gives companies more control over branding and the employee referral experience.
Original PR description
The app allowed the administrators to change the images of many things (friends, levels, etc.) but not the background image. The background can now be any image the admin desires. TaskID: 2687543
The Planning app now offers clearer search options and more useful filters, making it easier for users to find relevant shifts, tasks, projects, sales orders, and timesheet-related items. Shift duplication also better preserves repeat settings, while schedule views keep useful grouping without forcing it in search.
Original PR description
_*= planning_hr_skills, project_forecast, project_timesheet_forecast,
sale_planning,sale_project_forecast
The purpose of this PR is to do generic improvement in
the planning app.
In this commit done the following changes:
- Add following search items:
- `Parent Task`, `Company`, `Note`.
- Rename `Services` search item into `Service`.
- Reorder the quick search items.
- Add the following filters:
- `My Roles`, `My Projects`, `My Tasks`, `My Sales Orders`, `Today`, `No Timesheets`.
- Exclude shifts that fall on today's date from the `Future` filter.
- Remove the `Open Shifts for my Roles` filter.
- Copy the `repeat`, `repeat_internal` and `repeat_type` field when duplicating a shift.
- Switch filters second and third groups from place.
- Remove the default group by in the search view, but keep grouping the gantt
view by the corresponding field in all schedule menus.
task-2732753Push notification subscriptions are now consolidated under the main website visitor record, so messages can reach all of a user's relevant devices without double-counting them. This makes event and track notifications more reliable for attendees while simplifying how visitor notification data is managed.
Original PR description
…itors push tokens PURPOSE Allow consolidation of push tokens on visitors and its children. SPECS This commit changes the way push tokens are registered onto website.visitors. Since the refactoring…
…itors push tokens PURPOSE Allow consolidation of push tokens on visitors and its children. SPECS This commit changes the way push tokens are registered onto website.visitors. Since the refactoring of events and event.tracks, it is now possible to send push notifications to users having wishlisted a specific track. Because we were working on the stable branch, we introduced the concept of parent visitors and children visitors, allowing the following use case: - You connect on device (PC) 1 on your Odoo Account 'Michel' - You enable push notifications and wishlist track 'Amazing OXP showcase' - You then connect on device 2 on your Odoo Account 'Michel' - The visitor from device 1 becomes a child of the one from device 2 - You enable push notifications on device 2 as well -> Ideally, when the 'Amazing OXP showcase' track is about to start, we would like to notify both devices, which was made possible by notifying both your parent visitor on device 2 as well as its children (here device 1). This lead to a few issues: - Complicated code in the website_event_track_social module to determine the wishlisted tracks of a visitor, we had to take both the tracks wishlisted by that record and also the ones wishlisted by its parent ; - Having to account for archived visitors when sending push notifications to event attendees, since children records are automatically archived ; - Misleading record count when sending a push notification to the event attendees, since it would count both the parent and the children visitors. This also makes a lot of sense with other visitors implementations: - A visitor can have multiple leads, all regrouped on its main visitor record ; - A visitor can have multiple wishlisted tracks, all regrouped on its main visitor record ; - And now a visitor can have multiple push subscriptions, also regrouped on its main visitor record. LINKS Task-2429652
Field service users get clearer task planning, search, and reporting options, including better date handling, more useful filters, and updated grouping labels. These changes help teams find work faster, analyze tasks more easily, and keep planning details more consistent.
Original PR description
* industry_fsm{_report}, industry_fsm_sale{_report}, project_enterprise, worksheet PURPOSE: generic improvements for field services. SPECIFICATIONS: - tasks editable list view: use the date range…
* industry_fsm{_report}, industry_fsm_sale{_report}, project_enterprise,
worksheet
PURPOSE:
generic improvements for field services.
SPECIFICATIONS:
- tasks editable list view: use the date range widget for the 'start date' and
'end date' fields
- Add a graph and pivot view to the 'my tasks' menus
- Rename 'By user' to 'by worker' and 'by worksheet' to 'by worksheet template'
- If either one of the planned_date_begin or planned_date_end fields are set
then the other one should be required
- Field partner_phone will be visible whether the partner_id field is set or not
if is_fsm is true
- Stat buttons 'Worksheet' and 'Products' will be visible whether the partner_id
field is set or not if is_fsm is true
- For tasks, track the field 'worksheet_template_id, planned_date_being,
planned_date_end' in chatter
- Remove create an option for the field 'worksheet_template_id'
- For worksheet template's list view, fields company_ids, worksheet_count and
color will be optional and displayed by default
For tasks search view,
- Add search items: stage, project, worksheet template, parent task, sale order,
tags, and reorder it.
- Add filters: followed tasks, my projects, starred, tasks late,
tasks in overtime rated tasks
- Add a 'customer' and 'sales order' group bys
- Rename a group by 'Responsible' into 'Assigned to'
- Add group by task above 'start date'
- Remove the 'company' group by and reorder the groups accordingly
For projects search view,
- Add a quick search on the worksheet template and company
- Hide the 'sales order' quick search in field service
- Add a group bys: worksheet template and company
Task-2585357This update fixes a template issue in the Documents Spreadsheet Bundle that could affect spreadsheet autofill behavior after a framework upgrade. It helps keep spreadsheet-related document features working reliably without changing business workflows.
Original PR description
Since owl 2 (aa95e275eec157d999e8a6eecdaefb90f54d4fa8), t-key is required in a t-foreach tag. task-id 2766634
Fixed an issue where users could not validate a new spreadsheet filter when the sheet contained a list. This restores the expected filter setup flow and prevents disruption when working with document spreadsheets.
Original PR description
…change In 4ccd4056b46f5acb29d0b9440cabad5683698552, the callback to update the list field on a filter was mistakenly replaced by the one for the pivot field. This prevented a user to validate a new filter on a sheet containing a list. task 2762227
Currently, if a company has "-" in their company address, the get_xml() crashes when exporting the report, because of the encoding. Report export shouldn't crash, special characters should be ignored. Task: 2760141 Forward-Port-Of: odoo/enterprise#24277
Original PR description
Currently, if a company has "-" in their company address, the get_xml() crashes when exporting the report, because of the encoding. Report export shouldn't crash, special characters should be ignored. Task: 2760141 Forward-Port-Of: odoo/enterprise#24277
Steps : Install Field Service and Contacts. Create a FSM task > Customer : Demo. Note that the displayed address is his Demo's current one. Click Navigate To : it points this same address. Go to Contacts > Demo > change the address and return to task. Note that the displayed address is his Demo's new one. (Or else refresh) Issue : Click Navigate To : it points the OLD address. Cause : action_fsm_navigate calls partner.geo_localize only if partner has no geocoordinates. Yet he sti
Original PR description
Steps : Install Field Service and Contacts. Create a FSM task > Customer : Demo. Note that the displayed address is his Demo's current one. Click Navigate To : it points this same address. Go to Contacts > Demo > change the address and return to task. Note that the displayed address is his Demo's new one. (Or else refresh) Issue : Click Navigate To : it points the OLD address. Cause : action_fsm_navigate calls partner.geo_localize only if partner has no geocoordinates. Yet he still have the old coordinates. Fix : Call when the address changes and not in action_fsm_navigate. opw: 2743926 Related PR: https://github.com/odoo/odoo/pull/84266 Forward-Port-Of: odoo/enterprise#24198
If you execute the scheduled action "1. Cron Job - Run SII Sales Book Report Process", this will result in a traceback because we call `decode` on a `Markup` object which doesn't have that method. This is due to a change in `ir_qweb.py`'s `_render` implementation which now returns a `Markup` object instead of a `bytes` one: https://github.com/odoo/odoo/pull/68299 . It looks like daily sales book was missed during the corresponding refactoring. Forward-Port-Of: odoo/enterprise#24421
Original PR description
If you execute the scheduled action "1. Cron Job - Run SII Sales Book Report Process", this will result in a traceback because we call `decode` on a `Markup` object which doesn't have that method. This is due to a change in `ir_qweb.py`'s `_render` implementation which now returns a `Markup` object instead of a `bytes` one: https://github.com/odoo/odoo/pull/68299 . It looks like daily sales book was missed during the corresponding refactoring. Forward-Port-Of: odoo/enterprise#24421
On inter-company transactions the SO created in Company B when the PO was confimed in Company A you want to see the message "Automatically generated from P12345 of Company A". Currently you see the message like "... from P12345 of Company B" when opening the SO in Company B. Forward-Port-Of: odoo/enterprise#24431 Forward-Port-Of: odoo/enterprise#24123
Original PR description
On inter-company transactions the SO created in Company B when the PO was confimed in Company A you want to see the message "Automatically generated from P12345 of Company A". Currently you see the message like "... from P12345 of Company B" when opening the SO in Company B. Forward-Port-Of: odoo/enterprise#24431 Forward-Port-Of: odoo/enterprise#24123