Wednesday, January 3, 2024
17 changes · 17.0
Resolved issues and error corrections
Point of Sale receipts for GCC localizations now include VAT details on each line, display large totals correctly, and use corrected Arabic translations. This improves receipt accuracy and readability for customers and businesses in Saudi Arabia and other GCC markets.
Original PR description
Issue: - For GCC localization, the receipt lacked VAT details per line and had mixed-up numbers at the bottom, and contained wrong translations. Steps to reproduce: - Activate the Saudi localization (l10n_sa_pos). - Open the Point of Sale app. - Create a new order and print the receipt. - Notice the missing VAT per line, the mixed numbers for large amounts at the bottom and the wrong translation. Solution: - patched the ```Orderline.prototype``` to display precise tax amounts with two decimal places. - updated the view to show tax details per line for gcc localization. - added correct Arabic translations, and removed incorrect ones. - See attachment for more details. OPW-3652633 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents IoT box connection threads from crashing when the Odoo server is stopped or unexpectedly disconnected. The IoT box now waits 10 seconds and automatically reconnects, improving reliability without repeatedly overloading the server.
Original PR description
To reproduce: 1. Sync the IoT with a 17 database 2. Once it is set up, force shut down the server by Ctrl+C 2 times 3. Wait a few seconds: => crash of `WebsocketClient` thread with the following…
To reproduce:
1. Sync the IoT with a 17 database
2. Once it is set up, force shut down the server by Ctrl+C 2 times
3. Wait a few seconds:
=> crash of `WebsocketClient` thread with the following traceback:
```
Traceback (most recent call last):
File "/usr/lib/python3.11/threading.py", line 1038, in _bootstrap_i>
self.run()
File "/home/pi/odoo/addons/hw_drivers/websocket_client.py", line 83>
self.ws.run_forever()
File "/usr/local/lib/python3.11/dist-packages/websocket/_app.py", l>
raise WebSocketException("socket is already opened")
websocket._exceptions
WebSocketException
socket is already opened
```
The IoT synchronised servers can stop in 2 ways that we need to handle:
- Gracefully (Ctrl+C):
In this case a disconnection signal is sent to the IoT-box
The websocket is properly closed, but it needs to be established a new connection when the server will be back.
Solution: `while True` loop as `run_forever` will return on close. `time.sleep` for the reconnection delay
- Forced/killed (Ctrl+C 2 times):
In this case there is no disconnection signal received
Solution: use `reconnect` that will automatically take care re-attempting a connection
This will also happen with the graceful quit as `reconnect` will trigger if the server is offline while attempting the new connection
In both case, we perform a reconnection attempt with a delay of 10 seconds to avoid spamming the database
After this commit:
The websocket will reconnect itself automatically after 10 seconds if the connection is disrupted
opw-3612528This fixes stock reception reports so they consistently use the correct quantity information after recent inventory changes. It also corrects a rare unassignment issue in batch and individual picking flows, helping avoid inaccurate reservation links in warehouse operations.
Original PR description
Does a couple of small fixes - Removes some leftover post-quantitypocalypse field references that don't exist anymore for the reception report. - Also fix another bug where the unassign was keeping the incorrect link in the batch picking assign => individual picking unassign (wrong in stable too, but no one has complained since it's a rare use case so can be back-ported later if needed) - Removes obsolete `force_detailed_view` context reference from tests --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue where users could not set planned dates on projects because the date picker closed without saving the selection. Project date ranges now behave correctly, reducing frustration when creating or updating project schedules.
Original PR description
Versions: --------- - 17.0+ Steps to reproduce: ------------------- 1. Go to Project / Configuration / Projects; 2. create a new project; 3. set a Planned Date. Issue: ------ Date picker closes after…
Versions: --------- - 17.0+ Steps to reproduce: ------------------- 1. Go to Project / Configuration / Projects; 2. create a new project; 3. set a Planned Date. Issue: ------ Date picker closes after selecting a date while leaving the field empty. Cause: ------ The `daterange` widget checks on changes whether the dates are a range using a `isRange` method. Before https://github.com/odoo/odoo/pull/125039, this was true for any array, after it is only true if the date field has a related field to form the range, and if the field is required or neither field is empty. For project, this still worked because it had *a* `required` attribute for the date field, but https://github.com/odoo/odoo/pull/143509 changed this so that it only counts as required if the given expression evaluates to a non-falsy value. For project, the date fields are only required if one of two dates has been given, but an `onChange` method clears both fields if only one is given, which makes it impossible to select any date, as the date picker doesn't allow you to pick a range, and the `onChange` method clears any selected date because it's not a range. Solution: --------- Add a `force_range` option to the `daterange` widget to force range selection. This would make sense in models like `project.project` that take either 0 or 2 dates, but cannot force the 2 date requirement based on another field. Also modify `project.project`'s `onChange` method to not clear the `start_date` if no end `date` is given. This change alone allows the user to enter dates again without updating the `project` module's XML files, but with the minor annoyance of having to open the date picker twice to select a range. opw-3644238
Applicants can now submit job application forms with a resume attached without triggering an error. This prevents a broken application flow and helps ensure candidates can complete their submissions successfully.
Original PR description
Steps: - Install `website_hr_recruitment` - Try to add a file in `Resume` - Click on Apply A traceback is raised because we use `.val()` instead of `files.length` to check if the user has uploaded
Fixed an issue where companies could share an attendance kiosk key, causing kiosk mode to fail in multi-company setups. Each company now receives its own unique key when created, so employees can open attendance kiosks reliably.
Original PR description
This issue occurs when a customer creates multiple companies. Then, after installing the attendance module, after selecting the kiosk mode, an error is generated. This is because, before installing…
This issue occurs when a customer creates multiple companies. Then, after installing the attendance module, after selecting the kiosk mode, an error is generated. This is because, before installing the attendance module, if the customer created a company, a single kiosk key is generated. This key is different for each company, but it is the same.
step to reproduce-
- First created two company.
- Install the `Attendances` & Open it.
- Click on the Kiosk Mode from Menu.
- Error will be generated.
sentry traceback-
```
ValueError: Expected singleton: res.company(2, 1, 4, 3)
File "odoo/http.py", line 2157, in __call__
response = request._serve_db()
File "odoo/http.py", line 1732, in _serve_db
return service_model.retrying(self._serve_ir_http, self.env)
File "odoo/service/model.py", line 133, in retrying
result = func()
File "odoo/http.py", line 1759, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 1873, in dispatch
return self.request.registry['ir.http']._dispatch(endpoint)
File "addons/website/models/ir_http.py", line 235, in _dispatch
response = super()._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 207, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 722, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/hr_attendance/controllers/main.py", line 82, in open_kiosk_mode
} for e in request.env['hr.employee'].sudo().search_read(domain=[('company_id', '=', company.id)],
File "odoo/fields.py", line 5118, in __get__
raise ValueError("Expected singleton: %s" % record)
```
after this commit,Each attendance kiosk key generated during the company's creation is unique.
sentry-4617967282Project forms now keep selected planned dates visible and usable instead of clearing them when the user clicks away. The change improves date range entry by requiring both start and end dates and ensuring the range selector is shown clearly when needed.
Original PR description
Steps ===== - Install module project - Open the form view of a project - Set a planned date - Click anywhere on the page to remove the focus from the date picker Issue ===== The chosen date…
Steps ===== - Install module project - Open the form view of a project - Set a planned date - Click anywhere on the page to remove the focus from the date picker Issue ===== The chosen date disappeared without any explanation to the user Cause ===== odoo#123268 introduced some changes related to the planned dates of projects. 1. the write method is modified to avoid the write of only a start/end date (both date should be set or none of them) 2. a required is added on the start date field in the form view of project 3. an onchange is added to avoid to have one of both field set and not the other This last change is problematic as it overrides the required behavior of the date fields. On top of that, https://github.com/odoo/odoo/pull/143509 changed the behavior of the datepicker widget that only display the full range by default if both fields are required (which is not the case here if they are empty). The combination of those changes have the consequence that the planned date field is unusable in the form view of projects. Fix === The onchange being only useful in form view, it is deprecated as the required attribute is sufficient for this use case and provide the user warnings if he forget a field. On top of that a required attribute is also set on the end date field. task-3628069
This fixes an error that occurred when users with two-factor authentication enabled tried to connect through XML-RPC using an API key. It helps ensure API integrations continue to work reliably for accounts protected by extra login security.
Original PR description
Enable TOTP on your account and create yourself an API key. Connect in xmlrpc using that API key. Traceback `request` is not bound. Fixes: odoo/documentation#6919 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 fixes the account types used in the Vietnamese localization so deferred expenses and fixed asset depreciation are classified correctly. Businesses using this localization will get more accurate balance sheet and profit and loss reporting for these accounts.
Original PR description
242: These future expenses must be deferred on the company’s balance sheet until the moment in time they can be recognized, at once or over a defined period, on the Profit and Loss statement. 6274, 6414, 6424: Fixed asset depreciation not expense 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 restores the ability to mention users in Twitter replies and removes spam restrictions that were previously implemented, now that the system has an enterprise subscription. Additionally, several bugs are fixed including issues with adding user tweet streams and duplicate tags appearing in responses.
Original PR description
Re-activate the mentions ======================== In 0cccfe3 , we automatically removed the mentions if we are not mentioning the user we reply to, because we had some issues with Twitter. Now that we have an enterprise subscription, we want to re-activate them. An option has been added to disable users mention again. Remove the anti-spam system =========================== In e09d8aa , we added a system to prevent the users from spamming in the feed view. Now that we have an enterprise subscription, we want to remove that restriction by default (it is still possible to enable it with a system parameter). Can not add a stream for the tweets of a user === When trying to add the tweets of a specific users, we get an error because the field `twitter_followed_account_search` is never set (only `twitter_followed_account_id`). Task-3615860
When users copy an article that contains embedded views (like kanban or list views of article items), those views were incorrectly showing items from the original article instead of the copied article. This fix ensures that when an article is copied, the embedded views are updated to display the correct items belonging to the new copy.
Original PR description
When the user copies an article, the system copies the body of the article 'as-is' without updating the ID references stored within it. As a result, the embedded views of article items stored in the…
When the user copies an article, the system copies the body of the article 'as-is' without updating the ID references stored within it. As a result, the embedded views of article items stored in the body of the copy will list the article items of the original article and not its own article items. This PR will address that issue by updating the context of the embedded views stored in the body of the copy. It will ensure that the embedded views listing the article items of the original article will now list the article items of the copy. Steps to reproduce the issue: 1. Create an article 2. Insert an embedded view of article items (with /kanban or /list) 3. Insert a few articles 4. Create a copy of the article (using the "Create a Copy" button) => The embedded views of article items list the article items of the original article. TO BE: The embedded views of article items should list the article items of the newly created article. task-3349324 Forward-Port-Of: odoo/enterprise#49903 Forward-Port-Of: odoo/enterprise#42936
This fix corrects how the planned date field appears in Field Service Management task forms. Previously, the date range was displaying as a single date field instead of showing both start and end dates together. The update ensures users can properly view and set the full date range for task planning.
Original PR description
Steps ===== - install industry_fsm - create a task in a fsm project Issue ===== The planned date field is not displayed as a range as it should. Cause ===== https://github.com/odoo/enterprise/pull/40866 introduces an onchange on planned_date_begin and date_deadline that prevents to leave one of the field empty while the other is set. https://github.com/odoo/odoo/pull/143509 changes the behavior of the daterange widget and display it as a single field if it is not required. Fix === A change to the daterange widget is introduced to force the display as a range (see community pr). task-3628069 related-https://github.com/odoo/odoo/pull/145167
This update corrects Spanish language translations for Latin American countries (Mexico, Uruguay, Colombia, etc.) by ensuring they use the correct regional Spanish translation files. The fix renames translation files across multiple localization modules and adds Spanish variant support to the product classification system, resolving a customer-reported issue where translations were not displaying correctly for these regions.
This fix corrects the invoice relationship code (TipoRelacion) used when creating credit notes for POS global invoices in Mexico. The code was incorrectly set to '03' instead of '01', which is required for proper Mexican tax compliance. This ensures that credit notes generated from POS orders are correctly classified in the electronic invoice system.
Original PR description
1. Have an MX company setup 2. Create a portal user for an mx customers (ex. INMOBILIARIA CVA) 3. Settings > Point of Sale > enable 'Use QR code on ticket' 4. Open POS, create 2+ orders, save the link from any qr 5. Close session 6. Open session in the backend, go to orders 7. Select all orders, Actions > Create Global Invoice 8. Open the qr link saved at 4. with the portal user created at 2. 9. Invoice will be automatically created 10. Go to the POS session in the backend (like 6.) 11. Open the order having the "Customer" field filled with portal partner 12. Check in the CFDI tab, the document with state 'Sent' Issue: TipoRelacion is '03', while it should be '01' when creating a credit note for an invoice opw-3600035
This fix resolves a crash that occurred when users tried to navigate to the next document while signing multiple PDFs. The issue was caused by incorrectly formatted action parameters. Users can now smoothly move between documents during the signing process without encountering errors.
Original PR description
Issue: ====== There is a traceback when going to next document in sign. Steps to reproduce the issue: ============================= - Install sign - Upload 2 pdf files - Add any sign item - Click send and add any customer - Click on next document Origin: ======= The params of the action are in the wrong format. opw-3645674
This update corrects how liability and capital account balances are calculated in the Mexican trial balance SAT export feature. Previously, the calculation was incorrect; now it properly follows official Mexican accounting standards by calculating these balances as credit minus debit, ensuring compliance with SAT (Mexican tax authority) requirements.
Original PR description
With an MX company Go to Trial Balance Export SAT(XML) Issue: Liability or Capital accounts balance should be calculated as credit - debit Official documentation https://www.amexipac.org/assets/estandar_balanzacomprobacion2.pdf opw-3498628 Forward-Port-Of: odoo/enterprise#47698
This fix ensures that when creating new employment contract offers based on existing contracts, the hospital and ambulatory insurance costs are recalculated using the latest system settings rather than copying outdated values from the previous contract. This prevents employees from being offered incorrect insurance costs when system parameters have been updated.
Original PR description
When an offer is generated from an existing contract, the initial value for the hospital and ambulatory cost is takend from the previous contract. If the cost for an adult and/or a children is changed in the system parameters is changed, it is not taken into account for offers comming from an existing contract having already insurance amount. So we recompute the cost of the insurance based on the system config parameter values. Forward-Port-Of: odoo/enterprise#53535
Original PR description
Spanish translation has been modified by commit bf81596aa7b36a9a08b9701a9fcdab3e30902349 This behavior makes spanish variant (maxico, uruguay, columbia, etc.) use the es_419.po instead of es.po. This commit renames the po files for the LATAM localizations so that translations work as expected. Also, it adds the es_419.po file to the UNSPSC so that both spanish and its variant can use the UNSPSC code translations. Initiated by customer issue: opw-3627465