Daily updates from Odoo
Navigate
Branch
Monday, June 3, 2024
44 changes
5 changes
Miscellaneous changes
Problem -------- https://github.com/odoo/odoo/pull/156655 hides the miscellaneous entry total if there is a discrepancy between the journal currency and journal's default account currency. This fix is not ideal as the total is the sum of the balance field (company currency), while the displayed total uses the journal currency. Since this could be a foreign bank account, the journal currency is correct. Solution -------- Sum the `amount_currency` field instead of the `balance` field.
Original PR description
Problem -------- https://github.com/odoo/odoo/pull/156655 hides the miscellaneous entry total if there is a discrepancy between the journal currency and journal's default account currency. This fix is not ideal as the total is the sum of the balance field (company currency), while the displayed total uses the journal currency. Since this could be a foreign bank account, the journal currency is correct. Solution -------- Sum the `amount_currency` field instead of the `balance` field. Caveat ------- Yes, it's possible we are summing apples and oranges as the currencies of the misc move lines may not be the same. In this case, a warning icon is displayed indicating multiple currencies. A module update is required to view this icon. https://github.com/odoo/odoo/commit/7ef468402d327855ee6323b6a7f82ac6989ee28a#r141889189 opw-3767010 Forward-Port-Of: odoo/odoo#165441
Currently, an exception is generated when the user tries to access embed view of slides by following the steps: - Install "eLearning" with a demo data - Open external embed view of slide 1 by "/slides/embed_external/1" in url Stack Trace: ``` AttributeError: 'slide.channel' object has no attribute 'website_share_url' File "<1405>", line 313, in template_1405 File "<1405>", line 151, in template_1405_content File "<1405>", line 18, in template_1405_t_call_0 QWebException: Error
Original PR description
Currently, an exception is generated when the user tries to access embed view of slides by following the steps: - Install "eLearning" with a demo data - Open external embed view of slide 1 by…
Currently, an exception is generated when the user tries to access embed view of slides by following the steps: - Install "eLearning" with a demo data - Open external embed view of slide 1 by "/slides/embed_external/1" in url Stack Trace: ``` AttributeError: 'slide.channel' object has no attribute 'website_share_url' File "<1405>", line 313, in template_1405 File "<1405>", line 151, in template_1405_content File "<1405>", line 18, in template_1405_t_call_0 QWebException: Error while render the template AttributeError: 'slide.channel' object has no attribute 'website_share_url' Template: ir.ui.view(1405,) Path: /t/html/body/div/div[2]/t[1]/t/t[4] Node: <t t-set="include_embed" t-value="True"/> ``` This error is because commit [1] added code that tries to access the 'website_share_url' field in the 'slide.channel' model in template 'embed_slide' , but it actually belongs to 'slide.slide'. This commit resolved the above issue by accessing "website_share_url" with "slide" instead of "slide.channel". [1] - https://github.com/odoo/odoo/commit/db63c03af9932ae4d9b786620e88e62ce938589a sentry-5095823727 Forward-Port-Of: odoo/odoo#159446 Forward-Port-Of: odoo/odoo#159238
Ubuntu 24.04 Noble ships werkzeug==3.0.1[^1], that version dropped some Py2/Py3 code compatibility to only support Py3. This is the case for the `iri_to_uri` function that since 3.0.0 doesn't support bytes anymore[^2]. Since Odoo 13 only supports Py3 too, it is fine to always decode the query string (which was what `iri_to_uri` was doing anyway). [^1]: https://packages.ubuntu.com/noble/python3-werkzeug [^2]: https://werkzeug.palletsprojects.com/en/3.0.x/urls/ Forward-Port-Of: odoo/odoo#1668
Original PR description
Ubuntu 24.04 Noble ships werkzeug==3.0.1[^1], that version dropped some Py2/Py3 code compatibility to only support Py3. This is the case for the `iri_to_uri` function that since 3.0.0 doesn't support bytes anymore[^2]. Since Odoo 13 only supports Py3 too, it is fine to always decode the query string (which was what `iri_to_uri` was doing anyway). [^1]: https://packages.ubuntu.com/noble/python3-werkzeug [^2]: https://werkzeug.palletsprojects.com/en/3.0.x/urls/ Forward-Port-Of: odoo/odoo#166854 Forward-Port-Of: odoo/odoo#166814
After version >= `16.4` module **repair** is **[using](https://github.com/odoo/odoo/blob/c002aad906bef390d6d7fd5c795a8e6baa5fd31d/addons/repair/models/repair.py#L571-L578)** attribute `_get_default_warehouse_id` which is **[defined](https://github.com/odoo/odoo/blob/c002aad906bef390d6d7fd5c795a8e6baa5fd31d/addons/sale_stock/models/res_users.py#L12-L17)** in module `sale_stock`. There is no dependency between that 2 modules. But as the module `sale_stock` is **autoinstall=1** and its all depen
Original PR description
After version >= `16.4` module **repair** is **[using](https://github.com/odoo/odoo/blob/c002aad906bef390d6d7fd5c795a8e6baa5fd31d/addons/repair/models/repair.py#L571-L578)** attribute…
After version >= `16.4` module **repair** is **[using](https://github.com/odoo/odoo/blob/c002aad906bef390d6d7fd5c795a8e6baa5fd31d/addons/repair/models/repair.py#L571-L578)** attribute `_get_default_warehouse_id` which is **[defined](https://github.com/odoo/odoo/blob/c002aad906bef390d6d7fd5c795a8e6baa5fd31d/addons/sale_stock/models/res_users.py#L12-L17)** in module `sale_stock`. There is no dependency between that 2 modules.
But as the module `sale_stock` is **autoinstall=1** and its all dependencies are being installed when we install `repair` the module **sale_stock** is also being installed automatically. That is why when we install **repair** we will not have any problem on using that attribute. If we uninstall that `sale_stock` we will have problem because `repair` module will not be able to find the attribute `_get_default_warehouse_id`.
For fixing the issue I added that attribute in module `stock` as it is dependent for both of `repair` and `sale_stock`, and also I use the inheritence in module `sale_stock`
**Steps to reproduce:**
1. Install `repair` on `16.0`
2. Uninstall `sale_stock`
3. Try to upgrade to `17.0`
You will error similar to this:
```
File "/home/odoo/src/odoo/17.0/addons/repair/models/repair.py", line 28, in _default_picking_type_id
return self._get_picking_type().get((self.env.company, self.env.user))
File "/home/odoo/src/odoo/17.0/addons/repair/models/repair.py", line 563, in _get_picking_type
default_warehouse = self.env.user.with_company(companies.id)._get_default_warehouse_id()
AttributeError: 'res.users' object has no attribute '_get_default_warehouse_id'
```
upg-1565705
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#166006Currently, when trying to merge a PDF generated from Google sheet in the PDF quote builder, a traceback happens due to a known problem in older versions of pypdf2. This was fixed in pypdf2 2.4.2 (see: https://github.com/py-pdf/pypdf/commit/02c601c86819578d9796479a1b8953accefea92b ) It doesn't seem to happen with other editors, and google sheet doesn't allow the use of form fields anyway. Forward-Port-Of: odoo/odoo#166901
Original PR description
Currently, when trying to merge a PDF generated from Google sheet in the PDF quote builder, a traceback happens due to a known problem in older versions of pypdf2. This was fixed in pypdf2 2.4.2 (see: https://github.com/py-pdf/pypdf/commit/02c601c86819578d9796479a1b8953accefea92b ) It doesn't seem to happen with other editors, and google sheet doesn't allow the use of form fields anyway. Forward-Port-Of: odoo/odoo#166901
19 changes
Enhancements to existing features
Recruitment settings now provide access to salary contract templates, making it easier for HR teams to manage reusable offer and contract structures from the recruitment area. This improves navigation and reduces the need to switch between separate HR configuration screens.
Original PR description
In this commit, Template menuitem is added to the settings of the recruitment. Task-3897704
Employee salary package car descriptions now include the vehicle range, making car options clearer during contract or salary package review. This helps HR teams and employees better distinguish similar vehicles when evaluating benefits.
Original PR description
task-3847484
The employee contract form no longer defaults to the Belgian CDI contract type for non-Belgian companies. Belgian companies will still receive CDI by default, helping avoid incorrect contract setup in other countries.
Original PR description
The CDI contract type is only present in Belgian companies. This change then sets the default value of contract type to blank unless the current company is a Belgian company in which case contract type is set to CDI. task-3911537
Payroll users can now archive salary attachment types and see archived records through a dedicated filter. The system also prevents archiving a type while active salary attachments still use it, helping avoid disruption to ongoing payroll processes.
Original PR description
Before this commit, there was no archive filter on salary attachment types. This commit brings archive filter in the salary attachment types list view. Added archive on multi selection in list view and in menu item in form view of salary attachment types. Also added 'Archived' ribbon on the form view. Note: Cannot archive Salary Attachment type if there exist running Salary Attachment of this type. task-3895926
Belgian payroll now factors holiday attestation days from a previous employer when calculating an employee's annual paid time off entitlement. This helps employees who changed companies mid-year receive the correct vacation allocation and reduces manual payroll corrections.
Installing the Inventory app will now automatically include the Barcode app. This helps businesses use barcode-based warehouse workflows without needing an extra manual installation step.
Original PR description
Before this commit: ============================ When installing inventory module, barcode module is not auto installing. After this commit: ============================ Auto installing barcode module when installing inventory module. task-3943420
Invoices can now include an authorized signatory section when enabled in accounting settings, helping Indian businesses meet common invoicing expectations. The system automatically chooses the appropriate signing user where possible and leaves the area available for manual signing if no digital signature is set.
Original PR description
The aim of this commit is to add an "authorized signatory" area on the
invoice pdf.
Context:
In India, most of the invoices have a sign field added to them and we're
constantly asked to make that customization.
Note:
- The feature has to be activated in the accounting settings.
- The signature area won't be print if the invoice creation and post
has been triggered by a portal customer.
- The signature to print will be selected in that order:
- The representative user if it has been set in the settings.
- The user posting the invoice if it's a real backed user.
- The salesman user if the invoice is posted by OdooBot.
- If the signing user doesn't have a signature, the signature area will
be set but left insigned to allow manual signing.
Task [link](https://www.odoo.com/web#model=project.task&id=3552682)
task-id: 3552682Helpdesk access rules were adjusted so employees without timesheet or sales permissions can still open relevant tickets and reports without unexpected access errors. Stage reordering is also limited to administrators, preventing unauthorized users from changing team workflows by drag and drop.
Original PR description
*_: helpdesk_timesheet, helpdesk_sale_timesheet, helpdesk_stock When a user without a timesheet or sales access attempts to access tickets or reports, they encounter an access error. User have admin rights can only resequence group stages without admin rights user can not drag and drop stages. task-3827080
Miscellaneous changes
- Make an invoice with analytic distribution divided in Projects and Departments - Post the invoice - Open General Ledger - Filter by analytic account used in invoice Issue: No result is found Occurs after dee8286524eb1ba2eff6360a5f376565da50f723 The old SQL condition to filter analytic account was not removed and it is used together with the new one opw-3930017 Forward-Port-Of: odoo/enterprise#63614 Forward-Port-Of: odoo/enterprise#63485
Original PR description
- Make an invoice with analytic distribution divided in Projects and Departments - Post the invoice - Open General Ledger - Filter by analytic account used in invoice Issue: No result is found Occurs after dee8286524eb1ba2eff6360a5f376565da50f723 The old SQL condition to filter analytic account was not removed and it is used together with the new one opw-3930017 Forward-Port-Of: odoo/enterprise#63614 Forward-Port-Of: odoo/enterprise#63485
Date is not always in options. E.g. in consolidation.trial.balance.report.handle. This causes an error when displaying report. Steps to reproduce : - Go on consolidation dashboard, try to consolidate anything. Forward-Port-Of: odoo/enterprise#63501
Original PR description
Date is not always in options. E.g. in consolidation.trial.balance.report.handle. This causes an error when displaying report. Steps to reproduce : - Go on consolidation dashboard, try to consolidate anything. Forward-Port-Of: odoo/enterprise#63501
In order to inspect the result manually when necessary, we save the url of the db that received the result of the website scraper. We do this only when fetching the result because the saas trials cannot garantee its web.base.url when it is first making the request to the website scraper. Linked to: https://github.com/odoo/iap-apps/pull/808 Forward-Port-Of: odoo/enterprise#63521
Original PR description
In order to inspect the result manually when necessary, we save the url of the db that received the result of the website scraper. We do this only when fetching the result because the saas trials cannot garantee its web.base.url when it is first making the request to the website scraper. Linked to: https://github.com/odoo/iap-apps/pull/808 Forward-Port-Of: odoo/enterprise#63521
Original bug: 1) Create an invoice of 2000 for partner A 2) Create a misc operation with a line of -500 on the receivable account used in 1) 3) Reconcile the receivable lines of 1) and 2). 4) Open the Partner Ledger for A; filter with A's name in the search bar. 5) Print the pdf ====> The misc operation appears under A in the UI, but not in the pdf. The pdf should behave as the UI. The bug came from the fact the domain enforced when filtering and printing was too simple ; it needs t
Original PR description
Original bug: 1) Create an invoice of 2000 for partner A 2) Create a misc operation with a line of -500 on the receivable account used in 1) 3) Reconcile the receivable lines of 1) and 2). 4) Open the Partner Ledger for A; filter with A's name in the search bar. 5) Print the pdf ====> The misc operation appears under A in the UI, but not in the pdf. The pdf should behave as the UI. The bug came from the fact the domain enforced when filtering and printing was too simple ; it needs to consider the move lines reconciled with a move line made for the matching partners as well. Manual forward-port of https://github.com/odoo/enterprise/pull/63347 opw-3915724 Forward-Port-Of: odoo/enterprise#63449
Previously, Gantt, Pivot, and Graph views were listed before Kanban and List views. In this commit, we've reordered based on priority. Upgrade script: No upgrade script is required as we've updated records added in this version task-3902382 Forward-Port-Of: odoo/enterprise#61834
Original PR description
Previously, Gantt, Pivot, and Graph views were listed before Kanban and List views. In this commit, we've reordered based on priority. Upgrade script: No upgrade script is required as we've updated records added in this version task-3902382 Forward-Port-Of: odoo/enterprise#61834
Purpose of this PR: To Convert the qunit testcases to hoot. Part of: [3818666](https://www.odoo.com/web#id=3818666&cids=2&menu_id=4720&action=333&active_id=1519&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#62831
Original PR description
Purpose of this PR: To Convert the qunit testcases to hoot. Part of: [3818666](https://www.odoo.com/web#id=3818666&cids=2&menu_id=4720&action=333&active_id=1519&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#62831
Steps --- * create a subscription sale order (monthly recurrence, at least one product) * confirm > create invoice * add a line to the invoice with a start and end date (invisible by default) * confirm invoice, we get a traceback. Cause --- This happens because, when `_post`ing account moves, we try to apply the subscription specific logic to all the move lines, even if there is no associated sale-order/subscription. In particular the traceback is thrown when we try to access the `nex
Original PR description
Steps --- * create a subscription sale order (monthly recurrence, at least one product) * confirm > create invoice * add a line to the invoice with a start and end date (invisible by default) * confirm invoice, we get a traceback. Cause --- This happens because, when `_post`ing account moves, we try to apply the subscription specific logic to all the move lines, even if there is no associated sale-order/subscription. In particular the traceback is thrown when we try to access the `next_invoice_date` field from a `False` subscription/sale-order. https://github.com/odoo/enterprise/blob/a9ad8b5e62481fc31dffb723af4d1578ada501e7/sale_subscription/models/account_move.py#L38 opw-3940682 Forward-Port-Of: odoo/enterprise#63512 Forward-Port-Of: odoo/enterprise#63258
Steps to reproduce ================== - Create a new model with studio - Go to the contaxt form view - Add a new many2one field linked to the newly created model - Exit studio - Create a new contact - Type something in the many2one field - Click on Create an Edit => The name should be kept Cause of the issue ================== Studio models uses x_name as the _rec_name opw-3919262 Forward-Port-Of: odoo/enterprise#63362 Forward-Port-Of: odoo/enterprise#62424
Original PR description
Steps to reproduce ================== - Create a new model with studio - Go to the contaxt form view - Add a new many2one field linked to the newly created model - Exit studio - Create a new contact - Type something in the many2one field - Click on Create an Edit => The name should be kept Cause of the issue ================== Studio models uses x_name as the _rec_name opw-3919262 Forward-Port-Of: odoo/enterprise#63362 Forward-Port-Of: odoo/enterprise#62424
The date filters weren't working on the last day of certain months (31st). For example, if we are the 31st of may, and we try to get back one month, We would expect to be the 30th of april. Instead, what the code was doing was strictly removing one month to the date, so we will be the 31st of april and since that date doesn't exist, the value that was returned was still 31st of may. To fix that, we now use luxon to make the date calculation. Forward-Port-Of: odoo/enterprise#63577
Original PR description
The date filters weren't working on the last day of certain months (31st). For example, if we are the 31st of may, and we try to get back one month, We would expect to be the 30th of april. Instead, what the code was doing was strictly removing one month to the date, so we will be the 31st of april and since that date doesn't exist, the value that was returned was still 31st of may. To fix that, we now use luxon to make the date calculation. Forward-Port-Of: odoo/enterprise#63577
Steps: - Create a database on SaaS - Activate debug mode - Load demo data if not enabled - Install l10n_be_hr_contract_salary Actual result: - Module l10n_be_hr_contract_salary installed - Demo data not loaded properly, traceback Expected result - Module l10n_be_hr_contract_salary installed - Demo data loaded opw-3930487 Forward-Port-Of: odoo/enterprise#63522 Forward-Port-Of: odoo/enterprise#63328
Original PR description
Steps: - Create a database on SaaS - Activate debug mode - Load demo data if not enabled - Install l10n_be_hr_contract_salary Actual result: - Module l10n_be_hr_contract_salary installed - Demo data not loaded properly, traceback Expected result - Module l10n_be_hr_contract_salary installed - Demo data loaded opw-3930487 Forward-Port-Of: odoo/enterprise#63522 Forward-Port-Of: odoo/enterprise#63328
**Before this PR:** - The test case for a debit note in GSTR-1 was missing. - Values for debit notes in the CDNR and CDNUR categories in the GSTR-1 spreadsheet were negative. **After this PR:** - Added the test case for a debit note in GSTR-1. - Corrected the GSTR-1 JSON to display positive values for debit notes in the CDNR and CDNUR categories in the GSTR-1 spreadsheet. **task**-3892512 Forward-Port-Of: odoo/enterprise#63502 Forward-Port-Of: odoo/enterprise#63349
Original PR description
**Before this PR:** - The test case for a debit note in GSTR-1 was missing. - Values for debit notes in the CDNR and CDNUR categories in the GSTR-1 spreadsheet were negative. **After this PR:** - Added the test case for a debit note in GSTR-1. - Corrected the GSTR-1 JSON to display positive values for debit notes in the CDNR and CDNUR categories in the GSTR-1 spreadsheet. **task**-3892512 Forward-Port-Of: odoo/enterprise#63502 Forward-Port-Of: odoo/enterprise#63349
20 changes
Enhancements to existing features
When users audit specific accounts in Balance Sheet and Profit & Loss reports, accounts appearing lower in the list were difficult to locate. This improvement adds a default filter to the audit report, automatically displaying only the selected account and making it easier to review account details without scrolling through large lists.
Original PR description
In the balance sheet and Profit & Loss reports, we allow users to audit the General Ledger of a specific account if we want to look at the details of that account for the period of the report. When clicking on the link of the audit, it works well for small db, but if the account is low in the list, you don't even see it. This commit adds a default filter on the report. task-3839845
The contract signing flow now intelligently reuses existing partner information instead of creating duplicate partners. When an applicant already has an assigned partner, the system will use that existing partner rather than generating a new one, reducing data duplication and improving data consistency.
Original PR description
Steps to reproduce: --------- - Install hr_contract_salary - Create a contract template - Create an applicant and send an offer - Sign Document - Check partner In this PR, the sign flow will now only generate a partner when the related applicant does not already have one. If a partner is already assigned, the sign flow should utilize that existing partner. task-3693838
This update improves how local taxes are handled in Mexican electronic invoices (CFDI) by making tax details more accessible to developers. Local taxes, which are state-specific contributions, can now be properly identified and separated from other taxes in invoice lines. This enables better customization and compliance with Mexican tax regulations.
Original PR description
In some cases, it is necessary to make changes to taxes or identify other taxes, such as local taxes. Local taxes are taxes created by each state in the country to contribute to the public expenses of the cities in which the taxpayers reside. For Mexican localization the local taxes need to be added in a separate node in the CFDI, so they must be differentiated from the rest of the taxes used in the invoice lines. To identify local taxes, information of the tax record as its tag or name is used. Currently that information cannot be obtained. By adding the tax record to the base lines it is easier to obtain information from taxes when inheriting the _add_base_lines_cfdi_values method.
Resolved issues and error corrections
The Mexican tax tariff fraction catalog has been updated to reflect the latest official classifications from April 2024. This ensures that product tariff codes used for Mexican electronic invoicing remain accurate and compliant with current government regulations.
Original PR description
The tariff fraction catalog has been updated on April 2024: https://www.snice.gob.mx/cs/avi/snice/ligie.info22.mod24.html opw-3921546 Forward-Port-Of: odoo/enterprise#62638
This update fixes how test dates are handled in Mexico's electronic invoicing (EDI) system. Previously, test files contained hardcoded dates that could become outdated. Now the system uses dynamic dates that update automatically, and test validations properly ignore date variations to ensure tests remain reliable over time.
Custom and anytime appointment types are now unpublished by default so they don't appear on your website unless you explicitly make them visible. This prevents accidental public visibility of appointment types that aren't ready to be shared. Appointment types created directly from your website pages will still be published automatically since that action implies you want them public.
Original PR description
Since custom and anytime appointment types aren't visible on website pages, it makes sense to set their is_published field to False by default. The only exception when appointment types should be created with published flag is when it is being done from website page, since creating appointment from there implies their public visibility. task-3944831
Corrected the description used in Mexican electronic invoicing (CFDI) when processing discount refunds. Previously, the system incorrectly labeled discounts as "merchandise returns" when they should be identified as discounts or bonifications. This ensures accurate tax documentation for Mexican customers receiving discounts instead of actual product returns.
Original PR description
- Create a credit note - Add a product as a "Discount" and add the proper information - Process it under the use "devoluciones, descuentos o bonificaciones" (G02) - Check the generated XML Issue: Under description, we report "devolucion de mercancias" which wrong, as the user is not returning anything, they´re only getting a discount. opw-3902858
This update fixes an error message that appears when Amazon sales order picking synchronization fails. The improvement ensures users receive clearer, more accurate feedback when issues occur during the order fulfillment process with Amazon integration, helping teams quickly identify and resolve synchronization problems.
Original PR description
See also: https://github.com/odoo/odoo/pull/167738
This fix resolves an issue where demo data failed to load properly when installing localized payroll and HR modules in Odoo's SaaS environment. The problem affected multiple country-specific modules including Belgium, Kenya, Lithuania, Luxembourg, Morocco, Mexico, Netherlands, Poland, Romania, Slovakia, Australia, Switzerland, and the United States. Users can now successfully install these modules and have their demo data load without errors.
Original PR description
Steps: - Create a database on SaaS - Activate debug mode - Load demo data if not enabled - Install l10n_be_hr_contract_salary Actual result: - Module l10n_be_hr_contract_salary installed - Demo data not loaded properly, traceback Expected result - Module l10n_be_hr_contract_salary installed - Demo data loaded opw-3930487 Forward-Port-Of: odoo/enterprise#63433 Forward-Port-Of: odoo/enterprise#63328
The Planning app's view menu order has been reorganized to prioritize the most commonly used views. Gantt, Pivot, and Graph views are now positioned after Kanban and List views, improving the user experience by making frequently accessed views more prominent.
Original PR description
Previously, Gantt, Pivot, and Graph views were listed before Kanban and List views. In this commit, we've reordered based on priority. Upgrade script: No upgrade script is required as we've updated records added in this version task-3902382 Forward-Port-Of: odoo/enterprise#61834
This fix resolves a technical error that occurred when updating bank statement records belonging to multiple companies with different countries. The issue prevented users from processing multiple company records simultaneously. The fix ensures all records are properly handled without errors.
Original PR description
When the `write` method is called with multiple lines belonging to multiple companies that have different countries, we get a `singleton error`. We should instead loop on all line records in self. Bug introduced in https://github.com/odoo/enterprise/pull/63356 runbot-66564
Fixed an issue where users could accidentally submit the appointment confirmation form multiple times by clicking the button repeatedly. The button now shows a loading state and becomes disabled after the first click, preventing duplicate submissions and the confusing error messages that resulted from them.
Original PR description
Purpose ======= Prevent multiple submits of the attendee form when the user spam clicks on the "Confirm Appointment" button. Specifications ============== Spam clicking the submit button is submitting multiple times the form which redirects the user to the "Date & Time" step with a red banner indicating that another user already has reserved this time slot a few seconds ago. Adding a loading effect on the confirmation button to disable it after a single click and inform the user that the form submission is correctly being processed. Backport of: odoo/enterprise#58865 Task-3945177
This update corrects how debit note document types are assigned in the accounting system. Previously, the system was automatically setting a default document type for all debit notes, but this should only happen for companies operating in Peru. This fix ensures the correct behavior based on the company's location, preventing incorrect document type assignments in other regions.
Original PR description
Before this change we were always setting document type for the debit note by default, but this should only apply if from Peru LATAM 1198 Forward-Port-Of: odoo/enterprise#63099
This fix resolves an issue where text entered in a many-to-one field would be lost when creating a new related record through Studio. The problem occurred when adding many-to-one fields to custom models created in Studio. By properly configuring the name field option, user input is now preserved when creating and editing related records.
Original PR description
Steps to reproduce ================== - Create a new model with studio - Go to the contaxt form view - Add a new many2one field linked to the newly created model - Exit studio - Create a new contact - Type something in the many2one field - Click on Create an Edit => The name should be kept Cause of the issue ================== Studio models uses x_name as the _rec_name opw-3919262 Forward-Port-Of: odoo/enterprise#63362 Forward-Port-Of: odoo/enterprise#62424
This fix corrects an issue with the eco voucher file exported through the Monizze integration in the Belgian payroll system. A required column was missing from the export file, which has now been restored to ensure proper processing of eco voucher data.
Original PR description
This will fix the file exported for the eco voucher with Monizze. Task: 3895296
This update fixes error message handling in the Amazon sales integration when synchronizing picking operations. The improvement ensures that error messages are properly managed during the picking sync process, reducing confusion and improving the reliability of Amazon order fulfillment in Odoo.
This update removes an unnecessary work location column from the employee list view when the homeworking module is active. Since remote workers don't have a single physical work location, this column is now hidden to reduce clutter and improve the clarity of employee information displays.
Original PR description
Removed a work location column in the employee list view that is not relevant when the homeworking module is installed. Task-3933447 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix resolves a critical error that occurred when a livechat visitor without an account attempted to escalate from a chatbot to a human operator. Previously, the system would crash with an attribute error. After this fix, the fallback to a human operator now works smoothly, ensuring visitors can always reach support when needed.
Original PR description
Description of the issue/feature this PR addresses: Livechat is set up with a Chatbot with a fallback to an operator. When a visitor visits a website with the Livechat and the visitor is not connected to an account, when falling back to the operator, an error occurs : `AttributeError: 'discuss.channel' object has no attribute 'livechat_visitor_id'` Current behavior before PR: When a visitor visits a website with the Livechat and the visitor is not connected to an account, when falling back to the operator, an error occurs : `AttributeError: 'discuss.channel' object has no attribute 'livechat_visitor_id'` Desired behavior after PR is merged: The chatbot falls back to the human operator. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Documentation and clarification updates
A contributor has signed the Contributor License Agreement (CLA) required by Odoo. This is a legal compliance step that allows the contributor to submit code changes to the Odoo project. The signature has been recorded in the project's CLA documentation.
Original PR description
Description of the issue/feature this PR addresses: Sign CLA For https://github.com/odoo/enterprise/pull/62507 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
A Contributor License Agreement (CLA) has been added for kdmwangi, a contributor to the Odoo project. This is a standard legal document that ensures proper rights management for code contributions. This change enables kdmwangi to officially contribute to the Odoo codebase.