Wednesday, June 3, 2020
31 changes · master
New functionality added to Odoo
Odoo can now automatically create CRM leads from event registrations based on configurable rules. This helps sales teams follow up with attendees more quickly, using event, attendee, order, and questionnaire details to pre-fill useful lead information.
Enhancements to existing features
List view buttons now have a small amount of added spacing between them. This makes the controls easier to distinguish and improves clarity for users working in lists.
Original PR description
A slight margin has been added between list view buttons to improve clarity.
Resolved issues and error corrections
This fixes a duplicated field shown in the project task list, reducing clutter and potential confusion for users. The task list should now present information more clearly without repeating the same data.
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Miscellaneous changes
Description of the issue/feature this PR addresses: opw-2266710 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#52268 Forward-Port-Of: odoo/odoo#52261
Original PR description
Description of the issue/feature this PR addresses: opw-2266710 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#52268 Forward-Port-Of: odoo/odoo#52261
The job description feature snippet has been visually simplified by removing borders and background colors from its columns. This creates a cleaner, less cluttered presentation for job pages and helps applicants focus on the content.
Original PR description
Remove borders/background-color in columns of the features snippet in job description. 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
Popovers are now easier and more reliable to use: they can be closed from within, toggled by clicking their target, and styled differently when open. The update also reduces display flicker, improves sizing for content, and helps prevent overlap with other interface elements.
Original PR description
Close can now be requested by children (slot content) with the event `o-popover-close`. This feature is necessary if we want a "close" button inside the popover itself, which is the case for mail.activity "Mark Done". Clicking on the popover target now acts as a toggle, which is also a feature that was expected from the previous popover implementation. Add a specific class (`o_is_open`) when the popover is displayed to be able to style its target depending on whether it is displayed or not. Ensure computed position is whole number of pixels to prevent flicker issue on Firefox. Remove forced width to let the component grow with its content. Add appropriate z-index to prevent overlap issue with the rest of our interface.
This fix prevents occasional errors when importing PDFs that do not contain embedded files. It helps accounting and invoicing workflows continue smoothly when users upload or process PDF documents from external sources.
Original PR description
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
When a user account is archived, its OAuth login token is now cleared. This prevents a former account from blocking a newly created user with the same email address from signing in with Google.
Original PR description
**Description of the issue/feature this PR addresses:** Instal Google oauth Create a user A with email : `a@a.a` Login With Google on this user Archive this user A Rename email adresse of user A : `a_old@a.a` Create a user B with email : `a@a.a` Try to connect with google : impossible `ERROR: ERREUR: la valeur d'une clé dupliquée rompt la contrainte unique « res_users_uniq_users_oauth_provider_oauth_uid »` This PR reset token when you archive an user. @odony -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Fixes an issue that could prevent cash-in and cash-out entries from being created in the cashbox after a recent accounting change. This helps users record cash movements reliably without errors during daily cash handling.
Original PR description
'account_id' & 'name' are no longer valid fields to create a statement line since: https://github.com/odoo/odoo/commit/caeb782841fc5a7ad71a196e2c9ee67644ef9074 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes a small grammar issue in an access message shown to users. The clearer wording helps make the message more professional and easier to understand when access is restricted.
Original PR description
BEFORE: Only employee can access this database. Please contact the administrator. AFTER: Only employee**s** can access this database. Please contact the administrator.
Steps to reproduce: - Create a bank journal, with "post at" = "Bank reconciliation" - Create a new expense paid by "Company" - Create a report and confirm Current behavior: - the bank move is posted Expected behavior: - the bank move is not posted (and it will be posted during the bank reconciliation) @qdp-odoo -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#51650
Original PR description
Steps to reproduce: - Create a bank journal, with "post at" = "Bank reconciliation" - Create a new expense paid by "Company" - Create a report and confirm Current behavior: - the bank move is posted Expected behavior: - the bank move is not posted (and it will be posted during the bank reconciliation) @qdp-odoo -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#51650
This commit attempts to fix the emoji widget position issue (for 'mass_mailing' & 'mass_mailing_sms' modules in enterprise versions) on mobile screen. In this commit, the following changes have been made : 1- Add css media-breakpoint on "o_mail_emojis_dropdown" class to override widget position in small breakpoint and narrower. This fix was made with the 'smallest possible changes' taking in consideration effects on : - "text_emojis" widgets, since they use same class : "o_mail_emoji
Original PR description
This commit attempts to fix the emoji widget position issue (for 'mass_mailing' & 'mass_mailing_sms' modules in enterprise versions) on mobile screen. In this commit, the following changes have been made : 1- Add css media-breakpoint on "o_mail_emojis_dropdown" class to override widget position in small breakpoint and narrower. This fix was made with the 'smallest possible changes' taking in consideration effects on : - "text_emojis" widgets, since they use same class : "o_mail_emojis_dropdown". - Emoji widget position in community (This fix won't break widget position in community version). Task ID 2224393 Forward-Port-Of: odoo/odoo#50388
Before this commit, the Start now button uses the first slide (a content slide or a category slide). If the first slide was a category slide then an error was raised. Now, only content slides are used to start the survey. opw-2265250 Forward-Port-Of: odoo/odoo#52263
Original PR description
Before this commit, the Start now button uses the first slide (a content slide or a category slide). If the first slide was a category slide then an error was raised. Now, only content slides are used to start the survey. opw-2265250 Forward-Port-Of: odoo/odoo#52263
Description of the issue/feature this PR addresses: Changing the rounding method for new companies, it should be round per line and not globally, this is done because the logic of the accounting in Peru for the calculation of the taxes demands it. -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#51509
Original PR description
Description of the issue/feature this PR addresses: Changing the rounding method for new companies, it should be round per line and not globally, this is done because the logic of the accounting in Peru for the calculation of the taxes demands it. -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#51509
Before this commit, `self.env.user.company_id.id` may represents different company from the current company based on context. In this commit, we use correct company based on contextual company. Follow up on b39173a8ffc4ef5dd5524e027a9f0ad746b07bd8 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
Original PR description
Before this commit, `self.env.user.company_id.id` may represents different company from the current company based on context. In this commit, we use correct company based on contextual company. Follow up on b39173a8ffc4ef5dd5524e027a9f0ad746b07bd8 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#52288
Issue - Install "Calendar" app - Activate & Set google calendar credidentials - Go to user preference - Edit and set timezone "Europe/Brussels" e.g. - Go to calendar app - Add an event and sync with google - Go to Settings->Technical->Automation->Scheduled Actions - Edit Google Calendar: synchronization - Set "Next Execution Date" ASAP The timezone on Google Calendar synchronised event is: - Before cron: GMT +2 - After cron: UTC Cause If no timezone is provided
Original PR description
Issue - Install "Calendar" app - Activate & Set google calendar credidentials - Go to user preference - Edit and set timezone "Europe/Brussels" e.g. - Go to calendar app - Add an event and sync with google - Go to Settings->Technical->Automation->Scheduled Actions - Edit Google Calendar: synchronization - Set "Next Execution Date" ASAP The timezone on Google Calendar synchronised event is: - Before cron: GMT +2 - After cron: UTC Cause If no timezone is provided in context, it will by default use 'UTC' timezone. Solution Like display time on odoo, if no timezone is provided in context, it will check the env.user timezone instead. opw-2228296 Forward-Port-Of: odoo/odoo#51722
Installing sale_margin module on a db with a lot of sale.order was impossible. This commit significantly improves performances. Went from many hours (forecasted) to 15 minutes on a db with 300k orders 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#52238 Forward-Port-Of: odoo/odoo#51700
Original PR description
Installing sale_margin module on a db with a lot of sale.order was impossible. This commit significantly improves performances. Went from many hours (forecasted) to 15 minutes on a db with 300k orders 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#52238 Forward-Port-Of: odoo/odoo#51700
Note : Manual forward port recovering from commit ae1e70eba10112170283cfc17fa95d94dd948d2b Purpose ======= Let's say that the field 'foo' is tracked and defined with a res.group. When the field is modified, a mail.tracking.value is generated, but the reference to the field name is a char field. When displaying the mail.tracking.values on the chatter, a check is done according to the field group to decide whether we should display it or not to the user. See: c7aa8c5#diff-ad8b6db15
Original PR description
Note : Manual forward port recovering from commit ae1e70eba10112170283cfc17fa95d94dd948d2b Purpose ======= Let's say that the field 'foo' is tracked and defined with a res.group. When the field is…
Note : Manual forward port recovering from commit ae1e70eba10112170283cfc17fa95d94dd948d2b Purpose ======= Let's say that the field 'foo' is tracked and defined with a res.group. When the field is modified, a mail.tracking.value is generated, but the reference to the field name is a char field. When displaying the mail.tracking.values on the chatter, a check is done according to the field group to decide whether we should display it or not to the user. See: c7aa8c5#diff-ad8b6db158187579d2208f233d993c3cR43 So if I rename the field, and if the mail.tracking.value is not modified, the mail.tracking.value magically appears to the users who shouldn't access it before. Note: If the migration is correctly handled, this shouldn't be the case. But manual manipulations on the database could lead to this issue. Specification ============= If the field referenced by the mail_tracking_value doesn't seem to exist, then display its value to system users only, by security. closes #39016 Taskid: 2088634 Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com> Forward-Port-Of: odoo/odoo#52335
Before this commit, a user with attendance administrator rights can see the attendances of all users of all companies and not only the companies he is allowed. Now, the administrator will only see the attendances of the users of the companies he is allowed. opw-2263577 Forward-Port-Of: odoo/odoo#52339
Original PR description
Before this commit, a user with attendance administrator rights can see the attendances of all users of all companies and not only the companies he is allowed. Now, the administrator will only see the attendances of the users of the companies he is allowed. opw-2263577 Forward-Port-Of: odoo/odoo#52339
Steps to reproduce the bug: - Let's consider a customer company partner P - Let's consider, P1, a child partner of P - Create a SO for P1 - Archive P1 Bug: The SO count in the smart button Sales of P was 0 instead of 1 opw:2267828 Forward-Port-Of: odoo/odoo#52237
Original PR description
Steps to reproduce the bug: - Let's consider a customer company partner P - Let's consider, P1, a child partner of P - Create a SO for P1 - Archive P1 Bug: The SO count in the smart button Sales of P was 0 instead of 1 opw:2267828 Forward-Port-Of: odoo/odoo#52237
Consider a context-dependent field, and successively access it on a recordset with different contexts. On the first context, the field is correctly computed in batch. After that, the field is always computed one by one. The bug is in the method that determines which records in a given set have no value in cache. On the first context, the cache is empty for the field, so all records are returned. After that, the method considers that all records have a value in cache: they do, but for
Original PR description
Consider a context-dependent field, and successively access it on a recordset with different contexts. On the first context, the field is correctly computed in batch. After that, the field is always computed one by one.
The bug is in the method that determines which records in a given set have no value in cache. On the first context, the cache is empty for the field, so all records are returned. After that, the method considers that all records have a value in cache: they do, but for another context key! Simply using the context key when looking up the cache fixes the issue.
This also makes query counts exact.
Forward-Port-Of: odoo/odoo#52285
Forward-Port-Of: odoo/odoo#52266Cause When kit BOM line quantity is equal to zero in a sale order, it raise error because trying to divide bom_line_data['qty'] / bom_line_data['original_qty'] when computing kit quantities. Solution As BoMs allow components with 0 qty, a.k.a. optionnal components, we simply skip those to avoid a division by zero. Cherry-pick of #38890 opw-2262540 Forward-Port-Of: odoo/odoo#52192
Original PR description
Cause When kit BOM line quantity is equal to zero in a sale order, it raise error because trying to divide bom_line_data['qty'] / bom_line_data['original_qty'] when computing kit quantities. Solution As BoMs allow components with 0 qty, a.k.a. optionnal components, we simply skip those to avoid a division by zero. Cherry-pick of #38890 opw-2262540 Forward-Port-Of: odoo/odoo#52192
The `get_string` method from the `pyusb` package has changed its signature after version 1.0.0b1 so we used to force the IoT Box to use this version to avoid an error. The problem is that version 1.0.0b1 has dependencies that raise DeprecationWarings in Raspbian Buster. We then want to update the version of pyusb that is installed on the IoT Box in 14.0. As the Driver might be loaded to old versions of the IoT Box as well as new ones, we need to check what version of the package is pres
Original PR description
The `get_string` method from the `pyusb` package has changed its signature after version 1.0.0b1 so we used to force the IoT Box to use this version to avoid an error. The problem is that version 1.0.0b1 has dependencies that raise DeprecationWarings in Raspbian Buster. We then want to update the version of pyusb that is installed on the IoT Box in 14.0. As the Driver might be loaded to old versions of the IoT Box as well as new ones, we need to check what version of the package is present on the IoT Box before calling `get_string`. This check will be removed in 14.0, as people will have to use the latest version of the IoT Box. -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#51230
### Description of the issue/feature this PR addresses: 1. user save the company CUIT number with dashes 2. generate the certificate request 3. try to validate invoice in AFIP ### Current behavior before PR: Is throwing error because we are sending to AFIP the CUIT number as the user give us, and we need to sent only the number part cleaned (without dashes, spaces, and points). ```sh Error que me salió por no tener vat: action = self._call_kw(model, method, args, kwargs) F
Original PR description
### Description of the issue/feature this PR addresses: 1. user save the company CUIT number with dashes 2. generate the certificate request 3. try to validate invoice in AFIP ### Current behavior…
### Description of the issue/feature this PR addresses:
1. user save the company CUIT number with dashes
2. generate the certificate request
3. try to validate invoice in AFIP
### Current behavior before PR:
Is throwing error because we are sending to AFIP the CUIT number as the user give us, and we need to sent only the number part cleaned (without dashes, spaces, and points).
```sh
Error que me salió por no tener vat:
action = self._call_kw(model, method, args, kwargs)
File "/home/odoo/custom/odoo/addons/web/controllers/main.py", line 1314, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/home/odoo/.local/lib/python3.7/site-packages/odoo/api.py", line 387, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
File "/home/odoo/.local/lib/python3.7/site-packages/odoo/api.py", line 374, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "/home/odoo/custom/repositories/odoo-enterprise/l10n_ar_edi/models/account_journal.py", line 58, in l10n_ar_sync_next_number_with_afip
last = self._l10n_ar_get_afip_last_invoice_number(sequence.l10n_latam_document_type_id)
File "/home/odoo/custom/repositories/odoo-enterprise/l10n_ar_edi/models/account_journal.py", line 89, in _l10n_ar_get_afip_last_invoice_number
response = client.service.FECompUltimoAutorizado(auth, pos_number, document_type.code)
File "/usr/local/lib/python3.7/site-packages/zeep/proxy.py", line 42, in __call__
self._op_name, args, kwargs)
File "/usr/local/lib/python3.7/site-packages/zeep/wsdl/bindings/soap.py", line 132, in send
return self.process_reply(client, operation_obj, response)
File "/usr/local/lib/python3.7/site-packages/zeep/wsdl/bindings/soap.py", line 194, in process_reply
return self.process_error(doc, operation)
File "/usr/local/lib/python3.7/site-packages/zeep/wsdl/bindings/soap.py", line 299, in process_error
detail=fault_node.find('detail'))
zeep.exceptions.Fault: Server was unable to read request. ---> There is an error in XML document (2, 1565). ---> Input string was not in a correct format.
```
### Desired behavior after PR is merged:
Now we use the clean CUIT number (only numbers) to sent to AFIP and the error we have when trying to connect to AFIP now disappears.
--
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#51135### Description of the issue/feature this PR addresses: There was an error while creating the taxes according to [Catalogo N°5](http://cpe.sunat.gob.pe/sites/default/files/inline-files/anexoV-340-2017.pdf) in the oficial documentation. -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#52294
Original PR description
### Description of the issue/feature this PR addresses: There was an error while creating the taxes according to [Catalogo N°5](http://cpe.sunat.gob.pe/sites/default/files/inline-files/anexoV-340-2017.pdf) in the oficial documentation. -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#52294
Create certificate request and webservice token always with the vat number of type CUIT, if not will raise and error. The CUIT number we sent is a clean one (only numbers) without format (dashes, spaces, points) Related to https://github.com/odoo/odoo/pull/51135 Forward-Port-Of: odoo/enterprise#10553
Original PR description
Create certificate request and webservice token always with the vat number of type CUIT, if not will raise and error. The CUIT number we sent is a clean one (only numbers) without format (dashes, spaces, points) Related to https://github.com/odoo/odoo/pull/51135 Forward-Port-Of: odoo/enterprise#10553
Steps to reproduce the bug: - Let's consider two warehouses W1 and W2 and W1 is the default one - Go to General settings - Check Inter-Company Transactions and select Synchronize sales/purchase orders - Change the Use warehouse to W2 and save Bug: In general settings, the use warhouse was still W1 opw:2259341 Forward-Port-Of: odoo/enterprise#10892 Forward-Port-Of: odoo/enterprise#10884
Original PR description
Steps to reproduce the bug: - Let's consider two warehouses W1 and W2 and W1 is the default one - Go to General settings - Check Inter-Company Transactions and select Synchronize sales/purchase orders - Change the Use warehouse to W2 and save Bug: In general settings, the use warhouse was still W1 opw:2259341 Forward-Port-Of: odoo/enterprise#10892 Forward-Port-Of: odoo/enterprise#10884
### Issue - Install Sign - In a template, add a multiline textarea - Set it for the employee - Sign directly - Write a very long line - Send and view The text is going out of the document ### Cause There is a white-space: pre which force the textarea to not break the line. ### Solution A similar issue has been fixed with 04051774739416 which causes this one because there was a difference of wrapping between the edit view and the rendered view. The so
Original PR description
### Issue - Install Sign - In a template, add a multiline textarea - Set it for the employee - Sign directly - Write a very long line - Send and view The text is going out of the document ### Cause There is a white-space: pre which force the textarea to not break the line. ### Solution A similar issue has been fixed with 04051774739416 which causes this one because there was a difference of wrapping between the edit view and the rendered view. The solution would be to put pre-wrap again and add wrap="hard" to force the wrapped text to have new lines so we have the same result on both sides. **OPW-2254750** Forward-Port-Of: odoo/enterprise#10888 Forward-Port-Of: odoo/enterprise#10754
Before this PR (error description) https://youtu.be/LHBYVCeVNJE After this PR https://youtu.be/RgRrNEwfYCU Forward-Port-Of: odoo/enterprise#10004 Forward-Port-Of: odoo/enterprise#9931
Original PR description
Before this PR (error description) https://youtu.be/LHBYVCeVNJE After this PR https://youtu.be/RgRrNEwfYCU Forward-Port-Of: odoo/enterprise#10004 Forward-Port-Of: odoo/enterprise#9931
### Issue - Install Studio - Create an app, any name - The model's name should contain "settings" - Save or try to access to the app Caught error (not allowed) ### Cause We explicitly do not allow to have settings in the model name 43b5691d709be ### Solution The main purpose of this restriction was to not allow to modify the official settings app but not a custom app. **OPW-2254810** Forward-Port-Of: odoo/enterprise#10887 Forward-Port-Of: odoo/enterprise#1
Original PR description
### Issue - Install Studio - Create an app, any name - The model's name should contain "settings" - Save or try to access to the app Caught error (not allowed) ### Cause We explicitly do not allow to have settings in the model name 43b5691d709be ### Solution The main purpose of this restriction was to not allow to modify the official settings app but not a custom app. **OPW-2254810** Forward-Port-Of: odoo/enterprise#10887 Forward-Port-Of: odoo/enterprise#10839
Slot templates are localized, but we force the use of AM/PM which depending on locale may be unexpected. With this change, we use the "short" time format and to keep it small for much timezone still replace ":00 " by space (this is only done for AM/PM format since there is no space after minutes in 24 hours format). opw-2266483 Forward-Port-Of: odoo/enterprise#10883
Original PR description
Slot templates are localized, but we force the use of AM/PM which depending on locale may be unexpected. With this change, we use the "short" time format and to keep it small for much timezone still replace ":00 " by space (this is only done for AM/PM format since there is no space after minutes in 24 hours format). opw-2266483 Forward-Port-Of: odoo/enterprise#10883