Commit Graph
110766 Commits
Author SHA1 Message Date
Aaron Bohy 5fce37486a [FIX] web: BasicModel: default_get: false m2o inside o2m
Sometimes, a default_get returns a create command for a one2many,
with a dict of values containing value 'false' for a many2one. This
is strictly equivalent to the case where the many2one field isn't
in the dict of values, but we have to handle both cases, and before
this rev., we only handled the latter one.

This happens for example in Sales > Leads (must be activated in the
Settings) > in the list view, check several leads > in 'Action',
click on 'Forward to Partner' > crash.
2017-08-11 10:29:56 +02:00
Aaron Bohy 870aa81ad9 [FIX] web: BasicModel: default_get: handle false value for o2m
The value for one2many fields returned by default_get may be a
list of commands, or directly a list of ids. These cases were
correctly handled. However, it seems that the value can also be
false, and when this happened, it crashed. For instance, go to
Sales > Leads (must be activated in the Settings) > in the list
view, check several leads > in 'Action', click on 'Convert to
Opportunities' > crash.
2017-08-11 10:28:12 +02:00
Aaron Bohy 3b7fb9934d [FIX] web: BasicModel: keep onchanges on unknown fields
Let's assume the following situation: we have a one2many field
displayed as a list in a form view. The list isn't editable, so
when a subrecord is clicked, it is opened in a form view in a
dialog. In this form view, there is a relational field X that is
not in the list. In the main form view, there is a field with an
onchange. When its value changes, the onchange returns a new
value for the one2many: a command 5 (delete all), and a command 0
(create) with a dict of values containing a value for X. However,
as X is unknown as long as no subrecord has been open in the dialog,
the value for X can't be processed (we don't know the type of X,
so we don't know how to process the value).

Before this rev., when this happened, we discarded the value of X.
This caused an issue for example in the Quotation form view (with
website_quote installed):
 - create a new Quotation
 - set PartnerShip Contract as quotation template -> the onchange
   returns two 'create' commands for the order_line one2many
 - click on one of the two subrecords in the one2many -> error.

This rev. ensures to keep changes on unknown fields. We keep them
unprocessed, and once the form view is opened, we process and
apply them.
2017-08-11 10:28:12 +02:00
Jérome Maes a7985a5abb [FIX] sale_timesheet: revenue computation with sudo()
Since the revenue computation is an automatic system
action, it should be done in sudo(). This avoid access
error.
Indeed, if a company creates and confirms a SO, a task
can be created in another company project. Logging
timesheet from the project company is thus impossible
since the user can not access SO line of the origin
company.

