Tuesday, December 23, 2025
27 changes · saas-19.1
Enhancements to existing features
This update enhances the self-ordering system by displaying the table number directly within the generated QR codes. This makes it much easier for staff to quickly identify which order belongs to which table, improving order accuracy and efficiency.
Original PR description
Before this commit: ====================== It was difficult to identify which table a QR code belonged to when viewing the generated QR code PDFs. After this commit: ====================== The table number is now displayed between the Odoo logo in each table’s QR code, making it easier to recognize and differentiate table QR codes. Task-5217734 Forward-Port-Of: odoo/odoo#233935
This pull request enhances the visual presentation and usability of the account reports module. Specifically, it updates the styling of review states and introduces a new check view redirection for single returns, streamlining the user experience. These changes improve clarity and efficiency within the reporting process.
Original PR description
task-5155703 Forward-Port-Of: odoo/enterprise#98675
Resolved issues and error corrections
This update fixes a security vulnerability where Portal and Internal users could create private knowledge articles even without the necessary permissions. The change restricts article creation to users with 'create' access, improves the user interface by hiding creation buttons for unauthorized users, and adds new tests to ensure proper access control.
Original PR description
How to Reproduce : 1. Remove 'Create' access on the 'Knowledge Article' model for Portal and Internal users. 2. Now log in as a Portal. 3. Try to create a new private article. 4. Log in as an…
How to Reproduce : 1. Remove 'Create' access on the 'Knowledge Article' model for Portal and Internal users. 2. Now log in as a Portal. 3. Try to create a new private article. 4. Log in as an Internal user. 5. Try to create a new private article. Both Internal and Portal users can still create private articles even after 'Create access' is removed. Article creation logic in `knowledge.article` was bypassing the usual access rights because of `sudo` (mainly to add the creator as a member, since creation rights on the member model are not granted). This allowed users to create private articles even without create access. This commit introduces: 1. Model-level access check in `create`. Sudo the creation of articles only when the user has create rights. 2. UI imp to hide the '+' button in the sidebar and the `New` button in the topbar when the user doesn't have create access. 3. New test cases to verify that model-level access rights are respected when creating an article. task-4916280 Forward-Port-Of: odoo/enterprise#102299 Forward-Port-Of: odoo/enterprise#93034
This update fixes a calculation error where refunded Point of Sale orders incorrectly displayed a margin percentage greater than 100%. The change ensures that the margin is accurately calculated, regardless of whether an order is a standard sale or a refund. This ensures accurate financial reporting for refunded transactions.
Original PR description
**Step to reproduce:** - configure pos for global discount from settings - start pos - select product A and add a discount line (product A must have a cost price) - confirm it. - refund the same…
**Step to reproduce:** - configure pos for global discount from settings - start pos - select product A and add a discount line (product A must have a cost price) - confirm it. - refund the same order. - go to backend and open refunded order from `orders` menu **Observation:** - the margin percentage is > 100 **Cause:** - After https://github.com/odoo/odoo/commit/9538698f13d5763b49b00f4c06a1a2afc0d6b39e it has been decided to keep order sign regardless if it is refund or normal order **Fix:** - Adapt `_compute_margin` to include signs based on order is refund or not **Before** <img width="1151" height="228" alt="image" src="https://github.com/user-attachments/assets/2a1760ad-7ad8-4b64-9d22-cf7cff98c90d" /> <img width="1144" height="198" alt="image" src="https://github.com/user-attachments/assets/8d2d4aff-1293-4906-b79b-518ca22317db" /> After <img width="1144" height="253" alt="image" src="https://github.com/user-attachments/assets/ec1d4add-d93b-4490-86ad-f5f5d24de9c2" /> <img width="1170" height="244" alt="image" src="https://github.com/user-attachments/assets/c3ce5b6e-a572-4f85-9bf2-f651574ce124" /> opw-5362912 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238093
This update fixes an issue where batch picking lines were incorrectly linked to the wrong picking, leading to inaccurate inventory counts. The fix ensures that each batch transfer is associated with its intended picking, resolving delivery discrepancies and improving order fulfillment accuracy. This impacts users relying on batch transfer functionality.
Original PR description
**Steps to reproduce:** - enable "packages" and "batch transfers" settings - open wharehouse management/operation type - select internal transfer - check "automatic batch" and group by "contact" -…
**Steps to reproduce:** - enable "packages" and "batch transfers" settings - open wharehouse management/operation type - select internal transfer - check "automatic batch" and group by "contact" - create two storable product with an on hand quantity of 10 - create a an internal transfer for the first product for a qty of 10 - mark it as to do - do the same for the second product and make sure that it's the same contact - open barcode and select batches - select the last batch created - scan WH-STOCK - enter and confirm a quantity of 4 for each line - click on put in pack (at this step we can already see that the two new lines created are associated wit the second picking, even though it should be one line per picking) - click on the +6 on each line and click on put in pack - validate **Current behavior:** - a back order has been created for the first picking - the first internal transfer has only delivered 4 units of the first product - the second internal transfer has delivered 10 of the second product and 5 of the first product **Expected behavior:** both pickings should have delivered 10 of their product **Cause of the issue:** The lines created when clicking on "put in pack" for the first time are both associated with the second picking because the line split: https://github.com/odoo/enterprise/blob/898e3e47cfe3b86230da2b146960983d7ad144d0/stock_barcode/static/src/models/barcode_picking_model.js#L514 and the picking_id of the new line is set to the values provided by the `_getNewLineDefaultValues` as the picking_id of the last selected `line`: https://github.com/odoo/enterprise/blob/24b4e49dbe16cb8bd40170abfc089dd64c3f34dd/stock_barcode_picking_batch/static/src/models/barcode_picking_batch_model.js#L280-L281 rather than from the values of the initial line it is split from. opw-4952964 Forward-Port-Of: odoo/enterprise#102575 Forward-Port-Of: odoo/enterprise#91378
This update resolves an error that occurred when sending invoices with Turkish recipient banks via email. The fix ensures the system correctly identifies the bank's country information, preventing a 'KeyError' and allowing invoices to be successfully generated and sent. This ensures proper compliance for Turkish businesses using the Odoo system.
Original PR description
For the `Türkiye` localization, sending an invoice by email with a recipient bank causes an error. Steps to reproduce: 1) Install `accountant` and `l10n_tr_nilvera_einvoice` modules with demo data.…
For the `Türkiye` localization, sending an invoice by email with a recipient bank causes an error. Steps to reproduce: 1) Install `accountant` and `l10n_tr_nilvera_einvoice` modules with demo data. 2) Switch to TR Company. 3) Create a customer with country set to `Türkiye`. 4) Open the TR company contact and on the Accounting page edit an existing bank account, add a new bank (e.g., 'Test-Bank'), and set `Send Money` to `Trusted`. 5) Create an invoice for the customer, confirm it, and send it by email. ref video: https://drive.google.com/file/d/1OoUzJ-Dr2uuy4yk9P-CKUS0L6OSgeyJ3/view?usp=sharing Error: KeyError: 'country_id' Root Cause: When sending the invoice, the system generates the invoice XML. In the method `_get_address_node` (see [1]), there is a special case to determine the correct country for `res.bank`. However, when `vals['partner']` is a `res.bank` record, no `model` is provided in `vals`, so it defaults to `res.partner`. The code then attempts to access `partner['country_id']`, which does not exist on `res.bank`, raising the error. FIX: Ensure the `model` is set to `res.bank` when `vals['partner']` is a `res.bank` record, ensuring the correct country value is used. [1]- https://github.com/odoo/odoo/blob/0190bb7faca1dd5ce38dfdacbb8fa446f06d59a3/addons/l10n_tr_nilvera_einvoice/models/account_edi_xml_ubl_tr.py#L165-L181 opw-5103598 Forward-Port-Of: odoo/odoo#240715 Forward-Port-Of: odoo/odoo#239218
This update fixes an issue where attempting to refund orders that included archived products would cause a blank page and error. The fix ensures that the system correctly identifies and processes product information, allowing refunds to function properly even after a product has been archived. This improves the reliability of the point-of-sale system.
Original PR description
Step to reproduce: - start pos and finalize a order with product A - go backend - Archive product A - start the pos again - try to refund the order Observation: - Blank page with traceback in console…
Step to reproduce: - start pos and finalize a order with product A - go backend - Archive product A - start the pos again - try to refund the order Observation: - Blank page with traceback in console ``` Caused by: TypeError: Cannot read properties of undefined (reading 'filter') at __exports.getOrderChanges at Proxy.getOrderChanges ``` Cause: - until now `product.template` model is looked for filter after a reload https://github.com/odoo/odoo/blob/1b2500422209ed5feb6d49716f94d58c931bf541/addons/point_of_sale/static/src/app/models/data_service_options.js#L91-L93 https://github.com/odoo/odoo/blob/1b2500422209ed5feb6d49716f94d58c931bf541/addons/point_of_sale/static/src/app/services/data_service.js#L290-L295 and not `product.product`, this makes `product_id` available but `product_tmpl_id` undefined, causing inconsistency Fix: - we add `product.product` in `cleanupModels` for data to in sync with backend opw-5237961 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240424 Forward-Port-Of: odoo/odoo#238514
This update allows businesses with operations in Mexico to customize the sequence used for generating GI CFDI invoices within their branch offices. Previously, the system always prioritized the root company's sequence, which could cause delays. Now, branches can define their own sequence prefix, streamlining invoice processing and improving efficiency for Mexican operations.
Original PR description
Add a way to set a custom prefix for GI sequences on the settings for MX. Get this sequence first on the branch before looking to the one on root company. opw-5096687 Forward-Port-Of: odoo/enterprise#100017
This update resolves an issue where the automatic link between purchase orders and repair orders was disrupted after a purchase order was confirmed. This prevented seamless integration between the two processes, causing delays in order fulfillment. The fix ensures the smart link remains active, streamlining the workflow and improving efficiency.
Original PR description
The link between purchase order and a repair order break at when the PO is confirmed. ### Steps to reproduce: * Install the Repair and Purchase modules * Activate multi-steps routes * Unarchive the…
The link between purchase order and a repair order break at when the PO is confirmed. ### Steps to reproduce: * Install the Repair and Purchase modules * Activate multi-steps routes * Unarchive the MTO route * Create a product with the MTO route enabled * Create a Repair * On the Repair Order, in part add: - type : ADD - product : mto product * Save the RO * Go to Purchase Order * Confirm the PO -> Issue Smart link between PO and RO broken. ### Observation: The smart link is defined on: RO -> PO: https://github.com/odoo/odoo/blob/a2be8182010613c6f92f59e686a2fbf066cc6b68/addons/purchase_repair/models/repair_order.py#L15-L17 PO -> RO: https://github.com/odoo/odoo/blob/a2be8182010613c6f92f59e686a2fbf066cc6b68/addons/purchase_repair/models/purchase_order.py#L15-L17 When we confirm the PO, from the picking information it will create new moves: https://github.com/odoo/odoo/blob/2c87f3b2b397f268f0e50cb73cd81de992ddd42e/addons/purchase_stock/models/purchase_order.py#L293-L298 To create those stock moves, we go into_create_stock_moves where, for each POL, we will generate their values and erase the smart link: https://github.com/odoo/odoo/blob/a2be8182010613c6f92f59e686a2fbf066cc6b68/addons/purchase_stock/models/purchase_order_line.py#L362-L365 ### Origin: In this commit https://github.com/odoo/odoo/commit/9d98c43581e2579f43b35541b43264866dede5a5: "`created_purchase_line_id` is cleared after confirming the RFQ. This allows to merge more in `_merge_moves`." This breaks the link between PO <-> RO to maybe merge the move in the future. This issue is not present in 19.0 since it was solve in this commit : https://github.com/odoo/odoo/commit/2713876dbc70d3984e584a9037a2206dcda4e84a ### About the fix: The root cause of this issue remains ambiguous despite the analysis. Therefore, in the interest of stability and caution, we opted to implement the fix in a safer location. opw-5121816 Forward-Port-Of: odoo/odoo#237996 Forward-Port-Of: odoo/odoo#232999
This update fixes an issue where invoice due dates were incorrectly calculated when users were in UTC timezones. The change removes a timezone conversion step, ensuring due dates are accurately displayed based on the user's local time. This prevents discrepancies and ensures invoices are presented correctly to customers.
Original PR description
This commit fixes the incorrect due date calculation of invoices. If user timezone is set to any UTC-* timezone, then the due date is calculated as the previous day to the actual due date. This is because the function `deserializeDateTime` was used, which considers the input date as UTC timezone and converts it to system timezone. For example, if the due date is "2025-11-20 00:00:00" and the system timezone is UTC-3, then the calculated due date is "2025-11-19 21:00:00". So when getting the difference from today's date (assuming today is "2025-11-20"), the difference is 1 day (which is not the expected value). This commit replaces the call of `deserializeDateTime` with `deserializeDate`, which removes the system timezone conversion. opw-5160764 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240785 Forward-Port-Of: odoo/odoo#236769
This update corrects an issue where the 'Edit Payment' button was incorrectly visible in certain Odoo localization modules (specifically `l10n_fr_pos_cert` and `l10n_at_pos`). This change ensures compliance with fiscal regulations in these countries, restricting editing order details at the payment stage. Visibility is now controlled based on user roles and company authentication status.
Original PR description
Before this commit: =================== - On the Payment Screen, the `Edit Payment` button was visible in the `l10n_fr_pos_cert` and `l10n_at_pos` localizations. - This was incorrect because fiscal compliance in these countries does not allow altering order details at this stage. - The visibility logic for this button was unintentionally modified in `pos_hr`. After this commit: ================== The visibility of the `Edit Payment` button is now correctly enforced: - `point_of_sale`: visible only until the receipt is printed. - `pos_hr`: visible only when the logged-in user is an admin (except in AT and FR localization). - `l10n_fr_pos_cert`: never visible. - `l10n_at_pos`: visible only when the company is `not FON Authenticated`. Task: 5384822 Related Enterprise PR: https://github.com/odoo/enterprise/pull/101460 Forward-Port-Of: odoo/odoo#238839
This update corrects a previous issue where the 'Edit Payment' button was incorrectly visible in the AT and FR localization versions of Odoo. This change ensures compliance with local fiscal regulations by restricting editing access to payments, only allowing it when the company is not using FON Authentication. This improves data integrity and reduces potential compliance risks.
Original PR description
Before this commit: =================== - On the Payment Screen, the `Edit Payment` button was visible in the `l10n_fr_pos_cert` and `l10n_at_pos` localizations. - This was incorrect because fiscal compliance in these countries does not allow altering order details at this stage. - The visibility logic for this button was unintentionally modified in `pos_hr`. After this commit: ================== The visibility of the `Edit Payment` button is now correctly enforced: - `point_of_sale`: visible only until the receipt is printed. - `pos_hr`: visible only when the logged-in user is an admin (except in AT and FR localization). - `l10n_fr_pos_cert`: never visible. - `l10n_at_pos`: visible only when the company is `not FON Authenticated`. Task: 5384822 Related Community PR: https://github.com/odoo/odoo/pull/238839 Forward-Port-Of: odoo/enterprise#101460
This update fixes an issue where limited product loading in Point of Sale (POS) could prevent products from draft orders from being loaded correctly. This ensures that all products, including those in draft orders, are now properly loaded during POS operations, improving the user experience and preventing lost sales. The change was made as part of a standard bug fix process.
Original PR description
Before this commit, when loading products, if limited product loading was enabled, it was possible that products present in draft POS orders were not loaded, leading to issues. opw-5386056 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238656
This update ensures that changes made to Product Designs within the shop editing interface are now consistently saved. Previously, edits weren't saved if the related component was temporarily removed. This fix improves the reliability of product design management, preventing lost changes and ensuring a smoother user experience.
Original PR description
Steps to reproduce: ======= 1. Go to /shop in edit mode. 2. Change the Product Design. 3. Switch to the "Blocks" tab (so the "Style" tab is not visible). 4. Click on "Save". Before this commit:…
Steps to reproduce: ======= 1. Go to /shop in edit mode. 2. Change the Product Design. 3. Switch to the "Blocks" tab (so the "Style" tab is not visible). 4. Click on "Save". Before this commit: ====== The selected Product Design was not saved. After this commit: ====== The Product Design is now always saved correctly, even if the `ProductsDesignPanel` component has been unmounted. Technical reason: ======= The save behavior depended on whether the `ProductsDesignPanel` component was still mounted at the moment of saving. If it was not alive, changes were lost. Solution: ===== We no longer depend on the component being alive. When the Product Design or the Gap is modified, we mark the product list with the `o_dirty_product_design_list` class. On save, we look for elements with this class, retrieve their modified data, and apply the changes. 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#238851
This update corrects errors in the l10n_ke_edi_oscu module related to credit note processing for Kenya. Specifically, it now prevents credit notes with mismatched customer PINs and ensures credit notes are not dated before the original invoice, aligning with KRA (Kenya Revenue Authority) regulations.
Original PR description
* Prevent credit note with customer PIN different than the submitted invoice. * Prevent credit note to be dated before the original invoice date. task-5160113 Forward-Port-Of: odoo/enterprise#102475 Forward-Port-Of: odoo/enterprise#100480
This update fixes an issue where employee and manager feedback was reset to default templates when an appraisal was reopened. The fix ensures that previously entered feedback remains intact, streamlining the appraisal process and preventing data loss. The change was triggered by a bug in how the system handled appraisal state transitions.
Original PR description
Steps to reproduce: 1- Create new appraisal 2- Confirm appraisal 3- Edit employee and manager feedbacks 4- Set the final rating for the appraisal 5- Mark appraisal as done 6- Reopen appraisal Issue:…
Steps to reproduce: 1- Create new appraisal 2- Confirm appraisal 3- Edit employee and manager feedbacks 4- Set the final rating for the appraisal 5- Mark appraisal as done 6- Reopen appraisal Issue: The feedbacks of both the employee and manager are reset to the default template. They should be unchanged. Cause: Both the reopen and reset buttons used to call the the same action "action_back" which would set the state of the appraisal to "1_new", there is a compute that is triggered by the change in state which updates the appraisal's department_id which in turn triggers two other computes for the employee and manager feedbacks, those computes have a condition that if the state of the appraisal is '1_new', then the feedbacks should be reset to the templates. Fix: Make each button call its own action and make the reopen action set the state to '2_pending' instead of '1_new'. Furthermore make the reset action also reset the final rating for the appraisal. Task-5411661 Forward-Port-Of: odoo/enterprise#102021
This update resolves an issue where the link popover was incorrectly repositioned within the editor, primarily when creating links. The fix improves the accuracy of the popover's placement by addressing how the editor handles text selections and range calculations. This ensures a smoother and more reliable user experience when creating and editing links.
Original PR description
Two related overlay reposition issues are solved separately out of iframe and in the iframe. **Commit 1:** [FIX] html_editor: avoid wrong range after insert and popover reposition Before this commit:…
Two related overlay reposition issues are solved separately out of iframe and in the iframe. **Commit 1:** [FIX] html_editor: avoid wrong range after insert and popover reposition Before this commit: The link popover is repositioned at the beginning of the text when editing url. When insert, we first delete the non-collapsed selection, then we split the text node by splitTextNode at the collapsed selection. However, splitTextNode resets the text node's value by its substring, which breaks the range of the collapsed selection. This range is stored and used to reposition the overlay when the selection is not in the editable. Reproduction: 1. selection some text, create a link 2. go the the url field and type something 3. the popover is replaced to the beginning of the text. After this commit: we use dom function splitText to split the text only when we need to, e.g. when the currently selection's offset isn't at the beginning or the end of the text node. The dom function keeps the range properly maintained after splitting. However, there is a limitation case from how we create the link on selection, how the browser manages the selection's range and how the overlay reacts to it. The limitation case is when the selection is inside one text node and selecting the whole text node of the range's startContainer (which is the same with endContainer). When the link is created, we do extractContent on the selection's range, put it in the link and insert the link at the collapsed selection. During this process, the browser loses the range's start/end container which leads to invalid start/end container. For this range isn't valid case, it triggers the overlay plugin's special handler which inserts one shadow caret (which is after the inserted link) and uses it to calculate the position. Because the shadow caret is inserted by the cloned collapsed range, we can't really have enough context from the range (about where to re-place the caret) to manipulate the position. **Commit2:** [FIX] html_editor: pass selection data to overlay to avoid reposition in iframe Before this commit: the overlay plugin uses the editable's document's selection to check if the current selection is in the editable. It works when there's no iframe, as the overlays are part of the document. However in an iframe's editable zone, e.g. the website editing zone, the overlays are not under the iframe document but under the outer window's document. When checking iframe document's selection, it cannot detect the selection in the overlay, which gives a wrong "inEditable" value. After this commit: we pass the getSelectionData to the overlay so it can use the existing currentSelectionIsInEditable task-5184799 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240796 Forward-Port-Of: odoo/odoo#237759
This update fixes a readability issue in the manufacturing order barcode view when using dark mode. By adjusting text and background colors and removing a distracting style element, the finished product information is now much clearer, ensuring accurate order tracking.
Original PR description
*: stock_barcode Before this commit: ======================= When accessing a manufacturing order via Barcode in `dark mode`, the producing bar of the finished product is difficult to read due to…
*: stock_barcode Before this commit: ======================= When accessing a manufacturing order via Barcode in `dark mode`, the producing bar of the finished product is difficult to read due to poor colour contrast. Steps to reproduce: ======================= 1. Install the `mrp` module. 2. Switch to dark mode. 3. Open any manufacturing order using Barcode. 4. Observe the producing bar for the finished product. - The text on the producing bar is hard to read because the colour of text does not provide sufficient contrast. - Additionally, for products tracked by `lot or serial number`, when the same product is added multiple times, the barcode view groups these entries into a single grouped line, causing the same visibility issue in both MO and normal `picking/transfer` operations. Cause of the Issue: ======================= In dark mode, both the text and background colour of the producing bar are light, resulting in low colour contrast and making the text difficult to read. Additionally, the `text-muted` class applied to the `units of measure (UoM)` further reduces readability. After this commit: ======================= Updated the text colour of producing bar and background colour of grouped lines to use a darker shade for better visibility in dark mode. Also, removed the `text-muted` class used on `UOM` to improve redability. TaskID-5117608 Forward-Port-Of: odoo/enterprise#96718
This update fixes an issue where manually adjusted prices on customer invoices were being reset when the fiscal position was changed. The fix ensures that prices remain as the user set them, mirroring the behavior in Sale Orders. This improves accuracy and reduces manual intervention for users updating invoices.
Original PR description
**Steps to reproduce:** * Install the **Accounting** module. * Create a customer invoice with at least one product line. * Manually adjust the **price_unit** on the invoice line. * Change the fiscal position on the invoice. * Click the **Update Taxes and Accounts** button. **Observed behavior:** * The manually adjusted price is reset to the product’s default sales price (e.g., 1000). * This occurs even though neither the product nor the UoM changed. * In contrast, **Sale Orders correctly preserve** manually edited prices in the same situation. **Cause:** * `action_update_fpos_values` method call the recomputation of unit price each time when we click update taxes and accounts button on invoice. **Fix:** * Add a condition to **skip price recomputation** when fiscal position changes. * This preserves manual prices when only the fiscal position changes. opw-5252832 Forward-Port-Of: odoo/odoo#240929 Forward-Port-Of: odoo/odoo#237914
This update restores key user interface changes to the mailing list feature, specifically addressing issues that were previously overwritten. The changes include consolidating duplicate buttons and options, restoring the ability to unarchive mailing lists, and ensuring consistent styling. These improvements enhance the usability and functionality of the mailing list workflow.
Original PR description
This commit reintroduces a few UI changes that were lost after being overwritten by another task. Originally introduced in: https://github.com/odoo/odoo/commit/807477e78850671b9561c36f185482ee612c0c5d Later overwritten by: https://github.com/odoo/odoo/commit/0f7ee1764e8b59029003c6ad7269e185b30c6b43 Fixes: - Removed duplicate 'Retry' buttons (keeps only one) - Removed duplicate code of t-menu in mailing list kanban - Removed duplicate xpath of 'sms' option in mailing list kanban - Restored the 'Unarchive' option in the Kanban record dropdown to recover archived mailing lists - fixed left-alignment of mailing informations in header to keep styling consistent. task-5435584
This update corrects an issue where analytic accounting report amounts were incorrectly displayed, potentially missing or misattributed. The fix ensures that amounts are accurately reflected based on the move line associated with the analytic account, improving the reliability of financial reporting.
Original PR description
Steps to reproduce: - Activate analytic accounting - Create an invoice with one line, and set an analytic account - Set also the analytic account on the receivable line - Open the Aged Receivable - Activate debug mode, go to the configuration settings of the report - Activate the analytic groupby filter and go back to the report - unfold the partner of the invoice and select the filter with the analytic groupby -> The amount related to the analytic line is wrongly placed on another move, or possibly missing. This is due to the fact that the id used is the one of the analytic account instead of the move line. Forward-Port-Of: odoo/enterprise#102535
This update resolves a bug where custom embedded actions weren't consistently appearing in different Odoo projects. The fix ensures that actions are correctly loaded and displayed, regardless of which project a user is currently working in or if they refresh the page. This improves the user experience and functionality of embedded actions.
Original PR description
Since this change: https://github.com/odoo/odoo/pull/185674/commits/b663a6e3dbda6eda84e4a6b051acfc8511476cd3#diff-552aefb62246b1f4fe6a2607ec8f0a01773e53de2d68293266b38bc99c5cb56dR503 It introduces…
Since this change: https://github.com/odoo/odoo/pull/185674/commits/b663a6e3dbda6eda84e4a6b051acfc8511476cd3#diff-552aefb62246b1f4fe6a2607ec8f0a01773e53de2d68293266b38bc99c5cb56dR503 It introduces two bugs:
- Create a project A and project B, activate the top bar in both projects
- Create a new custom embedded action in project A
- Switch to project B (by changing the URL), the custom action of project A is present in project B
- In a project, create a new custom embedded action, refresh the page, the action is not visible nor available in the top bar.
It enters the if condition, and get the "lastAction", which may not contain the same "embedded_action_ids" than the current action (targeting another project or the same project if we just refreshed the page). It enters the condition because the path of the action is the same ("tasks") and no "active_id" is specified in the context of the action.
We then force the load of the action if the "lastAction" stored in the browser session had embedded actions, to be sure to get the latest embedded actions linked to the current action in case of any, and not keep the ones linked to "lastAction".
task-5269261
Forward-Port-Of: odoo/odoo#240711
Forward-Port-Of: odoo/odoo#237695This update corrects an issue where inventory valuation calculations were inaccurate, particularly when dealing with purchase orders and bills. The fix ensures that inventory values are correctly reflected across different valuation methods (FIFO, Average Cost, and AVCO), improving the reliability of financial reporting.
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 Forward-Port-Of: odoo/odoo#238510
This update fixes an issue where product values in Peru reports were incorrectly showing zero due to how the system initially calculated product costs. The fix ensures that product values accurately reflect the actual cost of goods, particularly during initial product creation and stock movements, leading to more reliable financial reporting.
Original PR description
Since we create a product value with the initial cost of the product we need to adapt this test. Since it creates the product during the setup at date of today. It will register the current value of the product as 0. When you deliver it will take the current cost so 0. Thus the out move won't have any value.
This update fixes an issue where flexible employee holiday durations were incorrectly calculated due to timezone differences. The fix uses date ranges (request_date_from and request_date_to) to ensure accurate duration calculations, regardless of timezone, preventing overestimation of holiday hours.
Original PR description
### Steps to reproduce: - Create an employee with Flexible working schedule - Set the timezone for this employee very far from yours - Create an Unpaid leave with Custom Hours for this employee - Set the hours of the leave from 8 to 21 - Notice the duration is just 8 hours ### Cause: When calculating the duration of the flexible employee leave we check if the date_from and the date_to has the same date and if so we get the difference between the hour_to - hour_from but sometime when the tz is different when we convert it to UTC the dates overlap in two days so the condition sets to false so we get the working hours of the employee. ### Fix: Using the request_date_from and request_date_to in this condition where it will always be accurate in terms of days opw-5118689 Forward-Port-Of: odoo/odoo#240143 Forward-Port-Of: odoo/odoo#230366
This update fixes an issue where the total price in Point of Sale orders was incorrect when using 'LOT' tracked products with groupable UoMs. The fix ensures that the price unit is consistently applied to the converted quantity, accurately calculating the order total. This improves the reliability of sales transactions.
Original PR description
Steps to reproduce ------------------ 1. Make a product tracked by 'LOT' and having a groupable in pos UoM 2. Make a SO with that product, choosing another UoM from the same category (if we chose Kg in first step, choose gram here, etc) 3. Settle the order in PoS. We observe that the order's total amount is totally off, we explain why below. Why it's happening ------------------ The `lot_remaining_quantity` is quantity after converting to the original UoM (that of step 1, not that of step 2). We are using that quantity for lines having products tracked by 'LOT' and a groupable UoM; however, we are keeping price unit as if we are using the quantity before conversion, i.e. the quantity in the UoM of step 2. That creates a mismatch between the UoM and thus we miscalculte the total price. The fix ------- When using the converted quantity, also use the converted price unit. opw-5144326 Forward-Port-Of: odoo/odoo#241025 Forward-Port-Of: odoo/odoo#239858
This update prevents sensitive agent information from being exposed in live chat messages. By using the recipient's live chat username instead of their full name, we enhance privacy and security. This change ensures a more secure communication experience for our agents and customers.
Original PR description
Before this commit, when mentioning an internal user in live chat it would show their name in the message body. This leads to the agent's name being leaked when a live chat username is set. This commit fixes the issue by using the user's live chat username (when available and in the context of live chats) in the generated mention element. This commit also changes `mail_message@_to_store_defaults` to send, when available, the `user_livechat_username` of the recipients of a message. task-5384305 Forward-Port-Of: odoo/odoo#238893