Thursday, February 13, 2025
27 changes
12 changes
Enhancements to existing features
CRM Enterprise now relies on the shared community definition for won/lost opportunity status. This keeps activity reporting aligned with the latest opportunity classification rules and reduces differences between editions.
Original PR description
Move 'won_status' field to community. Task-2654916 Co-Authored-By: Raoulette Co-Authored-By: Micheline
Gantt views now show clearer, more informative date headers and tooltips, making schedules easier to read and less ambiguous. Day and year views were adjusted so hours and months are displayed more comfortably, improving usability across planning-related screens.
Original PR description
We review the group/col headers of the gantt view: - dates are formatted in a way that more information is displayed and should be unambiguous - titles are set: they give more information (or the same information if the original information is precise enough) on the dates - In range 'Day', the hours are no longer set in bold - In range 'Year', the columns have a bigger minimal width so that the months are well separated and readable. Task ID: 4535648
Businesses can once again manage Peppol invoices directly from the Documents app. This helps teams keep electronic invoice processing connected to their document workflow, reducing manual handling and improving operational continuity.
Original PR description
Add back the possibility to handle Peppol invoices in Documents. task-4394408
Marketing automation campaigns can now use filters that update over time, such as targeting customers who ordered within the last three months. Website sales also gains a ready-made anniversary campaign template, helping businesses run timely customer engagement flows without manually refreshing campaign criteria.
Original PR description
Allow marketing activities to composer dynamic domains instead of only static ones. This allows campaigns to specify relative time relations, enabling flows like sending a mailing to users who have ordered something within the last 3 months for example. We also add a "birthday" flow for website_sale that was kept on hold because dynamic domains were not supported. task-4240689
Knowledge articles can now begin directly with an embedded list, kanban, or calendar view and keep that view aligned at the top. Template titles are no longer inserted into the article body, and editing safeguards make it easier to remove the first line while ensuring the article still keeps valid content structure.
Original PR description
This commit adds a new css rule to enable articles starting by an embedded view to stick to the top of the article. This display enables the user to create articles with only their embedded view inside it. This commit also removes the insertion of titles inside the article's body for the helper's templates. These templates should better represent an article containing only an embedded List/Kanban/Calendar. It also adds a new plugin to Knowledge that handles the deletion of an article's 1st line. This way when a user wants a clean article with only the embedded view on top it's easier to do so. This plugins also ensures that every article contains at least a paragraph if it happens the user deletes one too many. task-3231001
Rental, subscription, and appointment sales now follow the updated ecommerce cart process. This keeps these sales flows aligned with the main website shop changes and helps maintain reliable cart behavior for customers.
Bank synchronization and payment initiation now use a richer connection status, giving clearer information about provider support and activation state. The option to initiate payments is shown only when the customer has enabled payment initiation for the connected bank, reducing confusion and preventing unavailable actions.
Original PR description
This commit has 2 different purposes: 1. Connect the bank synchronization and the payment module to a new API route to get the connection status instead of only getting the consent expiring date. This new route still provides the consent expiring date but will also provides more information about the payment initiation. Three new information are provider, whether the payment feature is enabled, whether the payment activation is requested to the provider and whether the feature is activated with the provider. 2. This second purpose is directly linked to the first one, it modifies the Initiate payment visibility. Before it was visible once the bank journal was connected to a bank synchronization, now it's visible once the bank journal has a bank synchronization where the payment initiation feature is enabled by the customer. task-4532157
Bank reconciliation can now use patterns found in transaction details to identify the right reconciliation model. This helps accounting teams match bank transactions more accurately and reduce manual review.
Original PR description
This commit will add the logic to search based on a regex from the transaction details field of the bank rec widget. task: 4378289
Custom reporting filters have been reorganized so their special logic runs only for the specific reports that need it. This reduces unintended effects across other reports and helps keep accounting report behavior more reliable.
Original PR description
This commit makes sure that a custom report adding custom logic for the report filters is doing so in a custom component, not in a patch. This means the logic will only be run when requesting the custom report, not for all reports. task-4510055
French tax report exports can now handle empty declarations, allowing companies to submit a VAT return even when there is no tax to report. The system also creates a follow-up activity when an electronic filing fails, making errors easier to spot without manually checking each company.
Original PR description
There were 2 missing points in the tax report export in France: 1. Not possible to send empty tax report 2. The only way to know if a tax report has an error is to connect to the company This commit solves these issues by the following: 1. Adding `zone KF` to the XML export (and showing a user a warning with `check box "déclaration néant" checked`) which allows for sending empty tax report 2. If the EDI export is in error, an activity is added to the closing entry like the following https://app.excalidraw.com/l/65VNwvy7c4X/7ed0dmqcHNM task-4370133
The mobile emoji picker in Knowledge and chatter now opens in the expected place, replacing the keyboard without letting users scroll outside it. This makes adding emojis smoother and more consistent with the Discuss experience.
Original PR description
**Current behavior before PR:** In mobile view, the emoji picker in the chatter and knowledge modules replaces the native keyboard but does not take its proper position, allowing users to scroll outside the picker. **Desired behavior after PR is merged:** In mobile view, the emoji picker in both the chatter and knowledge modules will function similarly to the discuss module’s picker—replacing the native keyboard and maintaining the correct position. **task-id**:3757047
Resolved issues and error corrections
Users with Invoicing and Banks access can now open customer statements, partner ledger information, and follow-up tools without needing full Accounting access. This aligns reporting permissions with the newer invoicing role and makes key customer payment workflows available to the intended users.
Original PR description
With the introduction of Invoicing Enterprise (access to bank recon etc) a new user group was created "Invoicing & Banks" (`group_account_basic`)
This group should also be able to access the customer statement / partner ledger (from the partner smart button), as well as the followup wizard.
Implications: The module dependencies change because account_reports are now available with just Invoicing.
Old dependencies
----------------
- `account_asset` ... (and other accounting features)
- `account_reports` (auto installed)
- `accountant` **[Accounting]**
- `account_accountant` (auto installed)
- `account` **[Invoicing]**
New
---
- `account_asset` ... (and other accounting features)
- `accountant` **[Accounting]**
- `account_reports` (auto install)
- `account_accountant` (auto install)
- `account` **[Invoicing]**
Task-446520815 changes
Enhancements to existing features
Peppol registration now automatically chooses the correct role based on whether the company is already registered with another service provider. This reduces manual setup errors and helps ensure companies are registered in a way that complies with Peppol rules.
Original PR description
If the user is already registered on another SMP, we know we can only register him as a sender. If not, we have to register him as a receiver. A user can't be only a sender on Peppol. task-4394408
When an accounting document is reset to draft, files previously generated for sending or printing are now detached. This lets users edit the document and generate fresh, accurate files afterward, reducing the risk of outdated attachments being reused.
Original PR description
Resetting a move to draft should detach the current attachments generated by the send and print and allow regenerating them after the user is done with the edits. Task [link](https://www.odoo.com/odoo/project.task/4498564) task-4498564 Enterprise PR: https://github.com/odoo/enterprise/pull/78429
Bank records are now archived when users try to remove them, helping preserve historical information while keeping inactive banks out of normal views. Users also get clearer controls and filters to manage archived banks from the bank form and list screens.
Original PR description
This commit will do multiple thing: - Override the unlink to archive instead - Addings archived filter - Adding a button in the form view to archive it and reload - Adding the active field to the list view - Change some optional show and hide task-4507042 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
When an accounting document is reset to draft, files previously generated for sending or printing are now detached so they do not remain tied to an outdated version. This lets users edit the document and regenerate the correct files afterward, reducing the risk of sending stale attachments.
Original PR description
Resetting a move to draft should detach the current attachments generated by the send and print and allow regenerating them after the user is done with the edits. task-4498564 Community PR: https://github.com/odoo/odoo/pull/195626
French VAT reporting now generates the required 3519 declaration when a company requests a VAT reimbursement, ensuring the reimbursement filing is sent correctly through AspOne. The update also prevents an error when creating electronic VAT filings for periods with an empty closing entry.
Original PR description
The declaration 3519 is also needed when we ask for a reimbursement. We currently can't group them (as the fields definition don't allow it), so we will keep them separated. It is sent the same way to AspOne. task-4328721
Resolved issues and error corrections
Employees without Time Off administration rights could be blocked from opening their Time Off dashboard when one of their allocations used an accrual plan. This fix ensures the dashboard can check the needed accrual plan details safely, preventing an access rights error for regular employees.
Original PR description
Accrual plans are not readable for regular users, so once a user has an accrual plan set on one of their allocations, they cannot open their time off dashboard. Access rights error gets thrown. The…
Accrual plans are not readable for regular users, so once a user has an accrual plan set on one of their allocations, they cannot open their time off dashboard. Access rights error gets thrown. The bug was supposedly fixed in commit: https://github.com/odoo/odoo/commit/30f7fe62ef2579ed0a0c3ad9dbec5edf2ca60b18 but it did not consider adding the sudo() for the condition based on the carryover_policy. Steps to Reproduce on Runbot: As Mitchell Admin: 1. Install Time Off app 2. Create a time off type (show in dashboard,requires allocation) 3. Create an accrual plan (accrued_gain_time: end, carryover_date: year_start) 4. Create a rule for the accrual plan (Accumulate 0.5 days, month at the 1st of the month, carryover policy is either none or maximum) 5. Create an allocation for Marc Demo,who has no time off rights, for the time off type. Set to accrual allocation and link to the accrual plan.Then, set the start date to the 1st of the month and run until some future date. As Marc Demo: 1. Attempt to click into the Time Off app 2. Observe Access Right error opw-4551392 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Product pages are now accessible to public shoppers when the “Pick up in store” delivery method is enabled. This prevents affected e-commerce visitors from seeing a 403 error and helps keep the shopping experience uninterrupted.
Original PR description
__Current behavior before commit:__ Since [this pr][1], a 403 error appears on the product page if the "Pick up in store" delivery method is set. __Description of the fix:__ Add a missing sudo on the `product_or_template` like it is done 2 lines above. __Steps to reproduce the issue on runbot:__ 1. Configure and publish the delivery method "Pick up in store" 2. Go to a product page in the e-shop as a Public User opw-4574924 [1]: https://github.com/odoo/odoo/pull/195033
Internal users can now mark portal messages as to-do by toggling the star, and the portal correctly reflects that status. This fixes a visible workflow issue for users who manage messages from the portal and adds coverage to prevent regressions.
Original PR description
Before this PR, toggling the star on a message (`Mark as Todo`) didn't work for internal users, even though the feature is available to them in the portal environment. This happens because: - The…
Before this PR, toggling the star on a message (`Mark as Todo`) didn't work for internal users, even though the feature is available to them in the portal environment. This happens because: - The `starred` value is not sent with the message data when fetching the messages in the portal. - Sending over the bus is not available in the portal. This PR fixes the issue by returning the proper data either when fetching the messages or when toggling the star. There is an extra query when calling `portal_message_format` because of `mail_message_res_partner_starred_rel`. Also, there is `sometimes` another extra query when calling `portal_message_format` on multiple messages depending on which partner is already in the cache. This is what happens: Without extra query: - Query on res_partner by `_read_format` for `5 partners` - Computing starred starts (_compute_starred) - Query for mail_message_res_partner_starred_rel - Computing starred ends With extra query: - Computing starred starts (_compute_starred) - Query for mail_message_res_partner_starred_rel - Query on res_partner by `_read_format` for `4 partners` - Computing starred ends - Query on res_partner by `_read_format` for `1 partner` Although it doesn't happen all the time, this PR considers an extra query count for this process to avoid unwanted crashes on related tests. task-4526370
Fixed how taxes are calculated when fixed or points-based discounts are applied to sales orders. This ensures tax amounts reflect the actual reduced product price, helping businesses stay aligned with accounting and tax requirements.
Original PR description
Commit db12319e8b3b662a1498ee9a519fbced457174cc introduced a wrong behaviour for the discounts applied to an order when they are fixed or depending on the number of points. With this commit, the taxes applied would the ones set on the reward product if at least one line in the sale order had these taxes. Disregarding any other taxes applied, or not setting taxes at all. This was done to facilitate the reading of a sale order. Accounting wise, this is wrong. A product is paid less, so less taxes needs to be recorded. It's not optimization, it's regulation. Reverting part of db12319e8b3b662a1498ee9a519fbced457174cc to evaluate how to ease the user life without having them getting on the warpath of their accountant. opw-4486030 TODO in master: take off taxes fields.
This fixes a validation gap that allowed more than one reference unit in the same unit category when editing inactive records before saving. The change protects data consistency and avoids upgrade problems caused by invalid unit relationships.
Original PR description
Steps to reproduce: * Open the form view of any UoM category. * Add a new line in the units list. * Without saving, Uncheck "Active" checkbox. * Before saving, change the type of this unit to reference. * Save the form. Expected behavior: An error should be thrown as it's not allowed to have more than one reference unit for some category. Current behavior: The record is normally saved without any errors. This issue caused an inconsistency when upgarding a database in such state to saas18.1, where each unit points to its reference as a parent. Having multiple references in the same category caused a having a cycle in this link. See: https://github.com/odoo/upgrade/blob/master/migrations/uom/saas~18.1.1.0/pre-migrate.py#L16-L25 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Shared spreadsheet links that include Odoo charts now load correctly instead of showing a blank screen. This ensures recipients can reliably view shared spreadsheets containing graph-based data.
Original PR description
1. Insert a graph view into the spreadsheet. 2. Click the "Share" button to generate a shareable link. 3. Open the link in an incognito window. 4. A blank screen appears, with errors logged in the console. The condition for detecting live data in the spreadsheet was incorrect, causing shared links to break. This PR updates the condition to correctly check for the presence of Odoo charts. Task: 4551470
Subscription billing details now show recurring amounts in the order's currency, so customers and sales teams see the right values. The update also improves how the last invoiced date is identified, preventing incorrect next invoice or deferred date information in customized setups.
Original PR description
Before this commit, the _next_billing_details would not compute the amount in the currency of the order.
This fixes an issue where timesheet changes made from an employee’s grid view could be saved against the wrong person. Updates now respect the context of the page, so hours remain correctly linked after refreshing.
Original PR description
Before this commit, the context of the action was just ignored in the grid view and so the default values stored inside that context are not taken into account during `grid_update_cell` method. Steps…
Before this commit, the context of the action was just ignored in the grid view and so the default values stored inside that context are not taken into account during `grid_update_cell` method. Steps to reproduce the issue ---------------------------- 0. Install timesheet_grid module 1. Open Employees app 2. Click on an employee to open the form view 3. Click on the timesheets smart button to view the timesheet grid view for that employee 4. Navigate to a week that already contains hours for the current user 5. Update the grid cell containing a timesheet to reduce the number of hours for instance 6. Update another cell without any timesheets linked and set a hour Current Behavior ---------------- After refreshing the page and going to the same week, the changes made in step 5 and 6 are no longer applied. The reason is because those changes have generated new timesheets for the current user instead of the employee displayed in the form view before doing the step 3. Expected behavior ----------------- The grid view should be unchanged after refreshing the page, the changes made in 5 and 6 should be applied without any issues. opw-4491850
Fixed an issue where warehouse users could not create a new product from a scanned barcode when restricted product scanning was enabled for receipts. This restores the expected barcode lookup flow and prevents unnecessary blocking during receiving operations.
Original PR description
Barcode lookup is not working when activating `restrict_scan_product` Steps: - Go to 'Receipts' operations type - On the barcode tab, activate `restrict_scan_product` - Go to barcode app, receipts operation and scan a new product (eg 510002952387) -> Error: "Not the expected scan - You must scan a product" We should be able to create a new product. With this commit we make an extra check on the guilty condition in the stock_barcode_barcodelookup module opw-4429769
Fixes an issue where closing entry PDFs for past tax return periods could show the current period instead of the selected one. This helps accountants generate accurate tax documentation for historical reporting periods.
Original PR description
### Steps to reproduce: - Go to Accounting > Reporting > Tax return - Select a period in the past - Click on "Closing Entries" - Post - The period on the generated PDF is wrong ### Cause: This…
### Steps to reproduce: - Go to Accounting > Reporting > Tax return - Select a period in the past - Click on "Closing Entries" - Post - The period on the generated PDF is wrong ### Cause: This [commit](https://github.com/odoo/enterprise/commit/22878ec7e38c2a9fbf871beb239d01a42a17546a) changes `options['date']['filter']` to replace `tax_period` by the period (`'month', 'quarter', 'year'`). This causes `custom_tax_period` to be replaced by `custom_month` for example. Then in `_init_options_date` which computes the date for the report `options['date']['filter']` is checked: - If any of these strings: `'month', 'quarter', 'year'` are in the filter name then it computes the period with today's date - If `tax_period` and `custom` is in the filter name then it keeps the correct date So since this commit, `_init_options_date` always return today's date with `custom_tax_period` as filter. ### Solution: The value `custom_tax_period` wasn't expected by the commit introducing the issue and values like `custom_month` doesn't make sense. So this commit checks if `custom` is in the filter before replacing `tax_period`. opw-4543231