Daily updates from Odoo
Friday, June 14, 2024
24 changes · master
New functionality added to Odoo
Romanian companies can now generate the required SAF-T asset XML export from the General Ledger report. The export includes both an asset overview and asset-related transactions, helping businesses meet local ANAF reporting obligations.
Original PR description
Each company in Romania must be able to export 3 different SAF-T documents. One is related to assets and this commit enables them to generate and export the XML file. The export button can be found…
Each company in Romania must be able to export 3 different SAF-T documents. One is related to assets and this commit enables them to generate and export the XML file. The export button can be found in the General Ledger report. Two different sections are therefore implemented in the XML file to be exported. - "Assets" in the "Master Files" represent a general overview of the assets of the company and is quite similar to the depreciation schedule report. - "Asset Transactions" in the "Source Documents" represent each move that are related to assets during the selection period. These can be sales, depreciations, purchases, ... To be able to export the right data, two generic fields are now stored. - asset_move_type: defined on the account_move model, it represents the relation that the move might have towards an asset, e.g. purchase, sale, depreciation, positive/negative revaluation, disposal. - net_gain_on_sale: difference between the book value of an asset and the amount it has been sold. Sources: - ANAF: https://www.anaf.ro/anaf/internet/ANAF/despre_anaf/strategii_anaf/proiecte_digitalizare/saf_t/ - ANAF FAQ: https://www.anaf.ro/anaf/internet/ANAF/despre_anaf/strategii_anaf/proiecte_digitalizare/saf_t/ task-3615633
Enhancements to existing features
Payroll contract data now supports entering home-to-work distance with a selectable unit, allowing users to work in miles or kilometers where needed. Existing payroll calculation logic continues to use kilometers internally, while demo data and payroll tests across localizations were updated to use the new input field.
Original PR description
*= l10n_be_hr_contract_salary, l10n_be_hr_payroll, l10n_be_hr_payroll_account adding new selection field distance home-work unit for changing between miles and km changing field name from km_home_work to distance_home_work in data files,demo data and test case files of various l10n files km_home_work will be use for calculation in km and distance_home_work will be use for input Task-3888505
Users can now rearrange records directly in the map view when the view is configured for sequencing. This helps teams plan routes in the right stop order, making map-based routing easier and more flexible.
Original PR description
This commit allows to re-order records from the map view. It is useful for routing, which takes you from the first item to the last and uses intermediary ones as stops. With this commit, the map view displays a handle on each record when: - `default_order` is set on the map arch - `allow_resequence` is set to `true` on the map arch - the map view is not grouped by a field  Community PR : https://github.com/odoo/odoo/pull/168876 task-3636577
Employees can now share referral links more easily, including by SMS, and copy links directly without opening an extra sharing window. The referral page also has a cleaner, wider card layout and updated social sharing visuals, making the experience smoother and more modern.
Original PR description
This PR adds the ability to send a referral link via SMS by the use of a wizard, it improve the ux by making the referral cards take the full width of the screen, improve the looks of the button by the use of logos and update the twitter logo with x. Finally, this PR also remove completely the use of the referral link to share wizard and embed the link directly in the button (that was opening the referral link to share) to copy it directly to the clipboard.
This update refreshes how kanban-style cards are handled across several Odoo apps, including Accounting, Appointments, Documents, Sign, Marketing Automation, Field Service, Subscriptions, Rentals, and Social. It should make these card-based screens more consistent and reliable for users while supporting future interface improvements.
Indian payroll accounting is now linked with the accounting setup, helping payroll-related financial entries align with company accounts. This improves consistency between payroll processing and accounting records for businesses operating in India.
Original PR description
Add link with the accounting task-3387234
The spreadsheet locale indicator now appears in a neutral blue instead of red when the spreadsheet locale differs from the user's locale. This keeps users informed about date and number formatting expectations without implying that something is wrong.
Original PR description
there's currently a small globe on the top-right corner displayed when the spreadsheet locale is different than the user's locale. The goal is to draw attention of the user that he needs to write numbers and dates accordingly. The globe is currently red, which might be scary. The user might think something is wrong. This task changes the globe color to a more neutral "info" blue. Task: 3989485
Code cleanup and technical improvements
This update modernizes automated tests for Planning and related scheduling features without changing day-to-day functionality. It helps keep future changes safer by improving test coverage and maintainability across Planning, Project Forecast, and Sales Planning.
Original PR description
task-3890660
Miscellaneous changes
`l10n_co_dian` currently only depends on `l10n_co_edi`, which depends on `account`, and `account_edi_ubl_cii` is auto-installed when `account` is installed. The issue: when uninstalling `account_edi_ubl_cii`, `l10n_co_dian` will be kept since `account_edi_ubl_cii` is not in its dependencies, leaving `l10n_co_dian` in a corrupted state. Forward-Port-Of: odoo/enterprise#64427
Original PR description
`l10n_co_dian` currently only depends on `l10n_co_edi`, which depends on `account`, and `account_edi_ubl_cii` is auto-installed when `account` is installed. The issue: when uninstalling `account_edi_ubl_cii`, `l10n_co_dian` will be kept since `account_edi_ubl_cii` is not in its dependencies, leaving `l10n_co_dian` in a corrupted state. Forward-Port-Of: odoo/enterprise#64427
Problem: When enhancing reports for 16.4 compatibility, a VAT label was added to the followup report. This label will display even when no `vat` value exists. Purpose: Revert line similar to previous versions where if a `vat` value is present, then show the value. Otherwise, show nothing. Steps to Reproduce: 1. Have a contact with no `vat` value 2. Create an invoice for that contact 3. Send a followup report to that contact. opw-3970003 Forward-Port-Of: odoo/enterprise#64614
Original PR description
Problem: When enhancing reports for 16.4 compatibility, a VAT label was added to the followup report. This label will display even when no `vat` value exists. Purpose: Revert line similar to previous versions where if a `vat` value is present, then show the value. Otherwise, show nothing. Steps to Reproduce: 1. Have a contact with no `vat` value 2. Create an invoice for that contact 3. Send a followup report to that contact. opw-3970003 Forward-Port-Of: odoo/enterprise#64614
To access the xml, go to General Ledger, and export "Datev with Atch". You need invoices with attachment. This xml has a field date that should in fact contain a datetime! (following format 0001-01-01T00:00:00) opw-3976301 Forward-Port-Of: odoo/enterprise#64439
Original PR description
To access the xml, go to General Ledger, and export "Datev with Atch". You need invoices with attachment. This xml has a field date that should in fact contain a datetime! (following format 0001-01-01T00:00:00) opw-3976301 Forward-Port-Of: odoo/enterprise#64439
Create a Vendor Bill with a 0% purchase tax Check Reporting > EC Sales List Issue: Bill is reported This occurs because the system does not filter the tax type opw-3928085 Forward-Port-Of: odoo/enterprise#64574 Forward-Port-Of: odoo/enterprise#63206
Original PR description
Create a Vendor Bill with a 0% purchase tax Check Reporting > EC Sales List Issue: Bill is reported This occurs because the system does not filter the tax type opw-3928085 Forward-Port-Of: odoo/enterprise#64574 Forward-Port-Of: odoo/enterprise#63206
Problem --- On the order status page, the terms translations are ignored. This happens because it is a 'website=True' routed page, and modules which create website pages with translations need to let the http routing know about them by overloading `_get_translations_modules_name` Note: the page will typically be translated into the browser's preferred language and not the odoo user's. opw-3949394 Forward-Port-Of: odoo/enterprise#63915
Original PR description
Problem --- On the order status page, the terms translations are ignored. This happens because it is a 'website=True' routed page, and modules which create website pages with translations need to let the http routing know about them by overloading `_get_translations_modules_name` Note: the page will typically be translated into the browser's preferred language and not the odoo user's. opw-3949394 Forward-Port-Of: odoo/enterprise#63915
Purpose ======= Fix the appointment type intro message which, if not set yet, wasn't available for edition using the website editor. Specification ============= The "o_appointment_intro" element has been changed from inside, to next to the "o_appointment" element. Changing the selector to match the new "o_appointment_intro" position. Ref commit: https://github.com/odoo/enterprise/commit/4f68079b535c1ea54c42ae8dabae903f88d6e87f Also combining the 2 separate conditions that adds the
Original PR description
Purpose ======= Fix the appointment type intro message which, if not set yet, wasn't available for edition using the website editor. Specification ============= The "o_appointment_intro" element has been changed from inside, to next to the "o_appointment" element. Changing the selector to match the new "o_appointment_intro" position. Ref commit: https://github.com/odoo/enterprise/commit/4f68079b535c1ea54c42ae8dabae903f88d6e87f Also combining the 2 separate conditions that adds the d-none class into 1 single OR-ed condition for readability. Task-3976356 Forward-Port-Of: odoo/enterprise#64447 Forward-Port-Of: odoo/enterprise#64016
Currently, the `employee_cost` of a `mrp.workcenter.productivity` is recomputed each time we try to access its `total_cost`. This means that if you change the cost of the employee related to it some time after a MO was completed, if you end up accessing the `total_cost` field (like by opening the Overview), it will overwrite the previous `employee_cost`, and will alter the Cost Analysis report as well. Forward-Port-Of: odoo/enterprise#64481 Forward-Port-Of: odoo/enterprise#45609
Original PR description
Currently, the `employee_cost` of a `mrp.workcenter.productivity` is recomputed each time we try to access its `total_cost`. This means that if you change the cost of the employee related to it some time after a MO was completed, if you end up accessing the `total_cost` field (like by opening the Overview), it will overwrite the previous `employee_cost`, and will alter the Cost Analysis report as well. Forward-Port-Of: odoo/enterprise#64481 Forward-Port-Of: odoo/enterprise#45609
When a new bike is selected, it raises a traceback when trying to create the bike, because the state_new_request is not assigned if there is no new car. Introduced in: https://github.com/odoo/enterprise/pull/63020 Forward-Port-Of: odoo/enterprise#64585
Original PR description
When a new bike is selected, it raises a traceback when trying to create the bike, because the state_new_request is not assigned if there is no new car. Introduced in: https://github.com/odoo/enterprise/pull/63020 Forward-Port-Of: odoo/enterprise#64585
### Steps to reproduce the issue: 1. Go to _Settings > Technical > Email > Email Templates_ 2. Select a template that applies to a Contact 3. Add a mail address in the Cc field 4. Go to _Accounting > Customers > Follow-up Reports_ select one of the reports 5. Click on "Follow up" 6. Select the template with the Cc in the Content Template field 7. The Cc address is not added to the Email Recipients field 8. Click on Send Message in the chatter 9. Open the full view and add the template
Original PR description
### Steps to reproduce the issue: 1. Go to _Settings > Technical > Email > Email Templates_ 2. Select a template that applies to a Contact 3. Add a mail address in the Cc field 4. Go to _Accounting >…
### Steps to reproduce the issue: 1. Go to _Settings > Technical > Email > Email Templates_ 2. Select a template that applies to a Contact 3. Add a mail address in the Cc field 4. Go to _Accounting > Customers > Follow-up Reports_ select one of the reports 5. Click on "Follow up" 6. Select the template with the Cc in the Content Template field 7. The Cc address is not added to the Email Recipients field 8. Click on Send Message in the chatter 9. Open the full view and add the template with the Cc in the Load template field 10. The Cc address is added to the Recipients field ### Explanation: The field `email_recipient_ids` is not a computed field. Because of it, there is no change called when `template_id` is assigned a new value. ### Suggested fix: We need to change `email_recipients_ids` according to `template_id` while keeping its current properties (stored, writable). The method is adapted from `mail.compose.message._compute_partner_ids`. https://github.com/odoo/odoo/blob/1849b709f1acf0f5546582bf7551129a870e3113/addons/mail/wizard/mail_compose_message.py#L482-L496 opw-3878125 Forward-Port-Of: odoo/enterprise#64397 Forward-Port-Of: odoo/enterprise#61861
A traceback occurs when this specific call to `getReceiptHeaderData` is made without order. ``` Error: TypeError: Cannot read properties of undefined (reading 'l10n_cl_sii_regional_office') ``` To reproduce the error: - With a CL company setup - Open POS session - Click Cash In/Out - Select an amount - Confirm Ticket [link](https://www.odoo.com/web#model=project.task&id=3917776) opw-3917776 Forward-Port-Of: odoo/enterprise#62985
Original PR description
A traceback occurs when this specific call to `getReceiptHeaderData` is made without order. ``` Error: TypeError: Cannot read properties of undefined (reading 'l10n_cl_sii_regional_office') ``` To reproduce the error: - With a CL company setup - Open POS session - Click Cash In/Out - Select an amount - Confirm Ticket [link](https://www.odoo.com/web#model=project.task&id=3917776) opw-3917776 Forward-Port-Of: odoo/enterprise#62985
With an MX company setup Create a product with: - UNSPSC Category: 12352106 Ácidos orgánicos o sus sustitutos - Hazardous Material Designation Code (MX): - Hazardous Packaging (MX): - Tariff Fraction: 2917190800 Ácido fumárico. - UMT Aduana: kg - Weight: 1.00 Create a Sale Order with the product Confirm Go to Delivery Set: - Tansport Type: Federal Highways - In MX Tab add 'Vehicle Setup' and 'Gross Vehicle Weight' Validate and Generate Delivery Guide Error: Code : CP155 Mes
Original PR description
With an MX company setup Create a product with: - UNSPSC Category: 12352106 Ácidos orgánicos o sus sustitutos - Hazardous Material Designation Code (MX): - Hazardous Packaging (MX): - Tariff…
With an MX company setup Create a product with: - UNSPSC Category: 12352106 Ácidos orgánicos o sus sustitutos - Hazardous Material Designation Code (MX): - Hazardous Packaging (MX): - Tariff Fraction: 2917190800 Ácido fumárico. - UMT Aduana: kg - Weight: 1.00 Create a Sale Order with the product Confirm Go to Delivery Set: - Tansport Type: Federal Highways - In MX Tab add 'Vehicle Setup' and 'Gross Vehicle Weight' Validate and Generate Delivery Guide Error: Code : CP155 Message : El valor registrado en el atributo "Mercancia:MaterialPeligroso" no es válido o el valor registrado en el atributo “Mercancias:Mercancia:BienesTransp” contiene el valor "0" (cero) en la columna "Material peligroso" del catálogo catCartaPorte:c_ClaveProdServCP. This occurs because the MarierialPeligroso element is not filled In the ClaveProdServ tab of the CatalogoCartaPorte30 it is specified if a product or service is (1), not is (0) or may be (0,1) considered hazardous When having to deal with "may be" hazardous products it is required to set the 'MaterialPeligroso' element. Currently, the system does not allow to specify if the "may be" product is actually hazardous, but if the 'Hazardous Material Designation Code (MX)' field is not set the MaterialPeligroso element will not be filled, failing the validation The proposed workaround is to use the value '0' as flag to indicate that the maybe hazardous product should not be considered hazardous and 'MaterialPeligroso' will be set to 'No' opw-3955361 task-3668225 Forward-Port-Of: odoo/enterprise#64284 Forward-Port-Of: odoo/enterprise#63832
Forward-Port-Of: odoo/enterprise#64040
Original PR description
Forward-Port-Of: odoo/enterprise#64040
Steps to reproduce: - Install Accounting and l10n_co_edi - Switch to a Colombian company - Configure the Colombian localization (https://www.odoo.com/documentation/17.0/applications/finance/fiscal_localizations/colombia.html) - Create a vendor bill containing a section or a note - Confirm the bill - Process the bill by E-invoicing service : UBL 2.1 (Colombia) Issue: The generated electronic document is rejected by the E-invoicing service because the input number of lines is also counti
Original PR description
Steps to reproduce: - Install Accounting and l10n_co_edi - Switch to a Colombian company - Configure the Colombian localization (https://www.odoo.com/documentation/17.0/applications/finance/fiscal_localizations/colombia.html) - Create a vendor bill containing a section or a note - Confirm the bill - Process the bill by E-invoicing service : UBL 2.1 (Colombia) Issue: The generated electronic document is rejected by the E-invoicing service because the input number of lines is also counting section and note lines. Solution: Exclude section and note lines from the count as it is done for invoice. opw-3928949 Forward-Port-Of: odoo/enterprise#63588
The 'Totales' section is computed by aggregating amounts then rounding. The 'ImpuestosP' section is computed by making the sum of rounded values. So when the payment is expressed in MXN but not the invoices, we could have a rounding issue here. Forward-Port-Of: odoo/enterprise#64411 Forward-Port-Of: odoo/enterprise#64013
Original PR description
The 'Totales' section is computed by aggregating amounts then rounding. The 'ImpuestosP' section is computed by making the sum of rounded values. So when the payment is expressed in MXN but not the invoices, we could have a rounding issue here. Forward-Port-Of: odoo/enterprise#64411 Forward-Port-Of: odoo/enterprise#64013
Problem: When a portal user views a Task they are connected to, if `planned_date_begin` is set (using a date range on the Task rather that just `date_deadline`), 'Planned Date' will appear twice on Portal View. Purpose: We already have 'Planned Date'/'Deadline' shown with `project_enterprise.portal_my_task`, and this edited view comes from `industry_fsm`, which depends on `project_enterprise` anyways. Removing from `industry_fsm` lets the parent module take care of these fields. Steps to R
Original PR description
Problem: When a portal user views a Task they are connected to, if `planned_date_begin` is set (using a date range on the Task rather that just `date_deadline`), 'Planned Date' will appear twice on Portal View. Purpose: We already have 'Planned Date'/'Deadline' shown with `project_enterprise.portal_my_task`, and this edited view comes from `industry_fsm`, which depends on `project_enterprise` anyways. Removing from `industry_fsm` lets the parent module take care of these fields. Steps to Reproduce: 1. Create a SO with Service Product that creates Project/Task, assign portal user as Customer 2. Share Read-only with Portal user from Project 3. On Task, set Deadline start and end. 4. Login as portal User, navigate Projects -> SO -> Task 5. See duplicated 'Planned Date' line opw-3978845 Forward-Port-Of: odoo/enterprise#64306
When selecting the option "IoT-connected display" for customer display, and pos_iot is installed, there is no way from the res.config.settings form to specify the `proxy_ip` field which is used to send the customer display information. Because of this, using IoT-connected display for customer screen doesn't work. This commit introduces a way to infer the proxy_ip from the specify display device. Related: https://github.com/odoo/odoo/pull/168897 Forward-Port-Of: odoo/enterprise#64360
Original PR description
When selecting the option "IoT-connected display" for customer display, and pos_iot is installed, there is no way from the res.config.settings form to specify the `proxy_ip` field which is used to send the customer display information. Because of this, using IoT-connected display for customer screen doesn't work. This commit introduces a way to infer the proxy_ip from the specify display device. Related: https://github.com/odoo/odoo/pull/168897 Forward-Port-Of: odoo/enterprise#64360