Daily updates from Odoo
Friday, November 29, 2024
15 changes · 18.0
Enhancements to existing features
Image transformation in the HTML editor now behaves more predictably: clicking the tool again resets changes, controls stay aligned while resizing or scrolling, and the toolbar remains available during editing. This makes image editing smoother and reduces frustrating layout issues for users creating or updating content.
Original PR description
Before this commit: - Cliking twice wasn't resetting the transformation - Click on image transformation closes the toolbar because of [1] - Updating the size using the percentage does not update the position of the scalers - Bottom left handler doesn't show - The handlers doesn't position right when scrolling and resize - The rotator handler is under the toolbar After this commit: - Clicking again on the button will reset the transformation - Keep the toolbar open after click image transformation - close the image_transform after any click outside - Bottom left handler is visible - The handlers now stay fixed on the image when scroll and resize of the browser - The rotator handler is over the toolbar [1]: https://github.com/odoo/odoo/commit/7f81aa4e54709383ac3c73ae3faa421330ba126d task-4235140
Point of Sale tax totals now use the same calculation approach as accounting, including for AvaTax-related orders. This improves consistency between checkout receipts and accounting records, reducing reconciliation differences.
Original PR description
Now we have an helper ensuring the consistency between the computation of the tax totals in both python & javascript, let's use it. task-id: 4280495 Related: https://github.com/odoo/odoo/pull/183299
When users open Documents without a specific context, they now arrive on the Home page instead of the Company page. This provides a more intuitive starting point and helps users access their personal and relevant documents faster.
Original PR description
**Specifications:** Users currently land on the 'Company' page by default when there is no context. Instead, users should land on the 'Home' page. **After this PR:** Users will land on the 'Home' page by default. Task-4282430
Resolved issues and error corrections
Point of Sale now uses the same tax total calculation approach as accounting, improving consistency between receipts, orders, and financial records. This also fixes rounding issues for global tax rounding and improves support for cash rounding methods, reducing discrepancies at checkout and in reports.
Original PR description
Now we have an helper ensuring the consistency between the computation of the tax totals in both python & javascript, let's use it. Related: https://github.com/odoo/enterprise/pull/72597 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Worldline token payments now include a safeguard so repeated processing of the same payment request is recognized as the same transaction. This reduces the risk of customers being charged more than once when payment status updates happen at the same time.
Original PR description
[FIX] payment_worldline: add idempotence key for token payments Prevents a same 'request for payment' transaction to be considered as different by the provider. This avoids multiple payment for a same transaction when the webhook's response causes a concurrent update leading to a reprocess of the initial request. task-2894752
This fixes an issue where links and bold text in the email template editor could repeat or display incorrectly because some elements were written in a format browsers do not handle well. Users editing templates such as quotations should now see cleaner, more reliable content previews.
Original PR description
Issue: ====== Self-closing `a` and `strong` elements doesn't render properly. Steps to reproduce the issue: ============================= - Go to email templates - Open "Send Quotation" template - You will see the `a` element of the attachment is appearing a lot of times. Origin of the issue: ==================== Since the content of the template is in xml, using self closing `a` element is acceptable but it's not valid html so using the same content of xml into html will produce incorrect ui. Solution: ========= Change the self closing `a` and `strong` elements into opening and closing tags. opw-4322575
OAuth login routes now avoid a read-only processing mode when they may need to create a user account or record a login. This prevents some OAuth sign-ins from failing and helps ensure login activity is saved correctly.
Original PR description
Follow-up of #186319 and #186786 These routes are auth=none but aren't technically read-only, as they can create the user record and need to record the login event anyway. The signin one even as a broad catch for Exception, which would prevent the readonly->read-write fallback to work, leading to a failed login.
Fixes an issue in the HTML editor where a collaborator's avatar could disappear or move incorrectly after deleting content or adding new lines in a shared document. This keeps live collaboration indicators accurate, helping users see where others are working in real time.
Original PR description
Issue: ====== Collaborator avator disappears after delete Steps to reproduce the issue: ============================= - Open to do with 2 browsers - Write 2 lines - Put the selection of one in first…
Issue: ====== Collaborator avator disappears after delete Steps to reproduce the issue: ============================= - Open to do with 2 browsers - Write 2 lines - Put the selection of one in first line - Put the selection of the other in the second line - Select all the second line and delete - The avatar of the collaborator you delete with will disappear from the others view. Origin of the issue: ==================== `selectionchange` on document isn't triggered because : - The delete doesn't trigger it by default from the browser. - In `setSelection` in `selection_plugin` we only trigger the `selectionchange` by the line of `setBaseAndExtent` which is not triggered when the line is empty because the document selection is the `p` element and the given selection from the parameters is also the `p` element. In the other case where there is some text left, the document have the text node as anchor node while the given params have the p element so we change the selection and we trigger `selectionchange`. We need `selectionchange` to be triggered because it calls `onSelectionChange` which we use to notify the peers that our selection is changed and dispath the `oe_history_set_selection` command. So after this flow, the peer selection isn't changed and the avatar disappears because `oe_history_step` will call `onExternalHistorySteps` and then will call `refreshSelection` in the avatar plugin which will update the position and image of the collaborator. Since the text element is deleted and we don't have a new selection, `drawPeerAvatar` will find the node by its id but it's not connected to the dom so it will exit in the `anchorBlock` if condition. Solution: ========= We remove ranges and then we put selection again to force trigger the selectionchange. task-4166179w
Website forms will now treat blank required fields as missing values instead of saving them as empty text. This keeps website behavior consistent with regular forms and helps prevent incomplete records from being saved.
Original PR description
Prior to this commit, any empty field saved from the website would write an empty string as the value, thus bypassing the required constraints. Functionally, this is surprising because an empty required field on a form view would trigger an error but would save without issue in website. This commit fixes that issue by replacing the empty string by False which will trigger the required constraint.
The main Projects folder in Documents is now visible as read-only by default. This helps users find and access document folders for the projects they are already allowed to work on, without unintentionally granting edit access to the main folder.
Original PR description
The "Projects" folder is currently hidden for everyone by default. This doesn't make sense, as we want people to have access to the folders of projects they have access to. This PR makes the folder read-only by default.
The timesheet leaderboard now shows the billable time target for the employee in the currently selected company. This prevents users linked to employees in multiple companies from seeing the wrong target, improving accuracy in performance tracking.
Original PR description
Steps to reproduce: 1- Create 2 companies A and B 2- Create 2 employees (one for each company). 3- Assign 2 different values for billable_time_target to each employee. 4- Assign both employees to the same user 5- When the env company is A, the displayed value in leaderbord is the one from the user employee in company B instead of A (same as the env company) Source: - get_billable_time_target gets the values for all employees without filtering on the company, it returns a list and randomly, the js takes the first value. Fix: - get_billable_time_target filters on env.company - get_all_billable_time_targets was also fixed to filter with env.company instead of env.user.company task-4222875
The Italian point of sale now avoids automatically printing the same fiscal receipt again when a cashier returns to the receipt screen. This reduces accidental duplicate prints, saving time and preventing confusion during checkout.
Original PR description
before this PR, the fiscal printer would systematically reprint the last loaded order upon returning to the receipt screen. After this PR, the receipt is printed automatically only once. opw-4367156 opw-4338402 opw-4306960 opw-4328481 opw-4351925
Cancelled restaurant orders are now immediately communicated to the preparation display. This helps kitchen staff see cancellations right away without needing a refresh or waiting for another order update.
Original PR description
Currently, when cancelling an order, the notification is not sent to the preparation display. Steps to reproduce: ------------------- * Open both restaurant and preparation display * In the…
Currently, when cancelling an order, the notification is not sent to the preparation display.
Steps to reproduce:
-------------------
* Open both restaurant and preparation display
* In the restaurant place an order and send it to the kitchen
* Select Action > Cancel order
> Observation: The cancellation is not sent to the preparation display
Note: If you send a new order or refresh the preparation display then you can see that the order has been cancelled.
Why the fix:
------------
When cancelling order, data looks like this
`{'change': True, 'sound': False, 'category_ids': {}}`. Since `category_ids` is empty, `preparation_displays` will alsos be empty which explains why the preparation display does not receive the notification, it is simply not sent.
https://github.com/odoo/enterprise/blob/42b7b322d6c720de45661e3370397adaf74fe1f4/pos_preparation_display/models/preparation_display_order.py#L29-L40
Since all lines are canceled, we include all the different categories they cover. Now `preparation_displays` is not empty and all the displays it covers will receive a notification.
opw-4322600Customers can now make early subscription payments through the portal even when draft invoices already exist. The system cancels those draft invoices first, preventing payment failures and reducing friction in the checkout process.
Original PR description
Before this commit, when customer anticipated payment on portl, it would fail if there were already some draft invoices. This commit ensure the draft invoices are canceled before. In master, we should not create the invoice at all. taskid: 4368057
Copying a Knowledge article now correctly updates embedded views such as kanban, card, and list blocks so they point to the copied article's own items. This prevents users from accidentally seeing or working with items from the original article after using Create a Copy.
Original PR description
In the editor refactoring done in Odoo 18, we slightly changed the structure of the embedded props stored in the anchor node of the embedded views. Now, the view context is nested inside the…
In the editor refactoring done in Odoo 18, we slightly changed the structure of the embedded props stored in the anchor node of the embedded views. Now, the view context is nested inside the `viewProps` attribute of the embedded props. When the user creates a copy of an article using the "Create a Copy" button, we iterate over all the embedded views stored in the article and we update the context of the embedded views. This way if they list the article items of the original article, they must list the article items of the newly created article. This logic was introduced to allow people to start from a fresh and "ready-to-use" article. As the context has been moved in the embedded props, the check verifying if the embedded view has a context always fails and the references stored in the context are never updated. As a result, the newly created article has embedded views listing the article items of the original article which is not what we want. To fix the issue, we will read the context from the `viewProps` attribute of the embedded props and remove the last calls to `urllib` we made to encode/decode the embedded view props. Steps to reproduce: 1. Open Knowledge 2. Create an article 3. Insert an embedded view with `/kanban`, `/card` or `/list` 4. Create a few article items from the embedded view 5. Create a copy of the article you created at step 2 by clicking on the "Create a Copy" button from the kebab menu. => The embedded view in the new article lists the article items of the original article and not its own article items. TO BE: As it was the case before Odoo 18, the embedded views should list the article of the newly created article. see: https://github.com/odoo/enterprise/pull/42936 see: https://github.com/odoo/enterprise/pull/67083 task-4343222