Wednesday, April 30, 2025
30 changes · saas-18.1
Resolved issues and error corrections
The lead generation rules form now displays the filter selector across the full row, preventing it from appearing cramped. This makes the form easier to read and use when configuring event-related lead generation rules.
Original PR description
In the lead generation form view, the widget that allows the user to select a filter currently spans into the label column in the grid, causing it to appear squished. To ensure it occupies the entire row properly, we will add the colspan="2" attribute to the field definition. Task-4750253 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Miscellaneous changes
odoo/odoo#203874 broke compatibility with Python 3.8 and Python 3.9 due to the typing annotations, leading `test_pylint` to fail on Focal and Bullseye: - `list[int]` requires Python 3.9 (PEP 585) - type-wise `a | b` requires Python 3.10 (PEP 604) Making annotations lazy works around the issue (and changes less stuff than removing the annotations). Forward-Port-Of: odoo/odoo#208110
Original PR description
odoo/odoo#203874 broke compatibility with Python 3.8 and Python 3.9 due to the typing annotations, leading `test_pylint` to fail on Focal and Bullseye: - `list[int]` requires Python 3.9 (PEP 585) - type-wise `a | b` requires Python 3.10 (PEP 604) Making annotations lazy works around the issue (and changes less stuff than removing the annotations). Forward-Port-Of: odoo/odoo#208110
Forward-Port-Of: odoo/odoo#208093 Forward-Port-Of: odoo/odoo#208076
Original PR description
Forward-Port-Of: odoo/odoo#208093 Forward-Port-Of: odoo/odoo#208076
Some languages aren't available on Transifex for saas versions if we do not have a dedicated maintainer for the language or not enough of the language is translated, but they are available for major versoins. As of the time of this commit this included: - Azerbaijani (az), - Bulgarian (bg), - Croatian (hr), - Estonian (et), - Greek (el), - Hebrew (he), - Hungarian (hu), - Latvian (lv), - Mongolian (mn), - Persian (fa), - Portuguese (pt), - Romanian (ro), - Slovak (sk), - Slovenia
Original PR description
Some languages aren't available on Transifex for saas versions if we do not have a dedicated maintainer for the language or not enough of the language is translated, but they are available for major…
Some languages aren't available on Transifex for saas versions if we do not have a dedicated maintainer for the language or not enough of the language is translated, but they are available for major versoins. As of the time of this commit this included: - Azerbaijani (az), - Bulgarian (bg), - Croatian (hr), - Estonian (et), - Greek (el), - Hebrew (he), - Hungarian (hu), - Latvian (lv), - Mongolian (mn), - Persian (fa), - Portuguese (pt), - Romanian (ro), - Slovak (sk), - Slovenian (sl), - Ukranian (uk) Therefore this commit pulls the current translations from the 18.0 transifex project for these languages. Note that pot file msgmerges were not applied since the end result would have been the same, missing terms from pot files won't have a translation in the po file + extra terms in the po file not in the pot won't be used. 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
### Steps to reproduce: - Go to Expenses > Expense Reports - Make sure that no expenses are present to make the sample data display - Try clicking on the left panel to change the filter on the status - It doesn't work ### Cause: The display of sample data adds the class "o_view_sample_data" to the `Layout` component containing the control panel, the search panel and the list ([see](https://github.com/odoo/odoo/blob/e1b6f55840c9d5e2c0f6705add8d82a311fb04a7/addons/web/static/src/views/list
Original PR description
### Steps to reproduce: - Go to Expenses > Expense Reports - Make sure that no expenses are present to make the sample data display - Try clicking on the left panel to change the filter on the status…
### Steps to reproduce: - Go to Expenses > Expense Reports - Make sure that no expenses are present to make the sample data display - Try clicking on the left panel to change the filter on the status - It doesn't work ### Cause: The display of sample data adds the class "o_view_sample_data" to the `Layout` component containing the control panel, the search panel and the list ([see](https://github.com/odoo/odoo/blob/e1b6f55840c9d5e2c0f6705add8d82a311fb04a7/addons/web/static/src/views/list/list_controller.xml#L6)). When this class is added, the events are ignored for div with `form-check` ([see](https://github.com/odoo/odoo/blob/e1b6f55840c9d5e2c0f6705add8d82a311fb04a7/addons/web/static/src/views/view.scss#L7-L10)) As the `SearchPanel` component is inside the `Layout` component and contains form-check for the filters on Selection fields (state for example), this filter also gets deactivated. ### Solution: Add the class `o_view_sample_data` in the Renderer and not the Controller component, this way we make sure that only the interactions with the sample data get deactivated. Doing this implies adding a prop in the Renderer to pass the value of `useSampleModel` to the renderer. Fix done for the list and kanban view which are problematic with the Expense Reports page. opw-4707016 Forward-Port-Of: odoo/odoo#208003 Forward-Port-Of: odoo/odoo#206060
Versions -------- - 17.0+ Steps ----- 1. Create a product with 3 attributes; 2. add a never-create multi-select attribute; 3. archive the first two variants; 4. publish the product to eCommerce; 5. open /shop. Issue ----- > 500: Internal Server Error Cause ----- Commit 30994723e9ee5 updated the `_cartesian_product` method to handle `multi`-type attributes. When these are on the last attribute line, the method will yield the current partial combination. Issue is when conti
Original PR description
Versions -------- - 17.0+ Steps ----- 1. Create a product with 3 attributes; 2. add a never-create multi-select attribute; 3. archive the first two variants; 4. publish the product to eCommerce; 5.…
Versions -------- - 17.0+ Steps ----- 1. Create a product with 3 attributes; 2. add a never-create multi-select attribute; 3. archive the first two variants; 4. publish the product to eCommerce; 5. open /shop. Issue ----- > 500: Internal Server Error Cause ----- Commit 30994723e9ee5 updated the `_cartesian_product` method to handle `multi`-type attributes. When these are on the last attribute line, the method will yield the current partial combination. Issue is when continuing after the `yield`, it attempts to get the `current_ptav_index` from the `current_line_values` recordset, which is empty for `multi`-type attributes. This causes an `IndexError`. Solution -------- Only assign the `current_ptav` variable if `current_line_values` is not falsey, i.e. isn't on a `multi` attribute line. Because `current_ptav_index` will always be `-1` in this scenario, it will skip over the conditional branches where `current_ptav` gets used, and instead go to either `continue` or `break`. opw-4653696 Forward-Port-Of: odoo/odoo#203093
Sale status was not correctly set when ticket where sold from the POS. Steps to reproduce: ------------------- * Create an event and make sure ticket can be sold in PoS * Open PoS * Add a ticket to the order and complete the order * Add another ticket to the order but go to the backend to save it as draft > Observation: The sale status of the order appears as 'free' when it should be "Sold" and "Not Sold" Why the fix: ------------ We make sure to take the state of the PoS order
Original PR description
Sale status was not correctly set when ticket where sold from the POS. Steps to reproduce: ------------------- * Create an event and make sure ticket can be sold in PoS * Open PoS * Add a ticket to the order and complete the order * Add another ticket to the order but go to the backend to save it as draft > Observation: The sale status of the order appears as 'free' when it should be "Sold" and "Not Sold" Why the fix: ------------ We make sure to take the state of the PoS order when the ticket has been sold through the PoS. opw-4584390 Forward-Port-Of: odoo/odoo#204514
…taxes are included in price 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#205925
Original PR description
…taxes are included in price 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#205925
Thanks to [1], we can now fix the website page properties tour ensuring that the necessary elements are visible on the page. [1]: https://github.com/odoo/odoo/commit/4e25c13c918382afb34013a6dd30aac4a0ce4e84 runbot-106391 Co-authored-by: Pierre Pulinckx Forward-Port-Of: odoo/odoo#207740
Original PR description
Thanks to [1], we can now fix the website page properties tour ensuring that the necessary elements are visible on the page. [1]: https://github.com/odoo/odoo/commit/4e25c13c918382afb34013a6dd30aac4a0ce4e84 runbot-106391 Co-authored-by: Pierre Pulinckx Forward-Port-Of: odoo/odoo#207740
**Problem:** The problem happens when a service is linked to a task but it's not billed on timesheet. If a quotation is created with this service (which creates the task linked to it) and a timesheet is added to the task, this will trigger a recompute of `purchase_price` (the cost column) of the sale order line in the quotation. If the client had written another cost on the sale order line of the quotation than the original one (coming from the `standard_price` of the product) this will
Original PR description
**Problem:** The problem happens when a service is linked to a task but it's not billed on timesheet. If a quotation is created with this service (which creates the task linked to it) and a timesheet…
**Problem:** The problem happens when a service is linked to a task but it's not billed on timesheet. If a quotation is created with this service (which creates the task linked to it) and a timesheet is added to the task, this will trigger a recompute of `purchase_price` (the cost column) of the sale order line in the quotation. If the client had written another cost on the sale order line of the quotation than the original one (coming from the `standard_price` of the product) this will erase it and set the value back to the standard price of the product. Because the service is not billed on timesheet we don't want a modification of timesheet to affect the cost set on the quotation. **Steps to reproduce:** - In settings, activate the "margins" setting in Sales - Open Sales/products and create a new product - Set the product type as "Service" - Set the "create on order" field as Task - Set the "project" field to an existing project - Set a strictly positive value in the cost field - Set a name and save - Create a new quotation and add the product you just created - Confirm the quotation - In the order lines page, add the cost column - Change the value of the cost column - Click on the "Tasks" smart button - Add a new timesheet in the timesheet page and save - Come back to the sale order via the smart button **Current behavior:** The value of the cost column was reset the the cost of the product **Expected behavior:** Mofifying the timesheets shouldn't impact the cost of a service which is not invoiced on timesheets **Cause of the issue:** Because the sale_timesheet_margin module is installed the _compute_purchase_price method is overriden and depends on analytic_line_ids.amount https://github.com/odoo/odoo/blob/c335d03e776014e0b7172a3f44507404a083aaed/addons/sale_timesheet_margin/models/sale_order_line.py#L8 when this method is called in our flow, because sol.product_id.purchase_price is not null our sale order line will not get filtered out https://github.com/odoo/odoo/blob/c335d03e776014e0b7172a3f44507404a083aaed/addons/sale_timesheet_margin/models/sale_order_line.py#L11 and it will reach the original _compute_purchase_price method were the value of purchase_price will be reset to the value of self.product_id.standard_price https://github.com/odoo/odoo/blob/c335d03e776014e0b7172a3f44507404a083aaed/addons/sale_margin/models/sale_order_line.py#L30 **Fix:** We want to filter out the sale.order.lines for which the computation of purchase_price has been triggered via the analytic_line_ids.amount dependency and for which we don't want the computation to happen (when the service_policy is not "timesheet"). We need to do this without filtering out the sales.order.lines for which the computation of purchase_price has been triggered by a dependency from the original compute_purchase_price method https://github.com/odoo/odoo/blob/11cdfe50bda17b004249546a67708e954b3667fc/addons/sale_margin/models/sale_order_line.py#L20-L21 or another orverride of this method (for now there are two of those : one in sale_expense_margin https://github.com/odoo/odoo/blob/11cdfe50bda17b004249546a67708e954b3667fc/addons/sale_expense_margin/models/sale_order_line.py#L10-L11 and one in sale_stock_margin https://github.com/odoo/odoo/blob/11cdfe50bda17b004249546a67708e954b3667fc/addons/sale_stock_margin/models/sale_order_line.py#L10-L11 ) is_expense is defined in the sale module is_service is defined in the sale_service module service_policy is defined in the sale_project module all those field are available when sale_timesheet_margin is installed opw-4627037 Forward-Port-Of: odoo/odoo#205415
When `<attribute name="string" add="something more"` is used to add onto a string in another view, the `"something more"` string isn't translatable. Therefore since there isn't anything else adding onto this string, let's completely replace it with the original string + the "something more" string. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#207896
Original PR description
When `<attribute name="string" add="something more"` is used to add onto a string in another view, the `"something more"` string isn't translatable. Therefore since there isn't anything else adding onto this string, let's completely replace it with the original string + the "something more" string. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#207896
Prior to this fix, the product configurator did not display the on-hand quantities of product variants as shown on the product page, when an attribute’s variant creation was set to 'never'. Steps to reproduce: 1. Create a product with variants. 2. Add multiple attributes and values. 3. Set the variant creation to 'never' for one attribute. 4. Add stock for the product and make it available in POS. 5. Open POS, select the product, and switch between variants. The quantity displayed was
Original PR description
Prior to this fix, the product configurator did not display the on-hand quantities of product variants as shown on the product page, when an attribute’s variant creation was set to 'never'. Steps to reproduce: 1. Create a product with variants. 2. Add multiple attributes and values. 3. Set the variant creation to 'never' for one attribute. 4. Add stock for the product and make it available in POS. 5. Open POS, select the product, and switch between variants. The quantity displayed was only for one variant. This commit ensures that the correct on-hand quantity is shown for each selected variant in POS. opw-4685882 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#206263
Before this commit, non-manager cashiers were unable to modify product prices even when price control was not enabled, which was not the intended behavior. Additionally, when `pos_hr` was not installed, the `get_cashier` method returned the user object with a `role` attribute. However, when `pos_hr` was installed, the returned cashier used `_role`, leading to inconsistencies and broken functionality depending on the module's presence. opw-4726098 --- I confirm I have signed the CLA and
Original PR description
Before this commit, non-manager cashiers were unable to modify product prices even when price control was not enabled, which was not the intended behavior. Additionally, when `pos_hr` was not installed, the `get_cashier` method returned the user object with a `role` attribute. However, when `pos_hr` was installed, the returned cashier used `_role`, leading to inconsistencies and broken functionality depending on the module's presence. opw-4726098 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#206650
With this commit; if a template is selected (need to be added in xml view in 16.0 but already display in 17.2) the body and the subject will be rendered. task-4664784 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#207816 Forward-Port-Of: odoo/odoo#203254
Original PR description
With this commit; if a template is selected (need to be added in xml view in 16.0 but already display in 17.2) the body and the subject will be rendered. task-4664784 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#207816 Forward-Port-Of: odoo/odoo#203254
Before this commit, when validating an order containing a product tracked by lot, the lot information would appear twice on the receipt. opw-4509159 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198209
Original PR description
Before this commit, when validating an order containing a product tracked by lot, the lot information would appear twice on the receipt. opw-4509159 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198209
Before this commit, the test "Message shows up even if channel data is incomplete" would sometimes fail. This happened because it waited for a bus subscription triggered by a call to the `_forceUpdateChannel` method of the bus service. However, this method is debounced, and as a result, the subscription sometimes occurred too late, causing the test to fail. This commit resolves the issue by using `runAllTimers`, which immediately executes the debounced method. fixes runbot-76011 Forward-P
Original PR description
Before this commit, the test "Message shows up even if channel data is incomplete" would sometimes fail. This happened because it waited for a bus subscription triggered by a call to the `_forceUpdateChannel` method of the bus service. However, this method is debounced, and as a result, the subscription sometimes occurred too late, causing the test to fail. This commit resolves the issue by using `runAllTimers`, which immediately executes the debounced method. fixes runbot-76011 Forward-Port-Of: odoo/odoo#207914
When using an intermediate return location, the delivered qty of a returned kit is incorrect To reproduce the issue: 1. In Settings, enable "Multi-Step Routes" 2. Create a location L: - Parent: WH - Type: Internal - Return location: True 3. Create a route: - Applicable on: Main warehouse - Add one rule: - Action: Push To - Operation Type: Internal - From: L - To: WH/Stock 4. Create a kit K 5. Sell and deliver 1 x K 6. Return it to L - It
Original PR description
When using an intermediate return location, the delivered qty of a returned kit is incorrect To reproduce the issue: 1. In Settings, enable "Multi-Step Routes" 2. Create a location L: - Parent: WH -…
When using an intermediate return location, the delivered qty of a
returned kit is incorrect
To reproduce the issue:
1. In Settings, enable "Multi-Step Routes"
2. Create a location L:
- Parent: WH
- Type: Internal
- Return location: True
3. Create a route:
- Applicable on: Main warehouse
- Add one rule:
- Action: Push To
- Operation Type: Internal
- From: L
- To: WH/Stock
4. Create a kit K
5. Sell and deliver 1 x K
6. Return it to L
- It will create an internal transfer
7. Process the internal transfer
8. Open the SO
Error: The delivered quantity of the kit is -1 instead of 0
Step 6, when returning the kit, the push rule is applied and create
the SM from L to WH/Stock. Since we copy the SM from Customer to L, the
new SM also has the field `sale_line_id` defined.
As a result, step 7, since all SM are done, `moves` contain them
(the delivery, the return and the internal transfer). We then filter
them based on some criteria:
https://github.com/odoo/odoo/blob/9918e8f3d627f3c52238d6b04bcd15c05d34e40c/addons/sale_mrp/models/sale_order_line.py#L67-L73
But, for `outgoing_moves` (which is actually the incoming ones, the
name is wrong), since we look at the destination location, both the
return and the internal SM will match. That's why we will decrease
twice the delivered quantity. Hence, the bug.
A fix could be to avoid copying the `sale_line_id` field. That being
said, when looking `sale_stock` side (i.e., same flow with a classic
product), we don't have any issue because the filters are slightly
different:
https://github.com/odoo/odoo/blob/418dc0cc3b3aa1ee2abbdb4852d9cd24fba7636e/addons/sale_stock/models/sale_order_line.py#L274-L278
(Here, we need to look at the `incoming_moves`. Again: the name is just
incorrect on mrp side...)
We see that, for `incoming_moves`, we actually look at the source
location. This explains why we don't have any issue with a non-kit
product.
Therefore, the best fix would be to use the same filters everywhere.
Good news, such a method already exist:
https://github.com/odoo/odoo/blob/9918e8f3d627f3c52238d6b04bcd15c05d34e40c/addons/sale_mrp/models/sale_order_line.py#L115-L116
However, using this method might lead to some other issues (among them:
the override in `sale_subscription_stock` reads a field although the
method is an `api.model` one). So, let's minimize the diff on stable
version and refactor the code (use the same filters everywhere) on
master.
About the filter names, the confusion actually comes from:
https://github.com/odoo/odoo/blob/312572c7b8138a4800350cd7a524a37551a348ef/addons/mrp/models/stock_move.py#L624
There, we should rather talk about positive moves and negatives
moves, since this method can be used either in a SO flow or in a PO
one. This explains why, for now, SO sode, an "incoming move" is
actually an outgoing one. So, on master, another commit will be
added to also clean that part of the code:
\- Improve the expected filter names in `_compute_kit_quantities`
\- Fix the filter names in `_get_incoming_outgoing_moves_filter`
OPW-4625228
Forward-Port-Of: odoo/odoo#207739
Forward-Port-Of: odoo/odoo#206966PR #202334 introduced a test in `pos_loyalty` that depends on the field `discount_product_id` that is created in the module `pos_discount`. However, `pos_loyalty` and `pos_discount` does not have dependence, so the fails if `pos_discount` is not installed. This PR only runs it when `pos_discount` is installed. opw-4622428 Forward-Port-Of: odoo/odoo#207758
Original PR description
PR #202334 introduced a test in `pos_loyalty` that depends on the field `discount_product_id` that is created in the module `pos_discount`. However, `pos_loyalty` and `pos_discount` does not have dependence, so the fails if `pos_discount` is not installed. This PR only runs it when `pos_discount` is installed. opw-4622428 Forward-Port-Of: odoo/odoo#207758
Steps to reproduce the bug: - Use Edge browser with zoom set to 150% (default zoom on Windows installations). - On a screen with a resolution of 1920px (and the browser window set to full width). - Install the Website app and go to the homepage. - The page is displayed in desktop view. - Enter edit mode by clicking the "Edit" button. - The page width becomes smaller than the mobile breakpoint. As a result , the page switches to mobile view: the navbar turns into a hamburger menu, and the
Original PR description
Steps to reproduce the bug: - Use Edge browser with zoom set to 150% (default zoom on Windows installations). - On a screen with a resolution of 1920px (and the browser window set to full width). -…
Steps to reproduce the bug: - Use Edge browser with zoom set to 150% (default zoom on Windows installations). - On a screen with a resolution of 1920px (and the browser window set to full width). - Install the Website app and go to the homepage. - The page is displayed in desktop view. - Enter edit mode by clicking the "Edit" button. - The page width becomes smaller than the mobile breakpoint. As a result , the page switches to mobile view: the navbar turns into a hamburger menu, and the layout changes to mobile style. This should not happen, as the edit mode is designed to remain in desktop view with 150% zoom on 1920px wide screens. The issue is caused by Edge adding a few pixels of border around the browser window, which leads to this problem specific to Edge. To fix this in the stable version, we reduce the sidebar width in edit mode by 5 pixels to ensure the page stays in desktop view. This change is applied only if the browser is Edge and 150% zoom is used. In all other cases, no changes are made. This fix is temporary. In the next redesign of the edit mode sidebar, the sidebar width will be adjusted accordingly so that this workaround will no longer be necessary. Note: The Arc browser has the same issue, but we haven’t fixed it because there’s currently no way to reliably detect it in JavaScript. Since Arc is much less popular than Edge, it’s less critical. task-4587203 Forward-Port-Of: odoo/odoo#207835 Forward-Port-Of: odoo/odoo#205721
When checking out `saas-18.3`, IoT Box images until `25.01` are missing `iot_base`, resulting in odoo not being able to start. Forward-Port-Of: odoo/odoo#207947
Original PR description
When checking out `saas-18.3`, IoT Box images until `25.01` are missing `iot_base`, resulting in odoo not being able to start. Forward-Port-Of: odoo/odoo#207947
`hr_recruitment_integration_monster` bases one of its view overrides on `<setting id="job_board">`. This element is added by the `hr_recruitment_extract` module, but there is no dependency between the two. `hr_recruitment_integration_monster` only depends on `hr_recruitment_integration_base` which only depends on `hr_recruitment`. `hr_recruitment_extract` depends on `hr_recruitment` but also `iap`, `iap_mail`, and `mail_enterprise`. If any of these last 3 modules is uninstalled, `hr_recruitme
Original PR description
`hr_recruitment_integration_monster` bases one of its view overrides on `<setting id="job_board">`. This element is added by the `hr_recruitment_extract` module, but there is no dependency between the two. `hr_recruitment_integration_monster` only depends on `hr_recruitment_integration_base` which only depends on `hr_recruitment`. `hr_recruitment_extract` depends on `hr_recruitment` but also `iap`, `iap_mail`, and `mail_enterprise`. If any of these last 3 modules is uninstalled, `hr_recruitment_extract` will be uninstalled and the `res_config_settings_view_form` view will explode the first time it gets resolved / validated. Forward-Port-Of: odoo/enterprise#84491
- Change the termination report note date to mention the departure date instead of the notice period end Task: 4718395 Forward-Port-Of: odoo/enterprise#84485 Forward-Port-Of: odoo/enterprise#83824
Original PR description
- Change the termination report note date to mention the departure date instead of the notice period end Task: 4718395 Forward-Port-Of: odoo/enterprise#84485 Forward-Port-Of: odoo/enterprise#83824
Some languages aren't available on Transifex for saas versions if we do not have a dedicated maintainer for the language or not enough of the language is translated, but they are available for major versoins. As of the time of this commit this included: - Azerbaijani (az), - Bulgarian (bg), - Croatian (hr), - Estonian (et), - Greek (el), - Hebrew (he), - Hungarian (hu), - Latvian (lv), - Mongolian (mn), - Persian (fa), - Portuguese (pt), - Romanian (ro), - Slovak (sk), - Slovenia
Original PR description
Some languages aren't available on Transifex for saas versions if we do not have a dedicated maintainer for the language or not enough of the language is translated, but they are available for major versoins. As of the time of this commit this included: - Azerbaijani (az), - Bulgarian (bg), - Croatian (hr), - Estonian (et), - Greek (el), - Hebrew (he), - Hungarian (hu), - Latvian (lv), - Mongolian (mn), - Persian (fa), - Portuguese (pt), - Romanian (ro), - Slovak (sk), - Slovenian (sl), - Ukranian (uk) Therefore this commit pulls the current translations from the 18.0 transifex project for these languages. Note that pot file msgmerges were not applied since the end result would have been the same, missing terms from pot files won't have a translation in the po file + extra terms in the po file not in the pot won't be used.
When `<attribute name="string" add="something more"` is used to add onto a string in another view, the `"something more"` string isn't translatable. Therefore since there isn't anything else adding onto this string, let's completely replace it with the original string + the "something more" string. Forward-Port-Of: odoo/enterprise#84388
Original PR description
When `<attribute name="string" add="something more"` is used to add onto a string in another view, the `"something more"` string isn't translatable. Therefore since there isn't anything else adding onto this string, let's completely replace it with the original string + the "something more" string. Forward-Port-Of: odoo/enterprise#84388
Forward-Port-Of: odoo/enterprise#84269
Original PR description
Forward-Port-Of: odoo/enterprise#84269
- If the payslip sturct has `use_worked_day_lines = False` the printed payslip shoud not have worked_days_table Task: 4720429 Forward-Port-Of: odoo/enterprise#84248
Original PR description
- If the payslip sturct has `use_worked_day_lines = False` the printed payslip shoud not have worked_days_table Task: 4720429 Forward-Port-Of: odoo/enterprise#84248
### Steps to reproduce: - Accounting > Reporting > Partner Ledger - Select multiple partners - Select "Customer Statements" as report - Click "Send" - Go to the one of the partner in question and open the generated PDF - The address is not the one of the company, the footer doesn't show the right company, etc ### Cause: When sending to multiple partners, the action is dispatched with cron so a new `env` is created. This `env` has all companies active and the first one as main company.
Original PR description
### Steps to reproduce: - Accounting > Reporting > Partner Ledger - Select multiple partners - Select "Customer Statements" as report - Click "Send" - Go to the one of the partner in question and open the generated PDF - The address is not the one of the company, the footer doesn't show the right company, etc ### Cause: When sending to multiple partners, the action is dispatched with cron so a new `env` is created. This `env` has all companies active and the first one as main company. So in the end the wrong company is used to generate the report. ### Solution: In the cron when calling `_process_send_and_print` we give `report.with_company(company)` to make sure that the value the report will us are the one from the correct company. Also revert the small [fix](https://github.com/odoo/enterprise/pull/82320/files) that was made before, which is no longer needed. opw-4635283 Forward-Port-Of: odoo/enterprise#84408
task-4751862 Forward-Port-Of: odoo/enterprise#84094
Original PR description
task-4751862 Forward-Port-Of: odoo/enterprise#84094
…terms Steps to reproduce: - With an ES company setup - Create 1 invoice to an EU partner with the payment term "30% Now, Balance 60 Days" - Make sure Mod349 Invoice Type is set - Go to Accounting / Reporting / Statement Reports / Tax Report - Select Tax Report (Mod 349) (ES) Issue: Amount shown on lines "Total amount of intra-community operations" and "E. Intra-community sales" is doubled. This occurs because each installment of the payment terms will be a payment term line, an
Original PR description
…terms Steps to reproduce: - With an ES company setup - Create 1 invoice to an EU partner with the payment term "30% Now, Balance 60 Days" - Make sure Mod349 Invoice Type is set - Go to Accounting / Reporting / Statement Reports / Tax Report - Select Tax Report (Mod 349) (ES) Issue: Amount shown on lines "Total amount of intra-community operations" and "E. Intra-community sales" is doubled. This occurs because each installment of the payment terms will be a payment term line, and the query retrieving values to compose MOD349 will take the whole move amount for each payment term line. opw-4637439 Forward-Port-Of: odoo/enterprise#84085 Forward-Port-Of: odoo/enterprise#82435
*: pos_urban_piper_swiggy, pos_urban_piper_zomato In this commit: === - Added _get_jpeg_datas method to convert WebP images to JPEG using QWeb for better compatibility with UrbanPiper. - Updated _get_public_image_url to use the new JPEG conversion logic and improve attachment handling. - Removed convert_to_webp image option from product form view to ensure JPEG usage. - Corrected tax code generation logic for Swiggy and Zomato to avoid incorrect string interpolation. Forward-Port-Of: od
Original PR description
*: pos_urban_piper_swiggy, pos_urban_piper_zomato In this commit: === - Added _get_jpeg_datas method to convert WebP images to JPEG using QWeb for better compatibility with UrbanPiper. - Updated _get_public_image_url to use the new JPEG conversion logic and improve attachment handling. - Removed convert_to_webp image option from product form view to ensure JPEG usage. - Corrected tax code generation logic for Swiggy and Zomato to avoid incorrect string interpolation. Forward-Port-Of: odoo/enterprise#83413