- Create a portal user
- Set an email address
- Create a project with tasks / issues
- Create a task / issue, set the portal user as follower => he should
have access to the task from URL `/my/task/<id>`.
- On an email received (e.g. when the user is set as follower), click on
'View Task'
The user is redirected to the chatter instead of `/my/task/<id>` or
`/my/issue/<id>`.
In method, `_redirect_to_record`, the record is browsed as `sudo`.
Therefore, in `get_access_action`, `self.env.user` is the admin.
We check the context to get the original user.
opw-1814577
Before checking the first element of
'partner_id.child_ids', rather check that
the partner and not the object has children,
to avoid crashes when the partner of the PO
is a company.
opw-1826359
- Set an employee in a department A
- Create some timesheet entries for this employee, validate them
- Change the employee to department B
An error arise:
> You cannot modify an entry in a confirmed timesheet.
The field `department_id` on the `account.analytic.line` is a related on
`user.employee_ids.department_id`. By changing the department on the
employee, it changes the department on the analytic line (= timesheet).
There is no real need of a related field. Actually, it makes more sense
to change the department with the user (e.g. at creation or change of
the user), and then do not change it later on. Indeed, a timesheet entry
that was created when the employee was in department A should remain in
department A even if the employee change of department.
opw-1824913
- This commit fixes crashes occuring when the expiry date for a credit card was invalid.
Instead of crashing we now warn the customer that the expiry date is invalid.
IT was not possible to differenciate between variants as using the
product.template name in the message.
Same for the location were it was using the last level name (e.g. 'Shelve 42')
instead of the full path
Closes#20174
Example failing before this commit:
- amount = 11.01
- decimal = 11.01 % 1 = 0.009999999999999787
- 0.009999999999999787 < 0.01
Use correct float_is_zero method to test if there is decimal or not
Closes#18306
As explained in #17386, _auto=False on a model is used for report where the
table is explicitely created in init method.
To create a model without any table, AbstractModel should be used.
Closes#19448
At stock installation, the warehouse0 has the name of the first company found
(order "sequence, name"), while the comapny_id field is
`_company_default_get('stock.inventory')` (the company of the user installing
the stock module).
In a multi-company environment, it is possible than both results are different
and having name = 'Company A' and company_id = 'Company B'.
Use the name of the default company as default value for the field name.
Note that 'stock.inventory' is not needed in _company_default_get call but
kept to match the default of company_id (in case of override).
Using a default on the field will impact all the future records but should,
hopefully, not be problematic as it is a valid default value.
Closes#19563
- Go to CRM > Reports > Pipeline
- Click on one of the Favorites filters (e.g. 'Opportunities Won Per
Team')
A JS error arises.
The filters are not correct. `__count` should be `__count__` and
`expected revenue` should be `expected_revenue`.
opw-1825759
Let's consider user1 and user2 allowed to access company1 and company2
In multicompany with shared partners unchecked in general settings,
if one of two users sharing the same event tried to access the event
when they are not in the same current company at this moment, an access error
was raised.
opw:1817475
RUNNING_TOUR_TIMEOUT is equal to 10 seconds, which sometimes is not enough on
travis and we need a way to increase timeout per step.
Note: Exact same commit was already merged for version 11.0 here: 67e2372
Note 2: this is technically a IMP, not a fix, but I (GED) will accept this, since this should only impact the testing functionality. Also, this was done in 11.0, so in some sense, it was proved to work.
(PR: #21750)
When a pricelist was set on the public user that was different from that of the
website, the prices were displayed using the public user default currency,
but the currency symbol displayed was the website default currency.
The issue was that in the template, the currency was accessed as a computed,
related field of website while the price was obtained using a function call.
In the first case the field was obtained using sudo, and thus the call would not
get the public user pricelist.
Equivalent to #23519 for odoo 11.0
opw-1819230
- Set 'Round Globally'
- Create an excluded tax of 10 %
- Create an invoice for a product costing 34.55, and apply the tax.
The tax on the invoice is 3.46, while the tax on the tax line is 3.45.
When rounded in `compute_all`, the tax amount is 3.455, which is the
value expected. However, the `create` method won't round this value
before storing, leading to the inconsistency.
We make sure to round the amount to the currency precision, so the
value 3.46 is recorded.
opw-1819902
Issue: when the inverse method writes on a dependency of the first record, it
invalidates the cache of the field for the other records... Solution: simply
evaluate the inverse method one record at a time.
When the `create` or `write` method receives an empty string for a date
or a datetime field, PostgreSQL will fail since this is not an accepted
value for this field type.
We fallback on `None` for falsy values.
opw-1819336
@KangOl : watch out when forward-porting, the signature of
`convert_to_column` has changed in saas-14.
Before this commit, when clicking on a event of a pinned calendar view
in the Dashboard app, nothing occurs.
The cursor turns into pointer type when hovering on an event, suggesting
that clicking on it should do something. Kanban and list views redirect
the user to the document's form on click, so a similar behaviour is
expected with calendar view.
This is indeed the case in v11, but not in v10. The reason that it works
in v11 for calendar is that when we click on a record of a pinned views
in dashboard, it performs a do_action to open the form view. In v10, however,
it performs a do_switch_view to the form view. Since there's only one view mode
when we pin something in dashboard, the processing of the click fails silently.
Kanban and list were working because the dashboard app overrides their
handlers functions when loading the views, which wasn't the case with calendar.
This commit solves the issue by also overriding the handler function
of calendar view, so that it performs a do_action to open a form instead
of performing a do_switch_view to the form view.
(Note: pivot and grid views work, because they use do_action)
opw-1817725
Properly override `_track_template` similarly to what is done for
`project.task`, so the method can accept a recordset.
Co-authored by: Nicolas Martinelli <nim@odoo.com>
Closes#23466
opw-1823244
Before that, partial payments on open invoices were ignored by the query, due to the fact we used checked "reconciled=false" instead of "full_reconcile_id is not null".
Before that, partial payments of invoices were not shown into the partner ledger unless the option to show reconciled entries was activated. This was due to the fact we checked full reconciliation with the field "reconciled" instead of the full_reconcile_id, so the query did not return the partial payments (which have reconciled=True, but don't have any full_reconcile_id unless the invoice is fully paid).
Use case:
Have a user with access rights "See Own leads"
In the CRM settings check the "use leads" boolean
Before this commit:
This user couldn't create a lead directly nor qualify it as an opportunity
AND
the default sales team on the lead displayed as 'Unknown'
After this commit:
This user can read the sales team, even though he is not a member of them
He can create leads on the default sales team
And qualify them as opportunities
OPW 1816309
ref #22360
Make an invoice
Make a payment
Unreconcile them
Before this commit:
The invoice and the payment weren't display in the aged partner balance
After this commit:
Both payment and invoice *can* be included in the balance
OPW 1819359
- Set the product price decimals to 5
- Create a product costing 0.32
- Create a pricelist with 20 % discount when quantity is > 100
- Set a default fiscal position on the POS
- Lauch a POS session
- Add 500 units of the product
The unit price is rounded to 0.26, while it should be 0.256.
This is due to the call to `compute_all`, which will round to the
currency precision.
opw-1816997
The payment lines shown in the payment widget on invoices, should only list reconciliation made towards the lines sharing the same account as the invoice/bill. Previously, if a tax or an invoice line was using another account set reconciliable, any payment made against this account would be shown in the payment widget, which is wrong.
OPW: 1805968
On creation of a new landed cost,
in the web client,
the name was filled with the next sequence
`self.env['ir.sequence'].next_by_code('stock.landed.cost')`
but then, as the field is readonly,
it is not sent in the create values to the server,
and therefore the server sets again the default value
and generates a new sequence name.
The previous assigned sequence name is therefore never assigned,
and there was an obvious gap in the landed costs sequences.
Besides, using a sequence as a default is never a good
idea, as the record can be discarded, and this will not discard
the sequence number that has been used. There will be again
a gap in the sequence.
See this forum topic for reference:
https://www.odoo.com/forum/help-1/question/how-to-handle-reading-and-writing-to-read-only-fields-2247#answer_2281
I therefore remove the default value,
and use the exact same behavior than on the sale order,
which is pretty similar:
- The default value is set to `New`
- Then, on creation, it is replaced to the actual sequence number.
https://github.com/odoo/odoo/blob/bfe88c50e2b4975a23c624cc5b5171158bb9f855/addons/sale/models/sale.py#L273-L279
opw-1823133
Note: This can be back-ported to Odoo 9.0,
but the fix will be different since the module has
been converted to the new API since then.
If I did it in 9.0 in the first place,
mostlikely it would not have been forward ported correctly.