Friday, November 24, 2023
20 changes · 17.0
New functionality added to Odoo
This change introduces the initial structure for a new Estate module. It lays the groundwork for future real estate-related functionality, though no business process changes are described yet.
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
Enhancements to existing features
Demo restaurant tables now show a wider range of seating capacities. This makes sample data more useful for demonstrating appointment and restaurant reservation scenarios.
Original PR description
Purpose ======== Update demo data to better show what Appointment can do. Specification ============== Changing the capacity of some tables. Tables 1-4 => from 4 to 2. Tables 9-11 => from 4 to 6. Task-3496910
Resolved issues and error corrections
This update fixes a failing automated Point of Sale test scenario related to settling non-groupable orders. It improves validation reliability for future changes without changing day-to-day user behavior.
Original PR description
In this commit, we fix the last step of the PosSettleOrderNotGroupable tour which is deterministically failing in runbot. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Miscellaneous changes
- Since 6fac5cfb8d1cfd2b00c7ff30940aa770412ae571, the opening cash difference is not posted in the suspense account. This commit fixes that. - Removes the error preventing the deletion of cash difference journal entries. task-id: 3460173 Forward-Port-Of: odoo/odoo#134154
Original PR description
- Since 6fac5cfb8d1cfd2b00c7ff30940aa770412ae571, the opening cash difference is not posted in the suspense account. This commit fixes that. - Removes the error preventing the deletion of cash difference journal entries. task-id: 3460173 Forward-Port-Of: odoo/odoo#134154
Updated demonstration data for the restaurant appointment system to better showcase its capabilities. Changes include adjusting table capacities (smaller tables reduced from 4 to 2 seats, larger tables increased from 4 to 6 seats), reorganizing main floor table groupings, and improving table naming conventions for clarity. These updates help customers better understand how the appointment system works with different table configurations.
Original PR description
Purpose ======== Update demo data to better show what Appointment can do. Specification ============== 1). Changing the capacity of some tables -> Tables 1-4 => from 4 to 2. -> Tables 9-11 => from 4 to 6. 2). Main Floor Tables -> Linking all main floor tables to main floor table 1. 3). Changing the name of the Table 12 -> Table 12 (Patio) to 12-Patio (4). 4). Changing the resource name -> Table 3 (2) to Table 3 (🪑2) Technical ========== For the 3rd point, the eval was not given correctly so the name of the table changed from 12-Patio to Table 12 (Patio). Task-3496910
This fixes an issue where event track pages could fail to load if the live track feature was not installed. The templates now keep live-specific styling in the live module, so standard event pages remain reliable for users without that optional feature.
Original PR description
In the recent redesign of the `website_event` module(s) [1] a field was used in the templates of event_track that only exists if event_track_live is installed. The `t-att-class` argument is now overriden in `event_track_live` The `t-att-class` attribute is also lightened by moving most of it to `class` to ease the override. task-3597612 [1] 94c5bc3d152c80fdbb6798d9b4d28bf62740856b --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Plain text email previews no longer display the visible " " text when messages contain non-breaking spaces. This makes email previews cleaner and easier for users to read, without changing email content or workflows.
Original PR description
Stop rendering in plain text versions of emails Description of the issue/feature this PR addresses: Addresses Issue #143188 where is rendering in email previews Current behavior before PR: is rendering in email previews Desired behavior after PR is merged: replaced by textual space character --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes a broken translation helper in the Planning app by replacing a removed function with the supported one. It helps prevent errors related to translated text and keeps the Planning interface working as expected.
Original PR description
In this commit, we fix _lt with _t. Let's more informations on https://github.com/odoo/odoo/pull/124157
A date-sensitive automated test for appointment meeting cancellation was updated so it works consistently regardless of the current date. This helps maintain confidence in appointment features by preventing false test failures in ongoing development.
Original PR description
The test method would only work before 2023-11-23 We fix it using freeze_time, and fix the test so that it actually tests the 'active' state directly.
- Issue: When user add sub task then first field is focused. - Fixed: In this commit, we have made the title the default focus so that the user does not have to click manually and time will also be saved. - Steps - Install project app - Active Task Dependencies - Create task and add subtask task-3471102 Forward-Port-Of: odoo/odoo#142356 Forward-Port-Of: odoo/odoo#136483
Original PR description
- Issue:
When user add sub task then first field is focused.
- Fixed:
In this commit, we have made the title the default focus so that the user does not
have to click manually and time will also be saved.
- Steps
- Install project app
- Active Task Dependencies
- Create task and add subtask
task-3471102
Forward-Port-Of: odoo/odoo#142356
Forward-Port-Of: odoo/odoo#136483Before this commit, the payment button was part of the checkout/manage form widgets, which caused conflicts when other modules needed to enable/disable the button depending on custom conditions. After this commit, the payment button logic is extracted in a separate widget that handles its enabling after checking if all conditions are satisfied. Other modules can extend the widget and override `isButtonReady` to add custom logic. task-3568861 See also: - https://github.com/odoo/ent
Original PR description
Before this commit, the payment button was part of the checkout/manage form widgets, which caused conflicts when other modules needed to enable/disable the button depending on custom conditions. After this commit, the payment button logic is extracted in a separate widget that handles its enabling after checking if all conditions are satisfied. Other modules can extend the widget and override `isButtonReady` to add custom logic. task-3568861 See also: - https://github.com/odoo/enterprise/pull/49894 Forward-Port-Of: odoo/odoo#139556
To reproduce ============ having a special character in url like `à` (it's possible) try to print an invoice, a weird character is printed next to currency symbol Problem ======= Apparently the method responsible of converting from string to html analyzes the few first characters to determine the encoding, so having the base url in the beginning with its special character leads to wrong encoding. Solution ======== convert using html parser with unicode encoding opw-3415418 Fo
Original PR description
To reproduce ============ having a special character in url like `à` (it's possible) try to print an invoice, a weird character is printed next to currency symbol Problem ======= Apparently the method responsible of converting from string to html analyzes the few first characters to determine the encoding, so having the base url in the beginning with its special character leads to wrong encoding. Solution ======== convert using html parser with unicode encoding opw-3415418 Forward-Port-Of: odoo/odoo#142287
This error occurs when the user clicks multiple times on the `Generate demo data` button simultaneously. Steps to produce: - start the server without installing demo data. - Install point_of_sale module. - Go to point_of_sale > Delete all the products due to the visibility of `Generate demo data` button - Go to dashboard > Click on new session > Open a session - Rapidly click on the `Generate demo data` button. - Error will be generated. see the traceback: ``` SerializationFailure:
Original PR description
This error occurs when the user clicks multiple times on the `Generate demo data` button simultaneously. Steps to produce: - start the server without installing demo data. - Install point_of_sale…
This error occurs when the user clicks multiple times on the `Generate demo data` button simultaneously.
Steps to produce:
- start the server without installing demo data.
- Install point_of_sale module.
- Go to point_of_sale > Delete all the products due to the visibility of `Generate demo data` button
- Go to dashboard > Click on new session > Open a session
- Rapidly click on the `Generate demo data` button.
- Error will be generated.
see the traceback:
```
SerializationFailure: could not serialize access due to concurrent update
File "odoo/tools/convert.py", line 550, in _tag_root
f(rec)
File "odoo/tools/convert.py", line 451, in _tag_record
record = model._load_records([data], self.mode == 'update')
File "odoo/models.py", line 4704, in _load_records
imd._update_xmlids(imd_data_list, update)
File "odoo/addons/base/models/ir_model.py", line 2115, in _update_xmlids
self.env.cr.execute(query, [arg for row in sub_rows for arg in row])
File "odoo/sql_db.py", line 320, in execute
res = self._obj.execute(query, params)
ParseError: while parsing /home/odoo/src/odoo/saas-16.4/addons/point_of_sale/data/point_of_sale_onboarding.xml:3, somewhere inside
<record id="pos_category_furniture" model="pos.category">
<field name="name">Office furniture</field>
</record>
File "odoo/http.py", line 2134, in __call__
response = request._serve_db()
File "odoo/http.py", line 1710, in _serve_db
return service_model.retrying(self._serve_ir_http, self.env)
File "odoo/service/model.py", line 133, in retrying
result = func()
File "odoo/http.py", line 1737, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 1938, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "addons/website/models/ir_http.py", line 233, in _dispatch
response = super()._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 191, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 717, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/web/controllers/dataset.py", line 30, in call_kw
return self._call_kw(model, method, args, kwargs)
File "addons/web/controllers/dataset.py", line 26, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "odoo/api.py", line 461, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
File "odoo/api.py", line 448, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "addons/point_of_sale/models/pos_session.py", line 2142, in load_product_frontend
self.sudo()._load_onboarding_data()
File "addons/pos_restaurant/models/pos_session.py", line 58, in _load_onboarding_data
super()._load_onboarding_data()
File "addons/point_of_sale/models/pos_session.py", line 2137, in _load_onboarding_data
convert.convert_file(self.env, 'point_of_sale', 'data/point_of_sale_onboarding.xml', None, mode='init', kind='data')
File "odoo/tools/convert.py", line 613, in convert_file
convert_xml_import(env, module, fp, idref, mode, noupdate)
File "odoo/tools/convert.py", line 679, in convert_xml_import
obj.parse(doc.getroot())
File "odoo/tools/convert.py", line 599, in parse
self._tag_root(de)
File "odoo/tools/convert.py", line 563, in _tag_root
raise ParseError('while parsing %s:%s, somewhere inside\n%s' % (
```
To address this issue, we have changed the state of a button after the first click. While users can still see the button after clicking it once, the changed state of the button prevents the error from occurring.
sentry-4384327471
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#141284
Forward-Port-Of: odoo/odoo#131691Step to reproduce the issue: 1) Install l10n_eg and l10n_eg_edi_eta modules and select the company EG Company 2) Configure all required fields to post an Invoice with an Egyptian company (wrong credentials are ok since the issue can be triggered without really sending the e-invoice) 3) Create an invoice with an invoice line that has a quantity of 12 and a price unit of 12.8 with a 100% discount 4) Post the invoice 5) open the created json document in the 'EDI Documents' tab Result: Th
Original PR description
Step to reproduce the issue: 1) Install l10n_eg and l10n_eg_edi_eta modules and select the company EG Company 2) Configure all required fields to post an Invoice with an Egyptian company (wrong credentials are ok since the issue can be triggered without really sending the e-invoice) 3) Create an invoice with an invoice line that has a quantity of 12 and a price unit of 12.8 with a 100% discount 4) Post the invoice 5) open the created json document in the 'EDI Documents' tab Result: The 'salesTotal' field has a value of 153.60000000000002, causing the E-invoice rejection by the authorities Expected result: 153.6 opw-3569383 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#143337
Currently, a chat window is folded when hidden and the server is notified. This is incorrect and leads to useless rpc calls/undesirable fold state. A chat window is only hidden when space is lacking to display them all. Only a user interaction should be able to fold a chat window. Since folding the chat window when hidden is an implementation detail only used to show the chat window header in the hidden windows dropdown, this PR removes this behavior and adapt the hidden windows menu to
Original PR description
Currently, a chat window is folded when hidden and the server is notified. This is incorrect and leads to useless rpc calls/undesirable fold state. A chat window is only hidden when space is lacking…
Currently, a chat window is folded when hidden and the server is notified. This is incorrect and leads to useless rpc calls/undesirable fold state. A chat window is only hidden when space is lacking to display them all. Only a user interaction should be able to fold a chat window. Since folding the chat window when hidden is an implementation detail only used to show the chat window header in the hidden windows dropdown, this PR removes this behavior and adapt the hidden windows menu to achieve the same result. Steps to reproduce the issue: - Go to Odoo, resize your browser so that it can only fit 2 chat windows. - Open two chat windows, server is notified twice: so far so good. - Open another chat window: server is notified twice: this is not correct, the server should only be notified of the newly opened chat window. - Reload the page: the server is notified once for each window not fitting in the screen, this is incorrect as well. task-3600480 Forward-Port-Of: odoo/odoo#142477
When an Italian e-invoice is generated, it will include DDT sequence of DDT stock moves. If those stock moves have picking type different of 'outgoing' (eg: Dropshipping), the picking type does not have DDT sequence leading to a traceback. Now we only consider DDT stock moves if they have the outgoing picking type. Steps to reproduce: - Create local database - Install accounting, purchase, l10n_it_stock_ddt - Switch to Italian company - Activate dropshipping in settings - Put Fattura
Original PR description
When an Italian e-invoice is generated, it will include DDT sequence of DDT stock moves. If those stock moves have picking type different of 'outgoing' (eg: Dropshipping), the picking type does not have DDT sequence leading to a traceback.
Now we only consider DDT stock moves if they have the outgoing picking type.
Steps to reproduce:
- Create local database
- Install accounting, purchase, l10n_it_stock_ddt
- Switch to Italian company
- Activate dropshipping in settings
- Put Fattura Elettronica mode in "test" in settings ("demo" mode should be fine to)
- Create a a storable dropship product
- Create a sale order with dropship product and confirm it
- Click on purchase smart button and confirm purchase
- Validate to dropship transfer
- Create invoice from SO and confirm it (should get the DDT smart button)
- Click "Process now" on top of invoice => Traceback
opw-3544775
Forward-Port-Of: odoo/odoo#141802Steps: - Install `website_sale` - Enable demo payment provider - Set a positive delivery fixed price - set a discount with conditional rules `If minimum 1 item(s) bought` and Rewards: `Free shipping` - Go to /shop, add a product and checkout - Error "The cart has been updated, Please refresh the page" Because amount in kwargs in `shop_payment_transaction` was compared to `amount_total`to check the order but `amount_total` doesn't contains delivery cost unlike `am
Original PR description
Steps:
- Install `website_sale`
- Enable demo payment provider
- Set a positive delivery fixed price
- set a discount with conditional rules `If minimum 1 item(s) bought` and Rewards: `Free shipping`
- Go to /shop, add a product and checkout
- Error "The cart has been updated, Please refresh the page"
Because amount in kwargs in `shop_payment_transaction` was compared to `amount_total`to check the order but `amount_total` doesn't contains delivery cost unlike `amount`
Forward-Port-Of: odoo/odoo#143108[FIX] crm : Individual contact address auto population Steps to reproduce: 1- Install CRM app 2- Go to pipeline and create a new lead 3- Write a name for contact and click on 'Create and edit...' 4- Choose 'individual' as contact type and select the company related to this individual 5- the address will remain empty and will not be auto populated Current behavior before PR: The address is not auto populating when creating a new individual contact through a new lead. This happens
Original PR description
[FIX] crm : Individual contact address auto population Steps to reproduce: 1- Install CRM app 2- Go to pipeline and create a new lead 3- Write a name for contact and click on 'Create and edit...' 4- Choose 'individual' as contact type and select the company related to this individual 5- the address will remain empty and will not be auto populated Current behavior before PR: The address is not auto populating when creating a new individual contact through a new lead. This happens because when you choose the contact type to individual the address type is not chosen by default so it is not populating any of the addresses Desired behavior after PR is merged: The address is now auto populating as I am passing to the form a default value for the address type which is 'Contact' which is the default value when you create a contact from Contacts app opw-3569833 Forward-Port-Of: odoo/odoo#141681
The toolbar with zoom controls in the PDF viewer used in mrp to show worksheets is no longer shown since [1]. It was added back again in v17 with [2]. This fix also adds it back for v16. opw-3593332 opw-3509579 [1] https://github.com/odoo/enterprise/pull/23032/commits/92bae50208a20ab60832a29ff6a4a0a45c79d617 [2] https://github.com/odoo/enterprise/pull/48379/commits/924c3eae12b4fa23137d525c2f0c6f5a857dba3b Forward-Port-Of: odoo/enterprise#51355
Original PR description
The toolbar with zoom controls in the PDF viewer used in mrp to show worksheets is no longer shown since [1]. It was added back again in v17 with [2]. This fix also adds it back for v16. opw-3593332 opw-3509579 [1] https://github.com/odoo/enterprise/pull/23032/commits/92bae50208a20ab60832a29ff6a4a0a45c79d617 [2] https://github.com/odoo/enterprise/pull/48379/commits/924c3eae12b4fa23137d525c2f0c6f5a857dba3b Forward-Port-Of: odoo/enterprise#51355
### Version saas-16.2 ### Steps to reproduce: 1. Open subscription application 2. Select plans from the configuration menu. 3. Select record 4. Click **PRICES** of the product in the lines tab. ### Issue: Traceback has been occured and it works the same as the product's Time-based pricing. ### Cause: Opening the tree view, the field product_variant_ids checks for the product to hide the column, that is not found there. ### Solution: Resolves the issue of wrong implementatio
Original PR description
### Version saas-16.2 ### Steps to reproduce: 1. Open subscription application 2. Select plans from the configuration menu. 3. Select record 4. Click **PRICES** of the product in the lines tab. ### Issue: Traceback has been occured and it works the same as the product's Time-based pricing. ### Cause: Opening the tree view, the field product_variant_ids checks for the product to hide the column, that is not found there. ### Solution: Resolves the issue of wrong implementation of hiding of column. By checking context display_variant_field on column_invisible attribute that returns true if product variant is more than 2 otherwise false. (fixed point-5) task-3501381 Forward-Port-Of: odoo/enterprise#48090