Daily updates from Odoo
Tuesday, November 26, 2024
70 changes · 18.0
Enhancements to existing features
Point of Sale product cards now show how many units of each product are already in the cart. This helps cashiers quickly see selected quantities and reduces the chance of duplicate or missing items during checkout.
Original PR description
Before this commit: ================= - The product card did not show the number of items in the cart. After this commit: ================= - Added quantity display on the product card indicates how many of each product is in the cart. Task: 4244560
The full mail composer now prioritizes email templates created by the current user in the template dropdown. This makes frequently relevant templates easier to find immediately, reducing extra clicks through "Search More..." and improving day-to-day messaging efficiency.
Original PR description
In Odoo 18.0's full mail composer, we replaced the default template selector with a custom dropdown menu, enabling users to create, update, delete, or select mail templates directly within the composer. The dropdown initially suggests up to seven templates. When the template isn't among the suggestions, people have to click on the "Search More..." button to select the template they want. This adds a few additional steps in the process of selecting a template. To avoid that, we'll prioritize displaying templates created by the user first, as they are more likely to be selected. This change is designed to enhance user efficiency by making the most relevant templates immediately accessible in the dropdown menu. task-4348578 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Chat windows now open in a taller, more comfortable layout by default, making conversations easier to read and use. The previous option to switch window size has been removed because the larger format is now the standard experience.
Original PR description
Chat window could have toggleable size change from the "..." menu above chat bubbles. Its purpose was to incite users that didn't like using chat windows because to appreciate using chat windows thanks to their optional bigger size. This bigger size was appreciated, so this commit now puts it as the default sizing and removes the option to change the size. Chat windows had a ratio of 3 / 4, which is too squared, resulting in chat windows being either too small in height or too large in width. This commit puts a 9 / 16 ratio instead. The actual size of chat windows after this commit has the same width as a small chat window with the height of large chat windows. Task-4354014 <img width="1554" alt="Screenshot 2024-11-25 at 15 00 13" src="https://github.com/user-attachments/assets/1f08a632-a7f1-45cf-9adf-5dc08bdade4c">
Chatbot answer buttons in Live Chat now appear outside the message bubble. This makes the available responses easier to see and select, improving the visitor chat experience.
Original PR description
Moved chatbot answers buttons outside of the message bubble  task-4354009
A new link has been added in the UrbanPiper point-of-sale settings to direct users to an Odoo survey form. This makes it easier to collect the required information for UrbanPiper setup and onboarding.
Original PR description
In this commit: === - Added a link to redirect users to the Odoo survey form for gathering required details for urbanPiper. task-4350722
Location names in POS UrbanPiper can now be translated so updates are correctly reflected in UrbanPiper. Users are also warned to switch to English when syncing menus, matching UrbanPiper's default language requirement.
Original PR description
In this commit: === - Added translation support for location names in `pos.config` to ensure updates are reflected in UrbanPiper locations. - Since the default language in UrbanPiper is English, users must set their language to English to sync the menu. A redirect warning has been added for users configuring this setting. task-4328185
This change makes it easier to customize the date used when closing subscriptions. It helps businesses adapt subscription closing behavior to their own processes without changing the full closing workflow.
Original PR description
Before this commit it was not possible to change the end_date without override the whole function Since the end_date define the behavior (really closing or not) of set_close be able to easily override this behavior is handy
Resolved issues and error corrections
Internal users now correctly receive the configured default privacy setting for calendar events, even when they are not administrators. This ensures company calendar privacy preferences are applied consistently without requiring elevated user rights.
Original PR description
Before this commit, the calendar default privacy setting was not working for internal users beacause they couldn't see the setting value of other users if they weren't administrators. This commit fixes the issue by making a sudo update on the `res.users.settings` object when computing the calendar default privacy setting of it (and in the inverse method as well). Sudo was needed to allow the business customization and bypass the security that the record rule dictates on users not being able to see the other user's settings (unless they're administrators). task-4260794
This fix prevents an accounting migration from failing when no account entries are found. It ensures the system handles empty results correctly, avoiding an error that could block database upgrades.
Original PR description
- During the migration, the database was blocked, and the following issue occurred: [traceback](https://pad.odoo.com/p/issue_4352724_suba) - This issue was caused by the method `_get_chain_info`…
- During the migration, the database was blocked, and the following issue occurred: [traceback](https://pad.odoo.com/p/issue_4352724_suba)
- This issue was caused by the method `_get_chain_info` returning an [integer value](https://github.com/odoo/odoo/blob/3485abaa313263ea1946b9bdbffec5928d31fd72/addons/account/models/account_move.py#L3847) If at least one account move is retrieved, `chain_info` contains some values, and the condition `if early_stop and chain_info:` is executed as expected.
- However, if no account moves are found (i.e., zero account moves), `chain_info` is assigned the value 0. In this case:
- The condition `if early_stop and chain_info:` is not executed because `chain_info` has no values.
- Then subsequent condition `if 'unreconciled' in chain_info['warnings']:` is executed, which raises the error `TypeError: 'int'-object is not subscriptable` because `chain_info` is an integer(0) and does't have subscriptable attributes like ['warnings'].
- To resolve this issue, I converted the return values of `_get_chain_info` integer to boolean values
TBG - [1648](https://upgrade.odoo.com/web#id=1648&cids=1&menu_id=107&action=178&model=upgrade.request.traceback.group&view_type=form)
OPW - [4352724](https://www.odoo.com/odoo/project/70/tasks/4352724#)
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-prThis fixes the live chat chatbot layout so answer buttons appear outside the message bubble as intended. The change improves readability and makes chatbot interactions look cleaner for website visitors.
Original PR description
Before this commit, chatbot answers buttons appear inside the message bubble. This happens because the new xpath target introduced in https://github.com/odoo/odoo/pull/188407 had the wrong position argument. This commit fixes the issue by changing the position to `after`. Before:  After: 
Creating a new stock replenishment record no longer triggers an error before the user has selected a product or unit of measure. This keeps the replenishment workflow usable and avoids a confusing crash during record creation.
Original PR description
Currently, a traceback occurs when the user tries to create a new stock replenishment record. To reproduce this issue: 1) Install `stock` 2) Create a new record from `operation/replenishment` Error:-…
Currently, a traceback occurs when the user tries to create a new stock replenishment record. To reproduce this issue: 1) Install `stock` 2) Create a new record from `operation/replenishment` Error:- ``` AssertionError: precision_rounding must be positive, got 0.0 ``` This error is occurring because of the recent refactoring from the below commit. https://github.com/odoo/odoo/pull/183833/commits/17d9af14cad0bace48edf2d1b072cc4d12532875 Initially, there was a condition that if there is no product or location, the `_get_qty_to_order` method simply returns False. But because the condition was removed from the above mentioned commit, we get the rounding value as 0.0 as there is no uom when initially creating a new record. This leads to the above traceback when the below line executes with rounding as 0.0 https://github.com/odoo/odoo/blob/74d4503a45c9d4ca741d349c3fce673358d2cc42/addons/stock/models/stock_orderpoint.py#L361-L364 We can resolve either by returning False if there is no product/uom or just add an extra check of rounding. sentry-6088943207
Fixes an issue where clicking crop controls after editing an image could trigger an error and interrupt the editing flow. The editor now avoids saving the image at the wrong moment, so users can crop images more reliably.
Original PR description
**Current behavior before PR:** After modifying an image, clicking any cropper button generated a traceback. this occurred because clicking the button triggered a blur event, and tries to save modified image in saveModifiedImage method. In the saveModifiedImage method, the image src was split. However, since the cropper container was open, the image had its original src rather than the cropped one. As a result, attempting to split the original src caused the traceback. **Desired behavior after PR is merged:** Now, before opening the cropper, the o_modified_image_to_save class will be removed from the image. This ensures that when blur events are triggered by clicking the cropper buttons, the savePendingImages method does not call saveModifiedImage to save the image and once the cropper is closed, the o_modified_image_to_save class will be added back to the image if it is not already present. task:4263575
This fixes a timezone mismatch that could cause Odoo to incorrectly decide whether a page became outdated after a websocket disconnection. Users should see more accurate refresh warnings, reducing unnecessary confusion or missed prompts.
Original PR description
The outdated page watcher detects when the page is outdated i.e. when the autovacuum ran while the websocket was disconnected. To do so, it compares the last disconnection datetime with the last autovacuum datetime received from the server. However, last disconnected datetime is saved in UTC while value coming from the server is parsed using the default timezone. This PR fixes the issue by handling both datetime with the default timezone.
Point of Sale receipt sending now works reliably by SMS and WhatsApp without triggering an error. Email receipt delivery is also improved because basic receipts are included as attachments, helping customers receive complete proof of purchase.
Original PR description
Before this commit: ========== - There was a traceback error when sending receipts through SMS and WhatsApp. - Basic receipts were not being added as email attachments when sending receipts through email. After this commit: ========== - The traceback error while sending receipts has been resolved, and the receipt sending flow is now seamless. - Basic receipts will now be attached as email attachments when sending receipts through email. task-4212901 Related: - Enterprise: https://github.com/odoo/enterprise/pull/70891
The blog author snippet now uses the stored author name instead of directly checking the author record. This prevents public website visitors from hitting permission-related issues when viewing blog posts, helping author information display consistently.
Original PR description
Author snippet previously used the author_id field on the blog post record which would run in to permission issues as public user. Used the already existing author_name field on the blog record which also seemed to be used in older versions of Odoo to bypass this permission issue. opw-4330319
The HTML editor now correctly detects when selected text has a custom font size, so users can use the remove formatting button to reset it. The toolbar also shows the correct font size when selecting all content, reducing confusion while editing formatted text.
Original PR description
**Behaviour before PR:** When a `font-size` is applied on a text, remove-format icon is disabled in toolbar when that text is selected and user is unable to reset `font-size`. This happens because in `formatSpecs` `isFormatted` method fails to get correct value in case of `setFontSizeClassName`. Same scenario is with `isFormatted` method of `fontSize`. **Behaviour after PR:** Now remove-format icon is enable when font-sized text is selected and user can remove and reset font-size of selected text. task-4263625 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Task records in Website Project will no longer log phone or company-name changes that are not useful for task history. This keeps task activity cleaner and avoids inconsistent behavior depending on which related apps are installed first.
Original PR description
Before this commit, the partner_phone field in `project.task` model is tracked because it is a related field linked to `partner_id.phone` and `phone` is tracked. Moreover, that field is also defined in `industry_fsm` module but its definition is different which could lead to unexpected behavior depending on the installation order. This commit duplicates the definition of that field from industry_fsm to website_project to make sure to not have a different behavior depending on the installation order of those modules. It also removes the tracking on `partner_company_name` since it is not really useful in task if one day `company_name` in `res.partner` model is tracked.
This fix prevents an error when users create a new replenishment entry before selecting a product. It restores a missing check so inventory staff can open the replenishment form normally and continue planning stock needs.
Original PR description
Steps to reproduce: Inventory → Operations → Replenishment → New → Traceback Error Issue: [Last changes](odoo/odoo@28d24a05ca94f0fbecf) in the file removed the condition ensuring product_id before getting its quantity which created the error. fix: Added the removed condtion. opw-4352363 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Project dashboard shortcuts now open the expected views for purchase orders, warehouse transfers, and stock moves. The purchase order counter now excludes empty orders, so the number shown matches the records users see when they click it.
Original PR description
1) Added views for the following top bar actions: - Purchase Orders - To WH - From WH - Stock Moves 2) In project dashboard, the count of purchase orders in the stat button was taking empty purchase orders into account. However, when clicking on it, only the POs containing lines were shown, which is not consistent. We then remove the empty POs from the count, this is also to be consistent with the count of sales orders which does not take the empty SOs into account. task-4313971 version-18.0 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes a visual issue in the mail area where logged notes displayed with an unnecessary border. The change makes note entries look cleaner and more consistent, improving readability without changing functionality.
Original PR description
Before / After <img width="254" alt="Screenshot 2024-11-25 at 14 23 16" src="https://github.com/user-attachments/assets/0ea6235e-ad18-4001-8c6c-31860e5d0371"> <img width="268" alt="Screenshot 2024-11-25 at 14 23 00" src="https://github.com/user-attachments/assets/efb3a21b-ce6c-4999-9aea-e67e52332011">
The sick leave relapse checkbox is now only visible to authorized time off officers. This prevents regular employees from seeing an internal payroll-related option that they should not access.
Original PR description
A checkbox to indicate if a Sick leave is a relapse of a previous sick leave was added to version 18.0. Regular users can see the checkbox when creating or viewing sick leave while the intention was for only time off officers to be able to see it. This patch fixes this issue by assigning the checkbox to the correct group. task-4354558
Fixed a layout issue in Appraisals where feedback editor buttons could appear broken when users clicked into feedback fields. This keeps the appraisal feedback experience cleaner and easier to use across screen sizes.
Original PR description
Steps ----- 1. Appraisals > Click on one or go to Configuration > Appraisal templates 2. Click on the feedback. A text 'Type "/" for commands' appears with buttons in a broken layout. Cause ----- With the new html_editor, editor buttons are descendants of `o_appraisal_input` in the DOM. Changes ----- - restrict the selector that is used to prevent overflow so it doesn't impact editor - hide the power buttons to avoid overflow when ui size is between `sm` and `md` (they are hidden automatically below `sm`) opw-4338929
Subscription invoices are no longer shortened just because an end date falls inside the next billing period. This keeps billing periods and next invoice dates stable when sales teams use end dates to encourage renewals or upsells.
Original PR description
Before this commit, when the end_date occured inside the next period, we
could invoice the prorated part of the period.
Invoice from 5th of November to 5 of December.
End date on the 1st of December.
The invoice would be from the 5th of November to the 1st of December.
As this seems smart, it would disrupt some flows where salesperson would
put an end_date as an incentive to force people pay their
contract/upsells in a fear of service disruption.
With the previous code, the invoice would be prorated and removing the
end_date would mess up with the next_invocie_date and invoicing periods.
taskid: 4358288Fixed subscription closing so backend closures and automatic expirations end contracts as of today when required, instead of extending them to the end of the current billing period. This helps keep contract status and billing timelines accurate for customers and internal teams.
Original PR description
After this commit https://github.com/odoo/enterprise/commit/31033a6863c841d7d0d5e434331c8a34420a3374 the contract could be closed with end_date at the end of the current period. There are several cases when the end_date should still forced as "today": - closing from the backend - expiration cron taksid: 4358288
This fix ensures overtime work entries are only generated when the relevant overtime setting/status allows it. It helps avoid incorrect overtime records, improving payroll and attendance accuracy for affected employees.
Original PR description
Purpose ======= The field was introduced when the overtime generation mechanism was already existing. But was included into the decision process to generate overtime work entries.
**Issue:** Two terms appear in English on an invoice. **Expected:** These terms should be translated in Spanish. **Steps to reproduce:** - Activate Accounting app in a Mexican database; - Create a customer invoice; - Send and print including the CFDI; - Open the PDF for the invoice; - The terms "Usage" and "Predial Account" appear untranslated. **Cause:** No translation have been found for these keys. **Fix:** Add Spanish translations for these terms. opw-4332513
Original PR description
**Issue:** Two terms appear in English on an invoice. **Expected:** These terms should be translated in Spanish. **Steps to reproduce:** - Activate Accounting app in a Mexican database; - Create a customer invoice; - Send and print including the CFDI; - Open the PDF for the invoice; - The terms "Usage" and "Predial Account" appear untranslated. **Cause:** No translation have been found for these keys. **Fix:** Add Spanish translations for these terms. opw-4332513
Fixes errors that could interrupt sending point-of-sale receipts by SMS or WhatsApp. Email receipt delivery is also improved by ensuring basic receipts are included as attachments, making the customer receipt process more reliable.
Original PR description
Before this commit: =========== - There was a traceback error when sending receipts through SMS and WhatsApp. - Basic receipts were not being added as email attachments when sending receipts through email. After this commit: =========== - The traceback error while sending receipts has been resolved, and the receipt sending flow is now seamless. - Basic receipts will now be attached as email attachments when sending receipts through email. task-4212901 Related: - Community: https://github.com/odoo/odoo/pull/181828
Users can now delete Data Cleaning storage records without hitting an unexpected system error. This prevents disruption during routine storage cleanup and keeps the Data Cleaning workflow reliable.
Original PR description
When the user tries to delete the storage record, A traceback will appear. Steps to reproduce the error: - Install ``data_cleaning`` module - Go to Data Cleaning > Storage > Select any record >…
When the user tries to delete the storage record,
A traceback will appear.
Steps to reproduce the error:
- Install ``data_cleaning`` module
- Go to Data Cleaning > Storage > Select any record > Actions > Delete > Delete
Traceback:
```
UndefinedTable: relation "ir_attachment_report" does not exist
LINE 1: DELETE FROM "ir_attachment_report" WHERE id IN (498, 963, 12...
^
File "odoo/http.py", line 2363, in __call__
response = request._serve_db()
File "odoo/http.py", line 1891, in _serve_db
return self._transactioning(
File "odoo/http.py", line 1954, in _transactioning
return service_model.retrying(func, env=self.env)
File "odoo/service/model.py", line 137, in retrying
result = func()
File "odoo/http.py", line 1921, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 2168, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 329, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 727, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/web/controllers/dataset.py", line 35, in call_kw
return call_kw(request.env[model], method, args, kwargs)
File "odoo/api.py", line 517, in call_kw
result = getattr(recs, name)(*args, **kwargs)
File "odoo/models.py", line 4498, in unlink
cr.execute(SQL(
File "odoo/sql_db.py", line 354, in execute
res = self._obj.execute(query, params)
```
``ir.attachment.report`` model is ``_auto = False``.
So, a database table will not be created for the model.
When the user tries to delete the record of that model,
It will lead to the above traceback.
sentry-6073448766This fixes subscription closing so the end date matches the business context. Backend and automated expiration closures end immediately, while customer portal cancellations keep service active until the paid period ends.
Original PR description
After this commit https://github.com/odoo/enterprise/commit/31033a6863c841d7d0d5e434331c8a34420a3374 the contract could be closed with end_date at the end of the current period. There are several cases when the end_date should still forced as "today": - closing from the backend - expiration cron Moreover, when the customer close the contract on the portal, it would put it on closed state directly. We decide to put the end_date to avoid trigger all the closing mechanism right away (stop access to resources, service etc when the service is paid until the end of the period). taksid: 4358288
Code cleanup and technical improvements
This update cleans up automated guided test flows across several Odoo apps by removing unnecessary steps and using more realistic user interaction helpers. The change is internal, but it helps keep testing easier to maintain and better aligned with real user behavior.
Original PR description
In commit, we remove empty runs that no longer have a reason to exist. We also prefer to use tour helpers ( hover ) instead of using makeVisible functions in order to simulate user interactions as best as possible. We take advantage of this commit to remove the nextTick helper in webStudio (we no longer need it since 3bfd2e9cf8 ) https://github.com/odoo/enterprise/pull/74252
This update cleans up automated test flows across several Odoo apps by removing unnecessary steps and using more realistic interaction helpers. It does not change customer-facing features, but it should make internal test coverage easier to maintain and closer to real user behavior.
Original PR description
In commit, we remove empty runs that no longer have a reason to exist. We also prefer to use tour helpers ( hover ) instead of using makeVisible functions in order to simulate user interactions as best as possible. We take advantage of this commit to remove the nextTick helper in webStudio (we no longer need it since 3bfd2e9cf8 ) https://github.com/odoo/odoo/pull/187999
Miscellaneous changes
**task-4280164 opw-3985404** --- **[FIX] web_editor: removes figure parent of removed image** Steps to reproduce the issue: - In website, edit mode. - Drag and drop a "Picture" snippet onto the page. - Click the image in the "Picture" snippet. - Delete the image by clicking the "Remove" button in the image options. - Inspect the DOM of the "Picture" snippet. - Bug: The figure element which wrapped the image is still there. After this commit, when an image wrapped by a figure e
Original PR description
**task-4280164 opw-3985404** --- **[FIX] web_editor: removes figure parent of removed image** Steps to reproduce the issue: - In website, edit mode. - Drag and drop a "Picture" snippet onto the page.…
**task-4280164 opw-3985404** --- **[FIX] web_editor: removes figure parent of removed image** Steps to reproduce the issue: - In website, edit mode. - Drag and drop a "Picture" snippet onto the page. - Click the image in the "Picture" snippet. - Delete the image by clicking the "Remove" button in the image options. - Inspect the DOM of the "Picture" snippet. - Bug: The figure element which wrapped the image is still there. After this commit, when an image wrapped by a figure element is removed, the figure is also removed. --- **[FIX] web_editor: allows to edit events sidebar photos link** Before this commit, it was not possible to edit the link of the events sidebar photos. This occurred for 2 reasons: A - The image link option didn't work with images wrapped in a figure element. B - After fixing point A, the "href" attribute modification was ignored when saving the "/event" page. Steps to reproduce A: - Go to the "/event" page in edit mode. - Click on the 'Customize' tab and enable the sidebar. - Click a photo in the sidebar. - Bug: the URL input for setting the link is not available in the "Image" options. Steps to reproduce B (after fixing A): - Go to the "/event" page in edit mode. - Click on the 'Customize' tab and enable the sidebar. - Click a photo in the sidebar. - Edit the "Your URL" input. (e.g. [www.odoo.com](http://www.odoo.com/)) - Save the page. - Click the image with the modified link. - Bug: the new link was not saved. To fix issue B, we added the "href" attribute to the list of allowed root attributes. --- **[FIX] website_event: prevents removing sidebar photos** Steps to reproduce the issue: - Go to the "/event" page in edit mode. - Enable the sidebar. - Click a photo in the sidebar. - Click the "Delete" button in the image options. - The image is removed even though it shouldn't be allowed to remove it. This commit hide the "Delete" button for these sidebar images. --- **[FIX] website_event: fix editing of figcaption for event sidebar photos** Steps to reproduce the bug (only on Chrome): - Go to the "/event" page. - Enter edit mode. - Click the "Customize" tab and enable the "Sidebar". - Try to add a character at the end of the figcaption of the second photo in the sidebar. - Bug: it's not possible to add a new character. This requires further investigation, but the issue comes from how Chrome handles editing elements inside links. The fact that the <a> element was set to display inline caused the issue. This commit fixes the issue by setting the <a> element to display block, which is more appropriate anyway. Forward-Port-Of: odoo/odoo#186278
This commit fixes an issue where the Bill button was displayed even when early receipt printing was not enabled in the POS configuration. opw-4274728 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#184684
Original PR description
This commit fixes an issue where the Bill button was displayed even when early receipt printing was not enabled in the POS configuration. opw-4274728 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#184684
Steps to reproduce the issue: ============================= - Add a button in terms and conditions in an sale quotation - Print it as PDF - The button styles are missing Origin of the issue: ==================== After [1] the buttons are defined using css variables which are not supported by wkhtmltopdf. Solution: ========= Redefine the button styles for reports using scss variables in the same way they are done in `bootstrap_review_backend.scss` opw-4311049 [1]: https://gith
Original PR description
Steps to reproduce the issue: ============================= - Add a button in terms and conditions in an sale quotation - Print it as PDF - The button styles are missing Origin of the issue: ==================== After [1] the buttons are defined using css variables which are not supported by wkhtmltopdf. Solution: ========= Redefine the button styles for reports using scss variables in the same way they are done in `bootstrap_review_backend.scss` opw-4311049 [1]: https://github.com/odoo/odoo/commit/058212e12b5079eba870bde9775fe98f27928935 Forward-Port-Of: odoo/odoo#186907
Before this commit, if a sale order had some note lines and the rest of the lines had tax on them, there would be two lines created when applying a down payment. opw-4281589 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#187300
Original PR description
Before this commit, if a sale order had some note lines and the rest of the lines had tax on them, there would be two lines created when applying a down payment. opw-4281589 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#187300
Breadcrumb tooltips are not translated. This is because the tooltip is defined directly within props, which are not translated. This commit redefines the tooltip in a different way that allows translation. opw-4160838 Forward-Port-Of: odoo/odoo#187062 Forward-Port-Of: odoo/odoo#184555
Original PR description
Breadcrumb tooltips are not translated. This is because the tooltip is defined directly within props, which are not translated. This commit redefines the tooltip in a different way that allows translation. opw-4160838 Forward-Port-Of: odoo/odoo#187062 Forward-Port-Of: odoo/odoo#184555
### Steps to reproduce: - Install "l10n_pe_pos" - Switch to a Peruvian company and open a POS session - Sell a product with a partner specified (different from "Consumidor Final") - Try to refund the order - The partner is back to "Consumidor Final" and can't be changed ### Cause: The code supposed to put back the right partner is checking a wrong field (`this.pos.consumidorFinalAnonimoId` is undifined) so the partner is not correctly set. ### Solution: Use the correct field : `this
Original PR description
### Steps to reproduce: - Install "l10n_pe_pos" - Switch to a Peruvian company and open a POS session - Sell a product with a partner specified (different from "Consumidor Final") - Try to refund the order - The partner is back to "Consumidor Final" and can't be changed ### Cause: The code supposed to put back the right partner is checking a wrong field (`this.pos.consumidorFinalAnonimoId` is undifined) so the partner is not correctly set. ### Solution: Use the correct field : `this.pos.session._consumidor_final_anonimo_id` opw-4282195 Forward-Port-Of: odoo/odoo#187917
**Fix a bug that prevented approving allocation requests that required multiple approvers** **Steps to reproduce** 1. Create a new time off type and set `approval` to `By employee's approver and time off officer`. 2. Create a new allocation: * Use the time off type created above. * Set the number of days to 20. 3. Save the created allocation. 4. Go to `Management -> Allocations`. 5. Select the created allocation and press on the actions cog. 6. Press on `Approve Allocations`
Original PR description
**Fix a bug that prevented approving allocation requests that required multiple approvers**
**Steps to reproduce**
1. Create a new time off type and set `approval` to `By employee's approver and time off officer`.
2. Create a new allocation:
* Use the time off type created above.
* Set the number of days to 20.
3. Save the created allocation.
4. Go to `Management -> Allocations`.
5. Select the created allocation and press on the actions cog.
6. Press on `Approve Allocations`.
7. The allocation state doesn't change to `second approval`.
The action `Approve Allocations` doesn't take into account the allocations that are in the first stage of approval.
task-4207884
Forward-Port-Of: odoo/odoo#181364It is not necessary useful to prevent the event in our case, so we can just stop doing it while maintaining the same functionality. Preventing the event writes a log in the console, and we prefer to avoid having a log if we can keep the service without it. Forward-Port-Of: odoo/odoo#188418
Original PR description
It is not necessary useful to prevent the event in our case, so we can just stop doing it while maintaining the same functionality. Preventing the event writes a log in the console, and we prefer to avoid having a log if we can keep the service without it. Forward-Port-Of: odoo/odoo#188418
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#188421 Forward-Port-Of: odoo/odoo#188235
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#188421 Forward-Port-Of: odoo/odoo#188235
The `test_rate_limiting_base_ok` ensures that rate limiting does not activate when requests are made within the accepted delay. However, the test only waits for the exact delay duration, whereas the rate limiter expects the delay to be strictly greater than the threshold. This PR introduces a small additional wait time before each request to ensure it falls within the accepted range. It also verifies that the WebSocket (WS) remains connected at the end of the test. runbot-73027 Forward
Original PR description
The `test_rate_limiting_base_ok` ensures that rate limiting does not activate when requests are made within the accepted delay. However, the test only waits for the exact delay duration, whereas the rate limiter expects the delay to be strictly greater than the threshold. This PR introduces a small additional wait time before each request to ensure it falls within the accepted range. It also verifies that the WebSocket (WS) remains connected at the end of the test. runbot-73027 Forward-Port-Of: odoo/odoo#188461
In the overview, any user with no time off rights can go to the custom groupby filter "Leave" and see the time off type of other users. This commit hides this filter to prevent access. task-4241846 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#186597
Original PR description
In the overview, any user with no time off rights can go to the custom groupby filter "Leave" and see the time off type of other users. This commit hides this filter to prevent access. task-4241846 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#186597
Since October 2024, the Facebook mobile site (m.facebook.com) uses an 'X-Frame-Options' header set to 'deny', preventing iframe embedding across different domains. This header enforces a security policy restricting cross-origin access to the content. Meta has not provided any communication regarding this change. Until it is resolved, we have no choice but to hide the iframe on mobile to prevent users from seeing a "unavailable content" icon. Steps to reproduce: - In website edit mode. -
Original PR description
Since October 2024, the Facebook mobile site (m.facebook.com) uses an 'X-Frame-Options' header set to 'deny', preventing iframe embedding across different domains. This header enforces a security policy restricting cross-origin access to the content. Meta has not provided any communication regarding this change. Until it is resolved, we have no choice but to hide the iframe on mobile to prevent users from seeing a "unavailable content" icon. Steps to reproduce: - In website edit mode. - Drag and drop the "Facebook" snippet into the footer. - Save the page. - Open the dev tools and enable the mobile preview. - Bug: The "Facebook" snippet crashes. More info about the issue: https://developers.facebook.com/community/threads/550478830783215/ opw-4302563 opw-4309180 opw-4222359 opw-4277045 Forward-Port-Of: odoo/odoo#188200 Forward-Port-Of: odoo/odoo#186813
Using fiscal_country_codes in the invisible condition can result in the field being displayed multiple times, as multiple countries may meet the condition. Instead, we are using country_code, as it is more logical for the field to be visible only if the company is located in that specific country. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#188099
Original PR description
Using fiscal_country_codes in the invisible condition can result in the field being displayed multiple times, as multiple countries may meet the condition. Instead, we are using country_code, as it is more logical for the field to be visible only if the company is located in that specific country. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#188099
### Steps to Reproduce 1. Install i10n_il module 2. Go to Settings->Invoicing **Expected behavior:** Tax il_vat_inputs_17 (VAT inputs) is selected as default Purchase tax **Actual behavior:** Tax il_vat_self_inv_purchase (Self Invoice) is selected as default Purchase tax. This causes new Vendor Bills to be created without VAT Forward-Port-Of: odoo/odoo#186325
Original PR description
### Steps to Reproduce 1. Install i10n_il module 2. Go to Settings->Invoicing **Expected behavior:** Tax il_vat_inputs_17 (VAT inputs) is selected as default Purchase tax **Actual behavior:** Tax il_vat_self_inv_purchase (Self Invoice) is selected as default Purchase tax. This causes new Vendor Bills to be created without VAT Forward-Port-Of: odoo/odoo#186325
_*=payment_razorpay In This PR Razorpay payment onboarding form to take advantage of the Razorpay Connect Onboarding Flow. It integrates the Razorpay Onboarding using the IAP proxy. **Purpose** ======== Help users easily onboard with Razorpay by using the Razorpay Connect API. **Specification** =========== **1.Connect and authorized the razorpay account.** - To connect to a sub-merchant's Razorpay account, the application redirects the user to a Razorpay-hosted webpage. The
Original PR description
_*=payment_razorpay In This PR Razorpay payment onboarding form to take advantage of the Razorpay Connect Onboarding Flow. It integrates the Razorpay Onboarding using the IAP proxy. **Purpose**…
_*=payment_razorpay In This PR Razorpay payment onboarding form to take advantage of the Razorpay Connect Onboarding Flow. It integrates the Razorpay Onboarding using the IAP proxy. **Purpose** ======== Help users easily onboard with Razorpay by using the Razorpay Connect API. **Specification** =========== **1.Connect and authorized the razorpay account.** - To connect to a sub-merchant's Razorpay account, the application redirects the user to a Razorpay-hosted webpage. The user can approve or deny the authorisation request on this page. **2.Get an access token.** - After you obtain an access token, you can use it to access the sub-merchant data on Razorpay APIs. The access is controlled based on the scope requested for and granted by the user during the authorization process. **3.Get a refresh token.** - You can use refresh tokens to generate a new access token. If your access token expires, you will receive a 4XX response from the API. You can make a request using your refresh token to generate a new access token. **4.Revoke token.** - The API supports token revocation to enhance security and manage access. If needed, tokens can be revoked through this mechanism. **5.Create & update webhook.** - This method is responsible for creating or updating the Razorpay webhook associated with the current Odoo instance.The webhook is crucial for updating payment states within Odoo when changes occur in Razorpay. **6.Revoke the application from Razorpay.** - User can initiate the revocation of their application from the Razorpay side facilitating a seamless process for application revocation. task-3537535 Forward-Port-Of: odoo/odoo#188316 Forward-Port-Of: odoo/odoo#158578
The links created with the product_label_section_and_note_field widget won't work correctly. This commit, will change the link to the new format. This commit is a followup of odoo/odoo@98f7486 Forward-Port-Of: odoo/odoo#188403
Original PR description
The links created with the product_label_section_and_note_field widget won't work correctly. This commit, will change the link to the new format. This commit is a followup of odoo/odoo@98f7486 Forward-Port-Of: odoo/odoo#188403
When a SO is partially invoiced, and we change the 'Invoicing Switch Threshold' such that the partial invoices are before the new threshold, the SO will not take invoices into account for computation of amount to invoice / invoiced. Steps to reproduce (needs account_accountant installed): - Create a SO with a line having prod invoiced on delivery and qty 3 - Set delivered quantity to 1 - Click Create Invoice > create the draft invoice, set a date (date1) in the past - set a date2 Settin
Original PR description
When a SO is partially invoiced, and we change the 'Invoicing Switch Threshold' such that the partial invoices are before the new threshold, the SO will not take invoices into account for computation of amount to invoice / invoiced. Steps to reproduce (needs account_accountant installed): - Create a SO with a line having prod invoiced on delivery and qty 3 - Set delivered quantity to 1 - Click Create Invoice > create the draft invoice, set a date (date1) in the past - set a date2 Settings > Accounting > Invoicing Switch Threshold later than date1 - Back to the SO, set delivered quantity to 2 - Click Create Invoice > create a new invoice and confirm it Issue: Sale order amount invoiced will take into account only the latest invoice, while it should account also for the legacy invoices opw-4295531 Forward-Port-Of: odoo/odoo#188032 Forward-Port-Of: odoo/odoo#187211
# First fix Steps to reproduce: ------------------- 1. Install Project and Sales apps 2. Log in as admin user (e.g. Mitchell Admin), and create a billable project for a customer A 3. Invite user B (e.g. Marc Demo) to the project 4. Only give project (user) access rights to the user B, remove all other access rights 5. Create an SO with customer A as partner, add a service product (e.g. Junior Architect), confirm the SO and create a timesheet 6. Log in as user B, create a task in the bi
Original PR description
# First fix Steps to reproduce: ------------------- 1. Install Project and Sales apps 2. Log in as admin user (e.g. Mitchell Admin), and create a billable project for a customer A 3. Invite user B…
# First fix Steps to reproduce: ------------------- 1. Install Project and Sales apps 2. Log in as admin user (e.g. Mitchell Admin), and create a billable project for a customer A 3. Invite user B (e.g. Marc Demo) to the project 4. Only give project (user) access rights to the user B, remove all other access rights 5. Create an SO with customer A as partner, add a service product (e.g. Junior Architect), confirm the SO and create a timesheet 6. Log in as user B, create a task in the billable project from the task form, make sure customer A is set as partner 7. Save the task, an access error is raised Fix: ------------------- When creating a new task from the form, _inverse_partner_id() is called, which calls task._get_last_sol_of_customer(). As the user has no Sales access, the search of the SOL in _get_last_sol_of_customer() will raise an Access Error in such case. We add a sudo() before calling _get_last_sol_of_customer() to give the user access to the SOL we are looking for. # Second fix Steps to reproduce: ------------------- 1. Configure a user with the project > user and sales > user: own documents access rights 2. Log in with this user 3. Create a task in a billable project (e.g. for Deco Addict) 4. The compute automatically sets an SOL but the current user doesn't have access to the SOL (make sure that the user does not have access to the SOL that is set) 5. Error when trying to update the value of the SOL Fix: ------------------- We add a sudo() in _get_partner_display() to give the user access to the SO. As the user may not have access to the SO of the SOL that is currently set in the task. task-4207245 version-17.2 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#188307 Forward-Port-Of: odoo/odoo#182184
Versions -------- - 17.0+ Steps ----- 1. Have 50% discount program; 2. have a deliverable $300 product; 3. have a $10 shipping method that's free for orders over $250; 4. in eCommerce, add the $300 product to your cart; 5. go to checkout; 6. remove the automatically applied discount; 7. proceed to payment; 8. select the $10 shipping method; 9. click the "Claim" button for the 50% discount. Issue ----- Shipping is still free despite the order being below $250. Cause -----
Original PR description
Versions -------- - 17.0+ Steps ----- 1. Have 50% discount program; 2. have a deliverable $300 product; 3. have a $10 shipping method that's free for orders over $250; 4. in eCommerce, add the $300 product to your cart; 5. go to checkout; 6. remove the automatically applied discount; 7. proceed to payment; 8. select the $10 shipping method; 9. click the "Claim" button for the 50% discount. Issue ----- Shipping is still free despite the order being below $250. Cause ----- Delivery rate isn't recomputed after applying rewards. Solution -------- After applying a reward in eCommerce, update programs & rewards. If the reward isn't a payment program (gift card or eWallet), and the selected carrier has a `free_over` rule, recompute shipping costs. opw-4319533 Forward-Port-Of: odoo/odoo#188281 Forward-Port-Of: odoo/odoo#187296
After discussion with Pagero support, the BIC of the Payee must be set, therefore we add a constraint to enforce it when invoicing to Chorus Pro. opw-4139689 Forward-Port-Of: odoo/odoo#188277 Forward-Port-Of: odoo/odoo#187535
Original PR description
After discussion with Pagero support, the BIC of the Payee must be set, therefore we add a constraint to enforce it when invoicing to Chorus Pro. opw-4139689 Forward-Port-Of: odoo/odoo#188277 Forward-Port-Of: odoo/odoo#187535
Before this commit: Some logger.error(...) were ambigious and would just catch the exception to log it's error name without much details. Therefore it was wasting time trying to figure the cause of the error as we lack the traceback details After this commit: Most of them were switch to logger.exception which does add the Exception information to the logging messages automatically. Which include the error message alongside the full traceback. Log messages were also rewrote to be more
Original PR description
Before this commit: Some logger.error(...) were ambigious and would just catch the exception to log it's error name without much details. Therefore it was wasting time trying to figure the cause of the error as we lack the traceback details After this commit: Most of them were switch to logger.exception which does add the Exception information to the logging messages automatically. Which include the error message alongside the full traceback. Log messages were also rewrote to be more comprehensive than the: "An error encountered" Example of logs that would be improved: ``` 2024-11-19 07:19:50,611 1138 ERROR ? odoo.addons.hw_drivers.tools.helpers: Unable to load file: PrinterInterface_L.py 2024-11-19 07:19:50,612 1138 ERROR ? odoo.addons.hw_drivers.tools.helpers: An error encountered : (1280, 'Success') ``` Forward-Port-Of: odoo/odoo#187959 Forward-Port-Of: odoo/odoo#186162
Based on the received OXP feedback we are: * Activating cash basis by default. * All taxes are based on payment. task-4226448 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#188106
Original PR description
Based on the received OXP feedback we are: * Activating cash basis by default. * All taxes are based on payment. task-4226448 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#188106
Before this commit: duplicate words appeared in the GST state validation warning. After this commit: the duplicate words have been removed from the GST state validation warning. Forward-Port-Of: odoo/odoo#188243 Forward-Port-Of: odoo/odoo#187986
Original PR description
Before this commit: duplicate words appeared in the GST state validation warning. After this commit: the duplicate words have been removed from the GST state validation warning. Forward-Port-Of: odoo/odoo#188243 Forward-Port-Of: odoo/odoo#187986
The previously named 'Taxable Salary' for the salary rule 'GROSS' and the category 'GROSS' should be renamed in the US to 'Gross Pay'. Task: 4329661 Forward-Port-Of: odoo/enterprise#73760
Original PR description
The previously named 'Taxable Salary' for the salary rule 'GROSS' and the category 'GROSS' should be renamed in the US to 'Gross Pay'. Task: 4329661 Forward-Port-Of: odoo/enterprise#73760
The FormatAddressMixin implements a feature that will replace some parts of a view with some other when having no_address_format in the context. commit 28d8ee5ea27106bf21e5a25c3fce48d39ffed4fd partially solved the problem, but not for all the spots where we need to do a `get_view` without being parasited with the foreign tree parts. opw-4335439 Forward-Port-Of: odoo/enterprise#74529 Forward-Port-Of: odoo/enterprise#74257
Original PR description
The FormatAddressMixin implements a feature that will replace some parts of a view with some other when having no_address_format in the context. commit 28d8ee5ea27106bf21e5a25c3fce48d39ffed4fd partially solved the problem, but not for all the spots where we need to do a `get_view` without being parasited with the foreign tree parts. opw-4335439 Forward-Port-Of: odoo/enterprise#74529 Forward-Port-Of: odoo/enterprise#74257
Before this change the message was showing an out-of-date minimun amount to report info of the receptor. Also, the message is more clearly to the user: what are the cases and how to solve them Old Message  New Message  LATAM 1291 / Adhoc ticket 82478 Forward-Port-Of: odoo/enterprise#74485 F
Original PR description
Before this change the message was showing an out-of-date minimun amount to report info of the receptor. Also, the message is more clearly to the user: what are the cases and how to solve them Old Message  New Message  LATAM 1291 / Adhoc ticket 82478 Forward-Port-Of: odoo/enterprise#74485 Forward-Port-Of: odoo/enterprise#73203
Some strings weren't translatable/were missing from the pot files to be translated. Since these strings weren't translatable (i.e. no lost work), they have been updated to be more grammatically correct + understandable where useful. opw-4321317 Forward-Port-Of: odoo/enterprise#74132 Forward-Port-Of: odoo/enterprise#73854
Original PR description
Some strings weren't translatable/were missing from the pot files to be translated. Since these strings weren't translatable (i.e. no lost work), they have been updated to be more grammatically correct + understandable where useful. opw-4321317 Forward-Port-Of: odoo/enterprise#74132 Forward-Port-Of: odoo/enterprise#73854
The Indian government has revised the threshold limit for reporting inter-state invoices of unregistered customers in GSTR-1 from ₹250,000 to ₹100,000. With this PR, the threshold limits for unregistered customers (B2CL, B2CS, and CDNUR) are updated based on the invoice date: -For invoices dated before November 2024, the limit remains ₹250,000. -For invoices dated November 2024 or later, the limit is reduced to ₹100,000. task-4170878 Forward-Port-Of: odoo/enterprise#74557 Forward-Port-O
Original PR description
The Indian government has revised the threshold limit for reporting inter-state invoices of unregistered customers in GSTR-1 from ₹250,000 to ₹100,000. With this PR, the threshold limits for unregistered customers (B2CL, B2CS, and CDNUR) are updated based on the invoice date: -For invoices dated before November 2024, the limit remains ₹250,000. -For invoices dated November 2024 or later, the limit is reduced to ₹100,000. task-4170878 Forward-Port-Of: odoo/enterprise#74557 Forward-Port-Of: odoo/enterprise#72446
### Steps to reproduce: - Install Data Cleaning and Helpdesk modules - Create 2 Helpdesk tickets with conditions: - at least 1 helpdesk ticket has an SLA policy and is in a stage excluded by the SLA policy - at least 1 helpdesk ticket doesn't have an SLA deadline and has an SLA policy and is also in a stage excluded by the SLA policy - Merge those 2 tickets - Notice a traceback pops-up ### Current behavior before PR: In this commit https://github.com/odoo/enterprise/pull/69352/
Original PR description
### Steps to reproduce: - Install Data Cleaning and Helpdesk modules - Create 2 Helpdesk tickets with conditions: - at least 1 helpdesk ticket has an SLA policy and is in a stage excluded by the SLA…
### Steps to reproduce: - Install Data Cleaning and Helpdesk modules - Create 2 Helpdesk tickets with conditions: - at least 1 helpdesk ticket has an SLA policy and is in a stage excluded by the SLA policy - at least 1 helpdesk ticket doesn't have an SLA deadline and has an SLA policy and is also in a stage excluded by the SLA policy - Merge those 2 tickets - Notice a traceback pops-up ### Current behavior before PR: In this commit https://github.com/odoo/enterprise/pull/69352/commits/97e83104dad816a7a65345dea74a66e5dbea94cb a new merge method was introduced but in the new file we created we are importing datetime from datetime and then using datetime.datetime and since we are already importing the sepcific class we don't need to call it like module.class.method ### Desired behavior after PR is merged: We are calling the method directly from the class without using the module before the call so it is only datetime.max opw-4330793 Forward-Port-Of: odoo/enterprise#74383
This draft change touches the Belgian reporting area, but the provided details only indicate a generic message update. Based on the available information, it appears to be a minor internal change with limited business impact.
## [IMP] hr_payroll_expense: Add Error when no expense rule is found This commit improves "expenses to be reimbursed in a payslip "config Before this commit: There was no way for a user to know if a payslip set to be reimbursed in a payslip would never be due to a bad configuration. After this commit: The user now gets an error when choosing to reimburse an expense through a payslip, asking to first setup a proper rule. task-id: 4273421 ## [IMP] hr_payroll_expense: Add a test
Original PR description
## [IMP] hr_payroll_expense: Add Error when no expense rule is found This commit improves "expenses to be reimbursed in a payslip "config Before this commit: There was no way for a user to know if a payslip set to be reimbursed in a payslip would never be due to a bad configuration. After this commit: The user now gets an error when choosing to reimburse an expense through a payslip, asking to first setup a proper rule. task-id: 4273421 ## [IMP] hr_payroll_expense: Add a test ensuring no sheet if no rule In https://github.com/odoo/enterprise/commit/6e4a94f530643a9ad7b461d49e149a339bc6a341, the issue of expense sheets being linked to payslips whose structure missed an expense ruled was resolved, but no test was added. This adds a test covering this case, to make sure it never happens again Forward-Port-Of: odoo/enterprise#72912
A CP200 employee may be eligible for exoneration based on the number of dependent children they have. This change: * Takes the value of exoneration into account in the computation of termination fees withholding taxes. * Refactors the computation of withholding taxes for `double holiday pay`, `13th month` and `termination fees` into one function. task-3909012 Forward-Port-Of: odoo/enterprise#73931 Forward-Port-Of: odoo/enterprise#73557
Original PR description
A CP200 employee may be eligible for exoneration based on the number of dependent children they have. This change: * Takes the value of exoneration into account in the computation of termination fees withholding taxes. * Refactors the computation of withholding taxes for `double holiday pay`, `13th month` and `termination fees` into one function. task-3909012 Forward-Port-Of: odoo/enterprise#73931 Forward-Port-Of: odoo/enterprise#73557
### Steps to reproduce: - Install "l10n_cl_edi_pos" - Create a new company with the Chilian localization - Do not add a VAT number - Go to POS, create an order and validate - The date is not displayed on the ticket ### Cause: The localization is moving the date from the bottom of the receipt to the header but the conditions are not the same: - If the country of the company is Chile then date is removed from the bottom - If the company has a Chilian VAT the date is shown in the header
Original PR description
### Steps to reproduce: - Install "l10n_cl_edi_pos" - Create a new company with the Chilian localization - Do not add a VAT number - Go to POS, create an order and validate - The date is not displayed on the ticket ### Cause: The localization is moving the date from the bottom of the receipt to the header but the conditions are not the same: - If the country of the company is Chile then date is removed from the bottom - If the company has a Chilian VAT the date is shown in the header So there is a case where none of the conditions are True and the date does not show. ### Solution: Add a condition on the VAT to delete the date from the bottom. opw-4330252 Forward-Port-Of: odoo/enterprise#74245
In studio, click on Edit Menu in the main navbar. Add a menu or edit the name of a menu. Click Confirm Before this commit, the hierarchical list of the menu editor was not updated. This was due to the fact that studio's dialog service is altered to allow it to have the specific studio sub environment It is that way since 2ae63d9a43ba973d905232105201d88e423a8245 As a consequence, the "menu changed" event triggerd by the menu service on the main environment's bus was not forwarded to to studi
Original PR description
In studio, click on Edit Menu in the main navbar. Add a menu or edit the name of a menu. Click Confirm Before this commit, the hierarchical list of the menu editor was not updated. This was due to the fact that studio's dialog service is altered to allow it to have the specific studio sub environment It is that way since 2ae63d9a43ba973d905232105201d88e423a8245 As a consequence, the "menu changed" event triggerd by the menu service on the main environment's bus was not forwarded to to studio's env's bus. After this commit, the hierarchical list is updated correctly task-4001101 Forward-Port-Of: odoo/enterprise#74354
Steps to reproduce: - Install both hr_contract_salary and l10n_hk_Hr_payroll - Try to review a contract in recruitment Current behaviour: - Exception raised Expected behaviour: - No exception raised Explanation: - Internet allowance is based on employee actual work days. However, for candidate who hasn't join the company, they won't have any work days. Therefore the salary internet rules prorata_rate will be divided by zero, and raised exceptions. X-original-commit: f9e7
Original PR description
Steps to reproduce: - Install both hr_contract_salary and l10n_hk_Hr_payroll - Try to review a contract in recruitment Current behaviour: - Exception raised Expected behaviour: - No exception raised Explanation: - Internet allowance is based on employee actual work days. However, for candidate who hasn't join the company, they won't have any work days. Therefore the salary internet rules prorata_rate will be divided by zero, and raised exceptions. X-original-commit: f9e7d39 Forward-Port-Of: odoo/enterprise#73630
### Steps to reproduce the issue: 1. Create an Invoice with "ODOO_BUG" as payment reference 2. Create a Bank Transaction with the same amount and customer as the Invoice and "ODOO_BUG" as Label 3. The Transaction and the Invoice are automatically matched 4. Create an Invoice with "ODOO BUG" as payment reference 5. Create a Bank Transaction with the same amount and customer as the Invoice and "ODOO BUG" as label 6. The Transaction and the Invoice are not automatically matched ### Expla
Original PR description
### Steps to reproduce the issue: 1. Create an Invoice with "ODOO_BUG" as payment reference 2. Create a Bank Transaction with the same amount and customer as the Invoice and "ODOO_BUG" as Label 3.…
### Steps to reproduce the issue: 1. Create an Invoice with "ODOO_BUG" as payment reference 2. Create a Bank Transaction with the same amount and customer as the Invoice and "ODOO_BUG" as Label 3. The Transaction and the Invoice are automatically matched 4. Create an Invoice with "ODOO BUG" as payment reference 5. Create a Bank Transaction with the same amount and customer as the Invoice and "ODOO BUG" as label 6. The Transaction and the Invoice are not automatically matched ### Explanation: When evaluating `st_line_text_values` in `_get_invoice_matching_st_line_tokens`, the values are split at every whitespace. When trying to find `account.move.line` that match the tokens resulting from the operations, every `name`, `move_id.name` or `move_id.ref` with a whitespace in it will not be recognized due to the whitespaces being removed from the `account.bank.statement.line` side. ### Fix reasoning: From a business perspective, no Invoice/Payment/Bill reference should have a space in it bar some already covered exceptions. To avoid performance heavy queries, the text value will simply be added to `exact_tokens` and treated as such, allowing for an automatical reconciliation between an `account.move.line` and an `account.bank.statement.line` if their refs match perfectly. opw-4114296 Forward-Port-Of: odoo/enterprise#71431
### Steps to reproduce the issue: 1. Activate Mexican Localization 2. With a Mexican Company, create an Invoice and add a Product with a valid UNSPSC code 3. On the Invoice Line, set Price to 1030.17 and add a 3% Discount 4. Confirm then Send & Print (with CFDI checked) 5. In the generated XML, the following values are off: - In node "Comprobante, SubTotal="1030.16" Descuento="30.90" - In node "Concepto", ValorUnitario="1030.16" Importe="1030.16" Descuento="30.90" - Expecte
Original PR description
### Steps to reproduce the issue: 1. Activate Mexican Localization 2. With a Mexican Company, create an Invoice and add a Product with a valid UNSPSC code 3. On the Invoice Line, set Price to 1030.17…
### Steps to reproduce the issue:
1. Activate Mexican Localization
2. With a Mexican Company, create an Invoice and add a Product with a valid UNSPSC code
3. On the Invoice Line, set Price to 1030.17 and add a 3% Discount
4. Confirm then Send & Print (with CFDI checked)
5. In the generated XML, the following values are off:
- In node "Comprobante, SubTotal="1030.16" Descuento="30.90"
- In node "Concepto", ValorUnitario="1030.16" Importe="1030.16" Descuento="30.90"
- Expected are 1030.17 and 30.91
### Explanation:
During the calculation of the values for the CFDI, `gross_price_subtotal_before_discount` is calculated using `price_subtotal` in every case where `discount` is not 100%. This is due to other values affecting `price_subtotal` (e.g.: taxes with `price_include=True`), in which case calculating a value related to `price_subtotal` with `price_unit` would give the wrong result.
This calculation method causes rounding issues such as above because `price_subtotal` is rounded before calculating `gross_price_subtotal_before_discount`.
### Fix reasoning:
We need to account for any value that could affect `price_subtotal` and make it different from `price_unit * quantity` except for `discount`, which will be included when comparing both values.
The case `discount == 100.0` is covered by this new condition as well, since `discount_factor` would equal to 0 and `price_subtotal` too.
opw-4183556
Forward-Port-Of: odoo/enterprise#72593Issue ----- With helpdesk_fsm installed, uninstall helpdesk_fsm or any module that will trigger its uninstallation (e.g. helpdesk): Error: ``` in fields.py: fields = records.pool.field_computed[self] KeyError: 'helpdesk.team.fsm_project_id' ``` Cause ----- Issue since 1da1467115726263e5cdc50354b4413f8bb7ca7d and the addition of `use_fsm` as a dependency of `_compute_fsm_project_id` When we uninstall any helpdesk module, we set to False the associated fields of all helpdesk team
Original PR description
Issue ----- With helpdesk_fsm installed, uninstall helpdesk_fsm or any module that will trigger its uninstallation (e.g. helpdesk): Error: ``` in fields.py: fields = records.pool.field_computed[self]…
Issue ----- With helpdesk_fsm installed, uninstall helpdesk_fsm or any module that will trigger its uninstallation (e.g. helpdesk): Error: ``` in fields.py: fields = records.pool.field_computed[self] KeyError: 'helpdesk.team.fsm_project_id' ``` Cause ----- Issue since 1da1467115726263e5cdc50354b4413f8bb7ca7d and the addition of `use_fsm` as a dependency of `_compute_fsm_project_id` When we uninstall any helpdesk module, we set to False the associated fields of all helpdesk teams (mapped in `_get_field_modules`) for all uninstalled modules. https://github.com/odoo/enterprise/blob/9fba5f841c3c0710eb0cce00263bf914dac03dc6/helpdesk/models/ir_module.py#L13-L16 The change of `use_fsm` means `fsm_project_id` is marked as a field to be recomputed. This happens at some point during a `flush_all`, but after the field has been deleted in DB and a new registry has been loaded without that field. Change ----- Force a recomputation by flushing the records. opw-4338172 opw-4339801 Forward-Port-Of: odoo/enterprise#74255
Steps to reproduce ================== - Install crm,web_studio - Enable leads - Go to CRM > Configuration > Sales Team - Open the first record - Uncheck Pipeline and Leads - Go to CRM > Sales > Teams - Open studio => Undefined graph model for Sales Team: Pre-Sales Cause of the issue ================== The window action uses the following domain `[["use_opportunities", "=", true]]` It is not used from within studio. opw-4285413 Forward-Port-Of: odoo/enterprise#74397 Forwar
Original PR description
Steps to reproduce ================== - Install crm,web_studio - Enable leads - Go to CRM > Configuration > Sales Team - Open the first record - Uncheck Pipeline and Leads - Go to CRM > Sales > Teams - Open studio => Undefined graph model for Sales Team: Pre-Sales Cause of the issue ================== The window action uses the following domain `[["use_opportunities", "=", true]]` It is not used from within studio. opw-4285413 Forward-Port-Of: odoo/enterprise#74397 Forward-Port-Of: odoo/enterprise#74091