Monday, November 18, 2024
31 changes · saas-17.4
Resolved issues and error corrections
Non-admin users can now leave group chats from the Discuss sidebar without encountering an access error. This improves the reliability of everyday chat management and prevents disruption for regular users.
Original PR description
**Current behavior before PR:** When a user leaves a group chat from the Discuss sidebar, an `AccessError` occurs because `thread.delete()` is not called, allowing `thread.markAsFetched()` to run even though the user is no longer a member. **Desired behavior after PR is merged:** This commit resolves the issue by ensuring that no access error occurs when a non-admin user leaves a group chat. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
DIN5008 sales documents now display dates using the recipient or user's language and locale settings. This prevents quotations sent by email from showing dates in a fixed format that may not match customer expectations.
Original PR description
Change field calling convention to support dynamic localization and language formatting. Currently, all fields are called with `t-out` instead of `t-field`, making them non-language or locale-sensitive, which results in a uniform format regardless of user preferences. Steps to produce: 1: installed l10n_din5008_sale 2: create a Quotation 3: Send it by email 4: Select DIN5008 in the template selector opw-4189869
Fleet now keeps a history of changes to key vehicle cost fields and serial numbers. This helps teams see who changed a vehicle's value or cost-related information and when, improving accountability and auditability.
Original PR description
We've added tracking on some fields that are used to compute the cost of cars and also the serial number to know if it has been manually changed. When the value or the cost of the car change, we want to know who modified it and when it has been done. TASK-ID: 4306184 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents an error that could occur when changing app settings, such as uninstalling a module from the settings screen. It makes the process more reliable by using the standard module handling flow instead of relying on cached company information that may be out of date.
Original PR description
This commit uses the res.company env to check the value of the sign_invoice field instead of checking it directly through the related field. When uninstalling a module through res.config settings (i.e. unchecking the Partner Autocomplete box), this line will thrown an error if the uninstalled module had any fields on res.company. When using the related field, it tries to access a cached copy of the res.company record with field values that may have been modified, as opposed to browsing for the record directly which will be properly updated. Task-ID: 4107361
Company car value and cost-related fields now keep a history of manual changes. This helps payroll and fleet teams see who changed these amounts and when, improving traceability for car cost calculations.
Original PR description
We've added tracking on some fields that are used to compute the cost of cars to know if it has been manually changed. When the value or the cost of the car change, we want to know who modified it and when it has been done. TASK-ID: 4306184
Miscellaneous changes
Before this commit, a rtcSession was required to display the connection state. Which meant that the receiving end of a peer-to-peer offer was not displaying the connection state until the offer was received, which was hiding early connection issues (pre-offer) like missing bus messages. Forward-Port-Of: odoo/odoo#186788
Original PR description
Before this commit, a rtcSession was required to display the connection state. Which meant that the receiving end of a peer-to-peer offer was not displaying the connection state until the offer was received, which was hiding early connection issues (pre-offer) like missing bus messages. Forward-Port-Of: odoo/odoo#186788
See https://discord.com/channels/678381219515465750/687338482598674454/1308011546370244628 Forward-Port-Of: odoo/odoo#187545
Original PR description
See https://discord.com/channels/678381219515465750/687338482598674454/1308011546370244628 Forward-Port-Of: odoo/odoo#187545
Creating new customers inside a pos session without all fields filled, in the backend those fields would be marked as set Steps to reproduce: ------------------- * Create a new customer in the shop and only fill out its name * In the backend, go in the **Contact** App * Create a filter: Tax Id is not set > Observation: The customer just created does not appear in that filter. It is considered as having a tax id (vat) set. Why the fix: ------------ When we take a look at the record
Original PR description
Creating new customers inside a pos session without all fields filled, in the backend those fields would be marked as set Steps to reproduce: ------------------- * Create a new customer in the shop and only fill out its name * In the backend, go in the **Contact** App * Create a filter: Tax Id is not set > Observation: The customer just created does not appear in that filter. It is considered as having a tax id (vat) set. Why the fix: ------------ When we take a look at the record raw data the vat is set to `""` which is considered as set. Comparing this with a contact created from the contact app, the only fields that are set to `""` are the computed fields relying on data which is set to false. Everything else is just set to false. opw-4276003 Forward-Port-Of: odoo/odoo#187532 Forward-Port-Of: odoo/odoo#186883
The issue: Before this commit, the product was intended to be set as 'invoice on order', but this wasn't applied. The status was overridden due to the '_compute_invoice_policy' function override in the 'l10n_ke_edi_oscu_stock' module, which caused the test to fail on runbot when this module is installed. The fix: Put the product to 'invoice on order' before creating the sale order runbot-70731 Forward-Port-Of: odoo/odoo#187280
Original PR description
The issue: Before this commit, the product was intended to be set as 'invoice on order', but this wasn't applied. The status was overridden due to the '_compute_invoice_policy' function override in the 'l10n_ke_edi_oscu_stock' module, which caused the test to fail on runbot when this module is installed. The fix: Put the product to 'invoice on order' before creating the sale order runbot-70731 Forward-Port-Of: odoo/odoo#187280
Steps to reproduce: Install the app l10n_de and switch to a German company Create an invoice Send & Print the Invoice with XRechnung PDF and XML versions are stored as attachments in the record (Chatter). Try to delete them form the chatter. When deleting them, the unlink function only removes the link to account.move fields and saves the attachment with a new name: "document detached by user on date". This works fine for the PDF version but not for XML one. This is because `ir_attachmen
Original PR description
Steps to reproduce: Install the app l10n_de and switch to a German company Create an invoice Send & Print the Invoice with XRechnung PDF and XML versions are stored as attachments in the record (Chatter). Try to delete them form the chatter. When deleting them, the unlink function only removes the link to account.move fields and saves the attachment with a new name: "document detached by user on date". This works fine for the PDF version but not for XML one. This is because `ir_attachment.res_field` is set to `ubl_cii_xml_file` for XML version of the attachment, but when filtering to detach them the filter looks for `ir_attachment.res_field` that are set to `ubl_cii_xml_id`. opw-4273836 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#186603
### Issue: - When picking up a SO in POS, the discount on products sold with a non groupable UOM disappears. ### Steps to reproduce: - Create a SO in the sales app. - Include a product that has a UOM of which the uom category is not grouped in POS (g for example). - Add a discount to the product. - Pick up the order in POS. - Notice that the discount is not applied. ### Solution: - In `_onClickSaleOrder` I set the discount on the `splitted_line` before adding it to the orderline.
Original PR description
### Issue: - When picking up a SO in POS, the discount on products sold with a non groupable UOM disappears. ### Steps to reproduce: - Create a SO in the sales app. - Include a product that has a UOM of which the uom category is not grouped in POS (g for example). - Add a discount to the product. - Pick up the order in POS. - Notice that the discount is not applied. ### Solution: - In `_onClickSaleOrder` I set the discount on the `splitted_line` before adding it to the orderline. opw-4133659 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#185508 Forward-Port-Of: odoo/odoo#185109
Steps to reproduce: - Project app > Any project > ':' Menu > Burndown Chart - Add any custom filter > Click Add - Sticky Note 'Domain is invalid. Please corect it' The burndown chart view is dependent on groupby argument 'date', if you try to remove the groupby block from the search bar an error message will appear to stop you. This works properly when passing through `web_read_group` but here we take a slightly different path. When adding a custom domain to the search bar, we validate
Original PR description
Steps to reproduce: - Project app > Any project > ':' Menu > Burndown Chart - Add any custom filter > Click Add - Sticky Note 'Domain is invalid. Please corect it' The burndown chart view is…
Steps to reproduce: - Project app > Any project > ':' Menu > Burndown Chart - Add any custom filter > Click Add - Sticky Note 'Domain is invalid. Please corect it' The burndown chart view is dependent on groupby argument 'date', if you try to remove the groupby block from the search bar an error message will appear to stop you. This works properly when passing through `web_read_group` but here we take a slightly different path. When adding a custom domain to the search bar, we validate that domain by simulating an SQL query using said domain. This request is made independantly of `web_read_group` since it's not intended to be displayed, hence why we don't have the groupby argument. This causes the query building process to fail, so a default value is needed to restore the flow. Since we only want to validate the domain it does not matter what we put in so I used the default search value. opw-4300254 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#186402
Before this commit, a user was able to double click on check-in/check-out. To avoid that the pop-up will be automatically closed when the button will be clicked. task-4316077 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#186565
Original PR description
Before this commit, a user was able to double click on check-in/check-out. To avoid that the pop-up will be automatically closed when the button will be clicked. task-4316077 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#186565
Problem: When creating a new e-commerce category, the breadcrumb displays "Unnamed" instead of the actual category name. This happens because the `parents_and_self` field is not recomputed when `parent_path` changes, despite the former depending on the latter. Solution: Ensure that `parents_and_self` is recomputed whenever `parent_path` is updated, so that the correct name is reflected in the breadcrumb. Steps to reproduce: - Open the form to create a new e-commerce category. - After s
Original PR description
Problem: When creating a new e-commerce category, the breadcrumb displays "Unnamed" instead of the actual category name. This happens because the `parents_and_self` field is not recomputed when `parent_path` changes, despite the former depending on the latter. Solution: Ensure that `parents_and_self` is recomputed whenever `parent_path` is updated, so that the correct name is reflected in the breadcrumb. Steps to reproduce: - Open the form to create a new e-commerce category. - After saving, the breadcrumb displays "Unnamed" instead of the actual category name. opw-4267144 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#186929 Forward-Port-Of: odoo/odoo#184423
Updated the regex of the youtube videos to accept some of the latest links as shorts and lives, following the same behavior as in web_editor. Specifically the links generated using the share button. Steps to reproduce: 1. Install eLearning and create a course. 2. Add a new content as video. 3. Take the Youtube livestream url from share > copy. 4. Use this link for the video slide in the course. opw-4278811 I confirm I have signed the CLA and read the PR guidelines at www.odoo.co
Original PR description
Updated the regex of the youtube videos to accept some of the latest links as shorts and lives, following the same behavior as in web_editor. Specifically the links generated using the share button. Steps to reproduce: 1. Install eLearning and create a course. 2. Add a new content as video. 3. Take the Youtube livestream url from share > copy. 4. Use this link for the video slide in the course. opw-4278811 I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#185518
As so_reference_type can be left empty on the payment.provider, we need to handle the case in the back end and effectively allow an empty payment reference. With no payment reference defined on the sale.order (field reference), we have the possibility to let the invoice define the payment reference itself (field payment_reference) which allows an easier reconciliation of payments and invoices. opw-4282903 Forward-Port-Of: odoo/odoo#187205
Original PR description
As so_reference_type can be left empty on the payment.provider, we need to handle the case in the back end and effectively allow an empty payment reference. With no payment reference defined on the sale.order (field reference), we have the possibility to let the invoice define the payment reference itself (field payment_reference) which allows an easier reconciliation of payments and invoices. opw-4282903 Forward-Port-Of: odoo/odoo#187205
Versions -------- - 16.0+ Steps (17.0+) ------------- 1. Create a Sale Order for a new contact without phone number; 2. disable online signature; 3. add a deliverable product to the SO; 4. hit "Send by Email"; 5. open the sent mail (e.g. via Mailhog); 6. copy the payment link; 7. open in Safari on iOS; 8. pay the sales order. Issue ----- > ``` >TypeError: Attempted to assign to readonly property. > extractFilteredSchemaValuesFromMicroData@https... > extractSchemaValuesF
Original PR description
Versions -------- - 16.0+ Steps (17.0+) ------------- 1. Create a Sale Order for a new contact without phone number; 2. disable online signature; 3. add a deliverable product to the SO; 4. hit "Send…
Versions -------- - 16.0+ Steps (17.0+) ------------- 1. Create a Sale Order for a new contact without phone number; 2. disable online signature; 3. add a deliverable product to the SO; 4. hit "Send by Email"; 5. open the sent mail (e.g. via Mailhog); 6. copy the payment link; 7. open in Safari on iOS; 8. pay the sales order. Issue ----- > ``` >TypeError: Attempted to assign to readonly property. > extractFilteredSchemaValuesFromMicroData@https... > extractSchemaValuesFromSchemaOrg@https... > global code@https... > ``` Cause ----- `extractFilteredSchemaValuesFromMicroData` is a function internal to iOS Safari. It is bugged in that it tries to reassign a `const` in some scenarios where no elements with `itemprop="telephone"` attributes are found. More details in this comment: https://github.com/odoo/odoo/pull/187143#issuecomment-2475934797 Solution -------- If the contact doesn't have a mobile or phone number, add an empty `div` with `itemprop="telephone"`. > [!note] > I've also reported the bug to Apple, but who knows when/if they'll fix it. Related issue: https://github.com/odoo/odoo/issues/162145 opw-4072838 Forward-Port-Of: odoo/odoo#187380 Forward-Port-Of: odoo/odoo#187143
Steps to reproduce: 1. Take any snippet and select any custom gradient color. 2. Reopen the background color - The selected custom gradient color is not retained as expected. Before version 16, we used wysiwyg, which called the start function to set selected colors easily. In version 17, we switched to OwlJS. Now, color picker always setting the default color as selected color. Therefore, it displays the default color instead of the selected color.  After this PR, the selected color will be set in the start function by replacing the default color, and updating RGBA values accordingly.  Task-3631963 Forward-Port-Of: odoo/odoo#186665 Forward-Port-Of: odoo/odoo#166961
Steps to reproduce: - Modify the invoice mail template by adding a default attachment - Create and confirm an invoice - Send and Print: delete the attachment from the wizard Issue: Back to the mail template, you will see that the attachment has been deleted Cause: The attachment is not protected from deletion and is added to list of attahcments to be deleted https://github.com/odoo/odoo/blob/ef424a9dc22a5abbe7b0a6eff61cf113826f04c0/addons/account/static/src/components/mail_attachments
Original PR description
Steps to reproduce: - Modify the invoice mail template by adding a default attachment - Create and confirm an invoice - Send and Print: delete the attachment from the wizard Issue: Back to the mail template, you will see that the attachment has been deleted Cause: The attachment is not protected from deletion and is added to list of attahcments to be deleted https://github.com/odoo/odoo/blob/ef424a9dc22a5abbe7b0a6eff61cf113826f04c0/addons/account/static/src/components/mail_attachments/mail_attachments.js#L59-L63 and is deleted https://github.com/odoo/odoo/blob/ef424a9dc22a5abbe7b0a6eff61cf113826f04c0/addons/account/static/src/components/mail_attachments/mail_attachments.js#L81-L82 Solution: Make sure that attachements from template are protected opw-4295826 Forward-Port-Of: odoo/odoo#187240
Step to reproduce. 1. Drag and drop a Contact Us Form 2. Select the form action as : " Apply for Job" 3. Select a field Type : "Activities" or "Kanban Stage" 4. Now on other field set visibility depending on this field 5. Now set the visibility options. -> Visibility value shows ID instead actual value/name. Prior to this commit, fields with conditional visibility showed the record's ID instead of its display name when the dependent field was a checkbox or radio button. This commit
Original PR description
Step to reproduce. 1. Drag and drop a Contact Us Form 2. Select the form action as : " Apply for Job" 3. Select a field Type : "Activities" or "Kanban Stage" 4. Now on other field set visibility depending on this field 5. Now set the visibility options. -> Visibility value shows ID instead actual value/name. Prior to this commit, fields with conditional visibility showed the record's ID instead of its display name when the dependent field was a checkbox or radio button. This commit fix the issue by displaying the displayName of the record instead ID. task-4267217 Forward-Port-Of: odoo/odoo#187030 Forward-Port-Of: odoo/odoo#184232
Description of the issue this PR addresses: Current behavior before PR: I. Pasting content within `blockquote` and `pre` elements resulted in each node being converted into separate `blockquote` or `pre` elements. II. When pasting the clipboard content as plain text (CTRL+SHIFT+V) inside a `PRE` element would convert each line break into a new paragraph. III. When text with a url is pasted within a pre tag the text is converted to a link. Desired behavior after PR is merged: I. `bl
Original PR description
Description of the issue this PR addresses: Current behavior before PR: I. Pasting content within `blockquote` and `pre` elements resulted in each node being converted into separate `blockquote` or…
Description of the issue this PR addresses: Current behavior before PR: I. Pasting content within `blockquote` and `pre` elements resulted in each node being converted into separate `blockquote` or `pre` elements. II. When pasting the clipboard content as plain text (CTRL+SHIFT+V) inside a `PRE` element would convert each line break into a new paragraph. III. When text with a url is pasted within a pre tag the text is converted to a link. Desired behavior after PR is merged: I. `blockquote` and `pre` should be considered like wrappers, allowing paragraph-related elements to be pasted inside them. II. When pasting the clipboard content as plain text within `pre`, every new line should be pasted within the `pre` tag. III. When text with a url is pasted within a pre tag it should not convert it to a link. IV. The `pre` tag does not have automatic word-wrapping or line-breaks as it is intended to keep the formatting of the text. This commit ensures that long text within `pre` tags does not overflow. task-4154465 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#187312 Forward-Port-Of: odoo/odoo#178965
This commit removes unnecessary base64 encoding and decoding operations when computing `spreadsheet_data` which contains the serialised json data. Previously, the binary field `spreadsheet_binary_data` was base64-encoded (as is the case with all binary fields), meaning the file was read, encoded to base64, and assigned to `spreadsheet_binary_data`. To retrieve the serialized JSON, it then had to be decoded again. By avoiding this redundant steps, with a spreadsheet file of 16.7Mb, we optim
Original PR description
This commit removes unnecessary base64 encoding and decoding operations when computing `spreadsheet_data` which contains the serialised json data. Previously, the binary field `spreadsheet_binary_data` was base64-encoded (as is the case with all binary fields), meaning the file was read, encoded to base64, and assigned to `spreadsheet_binary_data`. To retrieve the serialized JSON, it then had to be decoded again. By avoiding this redundant steps, with a spreadsheet file of 16.7Mb, we optimize the time spent in `_compute_spreadsheet_data`: before: ~100ms after: ~30ms Task: 4256155 Forward-Port-Of: odoo/enterprise#73988
This commit fix some missing translations for the modelo349 tax report in spain. no-task Forward-Port-Of: odoo/enterprise#73850
Original PR description
This commit fix some missing translations for the modelo349 tax report in spain. no-task Forward-Port-Of: odoo/enterprise#73850
To reproduce: - Enable card provider (ex. "Demo" provider from `payment_demo`) - Go to website /shop - Add a subscription product to the cart - To go cart and click on "Checkout" - On the payment, chose the card payment method and check the option: "Automate payments for the linked subscriptions" - Click on "Pay Now" Here a request is made to /shop/undefined instead of the expect transaction route This commit ensure we only overwrite the default transation route by the sub
Original PR description
To reproduce: - Enable card provider (ex. "Demo" provider from `payment_demo`) - Go to website /shop - Add a subscription product to the cart - To go cart and click on "Checkout" - On the payment, chose the card payment method and check the option: "Automate payments for the linked subscriptions" - Click on "Pay Now" Here a request is made to /shop/undefined instead of the expect transaction route This commit ensure we only overwrite the default transation route by the subscription one only if it's set (from invoice portal controller) Forward-Port-Of: odoo/enterprise#73887
All the Colorado and Washington taxes rules should be above the Post Tax Deductions and should all be of the category Taxes. Task: 4329645 Forward-Port-Of: odoo/enterprise#73762
Original PR description
All the Colorado and Washington taxes rules should be above the Post Tax Deductions and should all be of the category Taxes. Task: 4329645 Forward-Port-Of: odoo/enterprise#73762
A CP200 employee may be eligible for exoneration based on the number of dependent children they have. This change: * Takes the value of exoneration into account in the computation of termination fees withholding taxes. * Refactors the computation of withholding taxes for `double holiday pay`, `13th month` and `termination fees` into one function. task-3909012 Forward-Port-Of: odoo/enterprise#73665 Forward-Port-Of: odoo/enterprise#73557
Original PR description
A CP200 employee may be eligible for exoneration based on the number of dependent children they have. This change: * Takes the value of exoneration into account in the computation of termination fees withholding taxes. * Refactors the computation of withholding taxes for `double holiday pay`, `13th month` and `termination fees` into one function. task-3909012 Forward-Port-Of: odoo/enterprise#73665 Forward-Port-Of: odoo/enterprise#73557
Before this commit, the `Extra Quotations` setting displayed in the form view of `project.project` model does not take the maximal width available on larger screen. This commit makes sure the width of that setting takes all available space as the other settings. task-4294845 Forward-Port-Of: odoo/enterprise#73323
Original PR description
Before this commit, the `Extra Quotations` setting displayed in the form view of `project.project` model does not take the maximal width available on larger screen. This commit makes sure the width of that setting takes all available space as the other settings. task-4294845 Forward-Port-Of: odoo/enterprise#73323
The medical assistance work entry should be behaving like the credit-time and should have the same DMFA code. Task: 4247631 Forward-Port-Of: odoo/enterprise#73674 Forward-Port-Of: odoo/enterprise#71872
Original PR description
The medical assistance work entry should be behaving like the credit-time and should have the same DMFA code. Task: 4247631 Forward-Port-Of: odoo/enterprise#73674 Forward-Port-Of: odoo/enterprise#71872
When fetching the Routing in project->task, the map view shows the error "To get routing on your map, you first need to set up your Mapbox token. -> Set up token" even if they already have the token set up. This happens when, for example: if you have 3 tasks where 2 of them have the customer field filled and one doesn't. The function _fetchRoute tried to filter out the records that don't have the latitude/longitude. But, here, since one of the records doesn't have a partner, when it's tryi
Original PR description
When fetching the Routing in project->task, the map view shows the error "To get routing on your map, you first need to set up your Mapbox token. -> Set up token" even if they already have the token…
When fetching the Routing in project->task, the map view shows the error "To get routing on your map, you first need to set up your Mapbox token. -> Set up token" even if they already have the token set up. This happens when, for example: if you have 3 tasks where 2 of them have the customer field filled and one doesn't. The function _fetchRoute tried to filter out the records that don't have the latitude/longitude. But, here, since one of the records doesn't have a partner, when it's trying to look into partner.partner_latitude, it throws an error. After the error, mapBoxToken is set to '' in _partnerFetching, and called _openStreetMapAPI() resulting in displaying the error, "to get routing on your map, you first need to set up your Mapbox token." So, adding record.partner in the filter will help filter out the records that don't have partner. To Reproduce on Runbot: 1. Set up Mapbox token 2. Go to Project->Task 3. Create 3 Tasks ( 2 with customer and 1 without customer ) 4. Go to the map view and it'll display the error. opw-3682829 Forward-Port-Of: odoo/enterprise#73238 Forward-Port-Of: odoo/enterprise#55580
When opening a validated quality check from a MO/WO, if the type of the quality check is 'picture', the QC wizard should show the image taken. Forward-Port-Of: odoo/enterprise#73561
Original PR description
When opening a validated quality check from a MO/WO, if the type of the quality check is 'picture', the QC wizard should show the image taken. Forward-Port-Of: odoo/enterprise#73561
Steps to Reproduce: - Set up a website for a Colombian company. - Go to the shop section. - Purchase any product. Issue: - Traceback occurs when opening the address form for an existing or new address. Cause: - The error occurs because the form data for state_id, city_id, and other field is not consistently accessible, depending on whether values is a object or a dictionary. Fix: - Added checks to ensure fields like state_id and city_id are accessed only if they exist within value
Original PR description
Steps to Reproduce: - Set up a website for a Colombian company. - Go to the shop section. - Purchase any product. Issue: - Traceback occurs when opening the address form for an existing or new address. Cause: - The error occurs because the form data for state_id, city_id, and other field is not consistently accessible, depending on whether values is a object or a dictionary. Fix: - Added checks to ensure fields like state_id and city_id are accessed only if they exist within values. opw-4314031 Forward-Port-Of: odoo/enterprise#73374