Daily updates from Odoo
Thursday, February 13, 2025
48 changes · 18.0
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
Payment processing can now let related modules choose which invoices should receive a notification. This helps avoid unnecessary or inappropriate invoice messages when certain invoices should be excluded.
Original PR description
Instead of directly notify the invoices link to the transaction in _log_message_on_linked_documents, the invoice return by _get_invoices_to_notify are notified. It allow other modules to exclude some invoice --- 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. 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
The time off app now allows leave types marked as “Other” to bypass standard date validation. This supports more flexible configurations for worked-time or special leave categories that do not need the usual strict date checks.
Original PR description
Description of the issue/feature this PR addresses: This commit modifies the `_check_date` method in the `HrLeave` model to skip the date constraint check when the leave type is set to 'Other'. - Updated `_check_date` method to bypass the standard date validation if `leave_type_time_type` is 'other'. - This allows for more flexible date configurations for specific leave types. Current behavior before PR: The _check_date method always enforces date constraints, regardless of the leave type. This prevents the use of "leave" types that do not require strict date validation as they are worked time. Desired behavior after PR is merged: The _check_date method will skip date validation when the leave_type_time_type is set to 'other', allowing for more flexible leave configurations. --- 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
The Belgian fleet payroll setup no longer overrides the vehicle fuel type default to diesel. This better reflects current Belgian company car usage, where electric vehicles are now the common choice, and reduces manual adjustments for users.
Original PR description
Since electric car is the most used new cars in belgium, we don't need to change the default to 'diesel' for belgium.
Resolved issues and error corrections
This fixes a recruitment access issue that prevented users with the Interviewer role from searching applications by applicant name. Interviewers assigned to applications can now find relevant candidates more easily in the recruitment list view.
Original PR description
### Steps to reproduce: - Create a user with 'Interviewer' group - Assign that user as interviewer to few applications - Log in as this user - Go to All applications list view in Recruitment module - Search on 'Applicant' ### Cause: In https://github.com/odoo-dev/odoo/commit/de79f671150ba29737ffc92d22687463b561524d#diff-3a7fc7935e58656320cc3e13fe8311415c847ae6a4273d87ef606ed520f83754 after introducing the hr_candidate we added an access rule for interviewer group to access this class but he can only write on it and can't search on it. ### Fix: We updated the access rule of the interviewer group so hec an be able to search on Applicant name. opw-4501932
The login flow now handles missing passwords correctly by showing the expected access denied message instead of an unexpected system error. This makes failed login attempts clearer for users and avoids confusing error pages.
Original PR description
Whenever you supply no password you are supposed to get an AccessDenied error. However in this case there will no be password supplied. This happens because of: https://github.com/odoo/odoo/blob/1f9f4dd165fccfaadf06c3ae68d742f5348bc9b6/addons/web/controllers/home.py#L122 When there is no value the key will also not be present. Therefore you will receive a keyerror instead of an accessdenied. This commit fixes that behavior and now you will get the accessdenied error as was originally intended.
The Point of Sale search box now keeps the text a user is typing when connected IoT devices refresh their status. This prevents interruptions during product searches and makes cashier workflows smoother.
Original PR description
Before this commit, when an IoT device was connected, if you kept typing in the search box, the input would be reset to its previous state with each statusLoop execution. This fix cancels the debounce on re-render, ensuring that the search word is preserved. opw-4562152 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an intermittent issue in the HTML editor's automated tests where focus tracking could sometimes use outdated selection information. The change helps make editor behavior and testing more reliable without altering visible business workflows.
Original PR description
Fix a non-deterministic error happening during the HOOT unit Test. The cause seems to be related to the hoot mock selection which do not always return the latest focused element in the document.getSelection(). runbot-115550 Related to : #197287 & #197345 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
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
Link previews in Mail now handle page text encoding more reliably, so accented characters display correctly. This improves readability when users preview shared links from sources that use different encodings.
Original PR description
### Steps to reproduce: - Open the To-do app. - Paste the link into the editor (e.g., https://drive.google.com/file/d/1oNZsDWEUjxpwbB8tkv1CRCfp-pcKHhGG/edit). - Click on the link to open the preview. - Notice that accents are displayed incorrectly. ### Solution: - Retrieved encoding from the response or detected it using `chardet`. - Decoded the content using the detected encoding or fell back to UTF-8 if decoding failed. - Processed the decoded content to parse the HTML tree. ### Description of the issue/feature this PR addresses: Accents were not displayed correctly on the preview due to encoding mismatches. ### Desired behavior after PR is merged: Accents in the preview are displayed correctly as the content is decoded using the appropriate encoding, with a fallback to UTF-8 if needed. task-4435229
This fixes an issue in the HTML editor where pressing Enter after right-to-left headings, preformatted text, or quotes created a new paragraph in the wrong left-to-right direction. Users writing in right-to-left languages now get consistent text direction when continuing their content.
Original PR description
**Current behavior before PR:** When there is a `heading`, `pre` or `blockquote` tag in `rtl` direction, pressing enter at the end of element creates a new `p` tag in `ltr` direction rather than `rtl`. **Desired behavior after PR:** Now, pressing enter at the end of `heading`, `pre` or `blockquote` tag in `rtl` direction creates a new empty paragraph tag with `rtl` direction. task-4484619 --- 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
The Project kanban view now correctly shows the Assign button when users hover over task assignment tags. This restores an expected action that had disappeared after a prior layout update, making task assignment easier from the board view.
Original PR description
The 'Assign' button of the field many2many_tags_avatar is always invisible in the kanban views with the class o_kanban_project_tasks. This happens because the condition that make it appear when the line of the field is hovered is never met: the class oe_kanban_content no longer exists since the refactoring of the kanban archs (see task: 3992107). Here we modify a bit the css rule so that the 'Assign' button can become visible when appropriate.
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
A missing test setup link was added so recently introduced website sale collection checks are included when the test suite runs. This helps prevent future issues from slipping through, with no expected change for everyday users.
Original PR description
Commit 2d4be3a added tests but import was missed.
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.
The blog post snippet's horizontal layout now removes the divider from the final entry as intended. This fixes a small visual inconsistency on website pages, making blog lists look cleaner and more polished.
Original PR description
`s_dynamic_snippet_blog_posts` in the horizontal layout is displaying a border on the last entry while it should not. This is due to the `record_last` instead of `data_last` introduced in https://github.com/odoo/odoo/commit/dbb72d1f68cf7f462e1d6bdf8998f29627ccc2f0 Steps to reproduce: - Add a blog post snippet `s_blog_posts` in the page - Change the template option to "Horizontal" in the editor - Scroll to the last entry, it shouldn't have a border task-4182265 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
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
French VAT reimbursement amounts are now recorded in the correct closed reporting period without requiring new accounting entries in that period. This helps ensure VAT declarations remain accurate after period closure.
Original PR description
When we ask for a reimbursement for the VAT that is due from the state, we close the period, then we send the declarations, with the amount that is asked as reimbursement. The issue is that we need this amount to be registered in the report of this period. But it is closed, so we can't post moves with the tag in it. Let's transform it into an external value. task-4328721 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix adjusts the calendar view styling so short or compact events display more cleanly. It helps users read and manage calendar entries with fewer visual glitches.
Original PR description
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 fix avoids conflicts when automated subscription payments and payment webhooks try to update the same invoice at the same time. Payment notifications will still be recorded on the related sales order, helping keep records consistent without interrupting automated billing.
Original PR description
Scenario ======== the subscription cron that automate the payment, start a payment transaction get the response and post process the the payment. In the meanwhile, the webhook receive also the response and try to post a message on the invoice in _log_message_on_linked_documents This lead to concurrent update on the invoice Solution ======== use _get_invoices_to_notify to remove the invoice currenctly handled by the invoice cron from the payment notification. The notification won't appear on the invoice in this flow, that's not a problem. Payment notification is also set on the sale order
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
This fixes an issue where opening the Planning Gantt view with a start date in the link could display too many time columns. The schedule view now stays easier to read and avoids confusion for users planning shifts or resources.
Report buttons now correctly trigger the intended error action when something goes wrong. This restores behavior that was accidentally lost during a previous update, helping users get clearer guidance instead of a missing or broken response.
Original PR description
During this forward port the feature error_action was lost: https://github.com/odoo/enterprise/pull/79108 This commit aims to bring it back.
This update fixes visual issues in the appointment type kanban view so appointment cards display more consistently. It corrects ribbon spacing, standardizes empty avatar sizing, and improves mobile alignment for easier reading.
Original PR description
Purpose ======= Fix some UI issues in the appointment type kanban view. Specification ============= - The ribbon is now wrapped around a div which is messing up the kanban display. Applying some style to make it position absolute and avoid a strange spacing. - Keep UI consistency by resizing the empty avatar card for resources to match the one used for users. - On mobile view, align the appointment title with its details. Task-4518542
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
Subscriptions will no longer assign a salesperson as the customer contact if that salesperson has no email address. This prevents customers from seeing portal errors caused by invalid email links and keeps subscription portal access working reliably.
Original PR description
Steps to Reproduce: 1. Create a user partner without an email address. 2. Create a subscription and set the salesperson to the newly created user. 3. Confirm the subscription order. 4. Log in as the subscription partner. Issue: This happens because `sales_user.email` is `False`, leading to an invalid `mailto:` link. Cause: The system sets the salesperson as the contact person for the partner, even when the salesperson does not have an email address configured. Fix: Added a condition to ensure the salesperson's email (`subscription_user.email`) is defined before aligning the partner's `user_id` with the salesperson. This prevents setting a salesperson without an email as the partner's contact person, thereby avoiding the error. Impact: This fix ensures that the portal view does not encounter issues due to missing email addresses for salespersons.
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
Features or functions removed from Odoo
This update removes an unnecessary automatic tour setting from guided steps where it has no effect. It keeps internal tour behavior cleaner and helps avoid confusion in automated or interactive walkthrough definitions, with no expected change for regular users.
Original PR description
isActive: ["auto"] doesn't make sense with the "run" function in a step because tour_interactive doesn't take into account steps without the "run" function. So, in this commit, we remove all isActive: ["auto"] for steps where there is no "run" function. 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 removes unused automatic activation markers from guided tour steps that do not perform an action. It reduces confusing configuration in product walkthroughs and helps keep internal tour behavior consistent without changing user-facing features.
Original PR description
isActive: ["auto"] doesn't make sense with the "run" function in a step because tour_interactive doesn't take into account steps without the "run" function. So, in this commit, we remove all isActive: ["auto"] for steps where there is no "run" function.
Code cleanup and technical improvements
This cleanup removes an unused visual pointer from Odoo's automated web tours. It simplifies the tour code without changing how business users experience the product, while keeping debugging information available in the console for developers.
Original PR description
In this commit, we remove the pointer from the tour_automatic. Indeed, it has no useful use in this part of the code. There is no point in having the pointer in the tour_automatic. If we want to see the targeted element (trigger), just open the console. Each element found is logged in the console in debug mode (tour_automatic.js:65) As the pointer is never used and has no use in the tour automatic, we remove it. 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
Miscellaneous changes
Bug === 1. Create a mailing for an event registration 2. Add that mailing to the template 3. Create a new mailing for "mailing list" => The "event registration" template is proposed and it should be. Since 5226dc972560870d03e7e4bc5a838f1951b90ac7 , we removed the JS form view, which added `mailingFilterTemplates: true` in the env. That environment variable was responsible for the HTML component to filter the templates based on the model. Task-4568452 Forward-Port-Of: odoo/odoo#197437
Original PR description
Bug === 1. Create a mailing for an event registration 2. Add that mailing to the template 3. Create a new mailing for "mailing list" => The "event registration" template is proposed and it should be. Since 5226dc972560870d03e7e4bc5a838f1951b90ac7 , we removed the JS form view, which added `mailingFilterTemplates: true` in the env. That environment variable was responsible for the HTML component to filter the templates based on the model. Task-4568452 Forward-Port-Of: odoo/odoo#197437
--- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#197489
Original PR description
--- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#197489
Having no country on a portal user would cause attempting to edit personal information through the portal to have an internal server error. Added a check to country_id to ensure that the country_id is a numerical value before casting to an int to avoid this internal server error. opw-4309159 Forward-Port-Of: odoo/odoo#186374
Original PR description
Having no country on a portal user would cause attempting to edit personal information through the portal to have an internal server error. Added a check to country_id to ensure that the country_id is a numerical value before casting to an int to avoid this internal server error. opw-4309159 Forward-Port-Of: odoo/odoo#186374
With this Commit : ---------------------------------------------------------- - In the previous implementation, components marked for manual consumption were automatically consumed, like auto-consumed components, when starting production on a manufacturing order (MO). This occurred due to missing logic and conditions in the code that failed to differentiate between manual and automatic component consumption, and it only affected the shop floor operations. - This update corrects the componen
Original PR description
With this Commit : ---------------------------------------------------------- - In the previous implementation, components marked for manual consumption were automatically consumed, like auto-consumed components, when starting production on a manufacturing order (MO). This occurred due to missing logic and conditions in the code that failed to differentiate between manual and automatic component consumption, and it only affected the shop floor operations. - This update corrects the components' consumption process and enhances production tracking's reliability, ensuring that manual components are managed according to their intended usage. Task id: 4096514 Enterprise PR: odoo/enterprise#77831 Forward-Port-Of: odoo/odoo#196973 Forward-Port-Of: odoo/odoo#175816
Before this commit: === - The `pos-receipt-order-data` class was used as an XPath reference in multiple modules (l10n_fr_pos_cert, l10n_co_pos, pos_mercury, and pos_restaurant). - In point_of_sale, first of this class was used to add a QR code (pos_qr_code) to the receipt, but it was wrapped in a t-if="pos_qr_code" condition. - Due to this, the XPath content from other modules was only visible when pos_qr_code was present. After this commit: === - Added an empty `<div class="pos-rece
Original PR description
Before this commit: === - The `pos-receipt-order-data` class was used as an XPath reference in multiple modules (l10n_fr_pos_cert, l10n_co_pos, pos_mercury, and pos_restaurant). - In point_of_sale, first of this class was used to add a QR code (pos_qr_code) to the receipt, but it was wrapped in a t-if="pos_qr_code" condition. - Due to this, the XPath content from other modules was only visible when pos_qr_code was present. After this commit: === - Added an empty `<div class="pos-receipt-order-data" />` outside the conditional block. - This ensures that the XPath reference is always available. task-4552477 Forward-Port-Of: odoo/odoo#196915
Steps to reproduce ================== - Install web_studio,mrp - Go to Manufacturing > Operations > Manufacturing Orders - Open studio - Add a related field - Select Product > Image - Change the widget to the ImageField - Exit studio - Open any record - Go to the product - Edit the image - Go back to the list view => The old image is still displayed Cause of the issue ================== We add a unique parameter in the image url with the last record update. In the case of a
Original PR description
Steps to reproduce ================== - Install web_studio,mrp - Go to Manufacturing > Operations > Manufacturing Orders - Open studio - Add a related field - Select Product > Image - Change the widget to the ImageField - Exit studio - Open any record - Go to the product - Edit the image - Go back to the list view => The old image is still displayed Cause of the issue ================== We add a unique parameter in the image url with the last record update. In the case of a related field, the record has not been updated even if the image has changed. Solution ======== We still need to pass a unique value in the URL because browser will not fetch twice the same URL in the same session. In that case, we can simply pass a random value opw-4378605 Forward-Port-Of: odoo/odoo#197140 Forward-Port-Of: odoo/odoo#192036
As of January 2025, E-Faktur submission is on a new system called Coretax, which requires different file format and content. This commit backports the refactor we did for `l10n_id_efaktur` on 18.0. 4416314 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#197375 Forward-Port-Of: odoo/odoo#194791
Original PR description
As of January 2025, E-Faktur submission is on a new system called Coretax, which requires different file format and content. This commit backports the refactor we did for `l10n_id_efaktur` on 18.0. 4416314 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#197375 Forward-Port-Of: odoo/odoo#194791
Problem with stock valuation rounding. Steps to reproduce: - Create a product with automated valuation in AVCO - Set the product cost to 16.83 - Update the quantity to 10 - Make a purchase order with this product: quantity 10 and unit price 20 - Receive the product - On the product, reduce the quantity to: 10 (-10), then 1 (-9), then 0 (-1) - Check the valuation, it will remain -0.05 with a quantity of 0 This commit improves the previous commit: 795ce67 by using float_compare to ch
Original PR description
Problem with stock valuation rounding. Steps to reproduce: - Create a product with automated valuation in AVCO - Set the product cost to 16.83 - Update the quantity to 10 - Make a purchase order with this product: quantity 10 and unit price 20 - Receive the product - On the product, reduce the quantity to: 10 (-10), then 1 (-9), then 0 (-1) - Check the valuation, it will remain -0.05 with a quantity of 0 This commit improves the previous commit: 795ce67 by using float_compare to check if the rounding error should be considered a rounding issue. opw-4387534 Forward-Port-Of: odoo/odoo#197499
https://github.com/odoo/odoo/pull/112800 added a fix to ignore planning done or cancelled workorders. However it introduced an issue where any unfinished workorders before the ignored workorder will also be ignored and cause a traceback in certain workflows. Steps to reproduce ----- 1. Create a manufacturing order, and add 2 workorders 2. Start and finish the 2nd workorder 3. Attempt to add a 3rd workorder 4. Traceback occurs ``` 'date_planned_start': min([workorder.leave_id.date_f
Original PR description
https://github.com/odoo/odoo/pull/112800 added a fix to ignore planning done or cancelled workorders. However it introduced an issue where any unfinished workorders before the ignored workorder will…
https://github.com/odoo/odoo/pull/112800 added a fix to ignore planning done or cancelled workorders. However it introduced an issue where any unfinished workorders before the ignored workorder will also be ignored and cause a traceback in certain workflows.
Steps to reproduce
-----
1. Create a manufacturing order, and add 2 workorders
2. Start and finish the 2nd workorder
3. Attempt to add a 3rd workorder
4. Traceback occurs
```
'date_planned_start': min([workorder.leave_id.date_from for workorder in workorders]),
TypeError: '<' not supported between instances of 'datetime.datetime' and 'bool'
```
Cause
-----
This early continue added in https://github.com/odoo/odoo/pull/112800 is too eager: https://github.com/odoo/odoo/blob/f19b61b640c6623aad3269d8f0e515b5480e6880/addons/mrp/models/mrp_workorder.py#L525-L526
Although the specified workorder should be ignored, it could potentially have children (`workorder.blocked_by_workorder_ids`) that need to be planned.
Solution
-----
Remove the early continue and keep running `_plan_workorder` on the done/cancelled workorder. All of its children `workorder.blocked_by_workorder_ids` will be correctly planned in the recursive call, and the done/cancelled workorder will still be correctly ignored afterwards in this existing early return:
https://github.com/odoo/odoo/blob/f19b61b640c6623aad3269d8f0e515b5480e6880/addons/mrp/models/mrp_workorder.py#L529-L531
Also backport the fix from https://github.com/odoo/odoo/pull/123802 to handle the null `date_planned_finished` from the ignored workorder.
opw-4497704
Forward-Port-Of: odoo/odoo#197380
Forward-Port-Of: odoo/odoo#195910With is Commit : ---------------------------------------------------------- - In the previous implementation, components marked for manual consumption were automatically consumed, like auto-consumed components, when starting production on a manufacturing order (MO). This occurred due to missing logic and conditions in the code that failed to differentiate between manual and automatic component consumption, and it only affected the shop floor operations. - This update corrects the components
Original PR description
With is Commit : ---------------------------------------------------------- - In the previous implementation, components marked for manual consumption were automatically consumed, like auto-consumed components, when starting production on a manufacturing order (MO). This occurred due to missing logic and conditions in the code that failed to differentiate between manual and automatic component consumption, and it only affected the shop floor operations. - This update corrects the components' consumption process and enhances production tracking's reliability, ensuring that manual components are managed according to their intended usage. Task id: 4096514 Community PR: odoo/odoo#175816 Forward-Port-Of: odoo/enterprise#78838 Forward-Port-Of: odoo/enterprise#77831
Before this commit the class `TestMockedDeliveryUSPS` used `'standard', '-external'` which is the opposite of what it was supposed to do. As a result the tests were run during normal builds, and led to errors when the tests were run without demo data. This commit also removes the reference to demo data to make the tests more robust. Runbot Errors: + https://runbot.odoo.com/odoo/action-573/114550 + https://runbot.odoo.com/odoo/action-573/114551 + https://runbot.odoo.com/odoo/action-573/1
Original PR description
Before this commit the class `TestMockedDeliveryUSPS` used `'standard', '-external'` which is the opposite of what it was supposed to do. As a result the tests were run during normal builds, and led to errors when the tests were run without demo data. This commit also removes the reference to demo data to make the tests more robust. Runbot Errors: + https://runbot.odoo.com/odoo/action-573/114550 + https://runbot.odoo.com/odoo/action-573/114551 + https://runbot.odoo.com/odoo/action-573/114552 Forward-Port-Of: odoo/enterprise#78706