Friday, November 15, 2024
39 changes · master
Enhancements to existing features
When a salary offer is created, the related applicant is automatically added as a follower. This helps ensure the applicant receives email notifications for messages posted in the offer discussion, improving communication during recruitment.
Original PR description
This commit, adds a feature that automatically adds the applicant as a follower when an offer is created. This ensures that the applicant receives notifications via email whenever a message is sent in the chatter. task-4062860
Resolved issues and error corrections
This change reverts an older workaround because the underlying behavior has been addressed elsewhere. Gantt popovers should continue to open properly within the visible browser area, reducing awkward positioning near the edge of the screen.
Original PR description
This reverts commit ebeb633be737eb7bd614c2b474fafd65cd54f0ae.
This update fixes attachment display issues so uploaded file elements no longer overlap in affected screens, including signing flows. It also removes unnecessary styling, making the interface more reliable and easier to maintain without changing business workflows.
Original PR description
* = social_facebook,social_instagram,social_linkedin,social_twitter This commits fixes: * file DOM element don't overlap when git filename (`o_attachement` in `sign`) * remove useless CSS task-4333465
This update adjusts internal Helpdesk email-related tests after a related file name change. It helps keep automated checks reliable while preparing for upcoming email recipient improvements, with no expected change for day-to-day users.
Code cleanup and technical improvements
This change removes use of an old, unmaintained configuration component and relies on the current configuration system instead. It is part of a broader cleanup effort and should reduce long-term maintenance risk without changing business workflows.
Original PR description
This commit is part of a larger refactor, see associated PR. The `odoo.conf` module was first introduced by Vo Minh Thu in 2011 with the following header message: > For now, configuration code is in openerp.tools.config. It is in mainly > unprocessed form, e.g. addons_path is a string with commas-separated > paths. The aim is to have code related to configuration (command line > parsing, configuration file loading and saving, ...) in this module > and provide real Python variables, e.g. addons_paths is really a list > of paths. The same year Vo Minh Thu resigned and nobody did maintain this module ever since. Fast forward 13 (!) years later, `odoo.tools.config` now expose processed options, i.e. addons_path is a list of paths.
This update renames the sales order line tax field to use a consistent naming convention across related Odoo apps. It helps reduce internal complexity for tax, delivery, subscription, and electronic invoicing flows without changing the intended business behavior.
Original PR description
This commit rename `tax_id` field on sale.order.line to `tax_ids` to follow guidelines and have consistent name with other model specifically with account.move.line to have generic methods for both EDI without doing some ugly operations. task-4206350
Miscellaneous changes
It defeats the purpose to use `SQL` with f-strings. We observed that if there is an uppercase letter in field names we get an error. Steps to reproduce: 1. Install account_reports 2. Add a manual field `x_M` to `account.move.line` 3. Open Profit and Loss report 4. Group by Analytic. Error (edited to reduce space): ``` 2024-11-13 11:12:53,437 1855548 ERROR test_17.4 odoo.sql_db: bad query: -- Create a temporary table, dropping not null constraints because we're not filling
Original PR description
It defeats the purpose to use `SQL` with f-strings. We observed that if there is an uppercase letter in field names we get an error. Steps to reproduce: 1. Install account_reports 2. Add a manual…
It defeats the purpose to use `SQL` with f-strings. We observed that if there is an uppercase letter in field names we get an error. Steps to reproduce:
1. Install account_reports
2. Add a manual field `x_M` to `account.move.line`
3. Open Profit and Loss report
4. Group by Analytic.
Error (edited to reduce space):
```
2024-11-13 11:12:53,437 1855548 ERROR test_17.4 odoo.sql_db: bad query:
-- Create a temporary table, dropping not null constraints because we're not filling those columns
CREATE TEMPORARY TABLE IF NOT EXISTS analytic_temp_account_move_line () inherits (account_move_line) ON COMMIT DROP;
ALTER TABLE analytic_temp_account_move_line NO INHERIT account_move_line;
ALTER TABLE analytic_temp_account_move_line DROP CONSTRAINT IF EXISTS account_move_line_check_amount_currency_balance_sign;
ALTER TABLE analytic_temp_account_move_line ALTER COLUMN move_id DROP NOT NULL;
ALTER TABLE analytic_temp_account_move_line ALTER COLUMN currency_id DROP NOT NULL;
INSERT INTO analytic_temp_account_move_line (...)
SELECT account_move_line.company_id AS "account_move_line.company_id",... to_jsonb(UNNEST(ARRAY[account_analytic_line.account_id, x_plan2_id, x_plan3_id])) AS "account_move_line.analytic_distribution", ... account_move_line.x_M AS "account_move_line.x_M", ...
FROM account_analytic_line
LEFT JOIN account_move_line
ON account_analytic_line.move_line_id = account_move_line.id
WHERE
account_analytic_line.general_account_id IS NOT NULL;
-- Create a supporting index to avoid seq.scans
CREATE INDEX IF NOT EXISTS analytic_temp_account_move_line__composite_idx ON analytic_temp_account_move_line (analytic_distribution, journal_id, date, company_id);
-- Update statistics for correct planning
ANALYZE analytic_temp_account_move_line
ERROR: column account_move_line.x_m does not exist
LINE 10: ... AS "account_move_line.discount_amount_currency", account_mo...
^
HINT: Perhaps you meant to reference the column "account_move_line.x_M".
```
After this patch the same query is:
```
-- Create a temporary table, dropping not null constraints because we're not filling those columns
CREATE TEMPORARY TABLE IF NOT EXISTS analytic_temp_account_move_line () inherits (account_move_line) ON COMMIT DROP;
ALTER TABLE analytic_temp_account_move_line NO INHERIT account_move_line;
ALTER TABLE analytic_temp_account_move_line DROP CONSTRAINT IF EXISTS account_move_line_check_amount_currency_balance_sign;
ALTER TABLE analytic_temp_account_move_line ALTER COLUMN move_id DROP NOT NULL;
ALTER TABLE analytic_temp_account_move_line ALTER COLUMN currency_id DROP NOT NULL;
INSERT INTO analytic_temp_account_move_line (...)
SELECT "account_move_line"."company_id" AS "account_move_line.company_id", ... "account_move_line"."x_M" AS "account_move_line.x_M", ... to_jsonb(UNNEST(ARRAY["account_analytic_line"."account_id", "account_analytic_line"."x_plan2_id", "account_analytic_line"."x_plan3_id"])) AS "account_move_line.analytic_distribution", ...
FROM account_analytic_line
LEFT JOIN account_move_line
ON account_analytic_line.move_line_id = account_move_line.id
WHERE
account_analytic_line.general_account_id IS NOT NULL;
-- Create a supporting index to avoid seq.scans
CREATE INDEX IF NOT EXISTS analytic_temp_account_move_line__composite_idx ON analytic_temp_account_move_line (analytic_distribution, journal_id, date, company_id);
-- Update statistics for correct planning
ANALYZE analytic_temp_account_move_line
```
A similar issue can be triggered if we add a manual field `x_plan2_id` to `account.move.line`:
```
ERROR: column reference "x_plan2_id" is ambiguous
LINE 10: ...nb(UNNEST(ARRAY[account_analytic_line.account_id, x_plan2_id...
```
Both issues are fixed here.
This was observed during upgrades. Mainly due to studio fields being generated with uppercase letters. Still, as shown above, it also fails for manual fields.
Forward-Port-Of: odoo/enterprise#737351. Set up Avatax on the current company 2. In Settings > Sales > Quotations& Orders active 'Lock Confirmed Sales' 3. Create a SO with fiscal position 'Automatic Tax Mapping (AvaTax)' 4. Add a partner and product having avatax category defined 5. Compute taxes 6. Confirm order, it will be automatically locked 7. Click "Send by Email" Issue: Action will be blocked by User Error ``` It is forbidden to modify the following fields in a locked order ``` This occurs because when sending
Original PR description
1. Set up Avatax on the current company 2. In Settings > Sales > Quotations& Orders active 'Lock Confirmed Sales' 3. Create a SO with fiscal position 'Automatic Tax Mapping (AvaTax)' 4. Add a partner and product having avatax category defined 5. Compute taxes 6. Confirm order, it will be automatically locked 7. Click "Send by Email" Issue: Action will be blocked by User Error ``` It is forbidden to modify the following fields in a locked order ``` This occurs because when sending by email we recompute external taxes, but it should not be the case for locked orders It also occurs on the web shop when finalizing the payment opw-4261396 Forward-Port-Of: odoo/enterprise#73846 Forward-Port-Of: odoo/enterprise#73505
Statements (using the partner ledger send button) are currently being sent to followers of the partner. This should not be the case, only the partner or specified recipients should receive the email. Task-4320475 Forward-Port-Of: odoo/enterprise#73596
Original PR description
Statements (using the partner ledger send button) are currently being sent to followers of the partner. This should not be the case, only the partner or specified recipients should receive the email. Task-4320475 Forward-Port-Of: odoo/enterprise#73596
Workflow rule can be configured to link a document to any model (the user has to choose the model when executing the action). In order to migrate such workflow rule, we make the parameter model of the method action_link_to_record optional. Also to ease the conversion of workflow rule into server action, we make the folder_id optional on the method document_sign_create_sign_template_x of documents_sign. Task-4283330 Forward-Port-Of: odoo/enterprise#73376
Original PR description
Workflow rule can be configured to link a document to any model (the user has to choose the model when executing the action). In order to migrate such workflow rule, we make the parameter model of the method action_link_to_record optional. Also to ease the conversion of workflow rule into server action, we make the folder_id optional on the method document_sign_create_sign_template_x of documents_sign. Task-4283330 Forward-Port-Of: odoo/enterprise#73376
**Description of the issue/feature this PR addresses**: Argentinean Localization: Electronic customer invoice Factura B for a customer "Consumidor Final" without country, with "DNI" identification type, with vat and "Consumidor final" afip responsibility type must report to afip the customer vat when the invoice has an amount higher than $344487 is validated but because the vat is not reported to afip then it is not allowed to validate the invoice. The bug was introduced on this pr: https:
Original PR description
**Description of the issue/feature this PR addresses**: Argentinean Localization: Electronic customer invoice Factura B for a customer "Consumidor Final" without country, with "DNI" identification…
**Description of the issue/feature this PR addresses**: Argentinean Localization: Electronic customer invoice Factura B for a customer "Consumidor Final" without country, with "DNI" identification type, with vat and "Consumidor final" afip responsibility type must report to afip the customer vat when the invoice has an amount higher than $344487 is validated but because the vat is not reported to afip then it is not allowed to validate the invoice. The bug was introduced on this pr: https://github.com/odoo/enterprise/pull/71562 --> The goal of this pr was to be able to create Factura B for a foreign customer. But prior to this pr the user was allowed to validate an invoice Factura B to a customer "Consumidor Final" without a country set on that customer, with "DNI" identification type, with a vat and "Consumidor final" afip responsibility type when the invoice has an amount higher than $344487 **Video explaining the bug**: https://drive.google.com/file/d/1Qb2oUtT26twjCI-pB6oMGMC9gZ6_EBSz/view **Steps to reproduce**: 1) Log ing with admin user on runbot odoo enterprise 16 or 17 instance, activate developer mode and install l10n_ar_edi module. 2) Take position on company "Responsable Inscripto". 3) Create an electronic invoice "Factura B" for customer "Consumidor Final Anónimo" with an invoice line with quantity 1 and price 500000. Select electronic journal. The Partner doesn`t have country and has "dni" identification type, dni and "Consumidor final" afip responsibility type.   4) Validate the invoice and then you will receive this message:  **Current behavior before PR**: It is not allowed to validate Electronic customer invoice Factura B for a customer "Consumidor Final" without country, with "DNI" identification type, with vat and "Consumidor final" afip responsibility type when the invoice has an amount higher than $344487. **Desired behavior after PR is merged**: It is allowed to validate Electronic customer invoice Factura B for a customer "Consumidor Final" without country, with "DNI" identification type, with vat and "Consumidor final" afip responsibility type when the invoice has an amount higher than $344487. Ticket Adhoc side: 82498 Task latam side: 1283 Forward-Port-Of: odoo/enterprise#73200
…aration TaskID: 4283466 Forward-Port-Of: odoo/enterprise#73088
Original PR description
…aration TaskID: 4283466 Forward-Port-Of: odoo/enterprise#73088
Purpose ======= Simplify the company folder domain. Now the domain is just the documents owned by Odoobot, and without a parent folder. The search panel now use the same domain, and so the only difference now between the kanban view and the search panel is that the search panel only show folders. Technical ========= Because the old `is_pinned_folder` is used in access rule, we can not just set it to False, it needs to reflect the owner_id / folder_id values (it will be cleaned in mast
Original PR description
Purpose ======= Simplify the company folder domain. Now the domain is just the documents owned by Odoobot, and without a parent folder. The search panel now use the same domain, and so the only difference now between the kanban view and the search panel is that the search panel only show folders. Technical ========= Because the old `is_pinned_folder` is used in access rule, we can not just set it to False, it needs to reflect the owner_id / folder_id values (it will be cleaned in master). Task-4293841 Forward-Port-Of: odoo/enterprise#73037
This is a known bug somehow reintroduced in sharepocalypse that prevents other flows (namely the OCR) from writing the correct values. Task-4260511 Forward-Port-Of: odoo/enterprise#73546
Original PR description
This is a known bug somehow reintroduced in sharepocalypse that prevents other flows (namely the OCR) from writing the correct values. Task-4260511 Forward-Port-Of: odoo/enterprise#73546
### Steps to reproduce: - In the settings: Enable "product packaging" - Create a storable product - Inventory > Configuration > Product Packaging > New - Create a packaging for that product with a quantity of 15 units - In the barcode app > inventory adjustment > + Add product > You are redirected towards a digipad without any set product_id. - Add a product #### > The packaging button is not displayed for you to add multiples of 15 Follow up of Commit 8db17ef7aa7d0f989da1ab3f05de66
Original PR description
### Steps to reproduce: - In the settings: Enable "product packaging" - Create a storable product - Inventory > Configuration > Product Packaging > New - Create a packaging for that product with a quantity of 15 units - In the barcode app > inventory adjustment > + Add product > You are redirected towards a digipad without any set product_id. - Add a product #### > The packaging button is not displayed for you to add multiples of 15 Follow up of Commit 8db17ef7aa7d0f989da1ab3f05de661fba7a9fc7 opw-4156249 --- Forward-Port-Of: odoo/enterprise#73672 Forward-Port-Of: odoo/enterprise#72626
Tax closing with fiscal positions was not working properly. 1. If the generic tax report doesn't have a specific country and the filter for fiscal position, it should take into account `all` fiscal positions. 3. The closing mechanism until version 18.0 does not work properly with the oss reports. It was not intended for the user to be able to do a closing there before version 18.0. opw-3974388 Forward-Port-Of: odoo/enterprise#73486 Forward-Port-Of: odoo/enterprise#66901
Original PR description
Tax closing with fiscal positions was not working properly. 1. If the generic tax report doesn't have a specific country and the filter for fiscal position, it should take into account `all` fiscal positions. 3. The closing mechanism until version 18.0 does not work properly with the oss reports. It was not intended for the user to be able to do a closing there before version 18.0. opw-3974388 Forward-Port-Of: odoo/enterprise#73486 Forward-Port-Of: odoo/enterprise#66901
We were misconfiguring some accounts in ec localization: - EDI purchase journal default account opw-4127252 Forward-Port-Of: odoo/enterprise#73819 Forward-Port-Of: odoo/enterprise#69561
Original PR description
We were misconfiguring some accounts in ec localization: - EDI purchase journal default account opw-4127252 Forward-Port-Of: odoo/enterprise#73819 Forward-Port-Of: odoo/enterprise#69561
### Steps to reproduce: - Set a main currency and a second one. - Upload a document in the expense module for the second currency - Refresh ### Cause: In the for loop there are more than one possible currency detected so `vals['currency_id']` does not exist but the if statement tries to read this value causing an error. ### Solution: Check if the currency_id is in the vals dictionary. If not, the default currency value will be in the Expense. opw-4307845 Forward-Port-Of: odoo/ente
Original PR description
### Steps to reproduce: - Set a main currency and a second one. - Upload a document in the expense module for the second currency - Refresh ### Cause: In the for loop there are more than one possible currency detected so `vals['currency_id']` does not exist but the if statement tries to read this value causing an error. ### Solution: Check if the currency_id is in the vals dictionary. If not, the default currency value will be in the Expense. opw-4307845 Forward-Port-Of: odoo/enterprise#73660
**Steps to reproduce:** - Install l10n_mx_reports - Switch to a Mexican company (e.g. ESCUELA KEMPER URGATE) - Go to "Accounting / Configuration / Accounting / Chart of Accounts" - Create an account: * Account Name: [any] * Code: 123456789 * Type: Bank and Cash - Go to "Accounting / Reporting / Audit Reports / Trial Balance" - Download "COA SAT (XML)" - Validate the XML on an online SAT document validator (e.g. https://ceportalvalidacionprod.clouda.sat.gob.mx) **Issue:** The
Original PR description
**Steps to reproduce:** - Install l10n_mx_reports - Switch to a Mexican company (e.g. ESCUELA KEMPER URGATE) - Go to "Accounting / Configuration / Accounting / Chart of Accounts" - Create an account:…
**Steps to reproduce:** - Install l10n_mx_reports - Switch to a Mexican company (e.g. ESCUELA KEMPER URGATE) - Go to "Accounting / Configuration / Accounting / Chart of Accounts" - Create an account: * Account Name: [any] * Code: 123456789 * Type: Bank and Cash - Go to "Accounting / Reporting / Audit Reports / Trial Balance" - Download "COA SAT (XML)" - Validate the XML on an online SAT document validator (e.g. https://ceportalvalidacionprod.clouda.sat.gob.mx) **Issue:** The validation fails because the XML contains lines with incorrect or missing value for "CodAgrup" attribute. **Cause:** The "CodAgrup" in the "COA SAT (XML)" refers to the code of the account groups. The accepted values are defined in the "Catálogo de Códigos Agrupadores" XSD file. https://github.com/odoo/enterprise/blob/ecce698637dc2ef13dfdb27dfde303a7f1191aaf/l10n_mx_xml_polizas/data/xsd/1.3/CatalogosParaEsqContE.xsd#L4-L1086 The created account [123456789] is put in the root account group with code "1" and a line is added in the "COA SAT (XML)" with this value. However, it is not an accepted value. **Solution:** From the account groups created automatically by MX localization, only the root account groups (i.e. with code "1", "2", "3",...) do not have a valid code for the "COA SAT (XML)". These ones can be ignored. This solution is not perfect as it is still possible to create an account group with an invalid code that is not a root account group. However, handling this use case would require to check that each code is included in the set of valid codes (there is more than a thousand). opw-4209089 Forward-Port-Of: odoo/enterprise#73647
In its current state, payment initiation isn't working in production due to the lack of the KYC flow. This commits adds that alongside other minor changes and imporvements. Task ID: 4216281 Forward-Port-Of: odoo/enterprise#72628
Original PR description
In its current state, payment initiation isn't working in production due to the lack of the KYC flow. This commits adds that alongside other minor changes and imporvements. Task ID: 4216281 Forward-Port-Of: odoo/enterprise#72628
For the PFA (prime de fin d'année), the unpredictable leaves should be considered as paid. Task: 4331164 Forward-Port-Of: odoo/enterprise#73721
Original PR description
For the PFA (prime de fin d'année), the unpredictable leaves should be considered as paid. Task: 4331164 Forward-Port-Of: odoo/enterprise#73721
This commit will add the ec sales list report for Slovenian localisation Community PR: odoo/odoo#166559 Task [link](https://www.odoo.com/odoo/project/967/tasks/3901247) task-3901247 Forward-Port-Of: odoo/enterprise#73308 Forward-Port-Of: odoo/enterprise#65817
Original PR description
This commit will add the ec sales list report for Slovenian localisation Community PR: odoo/odoo#166559 Task [link](https://www.odoo.com/odoo/project/967/tasks/3901247) task-3901247 Forward-Port-Of: odoo/enterprise#73308 Forward-Port-Of: odoo/enterprise#65817
The `delivery_ups_rest` module icon was using the old one. This commit replaces it for the new UPS icon. task-4317822 Forward-Port-Of: odoo/enterprise#73582
Original PR description
The `delivery_ups_rest` module icon was using the old one. This commit replaces it for the new UPS icon. task-4317822 Forward-Port-Of: odoo/enterprise#73582
Versions -------- - saas-17.4+ Community PR: https://github.com/odoo/odoo/pull/186284 Steps ----- 1. Have Planning installed; 2. change localisation to 'en_GB' (or any whose weeks start on Monday); 3. open in Gantt view in weekly granularity; 4. go to the week of 2024-12-30. Issue ----- Label on top right displays "W1 2024"; Cause ----- It uses the `getLocalWeekNumber` function to get the week number of 2024-12-30, which falls in the first week of 2025. It then combines it
Original PR description
Versions -------- - saas-17.4+ Community PR: https://github.com/odoo/odoo/pull/186284 Steps ----- 1. Have Planning installed; 2. change localisation to 'en_GB' (or any whose weeks start on Monday);…
Versions -------- - saas-17.4+ Community PR: https://github.com/odoo/odoo/pull/186284 Steps ----- 1. Have Planning installed; 2. change localisation to 'en_GB' (or any whose weeks start on Monday); 3. open in Gantt view in weekly granularity; 4. go to the week of 2024-12-30. Issue ----- Label on top right displays "W1 2024"; Cause ----- It uses the `getLocalWeekNumber` function to get the week number of 2024-12-30, which falls in the first week of 2025. It then combines it with the `year` of the date, which is 2024. Solution -------- ### Community: - Like the `weeknumber` function added in https://github.com/odoo/odoo/commit/9c47e911d0ca707826d8907ae773aeb7484a270b to `odoo.tools.date_utils`, have a function in `web` that returns both year and week number. - Remove the `getLocalWeekNumber` function in master, and replace usages with `getLocalYearAndWeek(date).week`. ### Enterprise: - Define a `formatLocalWeekYear` function in `web_gantt` using the new `getLocalYearAndWeek` function from `web`. opw-4280192 Forward-Port-Of: odoo/enterprise#73318
Steps to Reproduce: - Set up a website for a Colombian company. - Go to the shop section. - Purchase any product. Issue: - A traceback occurs when the checkout address form opens. - Another traceback appears upon clicking submit. Cause: - The error is due to an attempt to access an element in the form that is not present. Fix: - Added a condition to ensure that the element is accessed only when the address_type is set to billing. - Updated the view to display the identification
Original PR description
Steps to Reproduce: - Set up a website for a Colombian company. - Go to the shop section. - Purchase any product. Issue: - A traceback occurs when the checkout address form opens. - Another traceback appears upon clicking submit. Cause: - The error is due to an attempt to access an element in the form that is not present. Fix: - Added a condition to ensure that the element is accessed only when the address_type is set to billing. - Updated the view to display the identification type field when use_delivery_as_billing is enabled. opw-4278790 Forward-Port-Of: odoo/enterprise#72965
Before, we relied on just _l10n_br_get_error_from_response() which checks for the presence of an "error" key in the response. Unfortunately that only seems to catch errors directly raised by Avalara. The government can reject the cancellation for a myriad of reasons [1]. We could hardcode all successful status codes (24 codes), but to be more robust in case the codes change we just look if any XML is returned. The lack of XML response should reliably indicate that the cancellation failed. [1
Original PR description
Before, we relied on just _l10n_br_get_error_from_response() which checks for the presence of an "error" key in the response. Unfortunately that only seems to catch errors directly raised by Avalara. The government can reject the cancellation for a myriad of reasons [1]. We could hardcode all successful status codes (24 codes), but to be more robust in case the codes change we just look if any XML is returned. The lack of XML response should reliably indicate that the cancellation failed. [1] 4.4. Lista das Regras de Validação in https://www.nfe.fazenda.gov.br/portal/exibirArquivo.aspx?conteudo=J%20I%20v4eN00E= Forward-Port-Of: odoo/enterprise#73342
Steps to reproduce: - Create a subscription product with two or more plans - Go to the product's page on eCommerce - Choose another plan than the default one - Add it to the cart - Notice the default plan is the one added to the cart Current behavior before PR: After this change https://github.com/odoo/enterprise/pull/71347/commits/a847237eaf91df641d6af6c7122a1e7216621f9a there is a div got added before the tag of the select dropdown menu. So when we are getting the value of the pl
Original PR description
Steps to reproduce: - Create a subscription product with two or more plans - Go to the product's page on eCommerce - Choose another plan than the default one - Add it to the cart - Notice the default plan is the one added to the cart Current behavior before PR: After this change https://github.com/odoo/enterprise/pull/71347/commits/a847237eaf91df641d6af6c7122a1e7216621f9a there is a div got added before the tag of the select dropdown menu. So when we are getting the value of the plan_id selected https://github.com/odoo/enterprise/blob/18.0/website_sale_subscription/static/src/js/website_sale_subscription.js#L14 we don't find any element with this path. Desired behavior after PR is merged: We are changing the path that we get the value of the selected plan out of so we can make sure it is getting the right element which will get the right value accordingly. opw-4296527 Forward-Port-Of: odoo/enterprise#73768 Forward-Port-Of: odoo/enterprise#73677
Brazil is now requiring that each line includes the barcode [1]. This is being rolled out gradually per state, as of now it's only rolled out in Paraná as far as we are aware. We're applying this change to Odoo 17 and later because it only affects EDI. Odoo 16 only supported tax calculation. Validation is done based on the Avalara documentation [2]. [1] As outlined in "Nota Técnica 2021.003 Validação GTIN" https://www.nfe.fazenda.gov.br/portal/exibirArquivo.aspx?conteudo=SrQT9ys8OD
Original PR description
Brazil is now requiring that each line includes the barcode [1]. This is being rolled out gradually per state, as of now it's only rolled out in Paraná as far as we are aware.
We're applying this change to Odoo 17 and later because it only affects EDI. Odoo 16 only supported tax calculation.
Validation is done based on the Avalara documentation [2].
[1] As outlined in "Nota Técnica 2021.003 Validação GTIN"
https://www.nfe.fazenda.gov.br/portal/exibirArquivo.aspx?conteudo=SrQT9ys8ODo=
[2] https://avataxbr-docs.avalarabrasil.com.br/#/Calculations/payloadCalculation
task-4222168
Forward-Port-Of: odoo/enterprise#73709
Forward-Port-Of: odoo/enterprise#73517In production, there is a delay of around 1 second between the moment the user clicks on the share button and the share/permission panel appears. That is not good UX. To reduce that delay, this commit removes the fetching of partner options (for members' invite) when the permission panel is about to open. The RPC call is now done when users open the select menu to invite new members. task-4309414 Forward-Port-Of: odoo/enterprise#73271
Original PR description
In production, there is a delay of around 1 second between the moment the user clicks on the share button and the share/permission panel appears. That is not good UX. To reduce that delay, this commit removes the fetching of partner options (for members' invite) when the permission panel is about to open. The RPC call is now done when users open the select menu to invite new members. task-4309414 Forward-Port-Of: odoo/enterprise#73271
This commit makes cancelled depreciation entries appear in grey in the depreciation board. It also turns the the depreciation entry's name into a link towards the move's form view. Forward-Port-Of: odoo/enterprise#73705 Forward-Port-Of: odoo/enterprise#72819
Original PR description
This commit makes cancelled depreciation entries appear in grey in the depreciation board. It also turns the the depreciation entry's name into a link towards the move's form view. Forward-Port-Of: odoo/enterprise#73705 Forward-Port-Of: odoo/enterprise#72819
2 small fixes for the quality worksheet in the shop floor. Please refer to the individual feature commits for details. Forward-Port-Of: odoo/enterprise#73592 Forward-Port-Of: odoo/enterprise#70703
Original PR description
2 small fixes for the quality worksheet in the shop floor. Please refer to the individual feature commits for details. Forward-Port-Of: odoo/enterprise#73592 Forward-Port-Of: odoo/enterprise#70703
This reverts commit fd46e62809544702193e636ec388103eea11f788. Task-4314619 Forward-Port-Of: odoo/enterprise#73611 Forward-Port-Of: odoo/enterprise#73506
Original PR description
This reverts commit fd46e62809544702193e636ec388103eea11f788. Task-4314619 Forward-Port-Of: odoo/enterprise#73611 Forward-Port-Of: odoo/enterprise#73506
Users of the Certification Provider Quadrum (finkok) may experience failed validation of the payment cfdi due to the wrong payment rate computed by the system Use case: - In an MX Company with PAC Quadrum - Enable currency USD - Set up 2 rates, date1: 0.051571645909, date2: 0.049598992148 - Create an invoice in USD, date 1, with a line of qty 1, price 13125.00, tax 16% - Confirm - Make 2 partial payments of 100'000 MXN - On the Invoice, click 'Update Payments' - In the CFDI tab, on one
Original PR description
Users of the Certification Provider Quadrum (finkok) may experience failed validation of the payment cfdi due to the wrong payment rate computed by the system Use case: - In an MX Company with PAC…
Users of the Certification Provider Quadrum (finkok) may experience failed validation of the payment cfdi due to the wrong payment rate computed by the system Use case: - In an MX Company with PAC Quadrum - Enable currency USD - Set up 2 rates, date1: 0.051571645909, date2: 0.049598992148 - Create an invoice in USD, date 1, with a line of qty 1, price 13125.00, tax 16% - Confirm - Make 2 partial payments of 100'000 MXN - On the Invoice, click 'Update Payments' - In the CFDI tab, on one of the payments, click 'Force CFDI' Issue: Validation will fail with error Note: This does not occur with other providers (Solucion Factibles) ``` Code : CRP20275 Message : La suma de los valores registrados en el campo ImpPagado del nodo DoctoRelacionado, convertidos a la moneda del pago, no es menor o igual que el valor del campo Monto. ``` This occurs because, when computing the payment rate in USD, we obtain 4959.90. Due to rounding, this amount, reconverted in MXN is 100000.02 so we need to transmit an adjusted rate for Providers with a lower error tolerance opw-4314798 Forward-Port-Of: odoo/enterprise#73772 Forward-Port-Of: odoo/enterprise#73696
Before this commit: The logo is not updated when users change the icon or image and click the confirm button. The updated logo appears after refreshing the page. After this commit: When users change the icon or image and click the confirm button, the logo is now updated Task-4219545 Forward-Port-Of: odoo/enterprise#73771 Forward-Port-Of: odoo/enterprise#71512
Original PR description
Before this commit: The logo is not updated when users change the icon or image and click the confirm button. The updated logo appears after refreshing the page. After this commit: When users change the icon or image and click the confirm button, the logo is now updated Task-4219545 Forward-Port-Of: odoo/enterprise#73771 Forward-Port-Of: odoo/enterprise#71512
Steps to reproduce ================== - Go to documents - Switch to the list view - Select a record - Resize a column => The selection is lost Solution ======== Ignore clicks in the header opw-4203375 Forward-Port-Of: odoo/enterprise#73687 Forward-Port-Of: odoo/enterprise#71774
Original PR description
Steps to reproduce ================== - Go to documents - Switch to the list view - Select a record - Resize a column => The selection is lost Solution ======== Ignore clicks in the header opw-4203375 Forward-Port-Of: odoo/enterprise#73687 Forward-Port-Of: odoo/enterprise#71774
Steps to reproduce: - Install Attendances - New employee > New Contract > Set a wage - Set 'Work Entry Source' to 'Attendances' - Payroll app > New Payslip > Compute Sheet - Salary Computation tab > Basic salary = contract Wage Steps to check salary configurator: - Install Salary Configurator and Recruitment - Recruitment > Any Job Position > New Application - Generate Offer > Pick template > Configure your package - Under 'Net Salary' click Details The basic salary should be 0 as
Original PR description
Steps to reproduce: - Install Attendances - New employee > New Contract > Set a wage - Set 'Work Entry Source' to 'Attendances' - Payroll app > New Payslip > Compute Sheet - Salary Computation tab >…
Steps to reproduce: - Install Attendances - New employee > New Contract > Set a wage - Set 'Work Entry Source' to 'Attendances' - Payroll app > New Payslip > Compute Sheet - Salary Computation tab > Basic salary = contract Wage Steps to check salary configurator: - Install Salary Configurator and Recruitment - Recruitment > Any Job Position > New Application - Generate Offer > Pick template > Configure your package - Under 'Net Salary' click Details The basic salary should be 0 as no work hours have been recorded, note that this is different from having leaves recorded we're talking about a case where no records are available to compute the payslip basic salary. We might still want to generate a payslip in such cases to account for the flat allowances / deductions the employee might have on their contract's salary structure. We can't just set it to 0 though: This workaround is needed because the salary configurator also uses salary computation, where we do want to get the monthly wage (Since the contract is still provisional we don't have worked hours, but we still want it to be reflective of the position's monthly wage). In the case of an active employee however, paying a basic wage when no hours have been worked does not make sense so it should invariably be 0. This could also be relevant with other work entry sources than attendances but a contract based on worked entries automatically generates worked hours according to the schedule so it is more difficult to reach. opw-4266880 Forward-Port-Of: odoo/enterprise#73469
### Steps to reproduce: - Enable "Multi-Steps Routes" in the settings - Add a barcode to a different location that WH/Stock - Go to the barcode > Operations > Internal Transfers > New > The header propose to scan a product - Do not scan the product by click on `+ ADD PRODUCT` - Add 1 unit of your favorite product > The header propose to scan a product or a destination location - Scan the location you had set #### > The location scan is ignored ### Cause of the issue: During the
Original PR description
### Steps to reproduce: - Enable "Multi-Steps Routes" in the settings - Add a barcode to a different location that WH/Stock - Go to the barcode > Operations > Internal Transfers > New > The header…
### Steps to reproduce: - Enable "Multi-Steps Routes" in the settings - Add a barcode to a different location that WH/Stock - Go to the barcode > Operations > Internal Transfers > New > The header propose to scan a product - Do not scan the product by click on `+ ADD PRODUCT` - Add 1 unit of your favorite product > The header propose to scan a product or a destination location - Scan the location you had set #### > The location scan is ignored ### Cause of the issue: During the `_parseBracode` called to determine what was scanned by the barcode, a location corresponding to the barcode scanned will be found. To use this barcode, if it makes sense, the `_setLocationFromBcode` will be called in turn. However, during internal transfers, this location will only be used as a destination location under very specific conditions: https://github.com/odoo/enterprise/blob/8035abddf9991f6bfb71bb7889b703e5ed31a179/stock_barcode/static/src/models/barcode_picking_model.js#L1603-L1619 And, since we did add the product manually rather than using a scan, in our case, `this.previousScannedLines.lengt` will be null rather than positive so that the location will not be used to set the destination. opw-4201489 Forward-Port-Of: odoo/enterprise#73114 Forward-Port-Of: odoo/enterprise#72283
### API Changes 1. **Dependencies** - Replaced `shared.method_name` with `dependencies.pluginName.methodName` - Plugin `name` property renamed `id` to avoid clashing with the global `name` property on classes. Values changed to camelCase. 2. **Commands** - Introduced "user commands" as a unified interface for commands that can be triggered by users (e.g. from the toolbar, powerbox and powerbuttons) - Standardized api for toolbar items, powerbox items, shortcuts, and power bu
Original PR description
### API Changes 1. **Dependencies** - Replaced `shared.method_name` with `dependencies.pluginName.methodName` - Plugin `name` property renamed `id` to avoid clashing with the global `name` property…
### API Changes
1. **Dependencies**
- Replaced `shared.method_name` with `dependencies.pluginName.methodName`
- Plugin `name` property renamed `id` to avoid clashing with the global `name` property on classes. Values changed to camelCase.
2. **Commands**
- Introduced "user commands" as a unified interface for commands that can be triggered by users (e.g. from the toolbar, powerbox and powerbuttons)
- Standardized api for toolbar items, powerbox items, shortcuts, and power buttons
- Removed `Plugin.dispatch` and `Plugin.handleCommand` methods
- Introduced `dispatchTo` for event handling and `delegateTo` for overrides
3. **Resource Categorization**
- handlers: functions that are called in response to an event (e.g. selectionchange_handlers)
- overrides: functions that replace a default behavior (e.g. paste_text_overrides)
- predicates: functions that test a condition, returning boolean (e.g. unremovable_node_predicates)
- providers: functions that supply data on demand (e.g. collaboration_peer_metadata_providers)
- processors: composable functions that transform data (e.g. history_step_processors)
- data (no suffix): not functions (e.g. system_classes)
task-4266746
Community: https://github.com/odoo/odoo/pull/186637
Forward-Port-Of: odoo/enterprise#73500TO REPRODUCE =========== 1. Create an appointment with users A and B 2. ...using 'no picture' and 'user then time' 3. go to front end 4. pick a date D both users have slots in 5. go to next month 6. change user in the dropdown (or change TZ) 7. slots appear for day D in previous month ISSUE ===== When selecting an other resource or user in the dropdown in resource_time mode, even if the selected one has no available slot for the current month, slots will appear in the slot list, c
Original PR description
TO REPRODUCE =========== 1. Create an appointment with users A and B 2. ...using 'no picture' and 'user then time' 3. go to front end 4. pick a date D both users have slots in 5. go to next month 6.…
TO REPRODUCE =========== 1. Create an appointment with users A and B 2. ...using 'no picture' and 'user then time' 3. go to front end 4. pick a date D both users have slots in 5. go to next month 6. change user in the dropdown (or change TZ) 7. slots appear for day D in previous month ISSUE ===== When selecting an other resource or user in the dropdown in resource_time mode, even if the selected one has no available slot for the current month, slots will appear in the slot list, corresponding to the first availability overall. This leads to a very strange mismatch between the calendar dates and the slots. The user may select a slot and book for a month they do not currently see on the calendar. SOLUTION ======== Now, we will select the previously selected date if it is in the current month and has slots. Otherwise we select the first day with slots in the currently displayed month (NOT overall). This way, the day is selected and displayed as so in the calendar. The slots match that day. If no availability exist for the current month, we do not click on any day, and show no slots. Task-4169513 Forward-Port-Of: odoo/enterprise#73673 Forward-Port-Of: odoo/enterprise#71460