Daily updates from Odoo
Friday, August 9, 2024
22 changes · master
Enhancements to existing features
Helpdesk teams now include an easier link to the email alias domain settings, helping administrators find and manage incoming email configuration more quickly. Some older default search behavior was also removed from French Intrastat and Romanian SAF-T reporting areas, simplifying those views without changing core business processes.
The maintenance screens linked to manufacturing have been updated to use newer, simpler card layouts. This should make the interface easier to maintain and keep it aligned with current Odoo design standards, with minimal change for everyday users.
Original PR description
In this commit we have simplified the kanban arch for the mrp_maintenance module the goal is to simplify them,make them easier to read and use bootstrap utility classnames. - Previously, we used kanban-box, but now we are using kanban-card instead. - Deprecated oe_kanban_global_click and oe_kanban_global_click_edit. - More use of <field/> tags - Removed the oe_kanban_colorpicker class and replaced it with the kanban_color_picker widget. - Changed type='edit' to type='open' to open records. since version 16, records always open in edit mode by default. - kanban_image from rendering context, is deprecated so we use <field name=... widget=image/> instead - kanban_color, kanban_getcolor and kanban_getcolorname are deprecated use new attribute highlight_color=color_field_name on root node - oe_kanban_colorpicker is deprecated, use kanban_color_picker widget instead Task-3992107
Sales-related modules were updated to match the new way product descriptions appear on sales order lines. This keeps automated checks and demo data current, helping ensure smoother sales, rental, subscription, and helpdesk workflows.
Original PR description
* adapt tours to the new product description widget used on Sale Order Lines * use the new tour utils to simplify tours going through sale app or views * clean demo data to remove the values that are the default ones (leftover from previous version, but good to merge anyway). See also odoo/odoo#170610
This update changes existing links in Data Cleaning and EasyPost delivery flows to use a cleaner, more human-readable format. This makes URLs easier for users to understand, share, and recognize while preserving the same functionality.
Original PR description
*= delivery_easypost This commit modifies existing URLs to the new format so that the URL's become more human readable. Task-3820230
Resolved issues and error corrections
This fix ensures restaurant orders reopen correctly after using the booking flow. It prevents staff from seeing a blank screen when returning to a selected table, keeping point-of-sale operations smooth.
Original PR description
Screens are saved on order so that when an order is reselected, the order is rendered on its last recorded screen. In this commit, we exclude the ActionScreen since it doesn't make sense (for now) for it to be a screen for the current order. Steps to reproduce: 1. Install pos_restaurant_appointment. 2. Open a session for the Restaurant config. 3. Open an order by clicking a table. 4. Click Booking button from the navbar. 5. Click the table selector and select the table you selected in step 2. 6. ISSUE: The screen is blank. Community PR: https://github.com/odoo/odoo/pull/176278
An automated website sale test was adjusted to match the updated badge styling used on wishlist elements. This helps keep quality checks reliable after recent visual design changes, without changing the customer-facing shopping experience.
Original PR description
- Requires : https://github.com/odoo/odoo/pull/176254 This commit aims to adapt the test to find the right DOM element. As the front-end badges recently got their design reviewed, we need to set some badges to `bg-*` (aka old badge design) instead of `text-bg-*` depending on the context. As we need to apply that `bg-primary` on the wishlist badge, the test has to be adapted. task-4106164
This fix makes the online bank synchronization connector check proxy mode values exactly as expected, using lowercase-only matching. It helps prevent incorrectly formatted proxy mode values from being accepted, reducing the chance of synchronization setup issues.
Original PR description
The `i` modifier is not needed in the regular expression, we need to check if proxy_mode matches the regex in a case-sensitive way. Task ID: 4067083
This fix ensures more text shown in Odoo Studio's button configuration can be translated correctly. It helps users working in different languages see consistent, localized labels instead of untranslated English text.
Original PR description
add .translate to untranslated props. This commit fixes the props that pass strings to use `.translate` introduced in: https://github.com/odoo/odoo/pull/174697 Community: https://github.com/odoo/odoo/pull/175909
Code cleanup and technical improvements
This change tightens the internal validation rules used by guided tours, making configuration issues easier to detect and reducing unused options. It affects automated onboarding and walkthrough flows in Expense and Subscriptions, with no expected direct change for everyday users.
Original PR description
For Tour : We specify the validation of the rainbowManMessage and fadeout keys of a tour. We also remove the rainbowMan key which is definitely not very useful. For Step : We precise the validation of tootipPosition and timeout. task~3974087 https://github.com/odoo/odoo/pull/176281
Miscellaneous changes
Before this commit: Some softwares do not follow the specification. Our users cannot import the generated XAF file in other softwares because the docRef length is more than 35 characters. After this commit: We allow our users to create a system parameter to change the docRef length if they need to import the XAF file in another software. opw-3792115 opw-3829459 Forward-Port-Of: odoo/enterprise#68174 Forward-Port-Of: odoo/enterprise#66551
Original PR description
Before this commit: Some softwares do not follow the specification. Our users cannot import the generated XAF file in other softwares because the docRef length is more than 35 characters. After this commit: We allow our users to create a system parameter to change the docRef length if they need to import the XAF file in another software. opw-3792115 opw-3829459 Forward-Port-Of: odoo/enterprise#68174 Forward-Port-Of: odoo/enterprise#66551
In AttendanceGanttModel, open ended records have their dateStopField set to the current moment. So, depending on the way time passes, the gantt pills can have different ending columns. In the hr_attendance_gantt tests, we use the hoot helper runAllTimers that accelerates time based on the registered timeouts. Since https://github.com/odoo/odoo/pull/175422, the service imStatusService registers timeouts with delay of 30 minutes. So runAllTimers often needs to advance time by steps of 30 min
Original PR description
In AttendanceGanttModel, open ended records have their dateStopField set to the current moment. So, depending on the way time passes, the gantt pills can have different ending columns. In the…
In AttendanceGanttModel, open ended records have their dateStopField set to the current moment. So, depending on the way time passes, the gantt pills can have different ending columns. In the hr_attendance_gantt tests, we use the hoot helper runAllTimers that accelerates time based on the registered timeouts. Since https://github.com/odoo/odoo/pull/175422, the service imStatusService registers timeouts with delay of 30 minutes. So runAllTimers often needs to advance time by steps of 30 minutes, sometimes more nondeterministically. This means that sometimes time has to advance more than 1 hours and this make some assertions on the pill ending columns fail. Here similarly to what is done in https://github.com/odoo/enterprise/pull/67088, we remove some services/main components only used by mail, so that imStatusService is no longer there and does no longer interfer with ours tests. We also take the oportunity to replace some calls to selectGanttRange by some clicks on the previous/next buttons. In that way, the intention behind the tests is clearer and time has to advance a bit less. This also corrects the wrong fix https://github.com/odoo/enterprise/pull/68033. Build 66645450 Forward-Port-Of: odoo/enterprise#68143
Steps to reproduce: 1. Create a product and add stock in the following location: WH/Stock/Shelf 2 2. Create a field service task and add this product 3. validate the task, the transfer will happen from WH/Stock Bug: If you validate the Sale Order, then the transfer, then the field service task, then transfer will happen from WH/Stock/Shelf 2 (as expected) Fix: apply same logic as for serial tracked products opw-3835698 Forward-Port-Of: odoo/enterprise#67948 Forward-Port-Of: odoo/e
Original PR description
Steps to reproduce: 1. Create a product and add stock in the following location: WH/Stock/Shelf 2 2. Create a field service task and add this product 3. validate the task, the transfer will happen from WH/Stock Bug: If you validate the Sale Order, then the transfer, then the field service task, then transfer will happen from WH/Stock/Shelf 2 (as expected) Fix: apply same logic as for serial tracked products opw-3835698 Forward-Port-Of: odoo/enterprise#67948 Forward-Port-Of: odoo/enterprise#65316
### Steps to reproduce * install python 3.12 * install odoo's python required libraries (requirements.txt) * install `l10n_ar_edi` * switch to an Argentinean company * in the Invoicing settings, under the AFIP Web Services section, click 'Test Connections' You should be met with the following error: `AttributeError: module 'lib' has no attribute 'PKCS7_sign'` ### Cause `PKCS7_sign()` was removed in recent version of `pyopenssl`. opw-4085411 opw-4085389 Forward-Port-Of: odoo/ent
Original PR description
### Steps to reproduce * install python 3.12 * install odoo's python required libraries (requirements.txt) * install `l10n_ar_edi` * switch to an Argentinean company * in the Invoicing settings, under the AFIP Web Services section, click 'Test Connections' You should be met with the following error: `AttributeError: module 'lib' has no attribute 'PKCS7_sign'` ### Cause `PKCS7_sign()` was removed in recent version of `pyopenssl`. opw-4085411 opw-4085389 Forward-Port-Of: odoo/enterprise#68024
This commit refactors the generation of pretty printed raw xml string to a helper function in `l10n_mx_edi.document` for `l10n_mx_edi` and `l10n_mx_reports`. It modifies the xml declaration to be a custom generated string, which only difference from the normal one is that it uses double quoted string rather than single quoted string in it. This way, the top file of the generated xml string will look like this: ```xml <?xml version="1.0" encoding="UTF-8"?> ``` This ensures as mu
Original PR description
This commit refactors the generation of pretty printed raw xml string to a helper function in `l10n_mx_edi.document` for `l10n_mx_edi` and `l10n_mx_reports`. It modifies the xml declaration to be a custom generated string, which only difference from the normal one is that it uses double quoted string rather than single quoted string in it. This way, the top file of the generated xml string will look like this: ```xml <?xml version="1.0" encoding="UTF-8"?> ``` This ensures as much support as possible from third party vendors because some do not consider single quoted string to be valid (even though it should be). related opw-4085399 task-id: no task Forward-Port-Of: odoo/enterprise#67963
This traceback arises when the user adds an existing attendee email to a guest email while adding a guest. To reproduce this traceback: 1) Install `website_appointment` 2) Choose any `appointment` from the website 3) Click on `Appointment Type` in the right corner and on the `options page` enable `Allow Guests` 4) Get back to the website and select one user, date & time 5) Now give Email value as email in Guests 6) Confirm Appointment Error:- ``` ValueError: Expected single
Original PR description
This traceback arises when the user adds an existing attendee email to a guest email while adding a guest. To reproduce this traceback: 1) Install `website_appointment` 2) Choose any `appointment`…
This traceback arises when the user adds an existing attendee email to a guest email while adding a guest. To reproduce this traceback: 1) Install `website_appointment` 2) Choose any `appointment` from the website 3) Click on `Appointment Type` in the right corner and on the `options page` enable `Allow Guests` 4) Get back to the website and select one user, date & time 5) Now give Email value as email in Guests 6) Confirm Appointment Error:- ``` ValueError: Expected singleton: calendar.attendee(4762, 4763) ``` When the user adds a guest with the current user email, multiple attendees will be created with the same partner ID in a calendar event (see below) https://github.com/odoo/enterprise/blob/1aff50d91fad45221377591b80ca8b1df2ecb593/appointment/models/appointment_type.py#L944-L955 This leads to the above traceback from here https://github.com/odoo/enterprise/blob/1aff50d91fad45221377591b80ca8b1df2ecb593/appointment/controllers/calendar.py#L103 This commit will resolve the issue by filtering out the existing attendees while creating a new attendee from the guest email. sentry-5646921453 Forward-Port-Of: odoo/enterprise#67516
During the development of the new annotation system, some comments were left on the side to implement the annotation systems as fast as possible, this PR takes care of two of those comments. Each in a separate commit. task-4045835 Forward-Port-Of: odoo/enterprise#67112
Original PR description
During the development of the new annotation system, some comments were left on the side to implement the annotation systems as fast as possible, this PR takes care of two of those comments. Each in a separate commit. task-4045835 Forward-Port-Of: odoo/enterprise#67112
At the moment, if any of the taxes for which l10n_ke_edi_oscu adds tax types doesn't exist, the upgrade to 17.0 fails, because l10n_ke_edi_oscu is set to auto_install. We don't want this upgrade to fail, especially given that this might affect customers who have no intention of using l10n_ke_edi_oscu. Solution: we simply don't set the tax type on those taxes which don't exist. If the user wants to use l10n_ke_edi_oscu properly, they should re-load the taxes via the Reload button in the Acc
Original PR description
At the moment, if any of the taxes for which l10n_ke_edi_oscu adds tax types doesn't exist, the upgrade to 17.0 fails, because l10n_ke_edi_oscu is set to auto_install. We don't want this upgrade to fail, especially given that this might affect customers who have no intention of using l10n_ke_edi_oscu. Solution: we simply don't set the tax type on those taxes which don't exist. If the user wants to use l10n_ke_edi_oscu properly, they should re-load the taxes via the Reload button in the Accounting settings. Forward-Port-Of: odoo/enterprise#67180
Currently, an error is generated when the user tries to add a new 'One2Many' field in the model. Steps to produce: 1. Create a new app and new model with studio 2. Try to add the 'One2Many' field in view >>> error occurs Stack Trace: ``` KeyError: 'node' File "odoo/http.py", line 2373, in __call__ response = request._serve_db() File "odoo/http.py", line 1903, in _serve_db return self._transactioning( File "odoo/http.py", line 1966, in _transactioning return serv
Original PR description
Currently, an error is generated when the user tries to add a new 'One2Many' field in the model. Steps to produce: 1. Create a new app and new model with studio 2. Try to add the 'One2Many' field in…
Currently, an error is generated when the user tries to add a new 'One2Many' field in the model.
Steps to produce:
1. Create a new app and new model with studio
2. Try to add the 'One2Many' field in view >>> error occurs
Stack Trace:
```
KeyError: 'node'
File "odoo/http.py", line 2373, in __call__
response = request._serve_db()
File "odoo/http.py", line 1903, in _serve_db
return self._transactioning(
File "odoo/http.py", line 1966, in _transactioning
return service_model.retrying(func, env=self.env)
File "odoo/service/model.py", line 134, in retrying
result = func()
File "odoo/http.py", line 1933, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 2177, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 223, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 754, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "home/odoo/src/enterprise/saas-17.4/web_studio/controllers/main.py", line 692, in edit_view
getattr(self, '_operation_%s' % (op['type']))(arch, op, model)
File "home/odoo/src/enterprise/saas-17.4/web_studio/controllers/main.py", line 905, in _operation_add
node = operation['node']
```
This is because when we try to add 'One2Many' in view, there is no 'one2many' field available in the model, so it tries to add a new field without a node.
This commit will fix the above issue by preventing adding structure when there is no node (_operation).
With the recent changes with https://github.com/odoo/enterprise/commit/e59cf81bd4b18bdbc3da640f9a079209c06626a4, code was refactored for ading field but not added condition for an empty node .
sentry-5656743440
Forward-Port-Of: odoo/enterprise#67692Asia/Calcutta was removed in ubuntu Noble in favor of Asia/Kolkata This is only visible in the pure noble build and not in the standard build. The assumption is that since requirements are installed as root, the tz is added when installing the pip package. Since we will soon install requirements as odoo on runbot in the docker image, this should will start to break in standard builds too. Forward-Port-Of: odoo/enterprise#68150
Original PR description
Asia/Calcutta was removed in ubuntu Noble in favor of Asia/Kolkata This is only visible in the pure noble build and not in the standard build. The assumption is that since requirements are installed as root, the tz is added when installing the pip package. Since we will soon install requirements as odoo on runbot in the docker image, this should will start to break in standard builds too. Forward-Port-Of: odoo/enterprise#68150
PERIODS_PER_YEAR is using "yearly" but hr_contract uses "anually" and since this model uses the hr_contract, we need to keep the same dictionary keys. In customer database the installation of the module is failing because cannot find key "anually". The issue would also happen if you just set a yearly wage opw-4083058 Forward-Port-Of: odoo/enterprise#68127 Forward-Port-Of: odoo/enterprise#68036
Original PR description
PERIODS_PER_YEAR is using "yearly" but hr_contract uses "anually" and since this model uses the hr_contract, we need to keep the same dictionary keys. In customer database the installation of the module is failing because cannot find key "anually". The issue would also happen if you just set a yearly wage opw-4083058 Forward-Port-Of: odoo/enterprise#68127 Forward-Port-Of: odoo/enterprise#68036
Overrides the generic xlsx export button on the intrastat report for Denmark. When pressing the button, it now generates the official documents that can then be uploaded on the official website "Statistics Denmark" for intrastat reporting. Depending on the filter 'intrastat type', the following use cases are possible: Intratat type filter | Document generated ----------------------------------------------- arrivals | official xlsx for arrivals dispatches |
Original PR description
Overrides the generic xlsx export button on the intrastat report for Denmark. When pressing the button, it now generates the official documents that can then be uploaded on the official website "Statistics Denmark" for intrastat reporting. Depending on the filter 'intrastat type', the following use cases are possible: Intratat type filter | Document generated ----------------------------------------------- arrivals | official xlsx for arrivals dispatches | official xlsx for dispatches none or both | zip file containing both xlsx The xlsx files that are generated follow the official format, which can be found at this address in the file examples 'Intrastat eksport/import Excel Line' https://www.dst.dk/en/Indberet/hjaelp-til-indberetning/om-idep-web/intrastat task-3976189 Forward-Port-Of: odoo/enterprise#68079 Forward-Port-Of: odoo/enterprise#65412
This commit aims to move the context manager '_get_edi_creation()' from account.move to the import methods inside edi's such as mx_edi, ke_edi because moving it to account_move method: '_extend_with_attachments' was causing issue to the importation of bills from account_edi_ubl_cii. related: https://github.com/odoo/odoo/pull/173843 Forward-Port-Of: odoo/enterprise#67900 Forward-Port-Of: odoo/enterprise#67002
Original PR description
This commit aims to move the context manager '_get_edi_creation()' from account.move to the import methods inside edi's such as mx_edi, ke_edi because moving it to account_move method: '_extend_with_attachments' was causing issue to the importation of bills from account_edi_ubl_cii. related: https://github.com/odoo/odoo/pull/173843 Forward-Port-Of: odoo/enterprise#67900 Forward-Port-Of: odoo/enterprise#67002