Adding sudo() seems better than givin read access
to 'all' so line for timesheet user.
2017-08-11 10:14:31 +02:00
Christophe Simonis 85571bb78c [MERGE] forward port branch saas-15 up to dde62073ba 2017-08-10 16:22:36 +02:00
Christophe Simonis dde62073ba [MERGE] forward port branch saas-14 up to a2361e23ea 2017-08-10 16:17:28 +02:00
Christophe Simonis a2361e23ea [MERGE] forward port branch 10.0 up to 544aa9b04a 2017-08-10 15:45:07 +02:00
Christophe Simonis 544aa9b04a [MERGE] forward port branch saas-11 up to cfbac106b4 2017-08-10 15:00:33 +02:00
Christophe Simonis cfbac106b4 [MERGE] forward port branch 9.0 up to 1aed433f54 2017-08-10 14:58:24 +02:00
xmo-odoo d140f0ef0e [FIX] prefetch issues on computed/related fields (#18644)
When deciding to prefetch records (getting records from the cache with
no value for the field being fetched), if the field was computed
`determine_value` would just get all records, not limited by the normal
prefetch limit; for large recordsets this would generate gigantic
prefetch lists for records we may not need at all.

Fix by applying the `PREFETCH_MAX` limit to records from the cache as is
done in `_prefetch_field`.

Complementarily, when traversing related fields the prefetch
environment would be lost and every record would get an empty prefetch
environment, so the values would ultimately be read one by one.

Example: select (search) 1000 product.product records, access a
related field (e.g. categ_id) in a loop, on the first iteration the
system would first read 1000 templates, then it would read each
categ_id individually, resulting in >1000 SQL queries rather than the
~2 we would expect.

Fixes #18511
2017-08-10 14:51:27 +02:00
Aaron Bohy deba788b4c [FIX] web_editor: html_frame: saving in readonly
A form view record may be saved even if the record is displayed in
readonly (e.g. when a button in the form view is clicked). When
this happened, if there were an html field with html_frame widget
in the form, it crashed (e.g. in Email Marketing > Mass Mailings >
open one > click on Test Mailing).
2017-08-10 13:56:22 +02:00
Aaron Bohy 87133a8235 [FIX] web: BasicModel: correctly reload new records
Commit 7cd2f6370 (in 10.0) recently added attribute special='cancel'
on the 'Cancel' buttons of the Settings views in Odoo. The attribute
wasn't really supported in this case by the old web framework, so
this commit also slightly adapted it, and made it reload the whole
webclient when such a button is clicked.

This commit now needs to be forwardported in saas-16, so we have to
handle the case in the new views as well. Before this rev., it
crashed, because the BasicModel tried to reload a new record (the
one of the Settings form view), so basically it performed a 'read'
RPC on a virtual ID like 'virtual_123', and the server didn't really
appreciate.

This rev. handles the case where a new record is reloaded, and
simply performs a 'default_get' instead of a read. Bonus point:
with the new views, we don't have to reload the whole webclient.
2017-08-10 13:56:22 +02:00
Nicolas Lempereur 354539942d [FIX] website_sale: no-cache IE11 cached cart XHR
IE11 seems to be always using cache when doin an XHR request with the
same GET request.

It can be changed in several ways:

- returning a header: "Cache-Control: no-cache"
- altering the GET request with a nonce
- using the POST method instead of GET

to solve it, in this change the HTTP header is added on the response.

opw-752270
closes #18787
2017-08-10 13:41:37 +02:00
Jérome Maes 9b4c8a4e31 [IMP] hr_timesheet: default employee
'default_get' should return a value for employee
 when asked, even if it is not a timesheet.
2017-08-10 11:29:36 +02:00
Adrien Dieudonne 3a886327a6 [FIX] pad: don't consider record as dirty
Before this rev., when the user opened a form view
containing a pad widget, with a pad url already configured,
a dialog directly popped asking "The record has been
modified, your changes will be discarded. Are you sure you
want to ?".

This is because of an unconventional behavior of this
widget: the field actually encodes an url, the one of the pad
to display. When the user saves, a write is forced so that
the server can retrieve the pad's content and store it in DB.
To force the write, the widget always notifies a fake change
on the url. However, we don't want this change to trigger
the confirm dialog. With this rev., this fake change doesn't
make the record 'dirty'.
2017-08-10 10:33:05 +02:00
Goffin Simon 1aed433f54 [FIX] website_event: Website Event Error when you encode a 0 value in the registration
The function registration_new must return a type json.

opw:765643
2017-08-10 09:27:05 +02:00
Nicolas Martinelli ac392096d8 [FIX] stock: recompute display name
The display name of a location should be recomputed when the name of the
parent location is changed.

opw-761463
2017-08-10 09:00:59 +02:00
Aaron Bohy 1e8f6d01ff [FIX] web,*: send correct context on button clicked
*account_asset

When a button of type 'action' is clicked (execute a given action),
special keys must be set in the context (active_id, active_ids and
active_model). They must be computed regarding the record containing
the clicked button, i.e. if we are in a modal, it must be the id
and model of the record displayed in the modal.

Before this rev., we always sent the id and model of the record
displayed in the background (i.e. the id and model of the url).

This caused a bug in MRP that could be reproduced as follows:
- open a manufacturing order in form view
- click on edit
- click on one of the line of the one2many, and click on the green
  icon to edit a product
- click on the update product quantity button on top of it
- the product field must be correctly filled, which was not the
  case before this rev.
2017-08-10 08:48:32 +02:00
David Monjoie 50957038b9 [FIX] web: fix magic grouping on date fields
Date fields have magic grouping methods to specify how to group on
them like date:month, date:weeks, date:days for example. It needs
to be handled properly since date:month is not a valid field name
but date is.

Steps to reproduce the issue:
- Go to Sales/Dashboard
- Click on My Pipeline
- Group by "Creation Month"

Basically, this can be triggred from any view which has a search
view which defines a group using the magic date grouping methods.
2017-08-10 08:48:30 +02:00
Olivier Dony 08b75b7bcb [FIX] pad: do not crash during record creation
Backport of 0de067cae9
(and 9b8bc5e5a1)

Rev. c5bd509274 attempted to improve the
pad sync mechanism when merging records (tasks), but failed to consider
the case where the pad_url field is not set yet.
This happens at create(), due to the chicken-and-egg problem with the
pad URL depending on the record ID, and therefore set *after* creation.

Ignoring the sync when the URL is not yet set should be enough, as the
URL generation method also takes care of that first sync.
2017-08-09 18:51:16 +02:00
Christophe Simonis 3e54d9b56d [FIX] event_sale: SyntaxError
oversight of previous forward-port
2017-08-09 17:29:27 +02:00
Christophe Simonis c3d710d2f6 [MERGE] forward port branch saas-14 up to 80ac087d6e 2017-08-09 17:11:10 +02:00
Olivier Dony 0de067cae9 [FIX] pad: do not crash during record creation
Rev. c5bd509274 attempted to improve the
pad sync mechanism when merging records (tasks), but failed to consider
the case where the pad_url field is not set yet.
This happens at create(), due to the chicken-and-egg problem with the
pad URL depending on the record ID, and therefore set *after* creation.

Ignoring the sync when the URL is not yet set should be enough, as the
URL generation method also takes care of that first sync.
2017-08-09 16:38:56 +02:00
Christophe Simonis 80ac087d6e [MERGE] forward port branch 10.0 up to f69655829a 2017-08-09 15:53:37 +02:00
Christophe Simonis f69655829a [MERGE] forward port branch saas-11 up to acbcfa3703 2017-08-09 14:43:39 +02:00
Christophe Simonis 6554d95ed0 Revert "[FIX] crm, sale_crm, sales_team, website_crm_partner_assign: change context key"
This commit is not retro-compatible with existing database.
Moreover, the underlying issue (opw-757039) has been fixed via commit
baca743cc0.

This reverts commit 8510c0ce37.
2017-08-09 14:20:54 +02:00
Christophe Simonis acbcfa3703 [MERGE] forward port branch 9.0 up to baca743cc0 2017-08-09 14:14:44 +02:00
Christophe Simonis baca743cc0 [FIX] mail: force attachment type
Do not rely on default value. The context can contains a `default_type`
value intended for another model.
2017-08-09 14:06:13 +02:00
Christophe Simonis 6a767a8900 [MERGE] forward port branch 9.0 up to 3d119c44f3 2017-08-09 13:57:30 +02:00
Christophe Simonis 0c13beb0cc [FIX] mail: check alias contact
Correctly verify method existance before calling it.
2017-08-09 12:44:13 +02:00
Nicolas Martinelli 0c92b616e8 [FIX] website_sale: mandatory fields
All fields appears in bold (= mandatory) in the checkout form, while ony
some of them are.

opw-760328
2017-08-09 11:21:17 +02:00
Lucas Perais (lpe) 3d119c44f3 [FIX] point_of_sale: correct inheriting from pos_order_line being an issue
Before this commit, when creating a pos_order_line_pro_forma, which inherits from pos_order_line but in a different table, the create confused an overriden field (order_id)
When pos_blackbox was installed, pro forma lines would search for an pos_order instead of a pos_order_proforma upon their creation

This commit allows an inheritant of pos_order_line to use the super.create function

OPW 745685

Closes #18755
2017-08-09 11:09:35 +02:00
Jerther 64190abec5 [FIX] web: display full error message
Add missing parenthesis, fixes ebc23b5
2017-08-09 09:53:26 +02:00
Sylvain GARANCHER c29ac80c11 [FIX] product: Avoid browsing on product.product when using product.template
Steps to reproduce the bug:

On an empty database, install the sale module
-Activate product variants : Sales > Settings > Check Products can have
several attributes, defining variants (Example: size, color,...)
-Activate advanced pricelists : Sales > Settings > Check Advanced pricing based
on formulas (discounts, margins, rounding)
-Activate the developer mode
-Go to the product.templates list : Sales > Products
-Go to the debug menu > Edit TreeView and add the price field in the view
-Go to the debug menu > Edit Action and add the value 'uom': 1 in the context field
-Search for a pricelist : Type the name of an existing pricelist, then go to the pricelists
proposal, open the list of proposed pricelists, and select the pricelist

Bug:

The wrong value was sometimes displayed in the price field. To be more exact, the displayed
value for each product.template was the price of the product.product that has the same id.
If a product.template has an id which doesn't exist in the product_product table,
this product disapears from the list.

opw:762663
2017-08-09 09:13:50 +02:00
Sylvain GARANCHER 10f6e145dd [FIX] product: The pricelist variable must be a recordset, not a list
Steps to reproduce the bug:

-On an empty database, install the sale module
-Activate product variants : Sales > Settings > Check Products can have several attributes, defining variants (Example: size, color,...)
-Activate advanced pricelists : Sales > Settings > Check Advanced pricing based on formulas (discounts, margins, rounding)
-Activate the developer mode
-Go to the product.templates list : Sales > Products
-Go to the debug menu > Edit TreeView and add the price field in the view
-Search for a pricelist : Type the name of an existing pricelist, then go to the pricelists proposal,
open the list of proposed pricelists, and select the pricelist

Bug:

A traceback was raised.

opw:762663
2017-08-09 09:13:50 +02:00
Adrien Dieudonne 99e38c04bf [FIX] test_main_flows: don't click behind modal
In the main_flow_tour, we edit a related record of a many2one in a
one2many. A modal is displayed and we make some changes. We
then click on 'Save' in the dialog. The next step is to add a new record
in the one2many, so we click on 'Add an item'. However, we didn't
wait for the modal to be closed before clicking, which is actually not
possible in practice (because of the modal backdrop).

This made the tour fail when run from the browser, since commit
c300e5e, which produces a redraw of the line containing the
many2one that has been edited.

This rev. ensures that we wait for the modal to be closed before
adding a second record.
2017-08-09 09:04:30 +02:00
Christophe Simonis 40a82cdfda [FIX] http: ensure registry is still bound to the request before using it
A user can be logged out during a request, loosing the database (and
thus registry) information.
2017-08-08 19:14:05 +02:00
Nicolas Martinelli 483a4fd8d7 [FIX] hr_expense: do not format total_amount
A `currency_id` field on a `hr.expense.sheet` only makes sense if all
expense lines are in the same currency. It is very likely to not be the
case, so don't format the total amount.

In master, the fild should simply be completely removed.

opw-761098
2017-08-08 18:14:46 +02:00
Thibault Delavallée e1b954f066 [FIX] mail: do not put context as feedback when marking an activity as done
Backport of 9fb86d6fac
2017-08-08 17:58:10 +02:00
Christophe Simonis 8c00b3ef7e [FIX] mail: correct alias access verification
When a replying to an email, the matching alias should first verify access
via the parent record if exists (i.e. check on the project instead of
on the issue itself).
2017-08-08 17:37:17 +02:00
Olivier Dony 17634acb0e [FIX] crm: correct activities filter combination
The new "My Activites" filter introduced by rev. 87e457158e
should not be in the same group of the search view as other activity
filters (Overdue/Today/Upcoming), otherwise they are combined with OR
instead of AND.

This is particularly misleading when coming from the Sales dashboard, as
the "Overdue" button of "My Pipeline" will lead to a list of
opportunities with "My Activities OR Overdue Activities", showing *all*
opps with overdue activities, not just yours.
2017-08-08 16:17:34 +02:00
Goffin Simon a31820d0cb [FIX] account: Only 64 characters for the name of an entry
When creating a customer invoice with description/reference with more than
64 characters, the description was cut to generate the name of the account move
lines. But it's possible to create an entry with more than 64 characters as name
by the interface. The limitation is deprecated.

opw:760316
2017-08-08 15:54:41 +02:00
David Monjoie ed286c4562 [FIX] web: disable buttons in list view on virtual records
Such buttons are not going to work on records that actually do not
exist yet. The behavior is now the same as in saas-15.

Steps to reproduce the bug:
Steps to reproduce the bug:
- Enable lots in Iventory
- Choose a product which is a component of another (through mrp bom)
- Set this product as tracked by lot
- Set this product inventory quantity to 0
- Create a new manufacturing order for the product for which it is a
  component
- Click on "Check Availability"
- Click on Produce
- Click on the little square with a + in the m2m list view, the
  server will crash in the ensure_one of the function called by
  the button since there is no record to run it on.
2017-08-08 11:18:11 +02:00
David Monjoie e2252c35c1 [FIX] web: handle create in many2many default_get
Previously, we did not handle the case where the result of the m2m
default get was a new record. In this case, we can't just send a
replace all command giving the ids since the new record has no id.

We decided to keep the replace all command even when it is empty
to stay consistent with the o2m implementation, even though saas-15
did not behave like that.

Steps to reproduce the bug:
- Enable lots in Iventory
- Choose a product which is a component of another (through mrp bom)
- Set this product as tracked by lot
- Set this product inventory quantity to 0
- Create a new manufacturing order for the product for which it is a
  component
- Click on "Check Availability"
- Click on Produce
- You'll get an error as the id given to the onchange is a virtual one,
  rather than a create which would not include an id.
2017-08-08 11:18:10 +02:00
David Monjoie 587751aa0d [FIX] web: prevent virtual datapoint creation when no default value
Previously, it used to create a virtual datapoint even though there was
no change on this field. If the field was a many2one, this datapoint
triggered a name_get call afterwards, but giving the virtual id of
the datapoint since there is no real record. The solution is to avoid
creating a virtual datapoint when it is not needed at all, thus fixing
the wrong name_get call.

Steps to reproduce the bug:
- Enable lots in Iventory
- Choose a product which is a component of another (through mrp bom)
- Set this product as tracked by lot
- Set this product inventory quantity to 0
- Create a new manufacturing order for the product for which it is a
  component
- Click on "Check Availability"
- Click on Produce
- You'll get an error as the web client tries to fetch the name_get of
  this datapoint even though the record does not exist.
2017-08-08 10:38:16 +02:00
Lucas Perais (lpe) ea2568b19c [FIX] website_portal_sale: image on a portal SO should always be displayed
before this commit, when a portal SO was done with a product that hasn't been "website_published", a placeholder was displayed instead of the image
After this commit, the correct product image is displayed in base64 (always image_small though)

OPW 760880

Closes #18709
2017-08-08 10:35:08 +02:00
qdp-odoo 792a402126 [FIX] account: fix tax_ids computation on aml creation from invoice.
In case of a tax affecting subsequent taxes, the tax_ids field was wrongly set which led to errors in VAT reports. OPW 757072.
2017-08-08 10:29:57 +02:00
Christophe Simonis a6917c22b3 [MERGE] forward port branch 9.0 up to af7eb04fc7 2017-08-07 17:56:45 +02:00
Lucas Perais (lpe) 3cd4672272 [FIX] account_asset: on invoice from po select right account
before this commit, when a product had its asset_category set, the account attachement to the asset_categ was righfully selected on the invoice line when creating the invoice from scratch
Though, that was not the case when the invoice was created from the po

after this commit the right symmetric behavior is back: the default account that will be selected on invoice line is the asset_category one.

opw 761033

Closes #18687
2017-08-07 13:54:29 +02:00
David Monjoie c294e7d46e [FIX] mrp: fix unbuild order creation
Unfortunately, ed60339 is incompatible with ebd1721 since
we once again do not send the values of readonly fields.

This is a partial revert of commit ed60339.
2017-08-07 11:32:06 +02:00