When looking for a so_line linked to the task, the sale_service module accidentaly removed the already referenced so_line.
The desired behaviour is:
1/ Check if task is linked to so_line, if yes reference it
2/ If not, then let the dict as it was before, do not put False if there already was a value (for example something that sale_timesheet might have found)
The code used the key vals['company_id'] while it was not checked it was present
in the write call (and it should not necessary).
If a key is not present, browse the record instead.
Fixes#8906
Users not belonging to the project user group can not access the model
project.task.history.cumulative
Hide the dashboard for them
Fixes#8606Closes#8607
Fixes#8902
In order for the payment wizard to work, the accounts in invoice header, account_id, should have reconcile=True.
In l10n_br the accounts are, amongst others, "Clientes" and "Fornecedores", a the chart of account should make them by default as reconciliable.
- Extract sub-templates for client action's sidebar to ease the livechat
integration
- Handle livechat's channel_type and messages in chat manager
- Make scrollBottom work in the frontend
Introduce test rules in demo data instead of during the test, because their
creation/update restarts the registry. Moreover, the registry is only patched
after all installations. So the test must be run at post-install phase.
The `fiscal_position` in the values dict for the `create`
expects an id, not a browse record.
This prevented to automatically create purchase order
from a sale order in an inter company environment
when the fiscal position of the companies were set.
opw-651443
Previously, if there was a sale_order_id but it was wrong,
like when the sale order was deleted for example, the function
didn't return a sale order, even with force_create=True.
It used to pass the first 'if' as sale_order_id had a value, so
no new sale order was created. However, as sometimes the id was
referring to a non-existant sale_order, a sale_order.exists() test
was used later, resulting in the function sometimes returning None,
even with force_create = True.
Proposed solution is to test the existence of the browse record with
the given id earlier, instead of testing the existence of the id itself.
On initialisation summernote call update method with oStyle.range is undefined.
The range can be undefined because the update is call before any selection and attach method from summernote call the update without range.
The method summernote_table_update try to use the range and raise an exception.
fix: Check if oStyle.range exits.
Issue: when the user create a pricelist item, the function fields (name, price) are updated only on save (the form view) and not on change.
In the pricelist form view, the 'item_ids' one2many receive empty value from the modal (name, price).
Fix: update 'name' and 'price' field to the new v8 api.
The read_group collating user badge counts is extremely slow when
there's a large number of users (possibly even slower than 8.0's naive
approach), replace the whole thing by a single SQL query seems to yield
pretty significant (~2 orders of magnitude) performance improvements on
the computing function resulting in ~1 order of magnitude improvement
for the page as a whole.
1) Domain of account.analytic.line
When an expense is created with a cost of zero, the quantity delivered
on the SO line is not updated.
2) Delivered quantity updateable if manual tracking
The delivered quantity cannot be manually modified if it is calculated.
Therefore, we need to restrict the condition to a manual tracking.
3) Upselling conditions
Upselling is possible only for a product invoiced on ordered quantities
for which we delivered more than expected.
html_escape_keep_url is now included in plaintext2html method (since the opposite method html2plaintext transform link tags into simple url text). Force the posted message to be plaintext (adding directly html is not safe), and trim the posted message before submitting it.
The url are now clickable again in chat message, but also in chatter messages !
Use the (dbname, 'ir.needaction', partner_id) channel to broadcast needaction to partner. Some message can be needaction, without belonging to a mail channel of the partner. Keep the (dbname, 'res.partner', partner_id) channel for conversation header.
If calling more than once `sendmany` (or `sendone`) on the same http request, the `NOTIFY imbus` will tell pertinent polling thread to
fetch their notifications in the bus table, which will not contain the new notifications, since they are not yet committed. For some reason, this
doesn't happen when calling only once `sendmany`. Committing the notifications breaks the tests since no rollback is possible.
So, `self._cr.commit()` should not be called in a test environement.
In this case, we cannot use `isinstance(self._cr, TestCursor)` since TestCursor is only avaiblable for http request in test mode. Here the cursor is a normal cursor, and to determine if we are in test mode, there is no other option than checking the config of the odoo server.
Previous commit (3304b31938) was not performant enough for AL, so got special autorization to make a particular controller for mail.message author avatar. Avatar of message is avaiblable if current user has 'read' access right to the document. Otherwise the default avatar is one white pixel.
I miss commit c3c2281a4d, so the search on attachment url is useless now.
Also check if the return content is not None, avoiding to decode base64 a None object.
The field timesheet_ids (hr.analytic.timesheet) and analytic_account_id
(account.analytic.account) should not be accessible by the portal user.
Fixes#8338Closes#8354