Friday, May 19, 2023
27 changes · master
New functionality added to Odoo
Odoo’s automated tour tests can now be watched in a regular visible browser, making it easier to investigate issues that depend on normal mouse behavior, such as drag and drop. The testing browser is now started fresh for each tour run, improving isolation and simplifying cleanup, with some internal browser setup streamlined for efficiency.
Original PR description
Chrome's screencast / remote view (in the remote devtools) is apparently *designed* for touch emulation / simulation (https://crbug.com/1410433), which is not convenient when trying to debug…
Chrome's screencast / remote view (in the remote devtools) is apparently *designed* for touch emulation / simulation (https://crbug.com/1410433), which is not convenient when trying to debug mouse-bound issues in a tour (e.g. drag&drop problems). This can be solved by just running the browser normally if the user wants to watch, in which case the user can also use their normal devtools. However this doesn't work with the current architecture, where the browser is lazy-started one per test class and reused between `browse_js` calls. Scrap that, run and shut down the browser entirely for every `browse_js` calls that way it's possible to use entirely different browser. This also simplifies the cleanup phase somewhat as we don't have a persistent profile directory to try and reset, instead every `browse_js` has its own. Notes: - `--no-first-run` causes tours to not run at all on my machine, in a non-headless browser - also moved a bunch of other flags which seem to be mostly for automated annoyances to headless only - left extensions for now, not entirely sure which is the right one, since we're running with fresh profiles I would assume there's no extensions anyway
Restaurant customers can now scan a table QR code, browse the menu, customize items, add notes, and submit orders directly from the self-service web app. Orders appear in the regular POS session for staff to review and send to preparation, while payment continues through existing in-person methods.
Original PR description
Currently from the pos_self_order app a customer can only view the menu. This PR adds the option to order items. A customer of the restaurant will now be able to scan a qr code on their table, and…
Currently from the pos_self_order app a customer can only view the menu. This PR adds the option to order items. A customer of the restaurant will now be able to scan a qr code on their table, and navigate to a website where they will be able to order items from the pos. The customer can select product variants and add a specific notes for each of the ordered products. This version does not support online payment. This means that the customer will still have to pay by the usual methods. The pos can be configured such that a customer can add items to an existing order. For example, ordering a second coffee will result in an update of the existing pos order containing the first coffee. Alternatively, the pos can be configured such that each order made from the web app results in a new pos order. Orders made from the self order app will be placed in the same pos session as regular orders. Once a customer orders from the self order app, a new order will appear in the pos app. Thus, a waiter will be able to quickly see all the orders placed by customers from the self order app. He/She will then be able to send the order to the preparation display. This step has to be done manually. In the interest of security, each table now has an associated access token. It is included in url that the customer gets from the qr code. When sending the order, the self order app also sends back to the server this access token. The server will only process the order if it receives a valid access token. When placing an order, the server will respond with the pos_reference and access_token of the created order. The web app will keep this data and will send it back to the server as a proof of ownership in the event that it intends to get the latest state of the order or to update it. The server will only reveal information about an existing order when the request contains a valid pair of pos_reference and access_token. Task: 3058586 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Enhancements to existing features
This update makes internal transaction handling process environments in a predictable order, avoiding inconsistent behavior that could vary between system runs. It also adds tests to confirm the new behavior remains stable without affecting cleanup of unused resources.
Original PR description
The Weakset Used for envs can lead to unpredictible behaviour when calling flush on the transaction because we iterate on the `envs`. Since WeakSet.data is a set, the iteration will depends on the python hash seed. This commit proposes to replace Transaction.envs.data by an OrderedSet to solve this issue. Some test demonstrates that it does not affect the garbage collection and that the order is now deterministic. The question to now if we should reverse the envs to find the most suitable envs remains.
Miscellaneous changes
**Current behavior before PR:** Inventory quantity 4 Reserved quantity 3 Available quantity 1 If i confirm a stock move of 2 pieces, it will unreserve ALL the stock moves of the product until the quantity of "2" is reached. **Desired behavior after PR is merged:** It will unreserve only the pieces that are required minus the available quantity not reserved , in this case 2 (new stock move) - 1 (available quantity) = 1 --- I confirm I have signed the CLA and re
Original PR description
**Current behavior before PR:** Inventory quantity 4 Reserved quantity 3 Available quantity 1 If i confirm a stock move of 2 pieces, it will unreserve ALL the stock moves of the product until the quantity of "2" is reached. **Desired behavior after PR is merged:** It will unreserve only the pieces that are required minus the available quantity not reserved , in this case 2 (new stock move) - 1 (available quantity) = 1 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#119999
The mail attachment previewer can now be closed through an internal event, enabling related apps like Documents to dismiss previews automatically when needed. This improves workflow consistency and reduces manual user actions when navigating or updating document views.
Original PR description
Purpose ======= In documents, we want to close the previewer using bus event. Task-3290796
ValueError 'unknown colour specifier' occurs when we access export_icon_to_png(). This error occurs when we change the colour of an icon in the mailing template, because the value of alpha (opacity) in 'rgba' is in the range of 0 to 1, but PIL Image support colour opacity range 0 to 255. This commit converts the opacity value range (0 to 1) to a range (0 to 255) compatible with the PIL image library when the colour specifier is 'rgba'. sentry - 3933353285 see - https://tinyurl.com/2e4ry
Original PR description
ValueError 'unknown colour specifier' occurs when we access export_icon_to_png(). This error occurs when we change the colour of an icon in the mailing template, because the value of alpha (opacity) in 'rgba' is in the range of 0 to 1, but PIL Image support colour opacity range 0 to 255. This commit converts the opacity value range (0 to 1) to a range (0 to 255) compatible with the PIL image library when the colour specifier is 'rgba'. sentry - 3933353285 see - https://tinyurl.com/2e4ry4jt --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#121520 Forward-Port-Of: odoo/odoo#116476
**Current behavior before PR:** It's impossible to select all using CTRL+A in an empty selection. **Desired behavior after PR is merged:** Now, select all is possible using CTRL+A in an empty selection. Task-3150956 Forward-Port-Of: odoo/odoo#116150
Original PR description
**Current behavior before PR:** It's impossible to select all using CTRL+A in an empty selection. **Desired behavior after PR is merged:** Now, select all is possible using CTRL+A in an empty selection. Task-3150956 Forward-Port-Of: odoo/odoo#116150
# Current behavior: Connections for outgoing email servers using Outlook/Office365 or Gmail accounts will establish an OAuth2 authentication for the smtp server. Through the `ir_mail_server` form view, one can fetch the necessary tokens by logging in into their Microsoft/Gmail account. Not specifying an username (`smtp_user`) on the `ir_mail_server` record will not produce an error while fetching those tokens. But when trying to test the connection or use that server to
Original PR description
# Current behavior: Connections for outgoing email servers using Outlook/Office365 or Gmail accounts will establish an OAuth2 authentication for the smtp server. Through the `ir_mail_server` form…
# Current behavior: Connections for outgoing email servers using Outlook/Office365 or Gmail accounts will establish an OAuth2 authentication for the smtp server. Through the `ir_mail_server` form view, one can fetch the necessary tokens by logging in into their Microsoft/Gmail account. Not specifying an username (`smtp_user`) on the `ir_mail_server` record will not produce an error while fetching those tokens. But when trying to test the connection or use that server to send an email, even if the FROM header is correctly set (i.e. the account email address authorized to sent emails), the smtp connection will fail. This is due to the fact that when `smtp_user == False`, the respective method `_generate_outlook_oauth2_string` or respectively `_generate_oauth2_string` will not be called and send the necessary OAuth2 string when sending an email through the smtp connection. This will lead to a `5.7.57 Client not authenticated to send mail.` error. # After this change: Add specific UserErrors that get called if `smpt_user == False` before the actions in `open_google_gmail_uri` and `open_microsoft_outlook_uri` get called. This forces the user to input a `smpt_user` (field Username) before the login page for OAuth2 gets called to fetch the tokens. Note: there is no check if the user inputs the right username, only that the field is not empty. So it is still possible to input an invalid username. opw-3268246 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#121700 Forward-Port-Of: odoo/odoo#121048
Before this commit, links scrolling to an anchor with a special character did not work and displayed a traceback. The issue was that to check that the anchor is valid, we don't need to check that the anchor is a valid url as we have been doing since these commits [1], [2]. But we only need to check if the jQuery selector is valid to correctly target the element to which the page must scroll. Indeed, the anchor widget returns stuff like 'ok%C3%A9%25' when typing 'oké%' wich is not valid
Original PR description
Before this commit, links scrolling to an anchor with a special character did not work and displayed a traceback. The issue was that to check that the anchor is valid, we don't need to check that the…
Before this commit, links scrolling to an anchor with a special character did not work and displayed a traceback. The issue was that to check that the anchor is valid, we don't need to check that the anchor is a valid url as we have been doing since these commits [1], [2]. But we only need to check if the jQuery selector is valid to correctly target the element to which the page must scroll. Indeed, the anchor widget returns stuff like 'ok%C3%A9%25' when typing 'oké%' wich is not valid jQuery selector. It has to be encoded to '#ok\\%C3\\%A9\\%25' to be valid and that's what this commit does. Also, this commit detect if the success URL of the redirect of a from is the current page to perform a scroll to the anchor instead of a redirect. Also, before this commit, the page froze when we clicked on the "submit" button of a form that redirected to an anchor that did not exist. [1]: https://github.com/odoo/odoo/commit/0abfaeda96c2eaa868cc7fc5fa1926dfa90fc420 [2]: https://github.com/odoo/odoo/commit/b492bde6a121be1c15ed90ce0827fcfd72a12f5c task-2172312 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#121463 Forward-Port-Of: odoo/odoo#82059
When archive a loyalty program which have somes rules and rewards and the unarchinving it will not have the rules and rewards that it had before. Steps to reproduce the error : 1- install sales 2- activate Discounts, Loyalty & Gift Card in sales settings 3- go to sales/products/Discount&loaylty 4- select one of the default programs and try to archive it and unarchive it after 5- you will not get the rules that it had before The problem was in the toggle_active function of the loyalt
Original PR description
When archive a loyalty program which have somes rules and rewards and the unarchinving it will not have the rules and rewards that it had before. Steps to reproduce the error : 1- install sales 2- activate Discounts, Loyalty & Gift Card in sales settings 3- go to sales/products/Discount&loaylty 4- select one of the default programs and try to archive it and unarchive it after 5- you will not get the rules that it had before The problem was in the toggle_active function of the loyalty program we try to unarchive already unarchived items because we do ```program.rule_ids``` so it will get only active items. opw-3299295 Forward-Port-Of: odoo/odoo#120902
The generation of the assets may make this step fail randomly. The pregenerate is not enough because this is generating assets for website2. This issue will be partially solved in master with #121376 by not generating an asset if a close one is found in the database. runbot-error-9545 Forward-Port-Of: odoo/odoo#121638
Original PR description
The generation of the assets may make this step fail randomly. The pregenerate is not enough because this is generating assets for website2. This issue will be partially solved in master with #121376 by not generating an asset if a close one is found in the database. runbot-error-9545 Forward-Port-Of: odoo/odoo#121638
Set "Cash Discount Tax Reduction" to "Always" Create an invoice with a tax line Set Payment term to "2/7 Net 30" [1] Go to "journal items" tab Early payment discount lines are set correctly Set payment term to "30 Days", Save Set Payment term to "2/7 Net 30", Save Issue: An extra tax line appear in journal items because an old tax line was not deleted and a new one is created [1] Payment terms: 30 Days, 2% Early Payment Discount under 7 days opw-3285534 Description of the iss
Original PR description
Set "Cash Discount Tax Reduction" to "Always" Create an invoice with a tax line Set Payment term to "2/7 Net 30" [1] Go to "journal items" tab Early payment discount lines are set correctly Set payment term to "30 Days", Save Set Payment term to "2/7 Net 30", Save Issue: An extra tax line appear in journal items because an old tax line was not deleted and a new one is created [1] Payment terms: 30 Days, 2% Early Payment Discount under 7 days opw-3285534 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#121644 Forward-Port-Of: odoo/odoo#120014
Before this commit this tour was often failing. It seems to be because there were some requests still being executed / received after the test was marked as successful and browser getting killed. According to the logs, even when the tour is actually not failing, there is still some unexpected requests going on. With this commit, saving and waiting the edit mode to be exited will prevent all those requests issues, as it seems like the requests done after exiting edit mode are all awaited be
Original PR description
Before this commit this tour was often failing. It seems to be because there were some requests still being executed / received after the test was marked as successful and browser getting killed.…
Before this commit this tour was often failing. It seems to be because there were some requests still being executed / received after the test was marked as successful and browser getting killed.
According to the logs, even when the tour is actually not failing, there is still some unexpected requests going on.
With this commit, saving and waiting the edit mode to be exited will prevent all those requests issues, as it seems like the requests done after exiting edit mode are all awaited before marking the test as successfull.
== Before the fix success case ==
- Tour snippet_editor_panel_options on step: 'The text toolbar should still be visible, and the text still selected. (trigger: #oe_snippets .o_we_customize_panel > #o_we_editor_toolbar_container)'
- GET /website/static/src/img/snippets_options/header_template_default.svg HTTP/1.1" 200 - 0 0.000 0.003
- [Same GET for 10 other header templates]
- test successful
- Session expired
- POST /website/theme_customize_data_get HTTP/1.1" 200 - 3 0.001 0.003
- [2 lines above x10]
- Deleting cookies and clearing local storage
- Navigating to: "about:blank"
- Navigation result: {'frameId': 'A538603CC37A4E9EBA99B8624C1CD34E', 'loaderId': '9187051DD3D9477FA4EDEB1A544D584E'}
- Waiting for frame 'A538603CC37A4E9EBA99B8624C1CD34E' to stop loading
- waiting for threads: [<Thread(odoo.service.http.request.139669352166976, started 139669352166976)>]
== Before the fix error case ==
- Tour snippet_editor_panel_options on step: 'The text toolbar should still be visible, and the text still selected. (trigger: #oe_snippets .o_we_customize_panel > #o_we_editor_toolbar_container)'
- GET /website/static/src/img/snippets_options/header_template_sidebar.svg HTTP/1.1" 200 - 0 0.000 0.004
- [Same GET for 10 other header templates]
- test successful
- GET /web/static/img/smile.svg HTTP/1.1" 200 - 0 0.000 0.001
- GET /web/static/img/spin.svg HTTP/1.1" 200 - 0 0.000 0.001
- Failed to fetch
- Asking for screenshot
- Trying to set result to failed (TypeError: Failed to fetch) but found the future settled (<Future at 0x7f8fa1a25120 state=finished returned bool>)
- Deleting cookies and clearing local storage
- Screenshot in: /data/build/tests/36222061-master-all_no_autotag/screenshots/sc_20230513_220042_739175_TestUi.png
- Navigating to: "about:blank"
- Navigation result: {'frameId': 'E1A779132E972A440E5FE892BBBC9FEC', 'loaderId': '822ACED443DB0C84F57DD4A1FF451D5B'}
- Waiting for frame 'E1A779132E972A440E5FE892BBBC9FEC' to stop loading
- waiting for threads: [<Thread(odoo.service.http.request.140254747010624, started 140254747010624)>]
== After the fix case ==
- Tour snippet_editor_panel_options on step: 'iframe body:not(.editor_enable)'
- GET /web/static/img/spin.svg HTTP/1.1" 200 - 0 0.000 0.003
- POST /website/theme_customize_data_get HTTP/1.1" 200 - 8 0.002 0.035
- [Many other POST/GET requests]
- test successful
- Deleting cookies and clearing local storage
- Navigating to: "about:blank"
- Navigation result: {'frameId': '4B87BC8A50A3FEBD7D508394DD5BDB19', 'loaderId': '7CCB3B6434B52B456A1AA470C3CFA1BF'}
- Waiting for frame '4B87BC8A50A3FEBD7D508394DD5BDB19' to stop loading
- waiting for threads: [<Thread(odoo.service.http.request.139744500471360, started 139744500471360)>]
runbot-15312
Forward-Port-Of: odoo/odoo#121635Previously, pos payment methods were ordered by sequence only, this can cause issues because the default cash payment method is considered to be the "first", ie the one with the lowest sequence, but because they are created with a sequence of 0 by default, if there is more than one cash payment method, their order is indeterminate. This can cause issues if the order of payment methods given to the pos application during load_pos_data doesn't match the order of the payment methods obtained in
Original PR description
Previously, pos payment methods were ordered by sequence only, this can cause issues because the default cash payment method is considered to be the "first", ie the one with the lowest sequence, but…
Previously, pos payment methods were ordered by sequence only, this can cause issues because the default cash payment method is considered to be the "first", ie the one with the lowest sequence, but because they are created with a sequence of 0 by default, if there is more than one cash payment method, their order is indeterminate. This can cause issues if the order of payment methods given to the pos application during load_pos_data doesn't match the order of the payment methods obtained in get_closing_data, as tests will use the first cash payment method when paying, and then compute the cash difference with the default cash payment method which is supposed to be the first received in load_pos_data. If the order is different then the cash difference will not match what's expected and the test will randomly fail. This commit adds the id to the _order of the pos payment method model, causing the ordering to be deterministic. It also removes the order from the search params used for this model in load_pos_data, as it was already the default ordering but was now masking the correct order newly defined on the model. Forward-Port-Of: odoo/odoo#121768
**Current behavior before PR:** In mass_mailing entering a hax color for text trigger traceback. **Desired behavior after PR is merged:** Now, the traceback will not be triggered and color will be applied to the text Task-3271517 Forward-Port-Of: odoo/odoo#120507
Original PR description
**Current behavior before PR:** In mass_mailing entering a hax color for text trigger traceback. **Desired behavior after PR is merged:** Now, the traceback will not be triggered and color will be applied to the text Task-3271517 Forward-Port-Of: odoo/odoo#120507
This commit refactors completely how deferred revenues and expenses are managed: - they are now completely unrelated to the model of Assets: - the link is directly done between the original move and its deferred moves - no need to create an deferred models in advance - a new option to group deferred entries together is available - this is specially useful for big DBs with lots of subscriptions for instance - two new reports are available to have an overview of all deferred reve
Original PR description
This commit refactors completely how deferred revenues and expenses are managed:
- they are now completely unrelated to the model of Assets:
- the link is directly done between the original move and its deferred moves
- no need to create an deferred models in advance
- a new option to group deferred entries together is available
- this is specially useful for big DBs with lots of subscriptions for instance
- two new reports are available to have an overview of all deferred revenues and expenses for each account
- where the user can also generate the grouped deferred entries manually
task-id 3225099
Community: https://github.com/odoo/odoo/pull/121051
Enterprise: https://github.com/odoo/enterprise/pull/40902
Upgrade: https://github.com/odoo/upgrade/pull/4662
task-id 3225099
Forward-Port-Of: odoo/odoo#121051When calculate Days to Prepare Manufacturing Order, we didn't take into account Days to Purchase and Security Lead times for Purchaseing of the company. In this commmit, if the (sub-)bom has company_id set, these two days will added to the calculation. Task-3078049 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#121657 Forward-Port-Of: odoo/odoo#116563
Original PR description
When calculate Days to Prepare Manufacturing Order, we didn't take into account Days to Purchase and Security Lead times for Purchaseing of the company. In this commmit, if the (sub-)bom has company_id set, these two days will added to the calculation. Task-3078049 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#121657 Forward-Port-Of: odoo/odoo#116563
Fix the cash rounding displayed on accounting documents such as customer invoices, credit notes, vendor bills and vendor refunds. The amount that was computed was incorrect in most case. The only case that was working was the customer invoice when using the company currency. The PR address the issue of cash rounding for all account move type and when using foreign currencies as well. Steps to Reproduce - Activate Cash Roundings. - Create a half-up cash rounding with a precision of 1. -
Original PR description
Fix the cash rounding displayed on accounting documents such as customer invoices, credit notes, vendor bills and vendor refunds. The amount that was computed was incorrect in most case. The only…
Fix the cash rounding displayed on accounting documents such as customer invoices, credit notes, vendor bills and vendor refunds. The amount that was computed was incorrect in most case. The only case that was working was the customer invoice when using the company currency. The PR address the issue of cash rounding for all account move type and when using foreign currencies as well. Steps to Reproduce - Activate Cash Roundings. - Create a half-up cash rounding with a precision of 1. - Create a new bill with a pre-tax amount of 378 and a tax rate of 15% - Apply the cash rounding to the bill and save. - Review the "Total Rounded" value. Expected Results: The 'Total Rounded' value should be 435.00 Actual Results: The displayed 'Total Rounded' value is 434.40 opw-3235723 opw-3236011 opw-3277942 opw-3271713 task-3257577 Co-authored-by: sesn-odoo --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#121794 Forward-Port-Of: odoo/odoo#119545
In MPS, when set inderect demand on a component, DTPMO(Days to Prepare Manufaturing Order) are taken into account. DTPMO are usually comes from the compoents themselves, like purchase delivery lead days. When we replenish for components, those days will be taken into account again. In this commit, we ignore DTPMO when set indirect demand for components. Task-3078049 Forward-Port-Of: odoo/enterprise#41184 Forward-Port-Of: odoo/enterprise#38713
Original PR description
In MPS, when set inderect demand on a component, DTPMO(Days to Prepare Manufaturing Order) are taken into account. DTPMO are usually comes from the compoents themselves, like purchase delivery lead days. When we replenish for components, those days will be taken into account again. In this commit, we ignore DTPMO when set indirect demand for components. Task-3078049 Forward-Port-Of: odoo/enterprise#41184 Forward-Port-Of: odoo/enterprise#38713
This commit refactors completely how deferred revenues and expenses are managed: - they are now completely unrelated to the model of Assets: - the link is directly done between the original move and its deferred moves - no need to create an deferred models in advance - a new option to group deferred entries together is available - this is specially useful for big DBs with lots of subscriptions for instance - two new reports are available to have an overview of all deferred reve
Original PR description
This commit refactors completely how deferred revenues and expenses are managed:
- they are now completely unrelated to the model of Assets:
- the link is directly done between the original move and its deferred moves
- no need to create an deferred models in advance
- a new option to group deferred entries together is available
- this is specially useful for big DBs with lots of subscriptions for instance
- two new reports are available to have an overview of all deferred revenues and expenses for each account
- where the user can also generate the grouped deferred entries manually
task-id 3225099
Community: https://github.com/odoo/odoo/pull/121051
Enterprise: https://github.com/odoo/enterprise/pull/40902
Upgrade: https://github.com/odoo/upgrade/pull/4662
task-id 3225099
Forward-Port-Of: odoo/enterprise#40902== ISSUE == If you go to the Contact module and open the map view, primary buttons also have a `.text-white` class which will apply a weird background when clicking on the buttons. This makes its content not readable. == After this commit == We remove the class from the button since it's not needed and causes an issue in terms of accessibility. task-3326312 part of task-3326263 Forward-Port-Of: odoo/enterprise#41042
Original PR description
== ISSUE == If you go to the Contact module and open the map view, primary buttons also have a `.text-white` class which will apply a weird background when clicking on the buttons. This makes its content not readable. == After this commit == We remove the class from the button since it's not needed and causes an issue in terms of accessibility. task-3326312 part of task-3326263 Forward-Port-Of: odoo/enterprise#41042
Issue: With a contract that uses attendances, the work entries generated are always overtimes. Solution: Overtimes are only used in the case of contracts that are based on the calendar. We must therefore bypass the override of the `_get_interval_work_entry_type` method in the case the contract is not based on the calendar. Forward-Port-Of: odoo/enterprise#40978
Original PR description
Issue: With a contract that uses attendances, the work entries generated are always overtimes. Solution: Overtimes are only used in the case of contracts that are based on the calendar. We must therefore bypass the override of the `_get_interval_work_entry_type` method in the case the contract is not based on the calendar. Forward-Port-Of: odoo/enterprise#40978
In 16 we changed the translation to be a json field. So before this pr, this report displayed the account name as a dict with different language. This pr correct that, now the account name is displayed as it should in the report. When printing the fuente report, the first column was empty since the dict has no key named "bimestre". Instead, for the fuente report, we should print the account_name in the first column. By adding a new conditional "td", the account name will be printed in th
Original PR description
In 16 we changed the translation to be a json field. So before this pr, this report displayed the account name as a dict with different language. This pr correct that, now the account name is displayed as it should in the report. When printing the fuente report, the first column was empty since the dict has no key named "bimestre". Instead, for the fuente report, we should print the account_name in the first column. By adding a new conditional "td", the account name will be printed in the first column of the report. For the ICA report, we keep it like it was by putting the bimestre in the first column. opw-3214033 Forward-Port-Of: odoo/enterprise#41092 Forward-Port-Of: odoo/enterprise#40218
Steps to reproduce: Make a product with a line break (e.g. `\n`) in its name. add it to a PoS order, validate and attempt to close the session. Get an error: `SyntaxError: EOL while scanning string literal` The problem is that line breaks are not escaped, and cause the while rendering the `dsfinvk_cash_point_closing_template` view. opw-3265441 Forward-Port-Of: odoo/enterprise#41114
Original PR description
Steps to reproduce: Make a product with a line break (e.g. `\n`) in its name. add it to a PoS order, validate and attempt to close the session. Get an error: `SyntaxError: EOL while scanning string literal` The problem is that line breaks are not escaped, and cause the while rendering the `dsfinvk_cash_point_closing_template` view. opw-3265441 Forward-Port-Of: odoo/enterprise#41114
This module adds fields and behaviors to the e-commerce checkout form needed by the localization for Chile, to help the correct invoicing information. This PR is the continuation of PR #30083 Forward-Port-Of: odoo/enterprise#38737
Original PR description
This module adds fields and behaviors to the e-commerce checkout form needed by the localization for Chile, to help the correct invoicing information. This PR is the continuation of PR #30083 Forward-Port-Of: odoo/enterprise#38737
It is possible to delete attachments linked to an approval request when the latter is in the approved state. You must check that the approval request is in a state other than 'approved', 'refused' or 'cancel' to be able to delete attachments. This creates a problem in the integrity of the information. opw-3285655 Forward-Port-Of: odoo/enterprise#41122 Forward-Port-Of: odoo/enterprise#40773
Original PR description
It is possible to delete attachments linked to an approval request when the latter is in the approved state. You must check that the approval request is in a state other than 'approved', 'refused' or 'cancel' to be able to delete attachments. This creates a problem in the integrity of the information. opw-3285655 Forward-Port-Of: odoo/enterprise#41122 Forward-Port-Of: odoo/enterprise#40773
**Current behavior before PR:** When we try to insert an appointment on list it inserts below the list **Desired behavior after PR is merged:** Now we can insert an appointment on list where cursor is. Task-2859691 Forward-Port-Of: odoo/enterprise#35845 Forward-Port-Of: odoo/enterprise#31617
Original PR description
**Current behavior before PR:** When we try to insert an appointment on list it inserts below the list **Desired behavior after PR is merged:** Now we can insert an appointment on list where cursor is. Task-2859691 Forward-Port-Of: odoo/enterprise#35845 Forward-Port-Of: odoo/enterprise#31617