Daily updates from Odoo
Monday, December 22, 2025
5 changes · master
New functionality added to Odoo
This update adds support for FESP (Factura Especial) invoices in Guatemala, a legal requirement for purchases without supplier invoices. It ensures accurate accounting by handling withholding taxes and generating the necessary XML data for submission to the SAT, streamlining financial processes for Guatemalan businesses.
Original PR description
### PURPOSE - In Guatemala, a Factura Especial (FESP) is a legal mechanism established in Art. 52 of the VAT Law. - Generate Factura Especial (FESP) when registering a purchase without a supplier…
### PURPOSE - In Guatemala, a Factura Especial (FESP) is a legal mechanism established in Art. 52 of the VAT Law. - Generate Factura Especial (FESP) when registering a purchase without a supplier invoice. - Include all required data: supplier as receiver, transaction details, and the retention complement (100% VAT + ISR withholding). - Ensure proper accounting: supplier payable = net after retentions, taxes withheld = recorded as liabilities to be paid to SAT. - Fulfill FEL technical requirements (DTE XML, mandatory phrase, retention complement, see example attached). ### SPECIFICATION - Added flow for FESP (Factura Especial) document type in vendor bills. - Automatically added Phrase Type 5, Scenario 1 (as required by SAT). - Enforced mandatory data by raising UserError if FESP is selected but no withholding taxes are set on the product lines. - Added complement generation for withheld taxes (IVA, ISR) with base, rate, and amounts. - Allow users to send a document to SAT in case of FESP. - Added required details in FEL XML for FESP. task-5026698 see - https://github.com/odoo/odoo/pull/229493 Forward-Port-Of: odoo/enterprise#102495 Forward-Port-Of: odoo/enterprise#96007
Enhancements to existing features
This update introduces a new Gantt view for managing maintenance requests, offering a clearer visual overview of equipment and work centers. It simplifies planning by allowing requests to be created directly from equipment and work centers, and automatically highlights scheduling conflicts, improving efficiency for maintenance teams.
Original PR description
Purpose: -------- - It should be easier to visualize maintenance requests than what is possible today. The calendar view is useful but does not provide a comprehensive overview of all equipment or…
Purpose: -------- - It should be easier to visualize maintenance requests than what is possible today. The calendar view is useful but does not provide a comprehensive overview of all equipment or work centers, nor the ability to plan interventions easily. - It should be much easier to perform maintenance directly from an equipment or work center, instead of creating a maintenance request manually. - It should also be easy to quickly visualize which equipment is currently undergoing maintenance and update their status once the maintenance is completed. With this commit: ----------------- - Makes maintenance planning more easier to manage by adding gantt view by equipment/workcenter. - Replaced the `Maintenance Calendar` menu with `Planning by Equipment` and `Planning by Workcenter`, providing a more practical way to plan maintenance requests by resources rather than relying on the calendar view. - Allows creating maintenance requests directly from equipment or work center views, reducing manual effort. - Prevents scheduling conflicts by showing unavailable workcenter intervals due to workorders or non-working hours. - Removes the `Request Date` field from maintenance requests as it is redundant with `Scheduled Date`; `Scheduled Date` more accurately reflects the intended start of the maintenance request, whereas `Request Date` only indicates when the request was created. - The Gantt view defaults to filtering records for the respective workcenter/equipment by `Todo` and `Active`, excluding `Done` and `Archived` maintenance requests, to focus on the remaining active requests. - It also makes other views (e.g., Kanban, List, Pivot, etc.) of Maintenance Requests available alongside the Gantt view under `Planning by Equipment` or `Planning by Workcenter`, with the default grouping by equipment or workcenter respectively. - Improve planning by adding a Plan Popup for unscheduled maintenance requests. It is especially useful when maintenance planners have created requests but are not yet sure when they should be scheduled. - The Plan Popup applies default `Todo` and `Active` filters to prevent accidental planning of cancelled or already repaired requests. task-4698325
Resolved issues and error corrections
This update fixes an issue where sharing a document via link wouldn't automatically open the preview when the user's default view was the list view. Now, the preview opens correctly, similar to the kanban view, ensuring a consistent and user-friendly experience when accessing shared documents.
Original PR description
Bug === If the user has the list view as his default view, if we share him a document, the preview is not opened. After this commit, the preview is opened like in the kanban view, and the document is selected. Task-5361212 Forward-Port-Of: odoo/enterprise#102598 Forward-Port-Of: odoo/enterprise#100716
This update fixes an issue where the price displayed on Italian POS receipts for multiple product purchases was incorrect. The fix ensures that the unit price, rather than the total line price, is used when generating the receipt. This guarantees accurate pricing for customers using the Italian POS system.
Original PR description
Currently, when buying multiple quantities of the same product, the unit price value sent to the italian printer is incorrect. Steps to reproduce: ------------------- * Set up italian printer for one shop * Open shop * Add a product to the order with a qty 3 and a price unit of 1 * Pay the order * Print italian receipt > The price total for the 3 product says 9 instead of 3 Why the fix: ------------ When computing the order lines details we were using `total_included` for the unit price which takes into account the quantity. Per definiton, it's not the price for 1 unit. opw-5404877 Forward-Port-Of: odoo/enterprise#102457
This update corrects a previous issue where newly created serial numbers within the Barcode app were automatically assigned to the current company. This prevented the use of these serial numbers across different companies. The fix removes the automatic company assignment, allowing serial numbers to be used flexibly across all company environments, aligning with current Odoo functionality.
Original PR description
## Context In the barcode app (`stock_barcode`), users can update inventory counts by scanning a product's barcode or by manually entering the barcode. ## Issue When the barcode is entered manually,…
## Context In the barcode app (`stock_barcode`), users can update inventory counts by scanning a product's barcode or by manually entering the barcode. ## Issue When the barcode is entered manually, the lot/serial number is created with the *Company* field set to the current company. This causes issues when working with intercompany flows, because lots with a company assigned cannot be used by other companies. This behavior is also inconsistent with the other ways of updating a company's inventory. In fact, the following flows create serial/lot numbers with no company assigned: - Inventory / Products / Products / *Forecasted Report* or *On Hand* - Inventory / Operations / Adjustments / Physical Inventory - Barcode / Inventory Count / Add product (add the serial number from the *Inventory Count* screen, **not** by clicking on the cogwheel in the top-right corner) ## Cause The line assigning a `company_id` was added by https://github.com/odoo/enterprise/commit/c0151bce3c60c69e7cadeb719a81c4a702b71c34. At the time, that behavior was consistent with the backend behavior, as the `company_id` of a lot/serial number would always be set to `self.env.company`. In fact, the feature allowing a lot/serial to be shared among multiple companies was introduced later, in saas-17.2 (https://github.com/odoo/odoo/commit/99b39b72c7e65e85af6f06dcb6b02867623f3f69). This last commit adds a compute method for the `stock.lot.company_id` field: https://github.com/odoo/odoo/blob/6026866900fd0ac1bf6495ae249cd08f56c85342/addons/stock/models/stock_lot.py#L130-L136 Since then, lot/serial numbers shouldn't be created with a `company_id`, as this restrict other companies to use those numbers. Users can always add a company to a lot/serial number later if necessary. ## Solution The line assigning a `company_id` to the `stock.lot` can be removed, as it does not reflect the current behavior (saas-17.2+). Nowadays, a `company_id` should be set **only** if the user wants a lot/serial number to be used by a specific company; it should not be the default behavior. ## Steps to reproduce 1. Install *Barcode* (`stock_barcode`). 2. In Inventory / Configuration / Settings, enable *Lots & Serial Numbers*. 3. In Settings / Users & Companies / Companies, create a second company. Use either company for the following steps. 4. Create a product tracked *By Unique Serial Number*. 5. Open the Barcode app, then click *Inventory Count*. 6. Scan your product (or add it manually, but **do not** set the *Serial/Lot Number*). 7. Scan "SN001" (or add it manually through the cogwheel menu), then click *Apply*. 8. Go to Inventory / Products / Lots / Serial Numbers. 9. The serial number created from the Barcode app is assigned to the current company. opw-5264216 Forward-Port-Of: odoo/enterprise#102130