Friday, July 5, 2024
44 changes · saas-17.2
Resolved issues and error corrections
Users can now duplicate recurring shifts in Planning without being interrupted by the recurring shift edit window. This fixes a workflow issue and makes schedule copying behave as expected.
Original PR description
Currently, it is impossible to duplicate a recurring shift, because the "Edit Recurring Shift" modal opens instead. This PR fixes it by preventing this modal from opening and copying the shift as it should. The problem is that the "dragPillDrop" method will open the modal if the shift is recurring, no matter if you are trying to copy it or not. To fix it, a condition was added to check if the shift is being copied or not, and if so, it won't open the modal. task-3978527
The salary configurator now correctly disables benefit values when the required related benefit is not selected. This prevents loaded offers from keeping invalid benefit choices, helping HR teams produce accurate contract offers.
Original PR description
When we are loading an offer in the salary configurator, if values are set to a benefit that depends on another one which is disabled. You are keeping the value of the contract, and it is not disabled as it should because the mandatory benefit is not set.
We've got this issue because the variable in the loop has the same name as the one we really need declared before ('mandatoryBenefitSelected').
We also remove the loop and the split, as it is already done in the function 'updateDependentBenefits' that is called.
TASK-ID: NONEThis fixes an issue where the starred message counter could stay outdated in another browser tab after a starred message was deleted. The counter is now updated from the server, so users see a consistent and reliable count across tabs.
Original PR description
Before this PR, the star message counter was not updated on message deletion on tabs that were unaware of the message. Steps to reproduce the issue: - Open two tabs and log in as admin. - Star a message; the counter should show 1 on both tabs. - Reload one tab without accessing the channel. - Delete the starred message from the other tab. - Notice that the star counter on the second tab still shows 1. The issue arose because the client-side star counter updated based on partial information, specifically only when the message was starred. If the message had not been fetched, this information was unavailable. This PR resolves the issue by removing the client-side computation and implementing a server-side notification instead. runbot-61305,62004
Fixes an issue where applicants entering an invalid LinkedIn URL on a job application briefly saw a warning that then disappeared. The warning now remains visible when needed, helping applicants correct their information before submitting.
Original PR description
steps to reproduce -go to host/jobs -go to any job -put a wrong linkedin url -> the message is not displayed (after a blink) reason https://github.com/odoo/enterprise/pull/65011 this pr adds a js function (checkRedundant) that remove the warning message no matter what if its check are successful fix adds a condition and parma to check if the warning message should be removed or not task-4010892 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
Miscellaneous changes
**Current behavior:** Setting up a control point for a product by quantity with a failure stock location on manufacturing operations will never allow a manufactured product that fails the quality check to end up in the failure location. **Expected behavior:** A product created in a manufacturing order can fail a quality check and end up in the designated failure location in WH. **Steps to reproduce:** 1. Set up a quality point on some storable product on manufacturing operations with:
Original PR description
**Current behavior:** Setting up a control point for a product by quantity with a failure stock location on manufacturing operations will never allow a manufactured product that fails the quality…
**Current behavior:**
Setting up a control point for a product by quantity with a failure stock location on manufacturing operations will never allow a manufactured product that fails the quality check to end up in the failure location.
**Expected behavior:**
A product created in a manufacturing order can fail a quality check and end up in the designated failure location in WH.
**Steps to reproduce:**
1. Set up a quality point on some storable product on manufacturing operations with:
`Control per: Quantity`
`Type: Pass - Fail`
`Failure Location: Some internal location`
3. Create a new MO with the quality controlled product and confirm it
4. Click the Quality Checks button, fail the check (make sure to select the faiure location here)
5. After the Quality Check, click Produce All -> Observe that the full quantity of products produced by the MO still was moved to whatever the default Stock location is, not the failure location specified.
**Cause of the issue:**
The method `_move_line_to_failure_location()` expects a picking and SML to exist, however when the quality check starts from an MO, we have neither (contrasted with a check starting from a picking). So the method just skips the logic where the re-route would occur.
**Fix:**
Override the method in the mrp_quality bridge module, if the quality check has a production_id then create the SML on the spot via `MrpProduction.action_confirm()`, then go through the same logic to split the created line as necessary based on the failed quantity vs. total quantity of the MO.
opw-3865301
Forward-Port-Of: odoo/enterprise#62731Before this commit: If an IoT is set on a company (other than the default one), when printing a report set to an IoT device. It would always show the "error to print" pop-up. This happened as the notification that the printing operation was successful was always send to the channel of the first company. After this commit: We force to use the company set on the device of the identifier (which is the iot box company). This heuristic is not perfect as different IoT might have devices wit
Original PR description
Before this commit: If an IoT is set on a company (other than the default one), when printing a report set to an IoT device. It would always show the "error to print" pop-up. This happened as the notification that the printing operation was successful was always send to the channel of the first company. After this commit: We force to use the company set on the device of the identifier (which is the iot box company). This heuristic is not perfect as different IoT might have devices with the same identifier, in this case, it would accidentally send to the wrong IoT channel. To solve this other issue, another PR in the IoT will force to send the IoT mac address in order to make sure to use the right IoT. As the code of the IoT might be outdated, we define it with a default value. opw-3965623 Forward-Port-Of: odoo/enterprise#65996
### Issue: A quantity of `3` gets displayed as `3.00...004`. ### Steps to reproduce: - Settings > Technical > Database Structure > Decimal Accuracy - Change the `Digits` of `Product Unit of measure` to 5 - Create a storable product P1 with a BOM: - In the operation tab: one operation in `Assembly line 1` - In the component tab: 1 unit of P2 consumed in the operation - Create and confirm an MO for 3 units of P1 - Go to the shopfloor module, remove the MO ready filter Two issues can b
Original PR description
### Issue: A quantity of `3` gets displayed as `3.00...004`. ### Steps to reproduce: - Settings > Technical > Database Structure > Decimal Accuracy - Change the `Digits` of `Product Unit of measure`…
### Issue: A quantity of `3` gets displayed as `3.00...004`. ### Steps to reproduce: - Settings > Technical > Database Structure > Decimal Accuracy - Change the `Digits` of `Product Unit of measure` to 5 - Create a storable product P1 with a BOM: - In the operation tab: one operation in `Assembly line 1` - In the component tab: 1 unit of P2 consumed in the operation - Create and confirm an MO for 3 units of P1 - Go to the shopfloor module, remove the MO ready filter Two issues can be noticed: - Click on Register Production A pop up opens. Before validating it: The displayed producing quantity of P1 and the quantity of P2 that should be consumed by the operation is`3.00...004`. After validation, the produced quantity is rounded. However, if you click on the cross the rounding error will remain. In addition, the second rounding issue will remain even after validation of the consumed qty. ### Cause of the issue: Our float utils introduce tiny rounding errors, especially at higher precisions. In our case, these errors are introduced during the call of the write method of the `web_save`. ### Fix: We eliminate the rounding errors for the display in the same way as initially ptoposed by https://github.com/odoo/enterprise/pull/58880 see commit https://github.com/odoo/enterprise/commit/1c2f0068d319917bb4af163396d0861a1ff6c9e1 and adapt it to also apply to the raw_move_ids of the MO. opw-3861892 --- Forward-Port-Of: odoo/enterprise#62510
PR does 2 things: - First round of .po file cleaning for es_xx.po files. Since v17 started using es_419 instead of the es_xx.po files, these languages are no longer accessible on Transifex for the translators to change. These files were mostly out of date/incorrect anyways though, so we delete them. The one exception to this is the es_CL.po because Chile has some specific words that differ from the rest of LATAM. This cleanup will occur in a followup PR to give translators time to double chec
Original PR description
PR does 2 things: - First round of .po file cleaning for es_xx.po files. Since v17 started using es_419 instead of the es_xx.po files, these languages are no longer accessible on Transifex for the translators to change. These files were mostly out of date/incorrect anyways though, so we delete them. The one exception to this is the es_CL.po because Chile has some specific words that differ from the rest of LATAM. This cleanup will occur in a followup PR to give translators time to double check if any of the translations in from these es_CL files should remain. - Cleanup the en_AU/en_GB.po files. There were some non-sense "translations" in them and most of them didn't add much value. Some en_AU files had specific legitimate "translations" were left (e.g. tax "GST", check = cheque), so they were only modified to remove any erroneous translations task: 3593077 COM PR: https://github.com/odoo/odoo/pull/171520 Forward-Port-Of: odoo/enterprise#65875
Adapt history revision tour after the improvements done on the comparison feature. task-3761721 Forward-Port-Of: odoo/enterprise#60061
Original PR description
Adapt history revision tour after the improvements done on the comparison feature. task-3761721 Forward-Port-Of: odoo/enterprise#60061
With an MX company setup Go to Accounting > Reports > Trial Balance. Click "SAT (XML)" to export the file. Issue: No certificate in the xml In Odoo 15, exporting the SAT XML would include the company's EDI certificate. In Odoo 16 and newer, this is no longer the case. opw-3891205 Forward-Port-Of: odoo/enterprise#62969
Original PR description
With an MX company setup Go to Accounting > Reports > Trial Balance. Click "SAT (XML)" to export the file. Issue: No certificate in the xml In Odoo 15, exporting the SAT XML would include the company's EDI certificate. In Odoo 16 and newer, this is no longer the case. opw-3891205 Forward-Port-Of: odoo/enterprise#62969
Before this commit, receiving logs with non-ascii characters would cause a traceback. After this commit, non-ascii characters are processed correctly. With the proposed fix, should a client send an ascii-encoded string, it will still be decoded correctly, ensuring backwards compatibility. This means that if the IoT box doesn't get updated and interacts with an updated server, since the UTF-8 table covers the ascii table, it won't lead to any error server-side. OPW-4001252 Forward-Port-
Original PR description
Before this commit, receiving logs with non-ascii characters would cause a traceback. After this commit, non-ascii characters are processed correctly. With the proposed fix, should a client send an ascii-encoded string, it will still be decoded correctly, ensuring backwards compatibility. This means that if the IoT box doesn't get updated and interacts with an updated server, since the UTF-8 table covers the ascii table, it won't lead to any error server-side. OPW-4001252 Forward-Port-Of: odoo/enterprise#65956
With PostgreSQL 16, test_report_load_more_limit fails because the result of `_get_lines` is not deterministic. It is the case because the query in `_report_custom_engine_partner_vat_listing` doesn't have a ORDER BY clause. Add a ORDER BY clause to have a deterministic behavior. Forward-Port-Of: odoo/enterprise#66035 Forward-Port-Of: odoo/enterprise#65991
Original PR description
With PostgreSQL 16, test_report_load_more_limit fails because the result of `_get_lines` is not deterministic. It is the case because the query in `_report_custom_engine_partner_vat_listing` doesn't have a ORDER BY clause. Add a ORDER BY clause to have a deterministic behavior. Forward-Port-Of: odoo/enterprise#66035 Forward-Port-Of: odoo/enterprise#65991
Since [1], the shop floor application might crash when not running an update of the MRP application to add the new filter to the search view. This fix resolves this issue by ignoring the 'This Station' filter if it is not installed. [1] https://github.com/odoo/enterprise/pull/64551 Forward-Port-Of: odoo/enterprise#65987
Original PR description
Since [1], the shop floor application might crash when not running an update of the MRP application to add the new filter to the search view. This fix resolves this issue by ignoring the 'This Station' filter if it is not installed. [1] https://github.com/odoo/enterprise/pull/64551 Forward-Port-Of: odoo/enterprise#65987
When computing the number of children of an employee, if the field was never changed, it will be equal to False and appear as 0 on the form view, leading to an error in the retrieval of the appropriate IS Code. We also improve the recompute whole sheet mechanism, applying changes to salary attachments and contract modifications. Forward-Port-Of: odoo/enterprise#65799
Original PR description
When computing the number of children of an employee, if the field was never changed, it will be equal to False and appear as 0 on the form view, leading to an error in the retrieval of the appropriate IS Code. We also improve the recompute whole sheet mechanism, applying changes to salary attachments and contract modifications. Forward-Port-Of: odoo/enterprise#65799
Previously, the down payment invoice used the account related to the product. The final invoice used the default computed account instead. This resulted in two different accounts being billed for the same client and the same sale. This commit makes the final invoice use the same account as its down payment. To verify: - Create a sale order with a product which have an income account different from default one - Create Downpayment => Invoice will have the income account of the product
Original PR description
Previously, the down payment invoice used the account related to the product. The final invoice used the default computed account instead. This resulted in two different accounts being billed for the same client and the same sale. This commit makes the final invoice use the same account as its down payment. To verify: - Create a sale order with a product which have an income account different from default one - Create Downpayment => Invoice will have the income account of the product - Fully invoice the sale order => Line to deduce the payment will use the default account [Ticket link](https://www.odoo.com/odoo/project.task/3887331) opw-3887331 Forward-Port-Of: odoo/odoo#170783
**Current behavior:** When importing a repair order record, if a picking_type_id is not supplied by the data source, the import will fail. **Expected behavior:** Fields with default values shouldn't be required during record creation. **Steps to reproduce:** 1. Create a .CSV with one column (e.g., `scheduled date`) and load it in the import record view in the Repair app 2. Map the CSV column to the repair model's date field 3. Click the test button to see the error (bad query)
Original PR description
**Current behavior:** When importing a repair order record, if a picking_type_id is not supplied by the data source, the import will fail. **Expected behavior:** Fields with default values shouldn't…
**Current behavior:** When importing a repair order record, if a picking_type_id is not supplied by the data source, the import will fail. **Expected behavior:** Fields with default values shouldn't be required during record creation. **Steps to reproduce:** 1. Create a .CSV with one column (e.g., `scheduled date`) and load it in the import record view in the Repair app 2. Map the CSV column to the repair model's date field 3. Click the test button to see the error (bad query) **Cause of the issue:** If a `picking_type_id` is not supplied, we try to get the default field value via `default_get()`. However, it is called incorrectly (string argument vs. container), so the string is iterated over and each letter is treated as a field name (none of which, of course, exist in the model). Later in the create sequence, we assume there is a `picking_type_id` value obtained from the `default_get()` call but it is not there. This (eventually) causes the invalid query. **Fix:** Correct the call to `default_get()`. opw-3813273 Forward-Port-Of: odoo/odoo#171589
(wrote by LSE) Before this commit: If an error happened when trying to synchronise a PoS order nothing is saved on the backend to inform the user regarding the error. Note: Odoo logs would contain the information, but it is out of reach for certain clients (on odoo online for instance). In theory, we can't lose any information as, if the sync process raise an exception, the order is still on the PoS browser cache that will then try to be resync when another order sync happen. But,
Original PR description
(wrote by LSE) Before this commit: If an error happened when trying to synchronise a PoS order nothing is saved on the backend to inform the user regarding the error. Note: Odoo logs would contain…
(wrote by LSE) Before this commit: If an error happened when trying to synchronise a PoS order nothing is saved on the backend to inform the user regarding the error. Note: Odoo logs would contain the information, but it is out of reach for certain clients (on odoo online for instance). In theory, we can't lose any information as, if the sync process raise an exception, the order is still on the PoS browser cache that will then try to be resync when another order sync happen. But, in practice, the support received some cases of "missing PoS orders". Which can happen as we fully rely on the client browser cache that can be cleared or use another computer/browser/session. After this commit: If an order can not be processed in the backend: - the PoS order data is saved in the PoS session attachments - a scheduled activity is created in the PoS session As an un-synced keep being tried to be sync (and will likely fail each time), we compare it with the already attached one to avoid having the content repeated multiple times. If the order was modified in between, a new attachment with the same name is created. Note: draft orders that will fail to validate are NOT stored The attachment and activity are automatically removed when the order of same reference is validated  opw-3650239 Forward-Port-Of: odoo/odoo#167269 Forward-Port-Of: odoo/odoo#147130
Problem: en_US data is loaded while the user uses another language Steps to reproduce: - Install "point_of_sale" app and "pos_loyalty" module - Change the language (e.g. to french) - Go to POS -> Products -> Discount & Loyalty - Create a new Loyalty Card - In Rewards, set a discount of 20 $ on order and save - Go to the shop and select a partner and a product (price must be expensive enough for the loyalty card to be applicable) - Click on "Reward", the earlier created reward is there
Original PR description
Problem: en_US data is loaded while the user uses another language Steps to reproduce: - Install "point_of_sale" app and "pos_loyalty" module - Change the language (e.g. to french) - Go to POS ->…
Problem: en_US data is loaded while the user uses another language Steps to reproduce: - Install "point_of_sale" app and "pos_loyalty" module - Change the language (e.g. to french) - Go to POS -> Products -> Discount & Loyalty - Create a new Loyalty Card - In Rewards, set a discount of 20 $ on order and save - Go to the shop and select a partner and a product (price must be expensive enough for the loyalty card to be applicable) - Click on "Reward", the earlier created reward is there - Go back to the form of the loyalty card and change the value and save - Go back to the shop - Click on "Reward" and the name of the loyalty card is still the same as before while it should be for the new price Cause: When loading the data, the record environment have language set to None so by default it is loaded in en_US which didn't recompute its value after the modification of the price. opw-3987961 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#171049
When the authorization of the payment expires. Happens when you do not capture manually tx in 7 days (by default). Stripe sends a webhook that payment is canceled which was not captured before this PR, hence the changes were not applied for the corresponding payment. With this PR the cancel webhook is captured and the corresponding payment is canceled odoo-side. opw-3957346 Forward-Port-Of: odoo/odoo#171061
Original PR description
When the authorization of the payment expires. Happens when you do not capture manually tx in 7 days (by default). Stripe sends a webhook that payment is canceled which was not captured before this PR, hence the changes were not applied for the corresponding payment. With this PR the cancel webhook is captured and the corresponding payment is canceled odoo-side. opw-3957346 Forward-Port-Of: odoo/odoo#171061
# Description Since upgrading Bootstrap a few months ago, the `nav-link-padding-x` and `nav-link-padding-y` classes now rely on CSS variables defined within the `nav` class. To ensure these variables are correctly applied, we need to wrap the `nav-item` in a nav class. This change fixes the missing padding issue for the sign-in button. Task: [4032574](https://www.odoo.com/odoo/project/2328/tasks/4032574?cids=2) --- I confirm I have signed the CLA and read the PR guidelines at
Original PR description
# Description Since upgrading Bootstrap a few months ago, the `nav-link-padding-x` and `nav-link-padding-y` classes now rely on CSS variables defined within the `nav` class. To ensure these variables are correctly applied, we need to wrap the `nav-item` in a nav class. This change fixes the missing padding issue for the sign-in button. Task: [4032574](https://www.odoo.com/odoo/project/2328/tasks/4032574?cids=2) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#171887
--- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#171167
Original PR description
--- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#171167
[FIX] l10n_es_edi_facutrae: fix TotalGrossAmount and new fields - The tag TotalGrossAmount should be the sum of the GrossAmount tag which is calculated as (price - discount + charge). Currently, the TotalGrossAmount is calculated as the sum of the price before subtracting the discount and adding the charge. - Add new fields to the XML. - Remove fields for total general discounts and charges as they were computed incorrectly. task-4001821 Forward-Port-Of: odoo/odoo#170176
Original PR description
[FIX] l10n_es_edi_facutrae: fix TotalGrossAmount and new fields - The tag TotalGrossAmount should be the sum of the GrossAmount tag which is calculated as (price - discount + charge). Currently, the TotalGrossAmount is calculated as the sum of the price before subtracting the discount and adding the charge. - Add new fields to the XML. - Remove fields for total general discounts and charges as they were computed incorrectly. task-4001821 Forward-Port-Of: odoo/odoo#170176
Small fix and improvement on dumpstack function: - info might not be the best option and could easily be muted if the server log levels happened to be higher. - query_time is initially set to 0. If a dumpstack happened with this value, it will not display any qt nor pt as 0 is evaluated as False Forward-Port-Of: odoo/odoo#171261
Original PR description
Small fix and improvement on dumpstack function: - info might not be the best option and could easily be muted if the server log levels happened to be higher. - query_time is initially set to 0. If a dumpstack happened with this value, it will not display any qt nor pt as 0 is evaluated as False Forward-Port-Of: odoo/odoo#171261
Before this commit, trying to log non-ascii characters from the IoT box would raise an error. The case primarily happens when a user has devices in their system that are named with special characters (e.g Chinese characters for printer names, accented French names, etc). After this commit, a device name containing non-ascii characters will be logged properly without triggering any tracebacks. REASON: It's the option that incurs the least amount of changes in the codebase. Furthermore, alt
Original PR description
Before this commit, trying to log non-ascii characters from the IoT box would raise an error. The case primarily happens when a user has devices in their system that are named with special characters (e.g Chinese characters for printer names, accented French names, etc). After this commit, a device name containing non-ascii characters will be logged properly without triggering any tracebacks. REASON: It's the option that incurs the least amount of changes in the codebase. Furthermore, alternative options would lead to lots of bespoke code to cover all cases. The proposed change is also the one that offers the greatest flexibility: clients can freely use their native language to name their devices. OPW-4001252 Forward-Port-Of: odoo/odoo#171728
In a grouped kanban view, drag and drop a record from a group which contains a lot of records and has the "Load more" displayed in the bottom (i.e. which contains more records than the limit). Before this commit, the drag&dropped record was displayed twice: once where it was dropped (which is fine), and once from where it was dragged (which is wrong). This happened because we didn't correctly synchronize the reload of the column (which must be done because there're more records than the limit
Original PR description
In a grouped kanban view, drag and drop a record from a group which contains a lot of records and has the "Load more" displayed in the bottom (i.e. which contains more records than the limit). Before…
In a grouped kanban view, drag and drop a record from a group which contains a lot of records and has the "Load more" displayed in the bottom (i.e. which contains more records than the limit). Before this commit, the drag&dropped record was displayed twice: once where it was dropped (which is fine), and once from where it was dragged (which is wrong). This happened because we didn't correctly synchronize the reload of the column (which must be done because there're more records than the limit, and we "removed" one record from the column) and the update on the moved record (s.t. it belongs to the correct column). As a consequence, we reloaded the column before updating the record, so it was still part of the original column. This commit fixes the issue by splitting the logic of the _removeRecords function: before, it altered the records locally (to filter out removed records) and updated the count, and, if necessary, it reloaded the list. Now, _removeRecords is only responsible to update the list locally, which must be done directly as we want the user to get a direct feedback of the move. In the flows where a reload might be necessary, we do it afterwards. In the case of a moveRecord, we can then do it after the update on the record. opw-3891269 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#171411
When a user tries to validate an invoice of the POS order a traceback will occur. Steps to produce: - Install 'l10n_sa_edi', 'point_of_sale', and 'contacts' modules. - Switch to a 'SA Company' company. - Open 'Point of Sale' and create and open New Session. - Select any products (with customer taxes )> payment > Select payment method > Invoice > Select individual customer > Validate error will generated in the backend. ```AttributeError: 'bool' object has no attribute 'encode'```
Original PR description
When a user tries to validate an invoice of the POS order a traceback will occur. Steps to produce: - Install 'l10n_sa_edi', 'point_of_sale', and 'contacts' modules. - Switch to a 'SA Company'…
When a user tries to validate an invoice of the POS order a traceback will occur. Steps to produce: - Install 'l10n_sa_edi', 'point_of_sale', and 'contacts' modules. - Switch to a 'SA Company' company. - Open 'Point of Sale' and create and open New Session. - Select any products (with customer taxes )> payment > Select payment method > Invoice > Select individual customer > Validate error will generated in the backend. ```AttributeError: 'bool' object has no attribute 'encode'``` This is because 'signature' is 'False' at [1] while generating an invoice for an order and a system tries to encode it. link [1]: https://github.com/odoo/odoo/blob/149a2acea96cff14990b667ee611c3afbdc146f2/addons/l10n_sa_edi/models/account_move.py#L115 This commit solves the above issue by adding a condition if 'signature' is 'False' then encodes a blank string. sentry-5482247880 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#169407
Improve some shortcomings of the comparison system applied on history revisions. * Better handling of diffs generated by changes in html parameters: > Previous system was generating unnecessary HTML opening tags in those cases. * Better handling of addition or deletion in previously empty HTML tags. > Previous system was generating unnecessary HTML opening tags in those cases. * Better handling of HTML tag replacement. > Previous system was generating invalid HTML in those cases.
Original PR description
Improve some shortcomings of the comparison system applied on history revisions. * Better handling of diffs generated by changes in html parameters: > Previous system was generating unnecessary HTML…
Improve some shortcomings of the comparison system applied on history revisions. * Better handling of diffs generated by changes in html parameters: > Previous system was generating unnecessary HTML opening tags in those cases. * Better handling of addition or deletion in previously empty HTML tags. > Previous system was generating unnecessary HTML opening tags in those cases. * Better handling of HTML tag replacement. > Previous system was generating invalid HTML in those cases. * Trade off the comparison generated on some complex changes to be able to display correct HTML > When we have both an HTML parameter change on the container tag and a content > change, we choose to display both `<added>` and `<removed>` in the same > container. > The current system is not smart enough to generate a better comparison and > would require extensive refactoring to handle this better. task-3761721 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#171276 Forward-Port-Of: odoo/odoo#160460
Another checksum flag was added in 4a578a58 but this flag is not supported by older versions of Docker. Forward-Port-Of: odoo/odoo#171879
Original PR description
Another checksum flag was added in 4a578a58 but this flag is not supported by older versions of Docker. Forward-Port-Of: odoo/odoo#171879
PR does 2 things: - First round of .po file cleaning for es_xx.po files. Since v17 started using es_419 instead of the es_xx.po files, these languages are no longer accessible on Transifex for the translators to change. These files were mostly out of date/incorrect anyways though, so we delete them. The one exception to this is the es_CL.po because Chile has some specific words that differ from the rest of LATAM. This cleanup will occur in a followup PR to give translators time to double chec
Original PR description
PR does 2 things: - First round of .po file cleaning for es_xx.po files. Since v17 started using es_419 instead of the es_xx.po files, these languages are no longer accessible on Transifex for the…
PR does 2 things: - First round of .po file cleaning for es_xx.po files. Since v17 started using es_419 instead of the es_xx.po files, these languages are no longer accessible on Transifex for the translators to change. These files were mostly out of date/incorrect anyways though, so we delete them. The one exception to this is the es_CL.po because Chile has some specific words that differ from the rest of LATAM. This cleanup will occur in a followup PR to give translators time to double check if any of the translations in from these es_CL files should remain. - Cleanup the en_AU/en_GB.po files. There were some non-sense "translations" in them and most of them didn't add much value. Some en_AU files had specific legitimate "translations" were left (e.g. tax "GST", check = cheque), so they were only modified to remove any erroneous translations task: 3593077 ENT PR: https://github.com/odoo/enterprise/pull/65875 v17 PR: https://github.com/odoo/odoo/pull/170183 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#171520
Since [1] and [2] the sort field was mistakenly set as a JS array instead of a stringified JSON array with double quotes. In JS we parse them and ignore errors. https://github.com/odoo/odoo/blob/70ac17346b17e07848b1567df7f333e72f07fc73/addons/web/static/src/search/search_model.js#L1959 Current data is wrong and the sort spec never worked. Upgrade PR where we found the bug : - https://github.com/odoo/upgrade/pull/5903 [1]: https://github.com/odoo/odoo/commit/3c0d98bcd8adf9325ee3497e
Original PR description
Since [1] and [2] the sort field was mistakenly set as a JS array instead of a stringified JSON array with double quotes. In JS we parse them and ignore errors. https://github.com/odoo/odoo/blob/70ac17346b17e07848b1567df7f333e72f07fc73/addons/web/static/src/search/search_model.js#L1959 Current data is wrong and the sort spec never worked. Upgrade PR where we found the bug : - https://github.com/odoo/upgrade/pull/5903 [1]: https://github.com/odoo/odoo/commit/3c0d98bcd8adf9325ee3497eb8d25ec7f904d6a5#diff-80650b3ebe3ff7900a5409e2047c91a71c7d86b11cb2dbc1f5c99b77f381ae95 [2]: https://github.com/odoo/odoo/commit/3355dc16235355fe51e894f14e275210464608c6#diff-2c13c95bb9b3423a9150ff5b7fb5a78ba1b7c1f405f0dd40ff951bdb62fe8f95 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#171841 Forward-Port-Of: odoo/odoo#171719
In [1] when the translation conditions were adapted to allow restricted editors to translate, the general editability right was wrongly impacted, making the user believe a page could be edited when it was not the case. This commit restores the editability condition and limits the translatability to records that can be modified by the restricted editor user. A `_check_user_can_modify` is introduced to enable customization. Steps to reproduce (described in terms of expected behavior):
Original PR description
In [1] when the translation conditions were adapted to allow restricted editors to translate, the general editability right was wrongly impacted, making the user believe a page could be edited when…
In [1] when the translation conditions were adapted to allow restricted editors to translate, the general editability right was wrongly impacted, making the user believe a page could be edited when it was not the case. This commit restores the editability condition and limits the translatability to records that can be modified by the restricted editor user. A `_check_user_can_modify` is introduced to enable customization. Steps to reproduce (described in terms of expected behavior): - Install `website_sale` and `website_event` - Add a language to the website - Assign the following rights to a non-admin user: - Website: Restricted editor - Sale: Administrator - Event: No right - Log in as that user - Go to the contact us page: - Edit: nothing should be possible - Translate: not available - Go to a product page: - Edit: blocks can be dropped in fields, texts can be changed - Translate: available and texts can be changed - Go to an event page: - Edit: nothing should be possible - Translate: not available [1]: https://github.com/odoo/odoo/commit/1bcc0733c9af52c6cf38b12f24ff6ed96314bec4 Forward-Port-Of: odoo/odoo#171844 Forward-Port-Of: odoo/odoo#170102
This error occurs when we keep the product name empty in the stock move and try to generate the Serials/Lots by clicking on ``Generate Serials/Lots``. Steps to reproduce: - Install the ``stock`` module - Create a new product(eg: test) and set its tracking ``By Lots`` in Traceability - Create a new receipt and add ``test`` as product and ``Mark as ToDo`` - Again add ``test`` as the product and on the right, click on ``bars(fa-icon)`` - Remove the product name > click on ``Generate Serials
Original PR description
This error occurs when we keep the product name empty in the stock move and try to generate the Serials/Lots by clicking on ``Generate Serials/Lots``. Steps to reproduce: - Install the ``stock``…
This error occurs when we keep the product name empty in the stock move and try to generate the Serials/Lots by clicking on ``Generate Serials/Lots``. Steps to reproduce: - Install the ``stock`` module - Create a new product(eg: test) and set its tracking ``By Lots`` in Traceability - Create a new receipt and add ``test`` as product and ``Mark as ToDo`` - Again add ``test`` as the product and on the right, click on ``bars(fa-icon)`` - Remove the product name > click on ``Generate Serials/Lots`` - Click on ``Generate`` Traceback: ``KeyError 'product_id'`` This error occurs at [1] because ``product_id`` is not present in the default values. This commit will fix the above error by not showing the ``Generate Serials/Lots`` and ``Import Serials/Lots`` buttons when ``product`` is empty and also will raise an error if ``product`` is not found. [1]: https://github.com/odoo/odoo/blob/b1ba4018f91f1fd788f48180bd5fc4656ab1e35c/addons/stock/models/stock_move.py#L930 sentry-5072366645 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170718
Before this commit, the getFiltersMatchingPivot was prone to errors when the input that is supposed to be generated automatically has been wrongly formed by the user. After this commit, the function is more robust and has sensible defaults. OWP: 3952358 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#171909 Forward-Port-Of: odoo/odoo#171630
Original PR description
Before this commit, the getFiltersMatchingPivot was prone to errors when the input that is supposed to be generated automatically has been wrongly formed by the user. After this commit, the function is more robust and has sensible defaults. OWP: 3952358 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#171909 Forward-Port-Of: odoo/odoo#171630
Currently, a traceback is occurring when the user clicks on the chat button while creating a new employee record. To reproduce this issue: 1) Install `employee` 2) Create a new `employee` record 3) Give the value for the related user in the `HR Setting` page 4) A chat button appears at the left side of the `employee name` 5) Click on the chat button, and a traceback occurs Error:- ``` TypeError: '<' not supported between instances of 'int' and 'NoneType' File "odoo/http.py",
Original PR description
Currently, a traceback is occurring when the user clicks on the chat button while creating a new employee record. To reproduce this issue: 1) Install `employee` 2) Create a new `employee` record 3)…
Currently, a traceback is occurring when the user clicks on the chat button while creating a new employee record.
To reproduce this issue:
1) Install `employee`
2) Create a new `employee` record
3) Give the value for the related user in the `HR Setting` page
4) A chat button appears at the left side of the `employee name`
5) Click on the chat button, and a traceback occurs
Error:-
```
TypeError: '<' not supported between instances of 'int' and 'NoneType'
File "odoo/http.py", line 2248, in __call__
response = request._serve_db()
File "odoo/http.py", line 1823, in _serve_db
return self._transactioning(_serve_ir_http, readonly=ro)
File "odoo/http.py", line 1843, in _transactioning
return service_model.retrying(func, env=self.env)
File "odoo/service/model.py", line 134, in retrying
result = func()
File "odoo/http.py", line 1821, in _serve_ir_http
return self._serve_ir_http(rule, args)
File "odoo/http.py", line 1828, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 2053, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 220, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 756, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/web/controllers/dataset.py", line 38, in call_kw
return self._call_kw(model, method, args, kwargs)
File "addons/web/controllers/dataset.py", line 34, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "odoo/api.py", line 458, in call_kw
result = getattr(recs, name)(*args, **kwargs)
File "addons/mail/models/discuss/discuss_channel.py", line 973, in channel_get
""", (tuple(partners_to), tuple(partners_to), sorted(list(partners_to)),))
```
When the related user value is given, the `chat` button is visible to the user before saving the record.
But here in the `openChat` method, we used `props.record.resId`.
which is created after the employee record is created.
https://github.com/odoo/odoo/blob/a6c14effd3e38cf38966ae89675e8e54b54cf825/addons/hr/static/src/components/employee_chat/employee_chat.xml#L4-L11
It leads to the above traceback as `channel_get` calls with `partners_to` as `None` from the below line
https://github.com/odoo/odoo/blob/a6c14effd3e38cf38966ae89675e8e54b54cf825/addons/mail/static/src/core/common/thread_service.js#L555-L557
This commit will resolve this issue by making it visible to the user after the employee record is created.
Note:- An alternative solution can be at this line
https://github.com/odoo/odoo/blob/9f84ff581686f8e2198a0a88d19f7a52e27ccb53/addons/hr/static/src/thread_service_patch.js#L9
```
if (!person) {
this.notificationService.add(
_t("To open chat, please first save the record.."),
{ type: "info" }
);
return;
}
```
sentry- 5501637214
Forward-Port-Of: odoo/odoo#171380When the client side requests an update of message statuses for sent invoices that are "Pending reception" (`peppol_move_state == "processing"`), the IAP throws an error if message is still being processed on the server side. We get a `702` "Peppol Request Not Ready" error code from the server in that case. Currently, on the client side as long as we see an error, we update `peppol_move_state` to `error`, which prevents further status updates (we only check "processing" messages). We
Original PR description
When the client side requests an update of message statuses for sent invoices that are "Pending reception" (`peppol_move_state == "processing"`), the IAP throws an error if message is still being processed on the server side. We get a `702` "Peppol Request Not Ready" error code from the server in that case. Currently, on the client side as long as we see an error, we update `peppol_move_state` to `error`, which prevents further status updates (we only check "processing" messages). We should not update the move state to error and just keep it as processing, so that we will retry fetching the state on the next scheduled action run. no task, customer feedback --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#171479
A previous fix was iterating on all the records in `self` in order to remove an issue when multiple companies are involved in the deletion. However the way it is fixed was triggering multiple calls to `check_move_sequence_chain` even though that method is optimized to only check once every move, hence worse perforance. Also, the moves need to be deleted in order if we wanted to do it that way. Fixup of f3863949b95613c4b1d7292f7fc2da2696af467a Forward-Port-Of: odoo/odoo#171984
Original PR description
A previous fix was iterating on all the records in `self` in order to remove an issue when multiple companies are involved in the deletion. However the way it is fixed was triggering multiple calls to `check_move_sequence_chain` even though that method is optimized to only check once every move, hence worse perforance. Also, the moves need to be deleted in order if we wanted to do it that way. Fixup of f3863949b95613c4b1d7292f7fc2da2696af467a Forward-Port-Of: odoo/odoo#171984
Steps to reproduce: - Create a subcontracted bom for a product with flexible consumption (with warning) - Create a receipt for that product from the recorded subcontractor with more than 1 qty - Click on 'Record Component' and set one qty produced and more than expected qty to consume - Record Production and validate the warning - Do the same thing a second time Issue: While the first 'Record Component' prompts the warning for different consumption, the second attempt doesn't. This i
Original PR description
Steps to reproduce: - Create a subcontracted bom for a product with flexible consumption (with warning) - Create a receipt for that product from the recorded subcontractor with more than 1 qty - Click on 'Record Component' and set one qty produced and more than expected qty to consume - Record Production and validate the warning - Do the same thing a second time Issue: While the first 'Record Component' prompts the warning for different consumption, the second attempt doesn't. This is due to the context containing the 'skip_consumption' key from the first attempt being used to generate the new action for the remaining quantity to produce. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#171957 Forward-Port-Of: odoo/odoo#171216
STEP TO REPRODUCE: ================== 1- Go on Time off Application 2- Select First Approval filter You will see two records: one with "second approval" status and one with "to approve" status. With this commit only leaves with "to approve status" will appears with this filter. task-4005045 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170910
Original PR description
STEP TO REPRODUCE:
==================
1- Go on Time off Application
2- Select First Approval filter
You will see two records: one with "second approval" status and one with "to approve" status.
With this commit only leaves with "to approve status" will appears with this filter.
task-4005045
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#170910Previously, users were able to edit reward sale order lines. However, these edits were undone on confirming the SO, which was confusing. This fix makes the quantity, unit price, and taxes of such lines readonly to make it clear that they're not meant to be edited. opw-3971219 Forward-Port-Of: odoo/odoo#171269
Original PR description
Previously, users were able to edit reward sale order lines. However, these edits were undone on confirming the SO, which was confusing. This fix makes the quantity, unit price, and taxes of such lines readonly to make it clear that they're not meant to be edited. opw-3971219 Forward-Port-Of: odoo/odoo#171269
Before this commit: If 2 IoT box are set on different companies and both have a printer with the same identifier. On the completion request, the server can not be sure from which device the priting was completed and might choose the wrong IoT. As such the "fail to print" notification will appear while it is false opw-3965623 Forward-Port-Of: odoo/odoo#171808
Original PR description
Before this commit: If 2 IoT box are set on different companies and both have a printer with the same identifier. On the completion request, the server can not be sure from which device the priting was completed and might choose the wrong IoT. As such the "fail to print" notification will appear while it is false opw-3965623 Forward-Port-Of: odoo/odoo#171808
No description available.
**Current behavior:** Lines in an invoice may display a product name incorrectly if they mix arabic/latin characters. **Expected behavior:** These types of product names should respect the RTL syntax if being sent to an Arabic lang partner. **Steps to reproduce:** *Ensure the rtlcss node package is installed and in PATH* 1. Create a Saudi company / switch to a demo one, switch to Arabic language 2. Create a product with the name: `دفتر سلكي بهوية الهيئة A4 - شد 50 ورقة
Original PR description
**Current behavior:** Lines in an invoice may display a product name incorrectly if they mix arabic/latin characters. **Expected behavior:** These types of product names should respect the RTL syntax…
**Current behavior:**
Lines in an invoice may display a product name incorrectly if
they mix arabic/latin characters.
**Expected behavior:**
These types of product names should respect the RTL syntax if
being sent to an Arabic lang partner.
**Steps to reproduce:**
*Ensure the rtlcss node package is installed and in PATH*
1. Create a Saudi company / switch to a demo one, switch to
Arabic language
2. Create a product with the name:
`دفتر سلكي بهوية الهيئة A4 - شد 50 ورقة`
3. Create an invoice to a partner with Arabic set as their lang
4. Confirm the invoice -> print it
5. The product name on the PDF has a mal-ordered name
**Cause of the issue:**
The right-to-left rule of the Arabic language is not getting
enforced.
There is a secondary bug where certain whitespace-delimited
substrings get displayed in a broken, overlapping way. From my
no-comprehensive testing, it seems to only happen when there is
a sequence in the string where you have some substring ending in
a numeral (0-9) followed by a single-space, then another
substring that begins with an Arabic alphabet character.
**Fix:**
When printing an invoice with an arabic partner:
1. Use right-aligned text instead of left
2. Pad single-space breaks between substrings in a product name
where the first substring ends with a numeral and the
second begins with an alpha char.
3. Add explicit `dir="rtl"` attribute to the display node
opw-3971541
Forward-Port-Of: odoo/odoo#169267This PR refactors the process of finding candidates (SVL) in the FIFO run of the stock account. With the current Odoo standard behavior, we can't update the domain to find candidates or adjust the candidates' values, and we have to override `def _run_fifo.` This PR addresses this issue. @qrtl QT4657 Forward-Port-Of: odoo/odoo#170470
Original PR description
This PR refactors the process of finding candidates (SVL) in the FIFO run of the stock account. With the current Odoo standard behavior, we can't update the domain to find candidates or adjust the candidates' values, and we have to override `def _run_fifo.` This PR addresses this issue. @qrtl QT4657 Forward-Port-Of: odoo/odoo#170470
before this commit, there is no option to enable tracking for draft sale orders. In some cases end users need this functionality, right now we have to customize and make this possible after this commit, a new system parameter is introduced sale.track_draft_orders , by which end user can control the tracking. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#171442
Original PR description
before this commit, there is no option to enable tracking for draft sale orders. In some cases end users need this functionality, right now we have to customize and make this possible after this commit, a new system parameter is introduced sale.track_draft_orders , by which end user can control the tracking. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#171442