Tuesday, February 4, 2025
114 changes · master
Enhancements to existing features
Work entry type records are now protected from being overwritten during migrations or system upgrades. This helps preserve HR configuration data and reduces the risk of unexpected changes after an upgrade.
Original PR description
Work entry type data should not be updatable as it shoud not be erased at each migration/upgrade. This commits fixes this by changing all work entry type data to noupdate true. task-4479965
The HTML editor now shows a helpful tooltip when users hover over or click the move button. This makes the button’s purpose easier to understand and improves the editing experience with a clearer grab cursor while moving content.
Original PR description
This adds a tooltip on click or hover the movenode button, to inform the user of its effect. task-3775598 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Point of Sale wording around cancelling orders has been clarified so users better understand what will happen when they choose “cancel orders.” This reduces confusion, especially around whether future planned orders are affected.
Original PR description
Clarify error message Users may think that clicking on "cancel orders" will cancel the orders planned for the future Bring more clarity to user on what will happen when they will click on "cancel orders"
Grouped payments now use a "GROUP" reference instead of "BATCH" in payment memos. This makes it easier for users to distinguish grouped invoice payments from actual batch payments and reduces confusion during payment tracking.
Original PR description
### Purpose When we create Group Payments (as in selecting multiple invoices, use Pay, and selecting "Group Payments"), it creates one Payment for multiple invoices. In this case, a new Payment memo is generated to easily identify the Payment back. We use "BATCH/XX" as a prefix, but it's a bit confusing as it's not a Batch Payment ### Implementation Use "GROUP/XX" in this case instead. odoo/upgrade/pull/7014 task-4356414
Improves how Odoo identifies country-specific parts of IBAN bank account numbers, making the logic easier to maintain and less error-prone. It also standardizes several country IBAN definitions, including Belgium, France, Monaco, Iceland, Jordan, and Switzerland-related bank lookup behavior.
Original PR description
Factoring out a standard method of identifying parts of the IBAN depending on the country, making it easier to read and understand instead of slicing the IBAN with magic numbers Several fixes at the IBAN structures which were non-Odoo-standardized: - Belgium: 'X' was taken from Wikipedia and not standardized. We use 'K' for national checksum. - France and Monaco: Code 'G'='Guichet' is just another Branch code. We use 'S' for branch codes. - Iceland: this 'X's are actually the Fiscal code of the customer. We use 'F' as a custom special code. - Jordan: Wikipedia has 's'=branch code, so 'N' is a custom Branch code. We use 'S' for branch codes. - France and Monaco: Code 'G'='Guichet' is just another Branch code. We use 'S' for branch codes. Enterprise PR: odoo/enterprise#74967
Checked checklist items are now easier to recognize because completed entries appear faded in addition to being crossed out. The checkmark icon also keeps a consistent size when users change checklist text size, improving visual consistency in edited content.
Original PR description
**Current behavior before PR:** - Checked checklist items were marked only with a strikethrough to differentiate them from unchecked items. - When a font size was applied to the entire checklist, the size of the checked icon would also be affected by the font size of the checklist. **Desired behavior after PR is merged:** - In addition to the strikethrough, opacity is now applied to checked checklist items for better visual differentiation. - The checked icon size remains consistent and is no longer affected by the font size of the checklist. task:4477250
When a job position is assigned to a new recruiter, the previous recruiter is automatically removed as a follower. This keeps job positions and related applications visible to the right people and reduces unnecessary notifications for former recruiters.
Original PR description
In this PR, - Unfollow the recruiter from the job position while we are setting up a new. - This change will also apply to the application for that job. Task-4037606
The attendance screen now hides the option to refuse extra hours when an entry has zero extra hours. This reduces confusion for managers and employees because newly logged attendance is already approved by default.
Original PR description
Since logging new attendance is approved by default, the refuse button for rejecting extra zero hours should be invisible. task-4320142 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
This update removes old internal test helpers for the bus module after most JavaScript tests moved to the newer Hoot testing framework. It reduces maintenance work for developers without changing day-to-day product behavior for users.
Original PR description
Now that most of the JS tests are converted to hoot, we can remove the legacy bus helpers. part of task-3818666 enterprise: https://github.com/odoo/enterprise/pull/78291
The live chat "My Sessions" filter now shows all sessions assigned to the current operator, including closed conversations. This gives support teams a more complete view of their past and current customer chats.
Original PR description
Before this PR, the "My Sessions" filter used is_member. This doesn't include the closed livechat sessions. This PR uses livechat_operator_id to display all the sessions. Task-4536751
This update improves internal web testing tools by adding better support for sortable drag-and-drop behavior. It also fixes how mocked services are started in tests, making test results more reliable when services initialize asynchronously.
Original PR description
Add the DragAndDropSortable from nest_sortable to hoot dom helper --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update improves internal test reliability for Belgian payroll accounting by enabling real-time communication support during automated checks. It helps ensure payroll accounting features are validated more consistently before release, with no direct change for end users.
Original PR description
task-3970199
The Studio app's automated tests have been converted from an older test system to the newer HOOT framework. This improves maintainability and helps ensure Studio features like app creation, navigation, menus, icons, and action editing continue to work reliably.
Original PR description
Conversion of all legacy studio tests to HOOT
This update removes outdated internal helper code used by Documents tests. It helps keep the Documents app easier to maintain and reduces future technical risk without changing day-to-day user workflows.
Original PR description
part of task-3818666 community: https://github.com/odoo/odoo/pull/196010
The refund action on employee payslips is now shown only after a payslip has been marked as paid. This helps prevent refunds from being started too early and keeps payroll actions aligned with the actual payment status.
Original PR description
- make refund btn visible only when the payslip is in `paid` state instead of `done or paid` Task: 4452180
Changes to the Employee and Manager fields on appraisal goals are now recorded in the chatter. This improves transparency and makes it easier to review who changed key appraisal ownership details.
Original PR description
Purpose: - Employees with basic rights can modify the Employee and Manager fields on the Appraisal Goals form. Therefore, it’s better to track these changes in the chatter for better transparency. This PR includes the following updates: - Any changes to Employee and Manager fields are now visible in the chatter for better visibility and auditing. Task - 4488582
Payslip generation emails are now sent only when the Human Resources option is selected in document settings. This helps ensure employees receive payslip emails only when the company has configured HR documents for that workflow.
Original PR description
In this Pr, emails for payslip generation will only be sent to employees if 'Human Resources' is selected in the document settings Task-4338046
Recruitment reports now include a dedicated list view when users open details from a graph. This helps teams review key record information at a glance without opening each recruitment record one by one.
Original PR description
- add the list view to be able to see some details about the records when click in the graph without the need to access them record by record Task: 4517160
Resolved issues and error corrections
This change corrects an internal cache setting so website or interface assets are not confused between prefixed and non-prefixed versions. It helps ensure users see the correct styling or bundled resources after recent asset handling changes.
Original PR description
During the adaptation of the autoprefix PR [1], the new parameter wasn't added to the ORM cache key description which can lead to mismatching between the prefixed and non-prefixed version of a same bundle. This commit adds the missing key. [1]: https://github.com/odoo/odoo/pull/193043
Code cleanup and technical improvements
This change reorganizes where the menu creation setup wizard is stored within the Base module. It does not change business functionality, but makes the codebase easier to maintain for future updates.
Original PR description
Does not really belong to ir.model.
Miscellaneous changes
If you sell a product that has multiple pos categories, the report would contain as many lines as the number of categories. Steps to reproduce: ------------------- * Create product A with atleast 2 pos categories * Make a sale in PoS with this product * Go to PoS order report and click on the graph * This will open a view containing all the lines of the report > Observation: You have multiple lines for the same order Why the fix: ------------ To avoid this issue, we select only the
Original PR description
If you sell a product that has multiple pos categories, the report would contain as many lines as the number of categories. Steps to reproduce: ------------------- * Create product A with atleast 2 pos categories * Make a sale in PoS with this product * Go to PoS order report and click on the graph * This will open a view containing all the lines of the report > Observation: You have multiple lines for the same order Why the fix: ------------ To avoid this issue, we select only the first category of the product. opw-4451101 Forward-Port-Of: odoo/odoo#195969 Forward-Port-Of: odoo/odoo#195097
Goal managers without broader employee access can now see employee avatar images correctly in goal list views. This fixes a display issue by using the appropriate public employee data source, aligning the list view behavior with other views.
Original PR description
### reproduce - log with a user which has no permissions but set as Goal Manager - for the goals list view -> all the employees avatar image would not load ### solve - add the `extractProps` function to the widget object to call `hr.employee.puplic` insted of `hr.employee` to unify the interaction with the form and kanban ones Task: 4391198 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
A small issue in website forms was corrected so date picker fields can track their setup properly. This helps prevent form date fields from behaving inconsistently after the recent website form update.
Original PR description
When the website form public widget was converted into interactions in [1], the variable that tracks the initialization of datepickers was wronly named. This commit fixes that name. [1]: https://github.com/odoo/odoo/commit/b9b3a605e0f4c5da3a258c980107d6162da7f44f task-4367641
This fixes server-side forms so they correctly understand the updated company selection information used by Odoo. It helps keep multi-company behavior consistent between the web interface and backend form handling.
Original PR description
See https://github.com/odoo/odoo/pull/190218 for the definition of the new object. The `companies` object contains: - multi_company: A boolean indicating whether the user has access to multiple…
See https://github.com/odoo/odoo/pull/190218 for the definition of the new object. The `companies` object contains: - multi_company: A boolean indicating whether the user has access to multiple companies. - allowed_ids : The list of company IDs the user is allowed to connect to. - active_ids: The list of company IDs the user is connected to (selected in the company switcher dropdown). - active_id: The ID of the main company selected (the one highlighted in the company switcher dropdown and displayed in the navbar of the webclient). - has(id|ids, 'property', value) : returns a boolean indicating whether there's a company with id in `ids` for which `field` matches the given `value`. Example: - A DB has 50 intalled companies; - Michel has the right to connect to 4 companies (A, B, C, D) => user.allowedCompanies/companies.allowed_ids - Michel in his interface he sees 4 companies (A, B, C, E, D) (he sees E (even if he can't connect) because it is the parent company of D) => user.allowedCompaniesWithAncestors - Michel selects, in the dropdown, two companies D and A, with D as the main company => user.activeCompanies/companies.active_ids (contains the list [D,A]) and user.activeCompany/companies.active_id (contains D) (NB: I write also the 'user' object but it's not defied in this pr)
This update removes unused internal code from Odoo's web module. It helps keep the system easier to maintain without changing how users interact with the product.
Original PR description
This commit removes unused code from the domain, and from the relational model.
This update standardizes how the system reads country-specific sections of IBAN bank account numbers. It makes payment-related code easier to maintain and reduces the chance of future mistakes when handling bank data for ISO 20022, UK BACS, and Italian Ri.Ba. payments.
Original PR description
Factoring out a standard method of identifying parts of the IBAN depending on the country, making it easier to read and understand instead of slicing the IBAN with magic numbers Community PR: odoo/odoo#189288
Issue: If we have a X2many that allows to have inactive records (with `context={'active_test': False}` on the field definition) and we specify a specific order for this X2many in this view, web_read won't respect the context of the field and will filter out inactive records. This is because to apply a specific order in the web_read, we use search(), which will filter out inactive records from the `corecords` recordset. Fix: We fix this by forcing active_test=False before calling search a
Original PR description
Issue:
If we have a X2many that allows to have inactive records (with `context={'active_test': False}` on the field definition) and we specify a specific order for this X2many in this view, web_read won't respect the context of the field and will filter out inactive records.
This is because to apply a specific order in the web_read, we use search(), which will filter out inactive records from the `corecords` recordset.
Fix:
We fix this by forcing active_test=False before calling search and reapplying the previous context immediately after.
Closes #194311
Forward-Port-Of: odoo/odoo#195646
Forward-Port-Of: odoo/odoo#194379## Versions: 17.0+ No fix needed in 16.0 as the discount was not displayed this way. ## Issue: Discount descriptions contain long string floats while it should be truncated for human reading. ## Steps to reproduce: - Activate `Discounts` through settings; - Create a new sale order for any client with at least 1 product; - Click the `Discount` button on the form; - Apply a 7% `Global Discount`; - Read the `Discount` product's description. ## Cause: Some numbers cannot be represe
Original PR description
## Versions: 17.0+ No fix needed in 16.0 as the discount was not displayed this way. ## Issue: Discount descriptions contain long string floats while it should be truncated for human reading. ## Steps to reproduce: - Activate `Discounts` through settings; - Create a new sale order for any client with at least 1 product; - Click the `Discount` button on the form; - Apply a 7% `Global Discount`; - Read the `Discount` product's description. ## Cause: Some numbers cannot be represented correctly in Python (including 7, 3.3 etc.). opw-4485316 Forward-Port-Of: odoo/odoo#195596 Forward-Port-Of: odoo/odoo#195328
After commit ddda5d4a2623d03699d5cb6860d5c984807b6e3d public users were allowed to tokenize their payments with the exception of donation the tokenize field was forced to be False. However Stripe threw an error when the received intent was different than the one on the frontend. Fix: Hide option to tokenize for unlogged in users for donations. opw-4389881 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#195001
Original PR description
After commit ddda5d4a2623d03699d5cb6860d5c984807b6e3d public users were allowed to tokenize their payments with the exception of donation the tokenize field was forced to be False. However Stripe threw an error when the received intent was different than the one on the frontend. Fix: Hide option to tokenize for unlogged in users for donations. opw-4389881 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#195001
Steps to Reproduce: =================== - Open a POS session and go offline. - Create orders and print receipts at the receipt screen. - Restore the internet connection and bring the POS online. - A traceback occurs during synchronization. Before this commit: ===================== A traceback occurred when making a POS order, printing a receipt in offline mode, and later going online. The issue arose because the nb_print field was updated via a backend write call to restrict payment
Original PR description
Steps to Reproduce: =================== - Open a POS session and go offline. - Create orders and print receipts at the receipt screen. - Restore the internet connection and bring the POS online. - A…
Steps to Reproduce: =================== - Open a POS session and go offline. - Create orders and print receipts at the receipt screen. - Restore the internet connection and bring the POS online. - A traceback occurs during synchronization. Before this commit: ===================== A traceback occurred when making a POS order, printing a receipt in offline mode, and later going online. The issue arose because the nb_print field was updated via a backend write call to restrict payment method edits. However, during offline mode, the order_id was a string, causing the traceback. After this commit: =================== - The backend write call for nb_print is bypassed in offline mode. Instead, the `nb_print` count is updated on the frontend. When the order syncs after going online, the increased `nb_print` value prevents payment method edits as expected. - Removed the nb_print validation constrains from payment lines. Validation is already handled in the write method of pos.order. This change avoids validation errors when syncing orders from offline to online, where nb_print = 1 and payment lines exist. The write method ensures proper handling during order creation. - A `Connection Lost` error message is displayed when attempting to send orders to the kitchen while in offline mode. Task-4504625 Forward-Port-Of: odoo/odoo#196060 Forward-Port-Of: odoo/odoo#194694
[FIX] survey: fix final leaderboard layout - Install survey - Create a survey “Live Session” - Add a “Single Line Text Box” and check “Save as user nickname” - Add a second question (ex.: multiple choice with 1 correct, score: 1) - Click on “Create Live Session” - Join the session with another browser - Answer the question correctly - On the survey manager, go to the end of the survey (Final leaderboard) The stats only occupies a small portion of the width and the button are very cl
Original PR description
[FIX] survey: fix final leaderboard layout - Install survey - Create a survey “Live Session” - Add a “Single Line Text Box” and check “Save as user nickname” - Add a second question (ex.: multiple…
[FIX] survey: fix final leaderboard layout - Install survey - Create a survey “Live Session” - Add a “Single Line Text Box” and check “Save as user nickname” - Add a second question (ex.: multiple choice with 1 correct, score: 1) - Click on “Create Live Session” - Join the session with another browser - Answer the question correctly - On the survey manager, go to the end of the survey (Final leaderboard) The stats only occupies a small portion of the width and the button are very close to the title. We solve the problem by enlarging the stats like the previous result screens to get a layout similar as in v16.0. [FIX] documents: fix close buttons - Install survey - Create a survey “Live Session” - Add a “Single Line Text Box” and check “Save as user nickname” - Add a second question (ex.: multiple choice with 1 correct, score: 1) - Click on “Create Live Session” - Join the session with another browser - Answer the question correctly - On the survey manager, go to the end of the survey (Final leaderboard) - Click on the "Close" button Nothing happens while it should close the session and get back to the survey form. Actually, the code was closing the session but failed to get back to the survey as it was using "window.history.back()" and the button "create session" launches the session in a new tab that has no history as all the survey happens on the same URL. We solve the problem by reloading the page instead. As the session is closed, the page then displays "Thank you". We change slightly the tour as it expects that at the end, the close button leads to the survey back-end form (as it checks the presence of the button "Create Session" which is the action "action_start_session"). But as the session is started in a new tab, we have decided that it is better to display the final "Thank you" screen rather than returning to the back-end survey form as this is meant to be displayed in public. [FIX] documents: fix infinite line when max score is 0 How to reproduce: - Create a live survey - Add a “Single Line Text Box” and check “Save as user nickname” - Add a second question (ex.: multiple choice with 1 correct, score: 1) - Click on “Create Live Session” - Join the session with another browser - Answer the wrong answer to the question At the end of the survey, the score bar size is very big (multiple time of the screen width). We solve the problem by avoiding dividing by 0. Task-4381603 Forward-Port-Of: odoo/odoo#195706 Forward-Port-Of: odoo/odoo#190442
When creating a new database or activating a new currency, the first rate fetched will often be set only starting "today". This can lead to issues when creating invoices in the past, especially if the conversion rate is very different from 1. Instead of only using a fallback on 1, we also fallback on the oldest rate in the database if available. Forward-Port-Of: odoo/odoo#195520 Forward-Port-Of: odoo/odoo#194500
Original PR description
When creating a new database or activating a new currency, the first rate fetched will often be set only starting "today". This can lead to issues when creating invoices in the past, especially if the conversion rate is very different from 1. Instead of only using a fallback on 1, we also fallback on the oldest rate in the database if available. Forward-Port-Of: odoo/odoo#195520 Forward-Port-Of: odoo/odoo#194500
Fixes two bugs on carry over amount: reset accrual carryover to lost state: steps: - set the carry over to "carry over with maximum" - set a number of days to carry over and save - set the carry over type back to "None" -> You still carry over the amount of days you typed in instead of 0 always carryover the cap: steps: - create an accrual plan with: - 21 days per year alloc - start immediate - 28 days cap - carryover with max 7 days - create
Original PR description
Fixes two bugs on carry over amount:
reset accrual carryover to lost state:
steps:
- set the carry over to "carry over with maximum"
- set a number of days to carry over and save
- set the carry over type back to "None"
-> You still carry over the amount of days you typed in instead of 0
always carryover the cap:
steps:
- create an accrual plan with:
- 21 days per year alloc
- start immediate
- 28 days cap
- carryover with max 7 days
- create allocation for the current year (1/1/XXXX)
- take 15 days holidays -> 6 days left on the alloc
- check the leaves left for next year -> 28 days, should be 27 (21 + 6)
This happened because the carry-over calculation didn't take into account
the number of days left on the allocation and always carried over the cap.
Forward-Port-Of: odoo/odoo#196061
Forward-Port-Of: odoo/odoo#188621__Current behavior before commit:__ jQuery has been removed from `web.assets_backend` in [`b8fc93e`][1], now it's dynamically added with the `ensureJQuery` method. A lot of customers put `web/static/lib/jquery/jquery.js` in `web.assets_backend` (using custom modules) but not `web/static/src/legacy/js/libs/jquery.js`. Therefore `ensureJQuery` doesn't fetch `web._assets_jquery` and therefore `web/static/src/legacy/js/libs/jquery.js` is never included. __Description of the fix:__ If jQuery is
Original PR description
__Current behavior before commit:__ jQuery has been removed from `web.assets_backend` in [`b8fc93e`][1], now it's dynamically added with the `ensureJQuery` method. A lot of customers put…
__Current behavior before commit:__ jQuery has been removed from `web.assets_backend` in [`b8fc93e`][1], now it's dynamically added with the `ensureJQuery` method. A lot of customers put `web/static/lib/jquery/jquery.js` in `web.assets_backend` (using custom modules) but not `web/static/src/legacy/js/libs/jquery.js`. Therefore `ensureJQuery` doesn't fetch `web._assets_jquery` and therefore `web/static/src/legacy/js/libs/jquery.js` is never included. __Description of the fix:__ If jQuery is present, check if the method `getScrollingElement` is defined in jQuery.fn. If not load `/web/static/src/legacy/js/libs/jquery.js`. __Steps to reproduce the issue in local:__ 1. Add back "web/static/lib/jquery/jquery.js" in the `web.assets_backend` entry of `addons/web/\_\_manifest\_\_.py` to simulate that a customer added it in a custom module. 2. Open the database and Refresh Assets in the debug menu 3. Try to open the editor Crash: "TypeError: $(...).getScrollingElement is not a function" opw-4499576 [1]: https://github.com/odoo/odoo/commit/b8fc93ea97b8 Forward-Port-Of: odoo/odoo#195092
This commit fixes an issue where if the user applies a group by on an aggregatable field (an integer like color_index for example), this field is also registered as an aggregator in the webReadGroup call and this leads to nonsensical results by the orm. After this commit, the group by field is automatically excluded from aggregators so the issue cannot happen. task-4491839 Forward-Port-Of: odoo/odoo#196082 Forward-Port-Of: odoo/odoo#195623
Original PR description
This commit fixes an issue where if the user applies a group by on an aggregatable field (an integer like color_index for example), this field is also registered as an aggregator in the webReadGroup call and this leads to nonsensical results by the orm. After this commit, the group by field is automatically excluded from aggregators so the issue cannot happen. task-4491839 Forward-Port-Of: odoo/odoo#196082 Forward-Port-Of: odoo/odoo#195623
Steps: - Install `purchase` or any other model with analytic_mixin - Install `analytic` - Install `web_studio` - Enable analytic in configuration - Add a new approval on 'button_confirm' in `purchase.order` - Set a domain with analytic_distribution e.g - - e.g. ("order_line.analytic_distribution", "=", "Administrative") - Click on Refresh button - The refresh button preview shows x records - Create a new purchase.order - Add analytic on op
Original PR description
Steps: - Install `purchase` or any other model with analytic_mixin - Install `analytic` - Install `web_studio` - Enable analytic in configuration - Add a new approval on 'button_confirm' in…
Steps:
- Install `purchase` or any other model with analytic_mixin
- Install `analytic`
- Install `web_studio`
- Enable analytic in configuration
- Add a new approval on 'button_confirm' in `purchase.order`
- Set a domain with analytic_distribution e.g
- - e.g. ("order_line.analytic_distribution", "=", "Administrative")
- Click on Refresh button
- The refresh button preview shows x records
- Create a new purchase.order
- Add analytic on optional column
- Add a new product with analytic_distribution Administrative
- Try to use `button_confirm`
- Approval is not working while the refresh shows record is available
The json fields, in particular the `analytic_distribution` fields, are not designed to be searched via a `filtered_domain` (which is what studio approval uses to check whether or not a button can be used by the current user), this is currently a technical limitation.
To avoid any future problems, this commit prevents users from using a json field to search on them, since this is not supported.
opw-4416646
Forward-Port-Of: odoo/odoo#195972
Forward-Port-Of: odoo/odoo#195765If the session id is outdated in the frontend, we need to ensure the reloading of data. Now we check if the session id is up to date before loading data and if not we load the new session. Forward-Port-Of: odoo/odoo#195953
Original PR description
If the session id is outdated in the frontend, we need to ensure the reloading of data. Now we check if the session id is up to date before loading data and if not we load the new session. Forward-Port-Of: odoo/odoo#195953
A regression introduced by #193728 removes the support for local read-only testing without a real replica. Before this change, it was possible to test a readonly like behavior by providing a `--db_replica_host=` to the command line. The empty replica will still use a socket connection to the main server, but would work as if a replica host was given. The distinction between an empty string and False was used to make it work Since b1f7be518e2075c546bcedc0f4ba6dd62dff3c8f the default is not
Original PR description
A regression introduced by #193728 removes the support for local read-only testing without a real replica. Before this change, it was possible to test a readonly like behavior by providing a `--db_replica_host=` to the command line. The empty replica will still use a socket connection to the main server, but would work as if a replica host was given. The distinction between an empty string and False was used to make it work Since b1f7be518e2075c546bcedc0f4ba6dd62dff3c8f the default is not False but an empty string, leading to the readonly behavior even without a replica. This pr proposes to introduce a new dev mode flag to enable the replica mode, without False vs empty string check avoiding some confusion. Forward-Port-Of: odoo/odoo#195280
In case of manipulations with new records, ensure the computation of bank_partner_id field is well recomputed if company is changed. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#195962
Original PR description
In case of manipulations with new records, ensure the computation of bank_partner_id field is well recomputed if company is changed. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#195962
steps to reproduce: -Create a new time off type. -Set the approval radio button to either "By Time Off Officer" or "By Employee's Approver and Time Off Officer." -Leave the "Notified Time Off Officer" field empty. -Try to create a new allocation for the newly created time off type. -Notice that an activity is created for the user who created the allocation. cause: When the "Notified Time Off Officer" field is left empty, no activity or email should be created. solution: Remove sel
Original PR description
steps to reproduce: -Create a new time off type. -Set the approval radio button to either "By Time Off Officer" or "By Employee's Approver and Time Off Officer." -Leave the "Notified Time Off Officer" field empty. -Try to create a new allocation for the newly created time off type. -Notice that an activity is created for the user who created the allocation. cause: When the "Notified Time Off Officer" field is left empty, no activity or email should be created. solution: Remove self.env.user.ids to prevent the creation of an activity for the user. task-4351747 Forward-Port-Of: odoo/odoo#189407
### Steps to reproduce: - Open the same document in two tabs. - Press Enter multiple times in one tab. - Observe the avatar flickers on the other tab with each Enter press. ### Description of the issue/feature this PR addresses: - `refreshSelection` replaced `this.avatarOverlay` children and re-appended the avatar element in `drawPeerAvatar`, causing flicker. ### Desired behavior after PR is merged: - The avatar no longer flickers when pressing Enter. task-4367144 Forward-Po
Original PR description
### Steps to reproduce: - Open the same document in two tabs. - Press Enter multiple times in one tab. - Observe the avatar flickers on the other tab with each Enter press. ### Description of the issue/feature this PR addresses: - `refreshSelection` replaced `this.avatarOverlay` children and re-appended the avatar element in `drawPeerAvatar`, causing flicker. ### Desired behavior after PR is merged: - The avatar no longer flickers when pressing Enter. task-4367144 Forward-Port-Of: odoo/odoo#192130
There were problems reported on some invoices caused by rounding errors. This PR solves these problems, and adds more test cases to the precision unit tests. task-4464702 task-4509607 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#195681 Forward-Port-Of: odoo/odoo#194813
Original PR description
There were problems reported on some invoices caused by rounding errors. This PR solves these problems, and adds more test cases to the precision unit tests. task-4464702 task-4509607 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#195681 Forward-Port-Of: odoo/odoo#194813
This error occurs when an invoice is not initially sent to the tax agency, but we later attempt to print it and send it to the agency. Steps to reproduce: --- - Install ``l10n_it_edi`` module - Switch to ``IT Company`` - Create Customers Invoice > ``Confirm`` > ``Print & Send`` - Disable ``Send to Tax Agency`` > ``Print & Send`` - Now again ``Print & Send`` and ``Print & Send`` Traceback: --- ``KeyError: 'l10n_it_edi_values'`` This commit resolves the error by checking that ``l1
Original PR description
This error occurs when an invoice is not initially sent to the tax agency, but we later attempt to print it and send it to the agency. Steps to reproduce: --- - Install ``l10n_it_edi`` module - Switch to ``IT Company`` - Create Customers Invoice > ``Confirm`` > ``Print & Send`` - Disable ``Send to Tax Agency`` > ``Print & Send`` - Now again ``Print & Send`` and ``Print & Send`` Traceback: --- ``KeyError: 'l10n_it_edi_values'`` This commit resolves the error by checking that ``l10n_it_edi_values`` is present in ``move_data``. sentry-6191573767 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192438
**Steps to reproduce** 1. Have Stock and Sales installed. 2. Go to the Sales list view of products, have more than 1 page of products. 3. Select all the products on the current page by checking the checkbox on the first line. After that, click on "Select all" to select all products. 4. Actions > Export 5. Select "Products" (`product_variant_ids`) and then "Products/Stock Quant" (`stock_quant_ids`). `ValueError: Invalid field stock.quant.sale_ok in leaf ('sale_ok', '=', True)` **Chang
Original PR description
**Steps to reproduce**
1. Have Stock and Sales installed.
2. Go to the Sales list view of products, have more than 1 page of products.
3. Select all the products on the current page by checking the checkbox
on the first line. After that, click on "Select all" to select all
products.
4. Actions > Export
5. Select "Products" (`product_variant_ids`) and then "Products/Stock Quant"
(`stock_quant_ids`).
`ValueError: Invalid field stock.quant.sale_ok in leaf ('sale_ok', '=', True)`
**Change**
Only use the domain of the list view to filter fields when the export dialog
is opened. The domain should only be used for that and not when `getExportFields`
is called when clicking on one of the children fields of the root model.
opw-4408457
Forward-Port-Of: odoo/odoo#193567Fix args missing in a mocked method in the test. rb error: 114229 Forward-Port-Of: odoo/odoo#196044
Original PR description
Fix args missing in a mocked method in the test. rb error: 114229 Forward-Port-Of: odoo/odoo#196044
Since [1] ensures that the Chatter is positioned under the page header, the introduction of the new "sidebar" header template caused misplacement when scrolling. This commit adds a check to avoid applying padding when the header is a sidebar (o_header_sidebar), preventing unintended scrolling behavior in the sidebar layout. Steps to reproduce: - Install the Sales module. - On a sales order, add some comments in the Chatter. - Click on Preview. - Edit the header template and select th
Original PR description
Since [1] ensures that the Chatter is positioned under the page header, the introduction of the new "sidebar" header template caused misplacement when scrolling. This commit adds a check to avoid applying padding when the header is a sidebar (o_header_sidebar), preventing unintended scrolling behavior in the sidebar layout. Steps to reproduce: - Install the Sales module. - On a sales order, add some comments in the Chatter. - Click on Preview. - Edit the header template and select the last option, "Sidebar". - Save the changes. - Scroll down and observe that the Chatter disappears. opw-4515419 [1]: https://github.com/odoo/odoo/commit/368eb78a9cedfce0802b64fd2782e1c018541e40 Forward-Port-Of: odoo/odoo#196115
Before we had no solution to test the synchronisation of the pos. In classic tours websocket are not supported. And we cannot launch two tours in parallel. This commit add the possibility to load test assets in the PoS during our development. That's allow us to launch tour in loop in two different browser and test the synchronisation by creating orders, payment etc. Tour assets are only added by adding `&tours=True` in the URL of the PoS interface. Forward-Port-Of: odoo/odoo#196095 Forwar
Original PR description
Before we had no solution to test the synchronisation of the pos. In classic tours websocket are not supported. And we cannot launch two tours in parallel. This commit add the possibility to load test assets in the PoS during our development. That's allow us to launch tour in loop in two different browser and test the synchronisation by creating orders, payment etc. Tour assets are only added by adding `&tours=True` in the URL of the PoS interface. Forward-Port-Of: odoo/odoo#196095 Forward-Port-Of: odoo/odoo#195344
Before this commit, if a currency had zero decimal places, it would cause an error when selling products. opw-4543742 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#196223
Original PR description
Before this commit, if a currency had zero decimal places, it would cause an error when selling products. opw-4543742 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#196223
In commit https://github.com/odoo/odoo/commit/837e67e82d4cf662b2dcd5d5750253dbc080bd96 we prevent setting expiration date on `loyalty` type programs for UI and wanted to ensure expiration date is not set on loyalty cards. This PR remove a line which is setting expiration date on `loyalty` type program in POS which missed during forward port PR https://github.com/odoo/odoo/pull/183044 Forward-Port-Of: odoo/odoo#196121
Original PR description
In commit https://github.com/odoo/odoo/commit/837e67e82d4cf662b2dcd5d5750253dbc080bd96 we prevent setting expiration date on `loyalty` type programs for UI and wanted to ensure expiration date is not set on loyalty cards. This PR remove a line which is setting expiration date on `loyalty` type program in POS which missed during forward port PR https://github.com/odoo/odoo/pull/183044 Forward-Port-Of: odoo/odoo#196121
Description of the issue this PR addresses: Current behavior before PR: When converting paragraph related elements (other than the `<p>` tag itself) to a `<p>` tag, the tag would be unwrapped. Desired behavior after PR is merged: The tag is now converted directly to a `<p>` tag without unwrapping it. task-4488784 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#194146
Original PR description
Description of the issue this PR addresses: Current behavior before PR: When converting paragraph related elements (other than the `<p>` tag itself) to a `<p>` tag, the tag would be unwrapped. Desired behavior after PR is merged: The tag is now converted directly to a `<p>` tag without unwrapping it. task-4488784 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#194146
Currently, a traceback is occurring when the user tries to create a new put-away record and remove the `location_in_id`. To reproduce this issue: 1) Install Inventory 2) Enable multi-step routes from inventory settings 3) Create a new putaway rules record from inventory configuration 4) Remove the `when product arrives in` value Error:- ``` TypeError: startswith first arg must be str or a tuple of str, not bool ``` When the user removes the `location_in_id`, an onchange meth
Original PR description
Currently, a traceback is occurring when the user tries to create a new put-away record and remove the `location_in_id`. To reproduce this issue: 1) Install Inventory 2) Enable multi-step routes from…
Currently, a traceback is occurring when the user tries to create a new put-away record and remove the `location_in_id`. To reproduce this issue: 1) Install Inventory 2) Enable multi-step routes from inventory settings 3) Create a new putaway rules record from inventory configuration 4) Remove the `when product arrives in` value Error:- ``` TypeError: startswith first arg must be str or a tuple of str, not bool ``` When the user removes the `location_in_id`, an onchange method `_onchange_location_in` triggers. https://github.com/odoo/odoo/blob/239d18c8689d38e11783716b7e14a5204daed98a/addons/stock/models/product_strategy.py#L80-L83 We get the `loc_in` value as an empty recordset, because the user removed the `location_in_id` value. So it will lead to the above traceback from the below line https://github.com/odoo/odoo/blob/239d18c8689d38e11783716b7e14a5204daed98a/addons/stock/models/stock_location.py#L453-L455 sentry-6210564390 Forward-Port-Of: odoo/odoo#195808 Forward-Port-Of: odoo/odoo#195555
Description of the issue/feature this PR addresses: - Fixed an issue where changing the cashier with no available cashiers caused a traceback due to an undefined `this.dialog` Replaced it with the correct `dialog` reference. ## step to reproduce - install `point of sale` - setup a new point_of_sale , as shown  - start session in that pos. - try to change the cashier Current behavior bef
Original PR description
Description of the issue/feature this PR addresses: - Fixed an issue where changing the cashier with no available cashiers caused a traceback due to an undefined `this.dialog` Replaced it with the correct `dialog` reference. ## step to reproduce - install `point of sale` - setup a new point_of_sale , as shown  - start session in that pos. - try to change the cashier 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#195993
For the same reason as [1], this commit adds the parameter "sanitize_overridable=True" to the "description_motivational" field of "gamification" model. This ensures that users with sufficient rights can properly edit the motivational description. This issue is difficult to reproduce in 16.0, as no blocks contain `<button>` elements. However, in 18.0, some snippets—such as `accordion` or the new `image gallery`—include button elements, making the issue more apparent. Steps to reproduce (in
Original PR description
For the same reason as [1], this commit adds the parameter "sanitize_overridable=True" to the "description_motivational" field of "gamification" model. This ensures that users with sufficient rights can properly edit the motivational description. This issue is difficult to reproduce in 16.0, as no blocks contain `<button>` elements. However, in 18.0, some snippets—such as `accordion` or the new `image gallery`—include button elements, making the issue more apparent. Steps to reproduce (in 18.0): - Open website module - Go to /slides - Add a carousel snippet to the side panel > Save - Traceback [1]: https://github.com/odoo/odoo/commit/0cd42f8b55e2ab8f214653556b5bde4b54281972 opw-4272357 Forward-Port-Of: odoo/odoo#195777
Try to export one selected product.product generate a traceback due to the `_get_property_fields` that doesn't manage inherited properties. opw-4438752 Forward-Port-Of: odoo/odoo#195787
Original PR description
Try to export one selected product.product generate a traceback due to the `_get_property_fields` that doesn't manage inherited properties. opw-4438752 Forward-Port-Of: odoo/odoo#195787
On a server with low activity, the log is bloated with messages containing `[...] Closed 0 connections`. It is only useful to know if a connection was closed, so we skip logging otherwise. 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#196012
Original PR description
On a server with low activity, the log is bloated with messages containing `[...] Closed 0 connections`. It is only useful to know if a connection was closed, so we skip logging otherwise. 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#196012
**Problem**: When a link is copied with HTML content, `handlePasteText` is called after `handlePasteHtml`, and the content type is `text/html`. **Solution**: Extract the pasted content as text inside `handlePasteHtml` and check if it is a single valid link. If so, skip further processing. **Steps to Reproduce**: 1. Copy a link from Visual Studio Code. 2. Paste the link into the editor. 3. Observe that the link is not created. opw-4460599 --- I confirm I have signed the CLA and
Original PR description
**Problem**: When a link is copied with HTML content, `handlePasteText` is called after `handlePasteHtml`, and the content type is `text/html`. **Solution**: Extract the pasted content as text inside `handlePasteHtml` and check if it is a single valid link. If so, skip further processing. **Steps to Reproduce**: 1. Copy a link from Visual Studio Code. 2. Paste the link into the editor. 3. Observe that the link is not created. opw-4460599 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192931
**Problem**: The function `_getColumnSize` returns the size of the columns. When `gridIndex = columnSize;` is assigned and `columnSize` equals 12, it causes an overflow in the `grid` array. This leads to invalid elements being passed to `_applyColspan`. **Solution**: Ensure `_applyColspan` is only called when `gridIndex` is within valid bounds. **Steps to reproduce**: 1. Open an email marketing template. 2. Extend the "Centered Logo" snippet to the maximum size (`col-12`). 3. Observe
Original PR description
**Problem**: The function `_getColumnSize` returns the size of the columns. When `gridIndex = columnSize;` is assigned and `columnSize` equals 12, it causes an overflow in the `grid` array. This leads to invalid elements being passed to `_applyColspan`. **Solution**: Ensure `_applyColspan` is only called when `gridIndex` is within valid bounds. **Steps to reproduce**: 1. Open an email marketing template. 2. Extend the "Centered Logo" snippet to the maximum size (`col-12`). 3. Observe a traceback error. opw-4381159 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#193255
add intercalate unsubscription page Email clients have begun implementing security measures to protect users from phishing by analyzing email links, and interacting with them (see task-3972953). This has the side effect of automatically unsubscribing email recipients from mailing lists by clicking the link in the footer of the emails. This commit adds an intermediate step to the process, by requiring users to click on a button before they are unsubscribed. -- The current unsubscri
Original PR description
add intercalate unsubscription page Email clients have begun implementing security measures to protect users from phishing by analyzing email links, and interacting with them (see task-3972953). This…
add intercalate unsubscription page Email clients have begun implementing security measures to protect users from phishing by analyzing email links, and interacting with them (see task-3972953). This has the side effect of automatically unsubscribing email recipients from mailing lists by clicking the link in the footer of the emails. This commit adds an intermediate step to the process, by requiring users to click on a button before they are unsubscribed. -- The current unsubscription destination page for emails makes it unclear for the user whether they've been unsubscribed or not. This is because the "unsubscription confirmed" box is placed below the "manage subscription settings" box on the confirmation page. To avoid confusion, while ensuring current Studio customizations to stable instances are not impacted, the unsubscription confirmation page will clarify that the user is unsubscribed and offer the option to manage unsubscriptions by reaching the destination page. task-4364446 X-original-commit: 52b3f53485e3977dea86e7514f2cc1952840af25 Forward-Port-Of: #195913 Forward-Port-Of: odoo/odoo#196128
**Problem**: When `u` or `s` tags are applied, changing the `font-size` wraps the text inside these tags instead of applying it to the tags themselves. For example, `a<u>b</u>c` → `a<u><font>b</font></u>c`, which results in an inconsistent appearance. **Solution**: Ensure that the `span` for font size is applied to the highest non-block ancestor to maintain proper styling. **Steps to Reproduce**: 1. Add text. 2. Apply underline. 3. Increase font size. 4. Observe that the underline
Original PR description
**Problem**: When `u` or `s` tags are applied, changing the `font-size` wraps the text inside these tags instead of applying it to the tags themselves. For example, `a<u>b</u>c` → `a<u><font>b</font></u>c`, which results in an inconsistent appearance. **Solution**: Ensure that the `span` for font size is applied to the highest non-block ancestor to maintain proper styling. **Steps to Reproduce**: 1. Add text. 2. Apply underline. 3. Increase font size. 4. Observe that the underline remains the original size instead of scaling with the text. opw-3086072 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#195569
**Current behavior before PR:** - Clicking the Remove Format button to remove the style from an anchor tag caused a traceback error. **Desired behavior after PR is merged:** - Clicking the Remove Format button now successfully removes any applied styles from the selected text. task: 4427649 Forward-Port-Of: odoo/odoo#191739
Original PR description
**Current behavior before PR:** - Clicking the Remove Format button to remove the style from an anchor tag caused a traceback error. **Desired behavior after PR is merged:** - Clicking the Remove Format button now successfully removes any applied styles from the selected text. task: 4427649 Forward-Port-Of: odoo/odoo#191739
Before this commit, importing an exported order through the PoS UI failed due to missing relations in the imported order data. opw-4237952 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#183379
Original PR description
Before this commit, importing an exported order through the PoS UI failed due to missing relations in the imported order data. opw-4237952 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#183379
- Fix bug where session opening time was set to previous session closing time. - Now we want the pos session opening time to be set when we click "Open register". task-id: 4500391 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#195030 Forward-Port-Of: odoo/odoo#194977
Original PR description
- Fix bug where session opening time was set to previous session closing time. - Now we want the pos session opening time to be set when we click "Open register". task-id: 4500391 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#195030 Forward-Port-Of: odoo/odoo#194977
Before this commit, the resource_ref field of a server action can disappear when the action is saved. This is due to the following: - the update_related_model_id is a computed stored READONLY field which leads to it not being included in the web_save rpc and is therefore not saved on the record The fix consists to ensure the update_related_model_id is saved by making it readonly=False, which is usually what we want when we have a computed stored field. Task: opw-4513803 Forward-Port-O
Original PR description
Before this commit, the resource_ref field of a server action can disappear when the action is saved. This is due to the following: - the update_related_model_id is a computed stored READONLY field which leads to it not being included in the web_save rpc and is therefore not saved on the record The fix consists to ensure the update_related_model_id is saved by making it readonly=False, which is usually what we want when we have a computed stored field. Task: opw-4513803 Forward-Port-Of: odoo/odoo#196094 Forward-Port-Of: odoo/odoo#195124
From a list or kanban view with several records, open a record in form view. Then use the pager to navigate to another record. From this point, execute the `soft_reload` client action (e.g. call a python method from a view button, which returns that client action). This client action is supposed to reload the current controller (the form view in this case), without reloading the whole webclient. Before this commit, the form was indeed reloaded, but the reloaded record was the one we opened fi
Original PR description
From a list or kanban view with several records, open a record in form view. Then use the pager to navigate to another record. From this point, execute the `soft_reload` client action (e.g. call a python method from a view button, which returns that client action). This client action is supposed to reload the current controller (the form view in this case), without reloading the whole webclient. Before this commit, the form was indeed reloaded, but the reloaded record was the one we opened first, not the one we reached after navigating with the pager. With this commit, the correct record is reloaded. Issue spotted for task-3935688 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#195907
Since commit [1], the test "snippets_all_drag_and_drop" is failing randomly on the runbot. This is due to the fact that it is now possible to drop an "inner snippet" next to the "phone number" in the "header". Since the "phone number" is in the middle of the "header" (horizontally), its drop zone overlaps with the one of the "#wrap" during the test. As a result, "inner snippet" is being dropped in the "header" instead of the "#wrap". This happens because the "drag_and_drop" function in the test
Original PR description
Since commit [1], the test "snippets_all_drag_and_drop" is failing randomly on the runbot. This is due to the fact that it is now possible to drop an "inner snippet" next to the "phone number" in the "header". Since the "phone number" is in the middle of the "header" (horizontally), its drop zone overlaps with the one of the "#wrap" during the test. As a result, "inner snippet" is being dropped in the "header" instead of the "#wrap". This happens because the "drag_and_drop" function in the test by default drops at the middle and top of the drop zones. To avoid this kind of situation, in this commit, we add a step at the beginning of the test to hide the header. [1]: https://github.com/odoo/odoo/commit/e0c16bb9a90dfb378b75e0de059e71f0aebd84fb opw-4494945 Forward-Port-Of: odoo/odoo#196173 Forward-Port-Of: odoo/odoo#195554
### Steps to reproduce: - Create a working schedule that is flexible - Assign this working schedule to an Employee - Create a time off type and set the request unit to be 'half day' - Create an allocation for the created time off type for the employee with the flexible working schedule - Create a leave for the mentioned employee with the created time off type for 1 day - Notice the duration of the leave is 2 days not 1 ### Cause: When creating a working schedule we compute the du
Original PR description
### Steps to reproduce: - Create a working schedule that is flexible - Assign this working schedule to an Employee - Create a time off type and set the request unit to be 'half day' - Create an…
### Steps to reproduce: - Create a working schedule that is flexible - Assign this working schedule to an Employee - Create a time off type and set the request unit to be 'half day' - Create an allocation for the created time off type for the employee with the flexible working schedule - Create a leave for the mentioned employee with the created time off type for 1 day - Notice the duration of the leave is 2 days not 1 ### Cause: When creating a working schedule we compute the duration of the periods and since 'attendance.calendar_id.hours_per_day' won't have a value each period will be 1 day. https://github.com/odoo/odoo/blob/18.0/addons/resource/models/resource_calendar_attendance.py#L82 So, when getting the duration of the leave where its request_unit is not 'day' the duration will be the summation of the periods' duration of the working schedule for the employee which in this case will be 1 for each period -each day has 2 periods with the value of 1- ### Fix: Check if the employee if on flexible hours we calcualte the duration as the difference between the date_to and date_from rounded up in days opw-4309551 Forward-Port-Of: odoo/odoo#195634 Forward-Port-Of: odoo/odoo#195223
Description of the issue/feature this PR addresses: Add aggregators on the ir.cron model task-4544612 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#196250
Original PR description
Description of the issue/feature this PR addresses: Add aggregators on the ir.cron model task-4544612 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#196250
Before this commit: ==== - All POS categories were being loaded, even if they had no associated products. After this commit: ==== - Only categories linked to products are loaded. Task-4517979 Forward-Port-Of: odoo/odoo#196307 Forward-Port-Of: odoo/odoo#195377
Original PR description
Before this commit: ==== - All POS categories were being loaded, even if they had no associated products. After this commit: ==== - Only categories linked to products are loaded. Task-4517979 Forward-Port-Of: odoo/odoo#196307 Forward-Port-Of: odoo/odoo#195377
Some pivots were defined with a wrong format on their measure, namely a display of percentage on the subtotal of account reports which makes no sense. task -4546273 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#196355
Original PR description
Some pivots were defined with a wrong format on their measure, namely a display of percentage on the subtotal of account reports which makes no sense. task -4546273 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#196355
[FIX] l10n_hu_edi: price include tax Price unit was not properly calculated: * Didn't remove the discount. * Didn't take into account price included taxes. We also removed a test use case that didn't make sense. Task-id: 4236755 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#195326 Forward-Port-Of: odoo/odoo#190095
Original PR description
[FIX] l10n_hu_edi: price include tax Price unit was not properly calculated: * Didn't remove the discount. * Didn't take into account price included taxes. We also removed a test use case that didn't make sense. Task-id: 4236755 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#195326 Forward-Port-Of: odoo/odoo#190095
- Fix issue when in self order on mobile a weird horizontal scroll bar appears when a product with a long name (and no image) was sell. - Now we just truncate the product name to avoid this issue. task-id: 4510206 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#195465 Forward-Port-Of: odoo/
Original PR description
- Fix issue when in self order on mobile a weird horizontal scroll bar appears when a product with a long name (and no image) was sell. - Now we just truncate the product name to avoid this issue. task-id: 4510206 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#195465 Forward-Port-Of: odoo/odoo#195093
Miscellanous improvements to the Print & Send and to Peppol onboarding: - Nicer translation, warning messages. - Let the bank account be editable when the invoice is posted. Only make it readonly when the invoice is sent. - Some UX change of the EAS fields. - Print & Send: check "email" by default, even when no email is set. We also go back to the default behavior and let a modal open when the email is not set. This will be improved in the generic feature in the future. - Print & Send: Re
Original PR description
Miscellanous improvements to the Print & Send and to Peppol onboarding: - Nicer translation, warning messages. - Let the bank account be editable when the invoice is posted. Only make it readonly when the invoice is sent. - Some UX change of the EAS fields. - Print & Send: check "email" by default, even when no email is set. We also go back to the default behavior and let a modal open when the email is not set. This will be improved in the generic feature in the future. - Print & Send: Rename "Recipients" to "To". - Add a "Print" button to invoice form so that it prints the PDF. - Update the EAS mapping per country. - EAS renaming to be more user-friendly. - Add a Print button to quickly preview the PDF. !this does not trigger a Print & Send wizard => no declaration to government. - Rename Print & Send to "Send" as we did in 18.1+ already. task-4478365 Forward-Port-Of: odoo/odoo#195905 Forward-Port-Of: odoo/odoo#195069
Before this commit, a rounding error could leading to scenarios where orders with a zero total could not be validated. For instance, adding a product priced at $70 with a 15% tax included and then applying an eWallet payment in PoS would result in a zero total. However, during the payment step, the system erroneously prompted for an additional zero-amount payment line, causing confusion and preventing order validation. opw-4487591 --- I confirm I have signed the CLA and read the PR
Original PR description
Before this commit, a rounding error could leading to scenarios where orders with a zero total could not be validated. For instance, adding a product priced at $70 with a 15% tax included and then applying an eWallet payment in PoS would result in a zero total. However, during the payment step, the system erroneously prompted for an additional zero-amount payment line, causing confusion and preventing order validation. opw-4487591 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#195464 Forward-Port-Of: odoo/odoo#195258
- Create a customer invoice with **Product A** priced at 1000 and a quantity of 2. - Add a line with **Product A** at the same price but with a quantity of -1. Confirm the invoice. In the product margin report, the `total_margin` for **Product A** is shown as 3000, even though we only sold for 1000 (as shown in the balance report). A similar issue occurs when a line on an invoice has a negative price, for instance, due to a discount on a sales order. Similarly: - Create a vendor bill
Original PR description
- Create a customer invoice with **Product A** priced at 1000 and a quantity of 2. - Add a line with **Product A** at the same price but with a quantity of -1. Confirm the invoice. In the product…
- Create a customer invoice with **Product A** priced at 1000 and a quantity of 2. - Add a line with **Product A** at the same price but with a quantity of -1. Confirm the invoice. In the product margin report, the `total_margin` for **Product A** is shown as 3000, even though we only sold for 1000 (as shown in the balance report). A similar issue occurs when a line on an invoice has a negative price, for instance, due to a discount on a sales order. Similarly: - Create a vendor bill with **Product B**, with a cost of 1000 and a quantity of 2. - Add a line with **Product B**, with the same cost but a quantity of -1. In the product margin report, the `total_cost` for **Product B** is shown as 3000, even though we only bought for 1000. In `_compute_product_margin_fields_values`, the SQL query takes the absolute value of the balance of every account move line to compute `total`. This means negative values become positive and are added to the positive values instead of canceling each other out, creating the above issues. As a result, the product margin report does not align with the balance sheet. The absolute value is used because `total` is used to compute statistics related to both `out_invoice` (e.g., turnover) and `in_invoice` (e.g., total cost), which both need to be positive. However, the same result can be achieved by inverting the sign for `out_invoice`. opw-4342691 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#195453 Forward-Port-Of: odoo/odoo#193440
**Problem**: When content comes from the config containing self-closing tags, the browser misinterprets them as they are not valid HTML, leading to a broken template when displayed. **Solution**: Convert self-closing tags to explicitly opened and closed tags when content is added to the editor. **Steps to Reproduce**: 1. Open Email Templates > "Sales: Order Confirmation". 2. Inspect and observe that self-closing tags are not rendered correctly. opw-4531812 --- I confirm I hav
Original PR description
**Problem**: When content comes from the config containing self-closing tags, the browser misinterprets them as they are not valid HTML, leading to a broken template when displayed. **Solution**: Convert self-closing tags to explicitly opened and closed tags when content is added to the editor. **Steps to Reproduce**: 1. Open Email Templates > "Sales: Order Confirmation". 2. Inspect and observe that self-closing tags are not rendered correctly. opw-4531812 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#196002
Before this commit: =============== - The 'Edit Payment' button appears even after printing the receipt. (only when pos_hr installed) After this commit: =============== - The 'Edit Payment' button will disappear after printing the receipt. task-4507326 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#195883 Forward-Port-Of: odoo/odoo#194999
Original PR description
Before this commit: =============== - The 'Edit Payment' button appears even after printing the receipt. (only when pos_hr installed) After this commit: =============== - The 'Edit Payment' button will disappear after printing the receipt. task-4507326 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#195883 Forward-Port-Of: odoo/odoo#194999
The constraint to change the main UoM of a product has been removed. Globally on advanced case, it will result in a data corruption. There is two different use case when modifying the UoM of product. First, the user wants to manage the product flow to handle a different packaging by default (e.g. unit to pack of 6). In this case, the previous documents (SO/PO/...) can be trust and we need to update the current inventory in consequence (30 units -> 5 pack of 6). Second, he made a mistake
Original PR description
The constraint to change the main UoM of a product has been removed. Globally on advanced case, it will result in a data corruption. There is two different use case when modifying the UoM of product.…
The constraint to change the main UoM of a product has been removed. Globally on advanced case, it will result in a data corruption. There is two different use case when modifying the UoM of product. First, the user wants to manage the product flow to handle a different packaging by default (e.g. unit to pack of 6). In this case, the previous documents (SO/PO/...) can be trust and we need to update the current inventory in consequence (30 units -> 5 pack of 6). Second, he made a mistake or install the UoM setting and wants to update the everything at once. In this case we set the new UoM everywhere and we don't do any re-computation. Both flows are valid use cases but we choose to handle the second for a better on boarding of new users. In order to do it, we check if all the documents are in the base UoM and if it's possible to modify them everywhere without any computation. If not, we block as before. If yes, we update all the stored many2one for UoM accordingly. Forward-Port-Of: odoo/odoo#195052
This commit add support for comprenhension expression on assign node Forward-Port-Of: odoo/odoo#195638 Forward-Port-Of: odoo/odoo#194878
Original PR description
This commit add support for comprenhension expression on assign node Forward-Port-Of: odoo/odoo#195638 Forward-Port-Of: odoo/odoo#194878
Change an f-string into an sql.identifier for injection prevention Forward-Port-Of: odoo/enterprise#77956
Original PR description
Change an f-string into an sql.identifier for injection prevention Forward-Port-Of: odoo/enterprise#77956
From version 18.0, the closing should work fine and there's no need to hide the closing button anymore. This reverts commit cf86ce0e0c7c47336446da5b335cbc53b7602fcd. Forward-Port-Of: odoo/enterprise#77906
Original PR description
From version 18.0, the closing should work fine and there's no need to hide the closing button anymore. This reverts commit cf86ce0e0c7c47336446da5b335cbc53b7602fcd. Forward-Port-Of: odoo/enterprise#77906
[This commit][1] changed the Sign action helper to onboard users. However, in doing so the text was put inside conditional `t-esc` attributes, causing it to not be translatable. This change fixes that by properly using text nodes. [1]: https://github.com/odoo/enterprise/commit/a5fc0b098c4a4b61d7ce7fd87180ed32dcb1f6f5 [opw-4421055](https://www.odoo.com/odoo/project.task/4421055) Forward-Port-Of: odoo/enterprise#78147
Original PR description
[This commit][1] changed the Sign action helper to onboard users. However, in doing so the text was put inside conditional `t-esc` attributes, causing it to not be translatable. This change fixes that by properly using text nodes. [1]: https://github.com/odoo/enterprise/commit/a5fc0b098c4a4b61d7ce7fd87180ed32dcb1f6f5 [opw-4421055](https://www.odoo.com/odoo/project.task/4421055) Forward-Port-Of: odoo/enterprise#78147
### The Issue: In `l10n_es` 347 serves to declare operations within Spain. 349 serves to declare operations in other EU countries https://github.com/odoo/enterprise/commit/9d79ed1128e76e8553a7cc39e790de4369345eec However, when creating an invoice for a Spanish customer, the field `Type for mod 349` is set despite the field `Available for Mod349` being False. ### How to Reproduce: 1. Install `l10n_es`. 2. Create an invoice for a Spanish customer and check that field 347 (AEAT tab)
Original PR description
### The Issue: In `l10n_es` 347 serves to declare operations within Spain. 349 serves to declare operations in other EU countries…
### The Issue: In `l10n_es` 347 serves to declare operations within Spain. 349 serves to declare operations in other EU countries https://github.com/odoo/enterprise/commit/9d79ed1128e76e8553a7cc39e790de4369345eec However, when creating an invoice for a Spanish customer, the field `Type for mod 349` is set despite the field `Available for Mod349` being False. ### How to Reproduce: 1. Install `l10n_es`. 2. Create an invoice for a Spanish customer and check that field 347 (AEAT tab) is set as regular operation. 3. Add both fields (type for 347 and type for 349) to the customer invoices list view using Studio. 4. Observe that for invoices where 347 is set, 349 is also set (E-Suministros/Supplies). ### Cause: In the `account_move` model of `l10n_es_reports`, the field `l10n_es_reports_mod349_invoice_type` was being set with a default value even when `Available for Mod349` is False. opw-4339292 Forward-Port-Of: odoo/enterprise#77996 Forward-Port-Of: odoo/enterprise#76042
Modifiy the test since it's not possible anymore to modify the UoM if all the different record doesn't belong to the same UoM than the product ones. Forward-Port-Of: odoo/enterprise#78282
Original PR description
Modifiy the test since it's not possible anymore to modify the UoM if all the different record doesn't belong to the same UoM than the product ones. Forward-Port-Of: odoo/enterprise#78282
task-4478365 Forward-Port-Of: odoo/enterprise#78243 Forward-Port-Of: odoo/enterprise#77772
Original PR description
task-4478365 Forward-Port-Of: odoo/enterprise#78243 Forward-Port-Of: odoo/enterprise#77772
Before this commit, if a user was an attendee of an event linked to an appointment type, but did not have access to the appointment (not part of the staff_user_ids), an access error would occur when trying to sync their calendar with Google or Microsoft. This error happened inside the `_get_customer_description` function overridden in the appointment module. opw-4402859 Forward-Port-Of: odoo/enterprise#78110 Forward-Port-Of: odoo/enterprise#76113
Original PR description
Before this commit, if a user was an attendee of an event linked to an appointment type, but did not have access to the appointment (not part of the staff_user_ids), an access error would occur when trying to sync their calendar with Google or Microsoft. This error happened inside the `_get_customer_description` function overridden in the appointment module. opw-4402859 Forward-Port-Of: odoo/enterprise#78110 Forward-Port-Of: odoo/enterprise#76113
This PR fixed tests when runbot runs without demo data installed. Creates users instead of referencing them and editing. Forward-Port-Of: odoo/enterprise#78431
Original PR description
This PR fixed tests when runbot runs without demo data installed. Creates users instead of referencing them and editing. Forward-Port-Of: odoo/enterprise#78431
"currency_id_of_value_currency" is redundant with "invoice_currency_id" Forward-Port-Of: odoo/enterprise#77649
Original PR description
"currency_id_of_value_currency" is redundant with "invoice_currency_id" Forward-Port-Of: odoo/enterprise#77649
In quant_barcode_model we fetch the quant at the new line creation. It's use in order to define the current theorical inventory quantity. But with rfid, it could be heavy since each serial number can be a new line and doing an rpc by line will be a bottleneck. To improve it, each time we add a product in the cache, we also add the associated quants. During the new line creation, we search for the product in the cache rather than doing an rpc with a specific domain Forward-Port-Of: odoo/en
Original PR description
In quant_barcode_model we fetch the quant at the new line creation. It's use in order to define the current theorical inventory quantity. But with rfid, it could be heavy since each serial number can be a new line and doing an rpc by line will be a bottleneck. To improve it, each time we add a product in the cache, we also add the associated quants. During the new line creation, we search for the product in the cache rather than doing an rpc with a specific domain Forward-Port-Of: odoo/enterprise#77525 Forward-Port-Of: odoo/enterprise#71660
Previously after activating debug mode and then dark mode, the letters of database name are not visible clearly. It is happening because in new bootstrap version we are having an inappropriate color for mark tag in dark mode. After this commit the database name will be clearly visible in dark mode. Task- 4389154 Forward-Port-Of: odoo/enterprise#78364
Original PR description
Previously after activating debug mode and then dark mode, the letters of database name are not visible clearly. It is happening because in new bootstrap version we are having an inappropriate color for mark tag in dark mode. After this commit the database name will be clearly visible in dark mode. Task- 4389154 Forward-Port-Of: odoo/enterprise#78364
Steps to Reproduce: • Install the Payroll app. • Navigate to the Work Entries Gantt view. • When there is deferred time off, a warning message is displayed. • Scrolling horizontally in the Gantt view causes the warning message to move along, whereas it should remain static. Cause: • The position of the warning message element is not fixed. Fix: • Set the element's position to sticky so that it remains static while scrolling. task-4367336 Forward-Port-Of: odoo/enterprise#75037
Original PR description
Steps to Reproduce: • Install the Payroll app. • Navigate to the Work Entries Gantt view. • When there is deferred time off, a warning message is displayed. • Scrolling horizontally in the Gantt view causes the warning message to move along, whereas it should remain static. Cause: • The position of the warning message element is not fixed. Fix: • Set the element's position to sticky so that it remains static while scrolling. task-4367336 Forward-Port-Of: odoo/enterprise#75037
…ling test in saas-18.1 This commit aims to add missing partner_id at the creation of calendar_booking in test_project_user_appointment_type_task_population_on_confirmed_so. related task-3823058 fixes following runbot error: https://runbot.odoo.com/odoo/runbot.build.error/110584 Forward-Port-Of: odoo/enterprise#78261
Original PR description
…ling test in saas-18.1 This commit aims to add missing partner_id at the creation of calendar_booking in test_project_user_appointment_type_task_population_on_confirmed_so. related task-3823058 fixes following runbot error: https://runbot.odoo.com/odoo/runbot.build.error/110584 Forward-Port-Of: odoo/enterprise#78261
Whatsapp API doesn't allow to send captions with audio anymore, therefore we should modify the way we handle captions. After this commit audio will be sent first while text message will stay in a composer, it will only be sent after the audio is sent. task-4007616 Forward-Port-Of: odoo/enterprise#78328 Forward-Port-Of: odoo/enterprise#66818
Original PR description
Whatsapp API doesn't allow to send captions with audio anymore, therefore we should modify the way we handle captions. After this commit audio will be sent first while text message will stay in a composer, it will only be sent after the audio is sent. task-4007616 Forward-Port-Of: odoo/enterprise#78328 Forward-Port-Of: odoo/enterprise#66818
Steps to reproduce ================== - Install hr_timesheet - Use an android device - Click on a time field => A numeric virtual keyboard appears. This prevents us from entering the `:` character. Cause of the issue ================== The inputmode attribute is set to numeric Solution ======== Set the inputmode to it's default value: text. See also [float_time_field] --- [float_time_field]: https://github.com/odoo/odoo/commit/8b919ae51d7deb34169b7c6970964056ef2e
Original PR description
Steps to reproduce ================== - Install hr_timesheet - Use an android device - Click on a time field => A numeric virtual keyboard appears. This prevents us from entering the `:` character. Cause of the issue ================== The inputmode attribute is set to numeric Solution ======== Set the inputmode to it's default value: text. See also [float_time_field] --- [float_time_field]: https://github.com/odoo/odoo/commit/8b919ae51d7deb34169b7c6970964056ef2eb632 opw-4344083 Forward-Port-Of: odoo/enterprise#77429 Forward-Port-Of: odoo/enterprise#77339
When creating a shift in planning from the top bar, the shift is created but does not appear. task-4446957 Forward-Port-Of: odoo/enterprise#78099 Forward-Port-Of: odoo/enterprise#76563
Original PR description
When creating a shift in planning from the top bar, the shift is created but does not appear. task-4446957 Forward-Port-Of: odoo/enterprise#78099 Forward-Port-Of: odoo/enterprise#76563
Bug introduced in the last changes before merging the module that wasn't caught Forward-Port-Of: odoo/enterprise#78382
Original PR description
Bug introduced in the last changes before merging the module that wasn't caught Forward-Port-Of: odoo/enterprise#78382
Mod349 tax report in Spanish localization report the total number of intra-community operations. This counter however, does not take into account paid invoices Steps to reproduce: - With an ES company setup - Create an invoice to an EU partner - Register payment for the invoice - Go to Accounting / Reporting / Statement Reports / Tax Report - Select Tax Report (Mod 349) (ES) Issue: Total number of intra-community operations is 0 opw-4403287 Forward-Port-Of: odoo/enterprise#77928
Original PR description
Mod349 tax report in Spanish localization report the total number of intra-community operations. This counter however, does not take into account paid invoices Steps to reproduce: - With an ES company setup - Create an invoice to an EU partner - Register payment for the invoice - Go to Accounting / Reporting / Statement Reports / Tax Report - Select Tax Report (Mod 349) (ES) Issue: Total number of intra-community operations is 0 opw-4403287 Forward-Port-Of: odoo/enterprise#77928 Forward-Port-Of: odoo/enterprise#77238
Currently, integer fields cannot be selected as unicity fields in marketing campaigns. ### Steps to reproduce * Install `marketing_automation` * Open a marketing campaign form view and try to set the "Unicity based on" field to an integer field. You will notice that integer fields are missing from the selection. ### Cause A small typo in the domain filter: Odoo uses `integer` instead of `int` for field types. opw-4492606 Forward-Port-Of: odoo/enterprise#78289
Original PR description
Currently, integer fields cannot be selected as unicity fields in marketing campaigns. ### Steps to reproduce * Install `marketing_automation` * Open a marketing campaign form view and try to set the "Unicity based on" field to an integer field. You will notice that integer fields are missing from the selection. ### Cause A small typo in the domain filter: Odoo uses `integer` instead of `int` for field types. opw-4492606 Forward-Port-Of: odoo/enterprise#78289
Step: - Install colombian localisation and other localisation which is part of latam localisation and contains `Identification Type` field in checkout address for example Argentina. - Install Ecommerce app. - Set Argentina as country on company and in accounting settings. - Go to shop page. - Add an product in cart and goto checkout address page. - Try to change `Identification Type` field. Issue: - Traceback cannot find parentElement. Cause: - For setting visibility of colombian r
Original PR description
Step: - Install colombian localisation and other localisation which is part of latam localisation and contains `Identification Type` field in checkout address for example Argentina. - Install Ecommerce app. - Set Argentina as country on company and in accounting settings. - Go to shop page. - Add an product in cart and goto checkout address page. - Try to change `Identification Type` field. Issue: - Traceback cannot find parentElement. Cause: - For setting visibility of colombian related fields depending on `ID Type` field we forgot to check website country and selected country is columbian country and which cause issue when multiple latam related localisation install in same db. Fix: - Check colombian country before setting visibility for colombian related field. task-3628329 Forward-Port-Of: odoo/enterprise#78341 Forward-Port-Of: odoo/enterprise#77829
issue: in the payslip menu item To pay shows 'draft', 'verify' payslips instead of 'done' fix: change the action domain to refleact the needed filteration Task: 4487458 Forward-Port-Of: odoo/enterprise#77775
Original PR description
issue: in the payslip menu item To pay shows 'draft', 'verify' payslips instead of 'done' fix: change the action domain to refleact the needed filteration Task: 4487458 Forward-Port-Of: odoo/enterprise#77775
If you do a sepa payment and the employee has no country defined on their private address or the address of their contact, we should raise an error. We also add a warning on the dashboard for such employees with no country. Task: 4334868 Forward-Port-Of: odoo/enterprise#77798 Forward-Port-Of: odoo/enterprise#75545
Original PR description
If you do a sepa payment and the employee has no country defined on their private address or the address of their contact, we should raise an error. We also add a warning on the dashboard for such employees with no country. Task: 4334868 Forward-Port-Of: odoo/enterprise#77798 Forward-Port-Of: odoo/enterprise#75545
If the statement name is too long, it is not truncated, making it impossible to access the button displaying the statement total. Steps to reproduce: - Go to the accounting dashboard - In the Bank journal, select statements - Open a statement and rename it with a long name that occupies the full width of the left column in the reconciliation page The fix truncates the text and adds its full value in the `title` attribute for better accessibility. Before:  After:  opw-4414518 Forward-Port-Of: odoo/enterprise#77495
**How to reproduce:** - As Mitchel Admin, create an appointment type, keep it unpublished - Send an invite (with token) to Demo - Log in as Demo (User access level) - Book a meeting with your manager - You get a calendar event in your agenda - Try to open its form **Before this PR:** It gives access error because the user does not have permission to read the appointment type. **Technical reason:** The record rules only grant access if the appointment is scheduled based on resource
Original PR description
**How to reproduce:** - As Mitchel Admin, create an appointment type, keep it unpublished - Send an invite (with token) to Demo - Log in as Demo (User access level) - Book a meeting with your manager - You get a calendar event in your agenda - Try to open its form **Before this PR:** It gives access error because the user does not have permission to read the appointment type. **Technical reason:** The record rules only grant access if the appointment is scheduled based on resources or if the user is part of the staff. **After this PR:** Users will be able to access the appointment type because sudo will be added. Task-4526059 Forward-Port-Of: odoo/enterprise#78155
Steps to reproduce: - Install the l10n_be_hr_payroll_group_s module. - Open any contract in employee or payroll. - Check the part-time section under the Details tab. Issue: - Labels do not display. Reason: - The view is inherited in both hr_payroll and l10n_be_hr_payroll_group_s modules. - In hr_payroll, the fields are not grouped, while in l10n_be_hr_payroll_group_s, they are. Solution: - Change the position of the "group_s_code" in l10n_be_hr_payroll_group_s module from inside
Original PR description
Steps to reproduce: - Install the l10n_be_hr_payroll_group_s module. - Open any contract in employee or payroll. - Check the part-time section under the Details tab. Issue: - Labels do not display. Reason: - The view is inherited in both hr_payroll and l10n_be_hr_payroll_group_s modules. - In hr_payroll, the fields are not grouped, while in l10n_be_hr_payroll_group_s, they are. Solution: - Change the position of the "group_s_code" in l10n_be_hr_payroll_group_s module from inside to after task-4440190 Forward-Port-Of: odoo/enterprise#76328
Fix args missing in a mocked method in the test. rb error: 114229 Forward-Port-Of: odoo/enterprise#78305
Original PR description
Fix args missing in a mocked method in the test. rb error: 114229 Forward-Port-Of: odoo/enterprise#78305
New UMA value for 2025. Task: 4465318 Forward-Port-Of: odoo/enterprise#77638
Original PR description
New UMA value for 2025. Task: 4465318 Forward-Port-Of: odoo/enterprise#77638
Remove slider for zoom in preparation display and move zoom buttons from navbar to sidebar. Forward-Port-Of: odoo/enterprise#78272
Original PR description
Remove slider for zoom in preparation display and move zoom buttons from navbar to sidebar. Forward-Port-Of: odoo/enterprise#78272
Steps to reproduce: 1. Click the 'Info & Tags' button from the cog wheel dropdown menu next to the breadcrumb. 2. The info button on the right side (near the view switch button) is not getting the 'active' class as it should be. Technical Reason: `this.documentsState.isChatterVisible` in `documents_control_panel` couldn't be updated through the cog menu component directly. This commit adds a reactive object which can be modified and observed by several components. After this Commit:
Original PR description
Steps to reproduce: 1. Click the 'Info & Tags' button from the cog wheel dropdown menu next to the breadcrumb. 2. The info button on the right side (near the view switch button) is not getting the 'active' class as it should be. Technical Reason: `this.documentsState.isChatterVisible` in `documents_control_panel` couldn't be updated through the cog menu component directly. This commit adds a reactive object which can be modified and observed by several components. After this Commit: The Button will get the 'active' class accordingly to the state. This commit also removes duplicate code by using an existing mixin. Task-4427575 Forward-Port-Of: odoo/enterprise#77582
### Steps to reproduce: - Install 'l10n_es' and switch to Spanish company - Go in Accounting > Tax Report and select the report "Mod 390" - Click on the button to download the BOE - Fill the information in the wizard - Click on generate BOE - An error pops up ### Cause: The report Mod 390 is composed of several sections. The method `dispatch_report_action` is called on the first section instead of the entire report. As the first section has no custom handler, an error is raised when tr
Original PR description
### Steps to reproduce: - Install 'l10n_es' and switch to Spanish company - Go in Accounting > Tax Report and select the report "Mod 390" - Click on the button to download the BOE - Fill the…
### Steps to reproduce: - Install 'l10n_es' and switch to Spanish company - Go in Accounting > Tax Report and select the report "Mod 390" - Click on the button to download the BOE - Fill the information in the wizard - Click on generate BOE - An error pops up ### Cause: The report Mod 390 is composed of several sections. The method `dispatch_report_action` is called on the first section instead of the entire report. As the first section has no custom handler, an error is raised when trying to read on it. When exporting a report with sections, `dispatch_report_action` is called on the first section, it detects that this is a section and calls the same method on the parent report. This commit (https://github.com/odoo/enterprise/commit/8213813e68f02d88934285a44a3413505f6ca187) removed the line getting the options for the parent report call to keep the specific options of each section. Specifically, the "report_id" key in the options is the id of the first section, causing the method to be called on the section. ### Solution: Setting the key "report_id" in the options of the parent report. This way the fix of the commit introducing the bug is still active. opw-4501376 Forward-Port-Of: odoo/enterprise#78185
The date field description was saying "customs number", but it should be "Customs Number Date". opw-4507567 Forward-Port-Of: odoo/enterprise#78340 Forward-Port-Of: odoo/enterprise#78165
Original PR description
The date field description was saying "customs number", but it should be "Customs Number Date". opw-4507567 Forward-Port-Of: odoo/enterprise#78340 Forward-Port-Of: odoo/enterprise#78165
Now we move to february, the test is failing on runbot... See (similar): https://github.com/odoo/enterprise/commit/e29b2265fe60e90443d753558e6c9a071ee23d33 task-no Forward-Port-Of: odoo/enterprise#78346
Original PR description
Now we move to february, the test is failing on runbot... See (similar): https://github.com/odoo/enterprise/commit/e29b2265fe60e90443d753558e6c9a071ee23d33 task-no Forward-Port-Of: odoo/enterprise#78346
- -i helpdesk - create company named in Arabic, Chinese or something - BUG: can't create alias -> can't install helpdesk opw-4420662 Forward-Port-Of: odoo/enterprise#76564
Original PR description
- -i helpdesk - create company named in Arabic, Chinese or something - BUG: can't create alias -> can't install helpdesk opw-4420662 Forward-Port-Of: odoo/enterprise#76564
Problem ---------- With low values of Gross, the PAYE can be negative. The must be always positive or equals to 0 Objective ---------- Make the PAYE computation positive. Check the PAYE computation. Solution ---------- It will be now the maximum between the previous computation and 0. To be always >= 0. Order the Gross Taxable with the sequence number. PAYE computation is correct, check the task for more details. task-4255918 Forward-Port-Of: odoo/enterprise#76189
Original PR description
Problem ---------- With low values of Gross, the PAYE can be negative. The must be always positive or equals to 0 Objective ---------- Make the PAYE computation positive. Check the PAYE computation. Solution ---------- It will be now the maximum between the previous computation and 0. To be always >= 0. Order the Gross Taxable with the sequence number. PAYE computation is correct, check the task for more details. task-4255918 Forward-Port-Of: odoo/enterprise#76189
Using the latest data from the Brazilian government [1]. No codes were removed, this contains only new codes and description updates to existing ones. [1] https://www.gov.br/receitafederal/pt-br/assuntos/aduana-e-comercio-exterior/classificacao-fiscal-de-mercadorias/download-ncm-nomenclatura-comum-do-mercosul opw-4522735 Forward-Port-Of: odoo/enterprise#78253
Original PR description
Using the latest data from the Brazilian government [1]. No codes were removed, this contains only new codes and description updates to existing ones. [1] https://www.gov.br/receitafederal/pt-br/assuntos/aduana-e-comercio-exterior/classificacao-fiscal-de-mercadorias/download-ncm-nomenclatura-comum-do-mercosul opw-4522735 Forward-Port-Of: odoo/enterprise#78253
There is a new value for the minimum daily wage for 2025. Task: 4510726 Forward-Port-Of: odoo/enterprise#77733
Original PR description
There is a new value for the minimum daily wage for 2025. Task: 4510726 Forward-Port-Of: odoo/enterprise#77733