Daily updates from Odoo
Wednesday, April 22, 2026
45 changes
8 changes
Enhancements to existing features
This update improves how work entry source values are merged in the HR work entry process. It helps ensure work entry data is combined more reliably, reducing the risk of inconsistencies in payroll-related records.
Original PR description
Task: 6119891 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 Moves Analysis report now shows the date of each stock move directly in the list view, instead of hiding it behind debug mode. This makes it easier for users to review movement timing and understand inventory activity at a glance.
Original PR description
The date of the move is a basic and important information. Show it on the 'Moves Analysis' report list view, previously was only displayed in debug mode. task-5380628 Forward-Port-Of: odoo/odoo#254999
Discuss messages can now display and edit code blocks more naturally. This improves the experience for users sharing technical snippets by keeping formatting clear and showing code in a readable way when messages are viewed.
Original PR description
splitting the code block plugin from the font plugin, and make it available in mail composer. use the syntax highlighting embedded component to render code blocks in readonly mode in the message bodies. task-5262721 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The system now checks for missed notifications as soon as a user connects to the messaging socket, instead of relying on a separate page-watcher process. This simplifies the flow and makes the warning about lost updates more dependable when a connection is interrupted.
Original PR description
The outdated page watcher service tries to guess if the bus table was GCed during disconnect to warn the user about missed notifications. To do so, it has a complex logic, deeply coupled to the websocket lifecycle events and requires an RPC request to check if the server still knows about the last notification received. It would be much simpler to check this when first subscribing to the socket. This commit implement this solution. part of task-6144132
The 0% S tax for Belgium now uses the correct exemption code and exemption reason. This helps ensure invoices and tax reports reflect the right legal classification and reduces the risk of reporting errors.
Original PR description
The tax 0% S had a wrong tax exemption code and tax exemption reason. This commit corrects it. Task-6127195 Forward-Port-Of: odoo/odoo#259639
The website editor now uses a lightweight SVG placeholder for the video snippet preview instead of relying on a video file. This reduces ongoing maintenance and makes the preview more reliable over time.
Original PR description
Prior to this PR, the `s_video` inner snippet was using a video as placeholder, which implied maintenance to ensure the video is always available. To avoid maintenance and ensuring long term effectiveness, we replace this video with a `SVG` placeholder, similarly to what has been done for the `s_image`. task-5441285 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#260042
The help text for the Invoicing Switch Threshold has been updated to be more precise. It now clearly explains that all entries created by invoicing before the threshold date are ignored, avoiding confusion for users setting up the switch.
Original PR description
The previous "Invoicing Switch Threshold" explanation was misleading as it said only invoices prior to the threshold date is not taken into account. The explanation is updated to state that all entries created by Invoicing before the threshold date will be ignored. task-5940144 Forward-Port-Of: odoo/enterprise#113635
After synchronizing databases with Odoo.com, the system now tries to create a database-specific API key instead of relying on one global key. This reduces unnecessary validation calls and can speed up database access by around half a second in some cases.
Original PR description
Before this commit, databases fetched from Odoo's SaaS were contacted using the global API key, which is more costly than using a key local to each database. Avoiding the call from the server to Odoo to check the foreign API key can spare about 500ms on each database where this key is not in the LRU. With this commit, after the synchronization with Odoo.com, we try to generate an API key on each database that doesn't have one yet. To do so, it relies on the API introduced by odoo/odoo#246118. Forward-Port-Of: odoo/enterprise#114406 Forward-Port-Of: odoo/enterprise#106372
7 changes
Enhancements to existing features
This change makes a waiting check report the real underlying problem when a connection fails, instead of showing a generic cancellation message. It helps teams understand what went wrong faster and reduces confusion when a run stops unexpectedly.
Original PR description
This case induces confusion in the ranks: when the WS connection fails, the result of the run is set to failure then every outstanding response is cancelled. For `_wait_ready` specifically, because…
This case induces confusion in the ranks: when the WS connection fails, the result of the run is set to failure then every outstanding response is cancelled. For `_wait_ready` specifically, because it's a blocking wait on a request it yield a confusing result as the run fails with `CancelledError` and the actual cause (the WS was closed) is lost. One option would be to `set_exception` on the waiting responses, but I feel like this could create other confusing knock-on effects e.g. more evented waits which currently get ignored might start raising exceptions (although that seems unlikely as callbacks apparently do get called on cancel), and since issues with cancelling only seem to appear in `_wait_ready` that seems like overkill. Instead have `_wait_ready` handle cancellation by first checking if the result is in error, and using that to raise the underlying error, otherwise retry (and ultimately timeout, probably). And while at it, before signaling a timeout check if the run is in failure and raise that immediately, just in case. https://runbot.odoo.com/odoo/error/233738 Forward-Port-Of: odoo/odoo#260324
The website’s video snippet preview now uses a lightweight SVG illustration instead of an embedded video. This reduces ongoing maintenance and makes the preview more reliable over time.
Original PR description
Prior to this PR, the `s_video` inner snippet was using a video as placeholder, which implied maintenance to ensure the video is always available. To avoid maintenance and ensuring long term effectiveness, we replace this video with a `SVG` placeholder, similarly to what has been done for the `s_image`. task-5441285 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#260042
The wording of the Invoicing Switch Threshold help text was clarified to better explain which entries are ignored. This reduces the risk of misunderstanding when setting the switch date and helps users make the right accounting decision.
Original PR description
The previous "Invoicing Switch Threshold" explanation was misleading as it said only invoices prior to the threshold date is not taken into account. The explanation is updated to state that all entries created by Invoicing before the threshold date will be ignored. task-5940144 Forward-Port-Of: odoo/enterprise#113635
The Moves Analysis report now displays the date of each stock move directly in the list view. This makes the report easier to read and helps users review movement timing without needing debug mode.
Original PR description
The date of the move is a basic and important information. Show it on the 'Moves Analysis' report list view, previously was only displayed in debug mode. task-5380628 Forward-Port-Of: odoo/odoo#254999
This update lets users split a manufacturing order into multiple smaller orders when generating serial numbers. It makes it possible to assign one serial number to each sub-order in a single workflow, which simplifies production for items tracked by serial number.
Original PR description
Since 4bb4e08066449, producing multiple serial that have been generated is only doable on one mo. We can split mo. we can generate serial number but we cannot do both at the same time. This commit adds a new button into the generate serial wizard to split the main mo into the number of serial wanted and attribute one for each sub mo. 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#257694 Forward-Port-Of: odoo/odoo#255577
This update improves the Contact form by enlarging the clickable area for adding a photo. It makes it easier for users to upload a contact picture and reduces frustration when selecting the image area.
Original PR description
This PR aims to fix an issue where the click zone for `.o_image_uploader_container` doesn't take the appropriate space when adding a new photo to a contact. task-5100043 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#228330
Odoo now creates a local API key for each database during synchronization when one is missing. This reduces the need to rely on a shared global key and can make database updates noticeably faster, saving around half a second in some cases.
Original PR description
Before this commit, databases fetched from Odoo's SaaS were contacted using the global API key, which is more costly than using a key local to each database. Avoiding the call from the server to Odoo to check the foreign API key can spare about 500ms on each database where this key is not in the LRU. With this commit, after the synchronization with Odoo.com, we try to generate an API key on each database that doesn't have one yet. To do so, it relies on the API introduced by odoo/odoo#246118. Forward-Port-Of: odoo/enterprise#114406 Forward-Port-Of: odoo/enterprise#106372
5 changes
Enhancements to existing features
This change improves how the system reports failures when a connection drops during a wait. Instead of showing a confusing cancellation message, it now surfaces the real underlying problem so support teams can identify the cause more quickly.
Original PR description
This case induces confusion in the ranks: when the WS connection fails, the result of the run is set to failure then every outstanding response is cancelled. For `_wait_ready` specifically, because…
This case induces confusion in the ranks: when the WS connection fails, the result of the run is set to failure then every outstanding response is cancelled. For `_wait_ready` specifically, because it's a blocking wait on a request it yield a confusing result as the run fails with `CancelledError` and the actual cause (the WS was closed) is lost. One option would be to `set_exception` on the waiting responses, but I feel like this could create other confusing knock-on effects e.g. more evented waits which currently get ignored might start raising exceptions (although that seems unlikely as callbacks apparently do get called on cancel), and since issues with cancelling only seem to appear in `_wait_ready` that seems like overkill. Instead have `_wait_ready` handle cancellation by first checking if the result is in error, and using that to raise the underlying error, otherwise retry (and ultimately timeout, probably). And while at it, before signaling a timeout check if the run is in failure and raise that immediately, just in case. https://runbot.odoo.com/odoo/error/233738 Forward-Port-Of: odoo/odoo#260324
The website’s video snippet preview now uses a lightweight SVG image instead of an embedded video. This reduces ongoing maintenance and makes the preview more reliable over time.
Original PR description
Prior to this PR, the `s_video` inner snippet was using a video as placeholder, which implied maintenance to ensure the video is always available. To avoid maintenance and ensuring long term effectiveness, we replace this video with a `SVG` placeholder, similarly to what has been done for the `s_image`. task-5441285 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#260042
The explanation for the Invoicing Switch Threshold has been clarified to better describe which entries are ignored. This helps users understand that all entries created by Invoicing before the threshold date are excluded, avoiding confusion and incorrect expectations.
Original PR description
The previous "Invoicing Switch Threshold" explanation was misleading as it said only invoices prior to the threshold date is not taken into account. The explanation is updated to state that all entries created by Invoicing before the threshold date will be ignored. task-5940144 Forward-Port-Of: odoo/enterprise#113635
After databases are synchronized from Odoo.com, the system now tries to create a local API key for each database that does not already have one. This reduces an extra validation step against the global key, which makes database access faster and can save about half a second per database in some cases.
Original PR description
Before this commit, databases fetched from Odoo's SaaS were contacted using the global API key, which is more costly than using a key local to each database. Avoiding the call from the server to Odoo to check the foreign API key can spare about 500ms on each database where this key is not in the LRU. With this commit, after the synchronization with Odoo.com, we try to generate an API key on each database that doesn't have one yet. To do so, it relies on the API introduced by odoo/odoo#246118. Forward-Port-Of: odoo/enterprise#106372
The Moves Analysis report now shows the date of each stock move directly in the list view. This makes the report easier to read and removes the need to switch to debug mode to see this basic information.
Original PR description
The date of the move is a basic and important information. Show it on the 'Moves Analysis' report list view, previously was only displayed in debug mode. task-5380628 Forward-Port-Of: odoo/odoo#254999
3 changes
Enhancements to existing features
This update makes test waits report the real underlying problem when a connection is lost, instead of showing a generic cancellation message. It also checks for an existing failure before timing out, which helps surface the true cause faster and makes debugging easier.
Original PR description
This case induces confusion in the ranks: when the WS connection fails, the result of the run is set to failure then every outstanding response is cancelled. For `_wait_ready` specifically, because…
This case induces confusion in the ranks: when the WS connection fails, the result of the run is set to failure then every outstanding response is cancelled. For `_wait_ready` specifically, because it's a blocking wait on a request it yield a confusing result as the run fails with `CancelledError` and the actual cause (the WS was closed) is lost. One option would be to `set_exception` on the waiting responses, but I feel like this could create other confusing knock-on effects e.g. more evented waits which currently get ignored might start raising exceptions (although that seems unlikely as callbacks apparently do get called on cancel), and since issues with cancelling only seem to appear in `_wait_ready` that seems like overkill. Instead have `_wait_ready` handle cancellation by first checking if the result is in error, and using that to raise the underlying error, otherwise retry (and ultimately timeout, probably). And while at it, before signaling a timeout check if the run is in failure and raise that immediately, just in case. https://runbot.odoo.com/odoo/error/233738 Forward-Port-Of: odoo/odoo#260324
The French chart of accounts now separates account 649 into two new accounts, 6491 and 6492. This helps the Profit and Loss report distinguish social security charges from salaries more accurately, improving the quality of financial reporting.
Original PR description
Splitting account 649 into two new accounts (6491 and 6492) is necessary to handle the Profit and Loss report properly. This ensures we can accurately separate social security charges from salaries in the report. Reference: ANC PCG 2026, page 445, note (h) https://www.anc.gouv.fr/files/anc/files/1_Normes_fran%C3%A7aises/recueil/RECEUIL-PCG-2026-AVEC-COUVERTURE.pdf task-6053784 Forward-Port-Of: odoo/odoo#257398 Forward-Port-Of: odoo/odoo#255038
The French accounting reports now separate account 649 into two new accounts, 6491 and 6492. This makes the Profit and Loss report more accurate by distinguishing social security charges from salaries, and the old account remains available but is deprecated for new databases.
Original PR description
Splitting account 649 into two new accounts (6491 and 6492) is necessary to handle the Profit and Loss report properly. This ensures we can accurately separate social security charges from salaries in the report. Reference: ANC PCG 2026, page 445, note (h) https://www.anc.gouv.fr/files/anc/files/1_Normes_fran%C3%A7aises/recueil/RECEUIL-PCG-2026-AVEC-COUVERTURE.pdf task-6053784 Forward-Port-Of: odoo/enterprise#112905 Forward-Port-Of: odoo/enterprise#111420
2 changes
Enhancements to existing features
This update speeds up the validation of large stock transfers by grouping line deletions and creations into fewer operations. It reduces repeated database work, which helps prevent timeouts and makes big pickings complete much faster.
Original PR description
Before this PR, `button_validate` was using a `write()` call per matched stock move. On every `write()` there is a Command.create and Command.delete which is resulting in N database round-trips for…
Before this PR, `button_validate` was using a `write()` call per matched stock move. On every `write()` there is a Command.create and Command.delete which is resulting in N database round-trips for the unlinks and N for the creates, followed by N separate `_apply_putaway_strategy()` calls. This is problematic for pickings with many move_ids. This PR attempts to accumulates all move lines to delete and to create. Then performs a single `unlink()` and `create()`, followed by a single `_apply_putaway_strategy()` for all pickings. Unlink is done using `.sudo()` to preserve the superuser context that was previously inherited implicitly through the `purchase_order.sudo().search` that produced the recordset used to obtain the `receipt_move`(s). Benchmarks: | No. move lines in delivery | Before | After | | -------------------------- | ------- | ----- | | 7579 | Timeout | < 200 s | opw-5826905 Forward-Port-Of: odoo/enterprise#110587 Forward-Port-Of: odoo/enterprise#110153
The French accounting report now uses two separate accounts instead of one for account 649, making it easier to distinguish social security charges from salaries. This improves the accuracy of the Profit and Loss report and aligns the setup with the latest French accounting guidance.
Original PR description
Splitting account 649 into two new accounts (6491 and 6492) is necessary to handle the Profit and Loss report properly. This ensures we can accurately separate social security charges from salaries in the report. Reference: ANC PCG 2026, page 445, note (h) https://www.anc.gouv.fr/files/anc/files/1_Normes_fran%C3%A7aises/recueil/RECEUIL-PCG-2026-AVEC-COUVERTURE.pdf task-6053784 Forward-Port-Of: odoo/enterprise#112905 Forward-Port-Of: odoo/enterprise#111420
10 changes
Enhancements to existing features
The timesheet kanban views have been redesigned to show more useful information at a glance, with the personal timesheet view now feeling more like a calendar. This should make it easier for users and managers to review time entries, billable work, and overall timesheet status without opening individual records.
Original PR description
Redesign the timesheet kanban views to display more relevant information and make the *My Timesheet* view feel more calendar‑like. ## Additional - To ensure `is_billable` behaves correctly with the kanban progress bar, a non-stored `is_billable_select` field was added to `analytic.account.line`. This field can be queried through its `sql_search` method, allowing efficient access without introducing redundant stored fields in the database. Using a selection field is required for proper progress bar functionality. task-[5180328](https://www.odoo.com/odoo/project/4105/tasks/5180328) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Users now see a warning as soon as they assign someone and choose planned dates that overlap with that person's existing tasks. This helps teams spot conflicts earlier and adjust schedules before saving, reducing planning mistakes.
Original PR description
When a user plans a task, they are not aware if the assigned user already has other tasks at the same time. Currently, the overlapping warning is only triggered when the task is saved. This commit ensures that the warning appears as soon as the user selects the assigned user and planned dates, allowing the user to reschedule the task before saving. task-4300405
Helpdesk teams can now see the coupon email and its attachment directly in the related ticket chatter. This makes it easier to track what was sent to customers and keeps the ticket history complete for follow-up and audits.
Original PR description
Log the coupon email and the attachment in the helpdesk chatter --- Task-5075162
Belgian payroll now applies caps to Premium Pay calculations, helping ensure employee payslips follow the required limits. This reduces payroll errors and improves compliance for companies using Belgian payroll rules.
Original PR description
add premium pay caps Task: 6119891
The French reporting export screen now allows longer text lines to wrap instead of being cut off. This makes export information easier to read and reduces confusion for users reviewing async export details.
Original PR description
Improves the UI by allowing the text lines to wrap and fully be visible. No task ID
The accounting reports setup screen no longer shows an informational warning about reports using custom handlers. This reduces clutter for users who customize reports and removes a message that is no longer considered useful.
Original PR description
Before this commit: - We had one info banner with the message indicating that the report is using a custom handler, so a change in the parameters used for computation could lead to errors. After this commit: - Now, we are removing this info banner from the report form view, because there is no need for this banner anymore, as if the user wants to customize the reports, they'll do it anyway. Task-6037421
This update changes how VoIP-related records are stored internally to better handle frequent creation and deletion of calls, messages, and related items. Users should not see workflow changes, but the app may feel smoother and more responsive during busy usage.
Original PR description
`Store.MyModel.records` is an object whose key is record local id and value is the record. While format of object is nice, this object has its shape changing quite often as this is based on creation and deletion of records. Objects in javascript are expected to have their shape changed rarely, which is not the case of `records`. In theory, creation of JS models can lead to noticeable stuttering from major and minor GC. This commit changes the shape of `records` to become a Map instead, which doesn't have these problems. As this becomes a Map, and quite some business code was using `Object.values()` around records, this commit also add a new feature on Model object: `.all()`, which returns list of all records of the given model: ```js // previously Object.values(store.MyModel.records); // now store.MyModel.all(); ``` Task-5437248
The Documents app now keeps page navigation visible in Kanban and List views, even when the details panel is open. This makes it easier for users to move through document pages without changing panel visibility, and the details panel now updates to show the current folder when pages are opened or changed.
Original PR description
Before this commit, the pager would only be displayed if the right panel is invisible. This commit allows to be always displayed in `Kanban` and `List` views regardless of the state of the right panel. task-6070904
The Belgian payroll module now includes the 2026 salary scale values for Joint Committee 302, covering both regular and flexi jobs. This helps ensure payroll calculations stay aligned with the latest sector requirements and that related checks continue to validate the updated amounts.
Original PR description
. Add JC302 salary scale 2026 effective values for normal & flexi jobs . Update the corresponding tests task-6127071
The settings text for the Invoicing Switch Threshold now explains that all entries created by Invoicing before the threshold date are ignored, not just invoices. This helps users better understand what data is excluded and reduces confusion during accounting setup.
Original PR description
The previous "Invoicing Switch Threshold" explanation was misleading as it said only invoices prior to the threshold date is not taken into account. The explanation is updated to state that all entries created by Invoicing before the threshold date will be ignored. task-5940144 Forward-Port-Of: odoo/enterprise#113635
5 changes
Enhancements to existing features
This update makes report comments and annotations easier to use on phones and tablets. The chatter now appears at the bottom on small screens, and annotation icons stay visible on touch devices, so users can review and add notes more reliably.
Original PR description
Previously, the chatter was hidden on device too smalls and the annotation icon was only visible with hover so not visible on touch devices such as phones or tablets. Now, we have the chatter at the bottom when the device is too small and always display the annotation icon on touch devices. task-5106852
Users can now find return types by searching with the return name, making it easier to locate the right audit documents. The generic, French, and Belgian audit return types now use fiscal-year periodicity, which better matches how these reports are used.
Original PR description
This change enables the user to search for the return types using the name of the return. In addition, it switches the generic audit, french audit and belgian audit to use the fiscal year periodicity instead of the annual periodicity. task: 5948404
When a tax return is validated, its XML and PDF export files are now posted in the record’s chatter and pinned for easy access. This makes the documents much more visible to users and reduces the chance of overlooking important return files.
Original PR description
The xml and pdf of export of the tax return are not so visible for the user, thus the change creates the files on the validation of the returns and exports them to the chatter where they would be pinned task: 5871091
Users can now add files or links from the Documents app directly in the Accounting Send & Print wizard, bringing it in line with the standard mail composer. This makes it easier to reuse existing documents when sending invoices and other accounting documents.
Original PR description
The standard mail composer (e.g., used in Quotations) allows users to add files or paste links directly from the Documents app. However, this functionality was missing in the custom `account.move.send` wizard used for Invoicing and Accounting. This commit introduces the 'Add from Documents' feature to the Accounting Send & Print wizard. task- 5905930
The invoice import logic now looks at the partner when building move line queries, which helps match imported data more accurately. It also adds a fallback to predict a product even when there is no linked accounting line, reducing synchronization issues during BIS3/UBL invoice imports.
Original PR description
This commit is part of a bigger commit on the community side- to refactor the import code of BIS3 Invoice to fix various unsynchronized values issues. task-id: 5058687 Forward-Port-Of: odoo/enterprise#113822 Forward-Port-Of: odoo/enterprise#108356
2 changes
Enhancements to existing features
This update makes failed background readiness checks report the real underlying problem instead of a generic cancellation message. It helps users and support teams understand when a connection has failed and avoids confusing timeout-style errors.
Original PR description
This case induces confusion in the ranks: when the WS connection fails, the result of the run is set to failure then every outstanding response is cancelled. For `_wait_ready` specifically, because…
This case induces confusion in the ranks: when the WS connection fails, the result of the run is set to failure then every outstanding response is cancelled. For `_wait_ready` specifically, because it's a blocking wait on a request it yield a confusing result as the run fails with `CancelledError` and the actual cause (the WS was closed) is lost. One option would be to `set_exception` on the waiting responses, but I feel like this could create other confusing knock-on effects e.g. more evented waits which currently get ignored might start raising exceptions (although that seems unlikely as callbacks apparently do get called on cancel), and since issues with cancelling only seem to appear in `_wait_ready` that seems like overkill. Instead have `_wait_ready` handle cancellation by first checking if the result is in error, and using that to raise the underlying error, otherwise retry (and ultimately timeout, probably). And while at it, before signaling a timeout check if the run is in failure and raise that immediately, just in case. https://runbot.odoo.com/odoo/error/233738 Forward-Port-Of: odoo/odoo#260324
This change speeds up stock validation when handling large numbers of move lines and packages. It reduces unnecessary database work and repeated processing, which makes validation complete much faster and helps avoid timeouts on bigger inventories.
Original PR description
Applying stock quants validation was performing poorly due to multiple bottlenecks in `Picking._check_entire_pack` and `StockMoveLine._apply_putaway_strategy`: * **Redundant updates** were performed…
Applying stock quants validation was performing poorly due to multiple bottlenecks in `Picking._check_entire_pack` and `StockMoveLine._apply_putaway_strategy`: * **Redundant updates** were performed on `location_dest_id` in the move lines and the package levels (which internally update all related move lines too), even when the location remained unchanged. * The main loop inside `_check_entire_pack` was **O(N^2)** time relative to the number of move lines due to internal filtering logic. * **Cache misses** triggered unnecessary SQL queries when retrieving `move_line_ids` from `package levels`, while they are already cached via the pickings and can be grouped by `package_level`. --- ### Benchmark Benchmark conducted on a customer database with **400k** `stock_move_line` records within **800** `pickings`, testing performance of the action `StockQuant.action_validate` with different sizes of move lines. Each test was run multiple times and shown is the average mean, all with negligible variance. | Metric | Before | After | Delta | | :--- | :--- | :--- | :--- | | **Benchmark (1k lines)** | 10.5s | 2.2s | -80% | | **Benchmark (5k lines)** | 121s | 8.5s | -93% | | **Benchmark (50k lines)** | 887s | 56s | -94% | | **Benchmark (400k lines)** | timeout | 777s | (within time limit) | **OPW-6045513**
3 changes
Enhancements to existing features
This update changes the sender address used in an automated CRM email from iap@odoo.com to noreply@odoo.com. It helps prevent customers from replying to messages that are meant to be automatic notifications, reducing confusion and unnecessary incoming responses.
Original PR description
The current mail address is iap@odoo.com so some client respond to the automatic mail. This fix change it to noreply@odoo.com Task-6086556
The automatic email sent by the extraction feature now uses a no-reply address instead of a regular inbox. This prevents customers or other systems from replying to messages that are meant to be automated, reducing confusion and unwanted responses.
Original PR description
The current mail address is iap@odoo.com so some client respond to the automatic mail. This fix change it to noreply@odoo.com Task-6086556
This update strengthens the automated test for Spain’s Mod347 BOE export by making sure invoices above the legal cash-payment threshold are correctly included. It helps prevent regressions in reporting and gives more confidence that the export matches expected tax rules.
Original PR description
This commit improves the test for cash payments in the Mod347 BOE export by ensuring that a Spanish partner with an invoice amount greater than 3,005.06 € is included in the export. opw-5960226 Forward-Port-Of: odoo/enterprise#110947