Tuesday, November 19, 2024
60 changes · master
Enhancements to existing features
This change reorganizes how real-time notifications are retrieved and sent, making the messaging flow easier to maintain and potentially more reliable. It mainly affects the background communication system used by live updates, without introducing a visible feature change for end users.
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
Updates to key job position fields, such as the assigned interviewer, are now recorded in the chatter. This gives HR teams a clearer history of recruitment setup changes and improves accountability.
Original PR description
There are certain fields that should be logged in the chatter when updated. like the interviewer field task-4190731
Event sales totals now include eligible ticket discounts in the event sales button, matching the totals shown in the related sales order list. This gives event managers a more accurate and consistent view of revenue without needing to compare screens.
Original PR description
Currently, when a discount is applied to some tickets there's a discrepancy between the total amount of sale stat button displayed on the event form view and the total displayed for the sale order list view to an event. The objective is to include the discount value **`(Excluding the fixed amount and Global discount)`** in the stats button to ensure consistent totals are shown throughout. Task-4107360
Spreadsheet-related screens now more clearly mark data-only operations as read-only. This helps Odoo handle those requests more efficiently and safely without changing what users see or how they work.
Original PR description
## Description Adds the `@api.readonly` decorator to methods that only perform data retrieval in spreadsheet-related models and controllers. Task: [4317048](https://www.odoo.com/odoo/project/2328/tasks/4317048) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This change adds a clearer internal way for Odoo to verify whether a user may access a specific field. It helps keep permission checks consistent across apps such as Accounting, HR, Mail, Project, Sales, and Web features, reducing the risk of incorrect field access handling.
Original PR description
New function to check access for a given field with a simpler API than `check_field_access_rights` which handles lists of strings. `_check_field_access` is written to be overrideable and checks whether the current user have a permission on the field. It does not check the permissions on the model. `check_field_access_rights` is there to validate a set of fields and to return the set of accessible fields. odoo/enterprise#73744 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update streamlines internal mail-related tests by giving standard test users the expected partner management permissions and removing duplicate coverage tied to demo users. It helps make future mail and recipient improvements easier to validate while reducing test maintenance overhead.
Original PR description
Add 'base.group_patner_manager' by default on test internal user as anyway it is mostly always used for internal users. With this commit we need to update 'TestScheduledMessageAccess' as it was based…
Add 'base.group_patner_manager' by default on test internal user as anyway it is mostly always used for internal users. With this commit we need to update 'TestScheduledMessageAccess' as it was based on employee that cannot update its own partner, which is not the case with default behavior. To get rid of partner dependency we introduce a new model that eases modeling restricted accesses. It is going to be used in a new test suit sonner or later. In controller tests lot of tests are simply duplicated due to using both demo user and test-specific internal user. This pattern has been reproduced a lot in all controller tests introduced a few months ago and already cleaned during https://github.com/odoo/odoo/pull/186937. In this commit we remove usage of demo user, just replacing it when strictly necessary by another test user we control. Task-4332801 [test_mail] Cleanup controller tests Prepares Task-4332797 : [mail] Partner from emails 3.0 Prepares Task-4273479 : [mail] Email-like recipients
Spreadsheet-related data lookup methods are now marked as read-only, helping the system handle these requests more efficiently. This is an internal performance and reliability improvement with no expected change to user workflows.
Original PR description
## Description Adds the `@api.readonly` decorator to methods that only perform data retrieval in spreadsheet-related models and controllers. Task: [4317048](https://www.odoo.com/odoo/project/2328/tasks/4317048)
The Time-Off overview Gantt view now opens with the current month selected by default instead of a broader date range. This makes it easier for managers and employees to focus on the most relevant upcoming absences without manually adjusting filters.
Original PR description
This PR improves the Gantt view in the overview menu of the time-off module by setting the default filter to `This Month` instead of a date range. task-4239714
Internal test users now include partner management access by default, matching the access commonly used by real internal users. This reduces setup friction and supports upcoming mail and recipient handling improvements.
Original PR description
Add 'base.group_patner_manager' by default on test internal user as anyway it is mostly always used for internal users. Prepares Task-4332797 : [mail] Partner from emails 3.0 Prepares Task-4273479 : [mail] Email-like recipients
Adding a spreadsheet to a dashboard now clears old breadcrumb links that could point users back to previously archived spreadsheet documents. This reduces confusion and makes the dashboard creation flow cleaner and easier to follow.
Original PR description
When adding a new dashboard, existing breadcrumbs may lead to confusion, as they keep links to previous archived spreadsheet document. This commit clears breadcrumbs when adding a new dahsboard, ensuring a better user experience. task-3416361
The rental point-of-sale flow was aligned with recent quotation screen behavior so tests reflect the correct order quantities. This helps ensure unpaid amounts are calculated consistently and reduces the risk of regressions in rental sales validation.
Original PR description
This commit adapts a test so that it follows the logic of the changes of the pos quotation screen. The test has to be adapted because the quantity of the orderline was 0 before and that was leading to a zero amount unpaid. Community PR: https://github.com/odoo/odoo/pull/175365 task-id: 4070347
The Knowledge app now uses a simpler internal setup when loading messages, grouping related options together. This should make the code easier to maintain without changing how users interact with the feature.
Original PR description
This commit moves `search_term`, `before`, `after`, `limit` and `around` fetch params to a single parameter as `options` to simplify the code. This change applies to all available fetch messages routes. Suggested [here](https://github.com/odoo/odoo/pull/182334/files#r1811034899) Related to odoo/odoo#187192
Resolved issues and error corrections
This fix updates the Austrian localization tax configuration so tax reports show base amounts with the correct positive sign. It helps businesses using Austrian accounting get more accurate tax reporting and reduces the risk of misleading negative figures.
Original PR description
**Description of the issue/feature this PR addresses:** Correct the tax tags on the repartition line to have a proper tax report **Current behavior before PR:** Negative Base Amount presented in the tax report **Desired behavior after PR is merged:** Positive Base Amount presented in the tax report Info: @wt-io-it --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Code cleanup and technical improvements
Odoo no longer loads menu data in one web client setup step where it is not used. This is an internal cleanup that should not change the user experience, but it helps keep the web client code leaner.
Original PR description
`menu_data` isn't used in rendering context since [1]. This commit removes it. This shouldn't have any impact as the method is cached, so that unnecessary call probably allowed a systematic cache hit for the actual (necessary) call done by session_info. [1] https://github.com/odoo/odoo/commit/19eacf7d23c9413de4430a3422b5ed74b37ef242
Miscellaneous changes
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
This fixes a command-line option used during Odoo setup so older scripts using `--without-demo=1` continue to work. It helps businesses avoid installation failures or unintended demo data loading when upgrading or automating deployments.
Original PR description
The --without-demo option requests that no demo data should be loaded when installing new modules. Before ConfigCleaner[^1], the option was taking a mandatory boolean argument, either as…
The --without-demo option requests that no demo data should be loaded when installing new modules. Before ConfigCleaner[^1], the option was taking a mandatory boolean argument, either as `--without-demo bool`, either as `--without-demo=bool` (note the equal sign). Note: the option --help stated it was taking a list of modules, or "all", it was a lie. Since ConfigCleaner, the option acts as a flag, i.e. the sole `--without-demo` with no boolean works and means the same as `--without-demo True` from the previous version. A backward compatibility aid was added to still support giving an explicit bool to the option. This aid actually only worked without the equal sign (`--without-demo bool`) and not with (`--without-demo=bool`). What we want is a feature similar to argparse's `nargs='?'`[^2], i.e. an option that takes an optional value, that uses the hardcoded `const` when the flag is present but no value is given. By looking at the source code of optparse, it doesn't seem possible to implement such feature using callbacks. In this work we replace the callback by a (half-baked) implementation of argparse's `nargs='?'` on top of optparse. It is half-baked because: 1) it rewrites the CLI 2) it doesn't support option expansion, i.e. "--without-d" is not expanded to "--without-demo=1" [^1]: https://github.com/odoo/odoo/pull/185670 [^2]: https://docs.python.org/3/library/argparse.html#nargs
This update standardizes internal naming for discussion channel data between the web interface and server-side code. It helps make future maintenance of messaging and live chat features safer and more consistent, without changing the expected user experience.
Original PR description
\* = im_livechat, test_discuss_full And move to discuss folder. https://github.com/odoo/enterprise/pull/72322
This update renames internal WhatsApp channel fields so the browser-side code matches the server-side naming. It should not change user workflows, but it reduces confusion for future maintenance and helps avoid inconsistencies in WhatsApp discussions.
Original PR description
https://github.com/odoo/odoo/pull/184367
This change removes an outdated customization in the enterprise web module because the related menu data is no longer prepared in the underlying community code. It reduces maintenance overhead without changing what business users see or do.
Original PR description
The override is no longer necessary as the code in community no longer computes menu_data.
**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 Fo
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 Forward-Port-Of: odoo/odoo#187170
Before this commit, opening of GIF picker in some languages like Portuguese could lead to following crash: ``` OwlError: Got duplicate key in t-foreach: #irritado ``` This happens because GIF picker categories come from Tenor data and there might be duplicated categories. However in code we use `category.name` for `t-key`, thus there was a crash when 2 categories had the same name. This commit fixes the issue by using `category_index` instead, which is the index of category in the glo
Original PR description
Before this commit, opening of GIF picker in some languages like Portuguese could lead to following crash: ``` OwlError: Got duplicate key in t-foreach: #irritado ``` This happens because GIF picker categories come from Tenor data and there might be duplicated categories. However in code we use `category.name` for `t-key`, thus there was a crash when 2 categories had the same name. This commit fixes the issue by using `category_index` instead, which is the index of category in the global list of categories, which is necessarily unique for each GIF category. opw-4319241 Forward-Port-Of: odoo/odoo#187453
Currently, an exception was generated when the user tries to open their account details in the portal (url: my/account) error: `KeyError: 'partner_sudo'` This error was generated because when the user tries to open their account detail in the portal, we do not have 'partner_sudo'. Recentley refacto code with https://github.com/odoo/odoo/commit/453cfab758505ae15135703fb7be8bdb54981444 replaced `partner` with `partner_sudo` for the getting partner in the website sale address (`shop/addres
Original PR description
Currently, an exception was generated when the user tries to open their account details in the portal (url: my/account) error: `KeyError: 'partner_sudo'` This error was generated because when the…
Currently, an exception was generated when the user tries to open their account details in the portal (url: my/account) error: `KeyError: 'partner_sudo'` This error was generated because when the user tries to open their account detail in the portal, we do not have 'partner_sudo'. Recentley refacto code with https://github.com/odoo/odoo/commit/453cfab758505ae15135703fb7be8bdb54981444 replaced `partner` with `partner_sudo` for the getting partner in the website sale address (`shop/address`) and we have the new key because the template 'partner_info' called from template 'address' see [1] and `partner_sudo` set from [2] for address. But when we call the 'partner_info' from template 'portal_my_details_fields' at [3], we do not have `partner_sudo` This commit will fix the above issue by passing `partner_sudo` in the template at the time prepare value for opening account detail in portal. [1] - https://github.com/odoo/odoo/blob/3ea0c936c01a7c55ee8fa6ee64fd8e89b2a04f5f/addons/l10n_ar_website_sale/views/templates.xml#L60 [2] - https://github.com/odoo/odoo/blob/3ea0c936c01a7c55ee8fa6ee64fd8e89b2a04f5f/addons/website_sale/controllers/main.py#L1119 [3] - https://github.com/odoo/odoo/blob/3ea0c936c01a7c55ee8fa6ee64fd8e89b2a04f5f/addons/l10n_ar_website_sale/views/templates.xml#L68 sentry-5725856236 Forward-Port-Of: odoo/odoo#186872
in this commit: ============ Made it mandatory to select an outstanding account while configuring the `bank` payment method in pos. Task - 4281382 Related PR: odoo/upgrade#6728 Forward-Port-Of: odoo/odoo#185457
Original PR description
in this commit: ============ Made it mandatory to select an outstanding account while configuring the `bank` payment method in pos. Task - 4281382 Related PR: odoo/upgrade#6728 Forward-Port-Of: odoo/odoo#185457
Problem: If the product image size is smaller than `$o-form-picture-size` or is an SVG without intrinsic size, it uses the original image size or displays as 0px in the case of SVGs without intrinsic size. The desired behavior is for the image to always display at `$o-form-picture-size`. Steps to reproduce: - Add a small or SVG image without intrinsic size to a product. - The image will not display correctly. opw-4119433 --- I confirm I have signed the CLA and read the PR guidelin
Original PR description
Problem: If the product image size is smaller than `$o-form-picture-size` or is an SVG without intrinsic size, it uses the original image size or displays as 0px in the case of SVGs without intrinsic size. The desired behavior is for the image to always display at `$o-form-picture-size`. Steps to reproduce: - Add a small or SVG image without intrinsic size to a product. - The image will not display correctly. opw-4119433 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178526
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
rendererProps was not called on the component. This causes issues when assigning a variable on `this` and referencing it later. See: https://github.com/odoo/owl/commit/df59ec49aefce2e0913fdc1792d42b9680fb28b6 https://github.com/odoo/odoo/commit/f76955a5615cf7950c014c4f7a64d8f3aeafdda0 Forward-Port-Of: odoo/odoo#187131 Forward-Port-Of: odoo/odoo#186814
Original PR description
rendererProps was not called on the component. This causes issues when assigning a variable on `this` and referencing it later. See: https://github.com/odoo/owl/commit/df59ec49aefce2e0913fdc1792d42b9680fb28b6 https://github.com/odoo/odoo/commit/f76955a5615cf7950c014c4f7a64d8f3aeafdda0 Forward-Port-Of: odoo/odoo#187131 Forward-Port-Of: odoo/odoo#186814
Before this PR, query strings were added to the attachment of URL types. This is incorrect since those URLs can already have query strings, and the added query strings don't make sense for non-binary attachments. Forward-Port-Of: odoo/odoo#187580 Forward-Port-Of: odoo/odoo#187522
Original PR description
Before this PR, query strings were added to the attachment of URL types. This is incorrect since those URLs can already have query strings, and the added query strings don't make sense for non-binary attachments. Forward-Port-Of: odoo/odoo#187580 Forward-Port-Of: odoo/odoo#187522
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 Forward-Port-Of: odoo/odoo#187032
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 Forward-Port-Of: odoo/odoo#187032
The dropdown selection for tracking/lot number is misaligned when the users has a rtl language. Steps to reproduce: ------------------- * Switch the current user to a rtl language (arabic for ex) * Open shop session * Select the drawer product > Observation: dropdown selection is misaligned Before vs after fix: ------------------------- RTL computer: * Before:  * After:  * After:  RTL mobile: * Before:  * After:  LTR computer: * Before:  * After:  LTR mobile * Before:  * After:  Also works if we move the popup around. opw-4187095 Forward-Port-Of: odoo/odoo#185878
### 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#187441 Forward-Port-Of: odoo/odoo#185109
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
This commit allows to tell wether or not the current cashier has the rights to create products from the store. opw-4255570 Enterprise PR: https://github.com/odoo/enterprise/pull/72758 Forward-Port-Of: odoo/odoo#187184
Original PR description
This commit allows to tell wether or not the current cashier has the rights to create products from the store. opw-4255570 Enterprise PR: https://github.com/odoo/enterprise/pull/72758 Forward-Port-Of: odoo/odoo#187184
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#187457 Forward-Port-Of: odoo/odoo#186755
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 Forward-Port-Of: odoo/odoo#187457 Forward-Port-Of: odoo/odoo#186755
The function _validate_accounting_entries is notorious for not using proper batching which results in a lot of SQL queries. Originally, it had to iterate individual svls and invoke functions in an unbatched way, even when all svls belonged to the same product. The changes here are to use as much batching as possible and enforcing the use of prefetch_ids to lower the total number of queries. Benchmarks: |no. queries before| no. queries after | total time before | total time after| |-----|-
Original PR description
The function _validate_accounting_entries is notorious for not using proper batching which results in a lot of SQL queries. Originally, it had to iterate individual svls and invoke functions in an unbatched way, even when all svls belonged to the same product. The changes here are to use as much batching as possible and enforcing the use of prefetch_ids to lower the total number of queries. Benchmarks: |no. queries before| no. queries after | total time before | total time after| |-----|-----|------|-----| |95991|83352|1.59 min|1.48 min| opw-4283347 opw-4096108 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#186434
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
When a failure occurs when sending an email or a sms, it is displayed in the messaging menu. Before this PR, it could not be removed after a record was deleted. Steps to reproduce: - Send a message on a record, add a recipient with an incorrect email. - A red enveloppe is displayed next to the message and a notification is added in the messaging menu. - Delete this record. - Try to mark this failure as read. - Nothing happens. This occurs because the message deletion is only notified
Original PR description
When a failure occurs when sending an email or a sms, it is displayed in the messaging menu. Before this PR, it could not be removed after a record was deleted. Steps to reproduce: - Send a message on a record, add a recipient with an incorrect email. - A red enveloppe is displayed next to the message and a notification is added in the messaging menu. - Delete this record. - Try to mark this failure as read. - Nothing happens. This occurs because the message deletion is only notified to the recipients, not the author. This PR fixes the issue. opw-4272165 Forward-Port-Of: odoo/odoo#187078 Forward-Port-Of: odoo/odoo#186000
**Issue:** An employee can't modify a `Payment Method` (other than "Manual" on a new payment entry). **Expected:** An employee should be able to change the payment provider to register a customer payment. **Steps to reproduce:** - Activate Accounting app and go to Configuration > Online Payments > Payment Providers; - Install any of these providers, configure it, activate the test mode and publish it; - Go to Customers Payments > Payments; - Open or create a payement record; - Try t
Original PR description
**Issue:** An employee can't modify a `Payment Method` (other than "Manual" on a new payment entry). **Expected:** An employee should be able to change the payment provider to register a customer payment. **Steps to reproduce:** - Activate Accounting app and go to Configuration > Online Payments > Payment Providers; - Install any of these providers, configure it, activate the test mode and publish it; - Go to Customers Payments > Payments; - Open or create a payement record; - Try to change the Payment Method field for . **Cause:** No rights have been given to users on the payment provider data lookup. https://github.com/odoo/odoo/blob/18.0/addons/payment/security/ir.model.access.csv **Fix:** Give temporary rights on payment provider token lookup. opw-4270781 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#186890
**[FIX] payment: return a rejected promise on RPC error during payment** This commit addresses the issue of RPC errors not triggering a promise rejection when initiating or processing the payment. This caused issues with PayPal not being able to pass the error to its error handler when a problem occurred during payment processing. For example, the error message "order id was not provided" would be shown instead of the actual RPC error message. --- **[FIX] payment_paypal: show message on
Original PR description
**[FIX] payment: return a rejected promise on RPC error during payment** This commit addresses the issue of RPC errors not triggering a promise rejection when initiating or processing the payment.…
**[FIX] payment: return a rejected promise on RPC error during payment** This commit addresses the issue of RPC errors not triggering a promise rejection when initiating or processing the payment. This caused issues with PayPal not being able to pass the error to its error handler when a problem occurred during payment processing. For example, the error message "order id was not provided" would be shown instead of the actual RPC error message. --- **[FIX] payment_paypal: show message on RPC error during order completion** This commit fixes RPC errors occurring during order completion not being caught and not triggering a promise rejection. A simple "ValidationError" toaster notification was shown. --- **[FIX] payment_paypal: show RPC error messages only once** RPC errors occurring during payment were shown in a modal by the generic error handler of `payment` and again by the error handler of PayPal. RPC errors are now filtered out by the handler of PayPal. Forward-Port-Of: odoo/odoo#187431
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
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 Forward-Port-Of: odoo/odoo#181116
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 Forward-Port-Of: odoo/odoo#181116
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
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 r
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 Forward-Port-Of: odoo/enterprise#68336
Reproduce: 1. Open the split tool on a pdf 2. Split into new documents 3. See crash about concurrent access to records 3. Sometimes you should do it several times This happens because several routes try to access the document simultaneously before any `documents.access` record exist. See `owner_values` in `documents.document`'s `_prepare_create_values` where we do this for the owner, but in the split tool, the owner can be someone else. Task-4319786 Forward-Port-Of: odoo/enterprise#7
Original PR description
Reproduce: 1. Open the split tool on a pdf 2. Split into new documents 3. See crash about concurrent access to records 3. Sometimes you should do it several times This happens because several routes try to access the document simultaneously before any `documents.access` record exist. See `owner_values` in `documents.document`'s `_prepare_create_values` where we do this for the owner, but in the split tool, the owner can be someone else. Task-4319786 Forward-Port-Of: odoo/enterprise#73750
- Hide sign item box when you don't need to fill it - Add responsible name to box task-id: 4316046 Forward-Port-Of: odoo/enterprise#73454
Original PR description
- Hide sign item box when you don't need to fill it - Add responsible name to box task-id: 4316046 Forward-Port-Of: odoo/enterprise#73454
opw-4272165 community: https://github.com/odoo/odoo/pull/186595 Forward-Port-Of: odoo/enterprise#73738 Forward-Port-Of: odoo/enterprise#73715
Original PR description
opw-4272165 community: https://github.com/odoo/odoo/pull/186595 Forward-Port-Of: odoo/enterprise#73738 Forward-Port-Of: odoo/enterprise#73715
Before this commit, when onSidebarDragStart was called to start dragging a sign item from the side bar, the placeholder was not resized the same it it is when it is dropped. Therefore the placeholder would see his change change upon releasing the element. taskid: 4164114 Forward-Port-Of: odoo/enterprise#73547
Original PR description
Before this commit, when onSidebarDragStart was called to start dragging a sign item from the side bar, the placeholder was not resized the same it it is when it is dropped. Therefore the placeholder would see his change change upon releasing the element. taskid: 4164114 Forward-Port-Of: odoo/enterprise#73547
Currently if employees (without users) log into the register and use the barcode reader, if the barcode isn't found in the database, they will be prompted with the create product screen Steps to reproduce: ------------------- * Connect to the db with Mitchell Admin * Open the **Point of Sale** App * Select **Configuration** > **Settings** * Select the Furniture shop * Enable **Log in with Employees** * Open Furniture shop session * Select an employee that is not a user as employee (Ab
Original PR description
Currently if employees (without users) log into the register and use the barcode reader, if the barcode isn't found in the database, they will be prompted with the create product screen Steps to…
Currently if employees (without users) log into the register and use the barcode reader, if the barcode isn't found in the database, they will be prompted with the create product screen Steps to reproduce: ------------------- * Connect to the db with Mitchell Admin * Open the **Point of Sale** App * Select **Configuration** > **Settings** * Select the Furniture shop * Enable **Log in with Employees** * Open Furniture shop session * Select an employee that is not a user as employee (Abigail Peterson for ex) * Either select the barcode icon and present a barcode to the camera or go into debug mode and enter the barcode in the debug window and select scan. Prefer to use a barcode not in the db. > Observation: A popup appear to create a product Why the fix: ------------ Currently employees are able to create product if the underlying user who is connected has the group `base.group_system`. https://github.com/odoo/enterprise/blob/3bf3400a60436e9f07f23c6ba11e5749e4c00459/pos_barcodelookup/static/src/overrides/components/barcode_reader/barcode_reader.js#L8 Employees do not have the right to create products. This commit https://github.com/odoo/odoo/commit/e10768b6ce5c82e67e14641233dc9deefb48f8ba already removed the rights to see the create product button from the menu. We follow the same logic to block the creation process when scanning barcodes. opw-4255570 Community PR:https://github.com/odoo/odoo/pull/187184 Forward-Port-Of: odoo/enterprise#72758
test_sync_pickings depends on street value, which does not exist in no-demo mode, thus breaking tests. This commit fixes the issue. [broken test](https://runbot.odoo.com/web#id=73283&view_type=form&model=runbot.build.error&menu_id=405&cids=1) Forward-Port-Of: odoo/enterprise#73041
Original PR description
test_sync_pickings depends on street value, which does not exist in no-demo mode, thus breaking tests. This commit fixes the issue. [broken test](https://runbot.odoo.com/web#id=73283&view_type=form&model=runbot.build.error&menu_id=405&cids=1) Forward-Port-Of: odoo/enterprise#73041
Offer "send message" will directly propose the email of the offer's employee/applicant. task-4062860 Forward-Port-Of: odoo/enterprise#73900
Original PR description
Offer "send message" will directly propose the email of the offer's employee/applicant. task-4062860 Forward-Port-Of: odoo/enterprise#73900
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 Forward-Port-Of: odoo/enterprise#73977 Forward-Port-Of: odoo/enterprise#73718
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 Forward-Port-Of: odoo/enterprise#73977 Forward-Port-Of: odoo/enterprise#73718
Purpose ======= Hide the "frozen folders" by default, the frozen spreadsheets can be accessed in "Shared With Me". Task-4316768 Forward-Port-Of: odoo/enterprise#73829
Original PR description
Purpose ======= Hide the "frozen folders" by default, the frozen spreadsheets can be accessed in "Shared With Me". Task-4316768 Forward-Port-Of: odoo/enterprise#73829
Forward-Port-Of: odoo/enterprise#73901
Original PR description
Forward-Port-Of: odoo/enterprise#73901
Add `Bonus` input type to `United States Regular Pay Salary Structure`. Use `Expenses` and `Bonus` input types in the computation of payslips. * Expenses: * Allows users to include expenses (added automatically from the Expenses app) into the salary calculation when using the Structure Type "United States: Regular Pay". The rule is placed post taxes in the structure. * Bonus: * Add an Input type in "hr.payslip.input.type" called `Bonus`. * "Bonus" allows users to add an e
Original PR description
Add `Bonus` input type to `United States Regular Pay Salary Structure`.
Use `Expenses` and `Bonus` input types in the computation of payslips.
* Expenses:
* Allows users to include expenses (added automatically from the Expenses app) into the salary calculation when using the Structure Type "United States: Regular Pay". The rule is placed post taxes in the structure.
* Bonus:
* Add an Input type in "hr.payslip.input.type" called `Bonus`.
* "Bonus" allows users to add an extra source of income for employees that have associated the "United States: Regular Pay" Structure type in their payslip. The rule is placed pre-taxes in the structure, it is a taxable amount.
task-4097635
Forward-Port-Of: odoo/enterprise#74043
Forward-Port-Of: odoo/enterprise#68530To reproduce: - Edit 'Trial Balance' report and enable the "Blank if Zero" option for both debit and credit lines - Open a 'Trial Balance', observe there is no 'End Balance' values for line where there are only debit or only credit amounts. This commit also update the `is_zero` option for end balance columns value to ensure there are correctly shown when "Blank if Zero" option is enabled. Forward-Port-Of: odoo/enterprise#73722
Original PR description
To reproduce: - Edit 'Trial Balance' report and enable the "Blank if Zero" option for both debit and credit lines - Open a 'Trial Balance', observe there is no 'End Balance' values for line where there are only debit or only credit amounts. This commit also update the `is_zero` option for end balance columns value to ensure there are correctly shown when "Blank if Zero" option is enabled. Forward-Port-Of: odoo/enterprise#73722
When trying to generate SEPA for employee payslip, and one of the the employee has a work address with no country, the generation fail with the following error: ``` File "/home/odoo/src/enterprise/18.0/account_iso20022/models/account_journal.py", line 394, in _get_PstlAdr Ctry.text = partner_id.country_id.code ^^^^^^^^^ File "src/lxml/etree.pyx", line 1043, in lxml.etree._Element.text.__set__ File "src/lxml/apihelpers.pxi", line 749, in lxml.etree._setNodeText File "src/
Original PR description
When trying to generate SEPA for employee payslip, and one of the the employee has a work address with no country, the generation fail with the following error:
```
File "/home/odoo/src/enterprise/18.0/account_iso20022/models/account_journal.py", line 394, in _get_PstlAdr
Ctry.text = partner_id.country_id.code
^^^^^^^^^
File "src/lxml/etree.pyx", line 1043, in lxml.etree._Element.text.__set__
File "src/lxml/apihelpers.pxi", line 749, in lxml.etree._setNodeText
File "src/lxml/apihelpers.pxi", line 737, in lxml.etree._createTextNode
File "src/lxml/apihelpers.pxi", line 1528, in lxml.etree._utf8
TypeError: Argument must be bytes or unicode, got 'bool'
```
This fix by using the country code of the compute valid partner address (i.e in our case the employee private address) and not the partner itself (the work address).
Forward-Port-Of: odoo/enterprise#73607Forward-Port-Of: odoo/enterprise#70809
Original PR description
Forward-Port-Of: odoo/enterprise#70809
We only need to shown MX EDI fields for move/invoices related to a company where fiscal country is Mexico, hide it for other companies. Forward-Port-Of: odoo/enterprise#73929 Forward-Port-Of: odoo/enterprise#73623
Original PR description
We only need to shown MX EDI fields for move/invoices related to a company where fiscal country is Mexico, hide it for other companies. Forward-Port-Of: odoo/enterprise#73929 Forward-Port-Of: odoo/enterprise#73623
### Steps to reproduce: - In the settings Enable Multi-steps route - Create a product FP with a BOM: - 1 component: 1 x COMP (tracked by SN) - 1 operation: "Register SN on COMP" - Add an instruction on your op: - type: "Register consumed component" - Product To Register: COMP - Put 2 SN for COMP: - SN01 in Stock/Shelf1 - SN02 in Stock/Shelf2 - Create and confirm an MO for 1 Unit of FP > SN01 is reserved on the COMP raw move. - Go to the shopfloor > "Register SN o
Original PR description
### Steps to reproduce: - In the settings Enable Multi-steps route - Create a product FP with a BOM: - 1 component: 1 x COMP (tracked by SN) - 1 operation: "Register SN on COMP" - Add an instruction…
### Steps to reproduce:
- In the settings Enable Multi-steps route
- Create a product FP with a BOM:
- 1 component: 1 x COMP (tracked by SN)
- 1 operation: "Register SN on COMP"
- Add an instruction on your op:
- type: "Register consumed component"
- Product To Register: COMP
- Put 2 SN for COMP:
- SN01 in Stock/Shelf1
- SN02 in Stock/Shelf2
- Create and confirm an MO for 1 Unit of FP
> SN01 is reserved on the COMP raw move.
- Go to the shopfloor > "Register SN on COMP"
- Change the SN of the COMP from SN01 to SN02
#### > Go back to the MO the incorrect location was used
### Cause of the issue:
While the lot is correctly updated by the action here: https://github.com/odoo/enterprise/blob/e90cf74be3945d1f1256d398ca9c4b61bc35ed08/mrp_workorder/models/quality.py#L485-L507 The associated quant is not set and hence the move location_id, package, ... are not updated with it.
### Fix:
We take advantage of the `quant_id` dummy field of the `stock.move.line` to update the info to write thanks to the write override: https://github.com/odoo/odoo/blob/09cac8b9e6d2db46dadece0442a8a947a49c9de7/addons/stock/models/stock_move_line.py#L85 https://github.com/odoo/odoo/blob/09cac8b9e6d2db46dadece0442a8a947a49c9de7/addons/stock/models/stock_move_line.py#L399-L400 https://github.com/odoo/odoo/blob/09cac8b9e6d2db46dadece0442a8a947a49c9de7/addons/stock/models/stock_move_line.py#L911-L920
### Note:
Unfortunately, the Dialog opened when clicking on the the quality check from the shopfloor:
https://github.com/odoo/enterprise/blob/34ab94cdcc49f4ade66953874a03f2988b2b4317/mrp_workorder/static/src/mrp_display/dialog/mrp_quality_check_confirmation_dialog.js#L12
is not embedded in a form view so that the onchange:
https://github.com/odoo/odoo/blob/366676cafdce00d55823c6daf41452b0c2373e4d/addons/stock/models/stock_move_line.py#L185-L192
is not triggered by our change of "lot_id".
opw-4149941
---
Forward-Port-Of: odoo/enterprise#73856
Forward-Port-Of: odoo/enterprise#72816Fix tour test_03_preparation_display_skip_change by unlink printer config to avoid the appear of modal "printing failed". Forward-Port-Of: odoo/enterprise#73985
Original PR description
Fix tour test_03_preparation_display_skip_change by unlink printer config to avoid the appear of modal "printing failed". Forward-Port-Of: odoo/enterprise#73985