Commit Graph
127250 Commits
Author SHA1 Message Date
Lucas Perais (lpe) 2830b93a3a [FIX] web_editor: insert br within a p
Have a fieldHTML as:
```
<p>
Some text
<br>
<br>
More text
</p>
```

In the Html field widget, place your cursor before the "M"
press Enter to insert a newline

Before this commit "Some text" and the subsequent `<br>` were deleted
This was because the code:
- split the original `<p>` into two
( i.e. it became
```
<p>
Some text
<br>
<br>
</p>
<p>
More text
</p>
```
)
- took the last child of the first p, which is a text then fell back to the first p
- replaced the whole p with <br>

After this commit, the original p is still split, but we append the br to it instead of replacing it

closes odoo/odoo#32777

Signed-off-by: Lucas Perais (lpe) <lpe@odoo.com>
2019-04-17 12:45:52 +00:00
Cedric Snauwaert af1841560b [IMP] account: automatic periodical VAT closure
closes odoo/odoo#32619

Signed-off-by: Quentin De Paoli (qdp) <qdp@openerp.com>
2019-04-17 12:10:33 +00:00
Cedric Snauwaert b72756be1f [IMP] account: next activities in misc journals dashboard 2019-04-17 12:10:24 +00:00
Simon Lejeune c8b91b0a15 [FIX] stock: cache invalidation in _action_assign
`reserved_availability` is a computed field of a move depending on its
move lines. We access this field at each iteration of the loop over the
moves to assign and then we create a new move line for it. This triggers
an invalidation of this field, The next iteration will again access this
field and prefetch it for all the next records.

We read the field out of the loop and don't access it again to prevent
these prefetch/invalidation issues.

Confirmation of a PO of ~800 lines goes from 5 minutes to 1 minute.

opw-1953398

closes odoo/odoo#32774

Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
2019-04-17 11:33:03 +00:00
Goffin Simonandnim-odoo f7414c0b18 [FIX] sale_mrp: No delivered_qty computed with partial delivery
Steps to reproduce the bug:
- Create a consumable or storable final product A with invoicing policy
in "delivered quantity"
- Create two storable products B and C
- Create a BOM kit for A with 1 B and 1 C
- Create a SO with 5 qty of A and confirm it
- Deliver 3 B and 2 C and either on "No backorder" or "With backorder"

Bug:

The delivered_qty on the SO line is of course not automatically updated
(as in this case, a right value is not computable) but the delivered_qty
was not updatable  manually and then it was possible to invoice the SO.

Co-authored-by: nim-odoo <nim@odoo.com>

opw:1966170

closes odoo/odoo#32733

Signed-off-by: Simon Goffin (sig) <sig@openerp.com>
2019-04-17 08:37:01 +00:00
qdp-odoo 19aa35fabb [FIX] account: fix test_account_move_tax_lock_date.
Make sure the move, journal and the accounts will share the same company to prevent undeterministic error in runbot ('Cannot create moves for different companies.')

closes odoo/odoo#32759

Signed-off-by: Quentin De Paoli (qdp) <qdp@openerp.com>
2019-04-17 08:34:48 +00:00
Goffin Simon c2f15d3f1a [FIX] sale: Keep fiscal position from SO
Steps to reproduce the bug:
- Create two fiscal postions fp1 and fp2
- Create a customer C with fp1
- Create a SO for C and set fp2
- Create an invoice for the SO

BUG:

The fiscal position of the SO was set to False.
Now the fiscal position of the SO is kept when creating an invoice
from a SO.

opw:1963910

closes odoo/odoo#32713

Signed-off-by: Simon Goffin (sig) <sig@openerp.com>
2019-04-17 07:16:25 +00:00
Romain Derie 47ebb835e5 [FIX] l10n_ch: correct field default typo 2019-04-16 20:24:22 +05:30
William Henrotin 2b63b7e8ed [FIX] stock: company_id on stock.move.line
Commit 240d191ba3 introduced the field
company_id on model stock.move.line and a python constraint that check
if the company is the same on the move line and on the related move.

In order to avoid performance issue, this commit replace the constraint
by a 'related' parameter on the company field.

As the company_id is not editable we suppose this change will not introduced
unwanted errors

Task : 1970012

closes odoo/odoo#32738

Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
2019-04-16 13:38:59 +00:00
Jairo Llopis 94e35a19b3 [FIX] web: Trim spaces when selecting option by text
It's quite common that the `$().text()` method returns lots of random whitespaces at the beginning and end of the string. They're pretty unpredictable (extension views can add or remove them) and invisible to the end user.

This code chunk should allow to select an `<option>` based on its raw text content, but most of them will just fail without this patch. And most chances are that current ones just work equally with this patch.

This will make frontend tours more pleasant to write.

closes odoo/odoo#32718

Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
2019-04-16 11:53:47 +00:00
Nicolas Martinelli ecae2fc9ca [FIX] sale_stock: scope of warning
The check on the ordered quantity should not apply to services.

opw-1981332

closes odoo/odoo#33138

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-05-03 11:48:01 +00:00
Meghna JaswaniandNicolas Lempereur 8df4bbf1ed [FIX] website{,_sale_link_tracker}: ecommerce graph today
The UTM graph data in Website > Dasboard > Analytics is not getting
properly filtered on the basis of values of date_from and date_to on
website_sale dashboard.

The field confirmation date which is of type datetime while date_from
and date_to are of date string in local browser timezone.

Hence date_domain is not perfect as shown below on local date 29th april
2019, we would send:

('confirmation_date', '>=', '2019-04-22'),
('confirmation_date', '<=', '2019-04-29')

But in reality we could want a from midnight of week before the current
UTC day, and to current UTC now or 23:59:59 of current UTC day.

This way, the data sent back matches more what is expected, instead of
the preceding domain, we would then have the following:

- if UTC now corresponding to local now is on '2019-04-29'

 ('confirmation_date', '>=', '2019-04-22 00:00:00'),
 ('confirmation_date', '<=', '2019-04-29 23:59:59')

- if UTC now corresponding to local now is on '2019-04-28':

 ('confirmation_date', '>=', '2019-04-21 00:00:00'),
 ('confirmation_date', '<=', '2019-04-28 23:59:59')

- if UTC now corresponding to local now is on '2019-04-30':

 ('confirmation_date', '>=', '2019-04-23 00:00:00'),
 ('confirmation_date', '<=', '2019-04-30 23:59:59')

And each one will be displayed as days 22 up to 29 in line chart (with
local today 29 being the last day of the chart and contening orders of
the current UTC day).

With these change in the UTM pie chart:

- a local date that is before a UTC date => we see the sales from up to
  today UTC instead of from up to before yesterday UTC

- a local date that is the same as an UTC date => we see the sale from
  up to today UTC instead of yesterday UTC

And in the line chart (that already had half of the fix in f6fc7c2319):

- a local date that is before a UTC date => we see the sales from up to
  today UTC instead of from up to yesterday UTC

- a local date that is after a UTC date => we see the sales of current
  UTC day + range of days (eg. for a week 7) instead of current UTC day +
  range of days minus 1 (eg. for a week 6).

opw-1971539
closes #33041

Signed-off-by: Nicolas Lempereur (nle) <nle@odoo.com>


Co-authored-by: Nicolas Lempereur <nle-odoo@users.noreply.github.com>
2019-05-03 11:29:34 +00:00
Jorge Pinna Puissant 97b44806f5 [FIX] mrp: recursive bom with different quantities
Having 4 products and 3 BoMs:
BoM 1:
 product = Finished
 quantity = 100 units
 - Semi-Finished 10 units

BoM 2:
 product = Semi-Finished
 quantity = 10 units
 - Assembly 10 units

BoM 3:
 product = Assembly
 quantity = 10 units
 - Raw Material 10 units (product.product 5$/unit)

Before this commit, the price for 100 units of Finished product was
500$, which is wrong. The price was calculated using 100 units of
Semi-Finished product and not 10 units as it should be.

Now, the price is 50$

opw-1973347

closes odoo/odoo#33115

Signed-off-by: Jorge Pinna Puissant (jpp) <jpp@odoo.com>
2019-05-03 11:02:35 +00:00
Jeremy Kersten a80f1ddcda [FIX] doc: git guidelines, don't use # for task/opw
Use task-#xxx is wrong since it will refer to an unexising or wrong hash
of github.

closes odoo/odoo#33121

Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
2019-05-02 15:05:06 +00:00
Nans Lefebvre 050ad8e189 [FIX] mail: clean context when running email action
The action_subtask method adds 'default_parent_id' to the context.
If the creation or edition of a subtasks triggers an email creation,
(e.g. if there is an automated action 'send email')
the default 'default_parent_id' is still in the context.
Therefore, it tries to create the email with an arbitrary foreign key
(since it is an existing record on the project.task model), or crashes.

Similar to 816f3861.

opw 1978498

closes odoo/odoo#33111

Signed-off-by: Nans Lefebvre (len) <len@odoo.com>
2019-05-02 12:39:11 +00:00
Abdur-Rahmaan Janhangeer 222ef11adb [ADD] base: add address format for Mauritius
Mauritius now uses zipcodes
Source: http://www.mauritiuspost.mu/products-and-services/post-code-finder

closes odoo/odoo#33074

Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2019-05-02 14:44:45 +00:00
Martin Trigaux 60d6c5402b [FIX] web: change bootstrap fonts only for reports
Commit 42530b02fe was fixing a bug in reports that were using the standard
bootstrap fonts instead of the changes we made in $font-family-sans-serif

To solve this, 42530b02fe replicated the change in the file
web_editor/static/src/scss/bootstrap_overridden.scss
which is imported in report_assets_common **before** web._assets_bootstrap

This was solving the issue for the report but had also the side-effect of
changing body font-family in enterprise as the bootstrap_overridden.scss file
is also used in web_editor._assets_backend_helpers and
web_editor._assets_frontend_helpers
42530b02fe had effect only on enterprise where the desired font is Roboto/Noto

Create a new bootstrap_overridden (6th of the name) file only for report

closes odoo/odoo#32902

Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2019-04-30 08:19:38 +00:00
Yenthe666 8c402ca38a [FIX] stock: remove duplicated field definiton
closes odoo/odoo#32708

Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
2019-04-16 08:01:46 +00:00
Priyanka Kakadiya 3992b01de1 [FIX] website_livechat: fix error when no ratings
If there is no rating for user, it will throw error while publishing channel.
This commit check if there is any rating for particular user or not.

Introduced by ce20c29f82

opw-1966384

closes odoo/odoo#32553

Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
2019-04-16 05:44:26 +00:00
Lucas Perais (lpe) 7bf25cc333 [FIX] web: search view handles JSON parsable domains
Before this commit, a domain that had been written in order to be
JSON parsable, would trigger a JS crash when activated in the UI
It happens when adding custom filters through the edition of the search view with studio

This was because, Odoo developers write, in the XML of a search view
domains python style: `[('field', '=', 'value')]`
When parsing the view in JS, this doesn't get altered by `xml_to_json`
Then, the search view code evaluates it python style
This commit considers that behavior fortunate, but not really clear or conceptually correct

But, when customizing a search view with studio, the domain is written by the code, in JS
JSON parsable format `[["field", "=", "value"]]`

This should be supported too, as so many customizations may have been done before hand

After this commit, both expressions are supported by the filters menu

OPW 1957297, 1960732, 1965649 (at least)

closes odoo/odoo#32690

Signed-off-by: Lucas Perais (lpe) <lpe@odoo.com>
2019-04-15 12:41:26 +00:00
Josse Colpaert 6a57ad66b8 [FIX] l10n_de_skr03: account 3557 should have code 3557 (forward-port)
Fixes #32714

closes odoo/odoo#32739

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-04-16 13:24:01 +00:00
Julien Castiaux 54e970e710 [FIX] calendar: browse record using IrRules
Create a calendar meeting using Mark Demo. In the options of the event,
set the meeting as "Show Time as" = "Free". Using the admin user, send a
digest (KPI Digest module, technical > emails > digest email > send
now). It raises an User Error because the template cannot be rendered.

The problem is due to the way the "Show Time as" is implemented, the
"Free" option is used to not show the meeting in the different calendar
views. The events are hidden thanks to a record rule "Hide Private
Meetings".

Each digest is sent using the context of each subscripted user and not
the SuperUser ID 1. The call to `search_count` on `mail.message` calls
the dedicated `_search` of `mail.message` and ultimately end up in the
overriden `_find_allowed_model_wise` method of message in calendar.

That method does a browse of all the record ids containing new
messages in their chatter, but fail with an access error due to the
above record rule. Because it fails, the `kpi_mail_message_total_value`
compute fails and the field is missing when rendering the template.

Using `search` instead of `browse` ensures records unavailable due to a
record rule are filtered out.

opw-1966664

closes odoo/odoo#32735

Signed-off-by: Simon Goffin (sig) <sig@openerp.com>
2019-04-16 14:21:41 +00:00
Christophe Simonis b7a39c5722 [MERGE] forward port branch saas-14 up to 6b87c851b9 2019-04-15 12:00:54 +02:00
Christophe Simonis 6b87c851b9 [MERGE] forward port branch 10.0 up to 78ba90d548 2019-04-15 11:58:47 +02:00
Simon Lejeune 8c377471b6 [REF] sale_mrp: speedup tests
Before on rubot
odoo.addons.sale_mrp.tests.test_sale_mrp_flow tested in 97.08s, 117272 queries

After on runbot
odoo.addons.sale_mrp.tests.test_sale_mrp_flow tested in 50.84s, 61903 queries

closes odoo/odoo#32537

Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
2019-04-15 07:32:32 +00:00
Simon Lejeune 4ad81157e7 [REF] mrp_subcontracting: speedup tests
Before on runbot
odoo.addons.mrp_subcontracting.tests.test_subcontracting tested in 11.40s, 14213 queries

After on runbot
odoo.addons.mrp_subcontracting.tests.test_subcontracting tested in 7.95s, 9863 queries
2019-04-15 07:32:32 +00:00
Simon Lejeune 81afb10083 [REF] stock_account: speedup tests
Before on runbot
odoo.addons.stock_account.tests.test_stockvaluation tested in 25.52s, 59252 queries

After on runbot
odoo.addons.stock_account.tests.test_stockvaluation tested in 20.43s, 38535 queries
2019-04-15 07:32:32 +00:00
Simon Lejeune c5ff803fcc [REF] stock: speedup tests
before on runbot:
odoo.addons.stock.tests.test_move tested in 31.79s, 63166 queries
odoo.addons.stock.tests.test_move2 tested in 33.69s, 68046 queries
odoo.addons.stock.tests.test_quant tested in 8.48s, 15351 queries
odoo.addons.stock.tests.test_stock_flow tested in 16.99s, 31506 queries
amounting to 90 seconds on a build page

after om runbot:
odoo.addons.stock.tests.test_move tested in 12.41s, 24197 queries
odoo.addons.stock.tests.test_move2 tested in 13.55s, 24254 queries
odoo.addons.stock.tests.test_stock_flow tested in 9.74s, 15795 queries
amounting to 37 seconds on a build page

Use savepoint case instead of transaction case.

We took the opportunity to rename the master data more appropriately,
which results now in a bigger diff in TestMove and TestQuant. In
TestQuant, the master data creation had to be moved in the setUpClass
too.

We removed test_shipment as test_backorder_1-4 in tet_move_2 covers the
same parts of the code.
2019-04-15 07:32:32 +00:00
Jorge Pinna Puissant df68900870 [FIX] point_of_sale: anglo-saxon accounting entries same partner
Anglo-saxon Accounting entries are created always with the same Partner
id (the last one).

This commit is a fine tuning of the commit : 5ca0ef978f

opw-1961409

closes odoo/odoo#32672

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-04-15 06:34:00 +00:00
Laurent Mignon (ACSONE) d637fe4010 [IMP] mail: restore support for all report_types in mail attachments
Commit 48018411 introduced a new ir.action.report type: qweb-text.
Commit 3425752 introduced an explicit check on the type, for html or pdf.
This removed the ability to support arbitrary reports through the call to the
generic render method, which dispatches to the correct one for a report_type.
We add support for the text format following the same logic.

The explicit error will be raised if the rendering fails,
e.g. in the case where the render method is not defined.

Thanks to @gdgellatly for reporting.
opw 1966208
closes #28513
closes #30013
closes #32532

closes odoo/odoo#32773

Signed-off-by: Nans Lefebvre (len) <len@odoo.com>
2019-04-17 18:23:08 +00:00
Arnold Moyaux 12da02d161 [REF] mrp: rename subproduct in byproduct
subproduct and byproduct are both used in code.
However the UI always shows by-product only.
Rename sub.product, sub_product,... in byproduct
in order to use the same term everywhere.

closes odoo/odoo#32540

Signed-off-by: Arnold Moyaux <amoyaux@users.noreply.github.com>
2019-04-12 12:50:34 +00:00
Arnold Moyaux b5780cf8bb [FIX] mrp: by-products typo + default type on product
Be consistent with by-products and byproducts. Only use by-products.
When a product is created from the BoM view, it has a default type
as storable product, set the same type when the product is created
from by-products tab.
2019-04-12 12:50:34 +00:00
Arnold Moyaux 1fac199517 [FIX] mrp: tracability on extra move line
Usecase to reproduce:
- BoM with final product tracked by SN
- Produce wizard add a component tracked by SN (not from BoM)
- Produce and mark the MO as done

The tracability report do not show the extra component used.

It happens because _record_production call _action_done on moves raw
and finished. _action_done create extra move with moves that created
more than expected (the purpose is to trigger rules). However in stock
the new move is created then merged in its parent but in mrp moves are
not merge. _record production set the tracability for initial moves but
ignore the extra moves created. So the tracability report is not
complete.

Fix it by catching the new moves created after _action_done and set
the consume_line_ids for the extra moves also.
2019-04-12 12:50:34 +00:00
Arnold Moyaux 030db4a4b0 [IMP] mrp: tracability on byproducts
In MRP the tracability is only set between the finished
products and the components. However when the by-products is
tracked by serial number, it could be usefull to know from which
components it was created. This commit add the link between by-products
and raw materials (only in produce wizard at the moment).

Technically we replaced the one2many field by a many2many.
2019-04-12 12:50:34 +00:00
Arnold Moyaux 3b4e33672a [IMP] mrp: unbuild byproducts
Unbuild a manufacturing order only undo the final product and its
components. The byproduct created will not be undo with the correct
ratio. This commit will allow to undo a ratio of byproducts for a
specific MO or base on the BoM if the byproducts are not tracked.
2019-04-12 12:50:34 +00:00
Arnold Moyaux a4c0994cf4 [REF] mrp: byproduct as a workorder line
Technical refactoring in order to set by-products the same way
than raw materials. Before this commit byproduct were always set
at the last workorder or automaticaly set at the end of produce
wizard with the same quantity than in the BoM. In order to modify
it, the user has to produce the finished product then unlock and edit
the finished move line linked to the byproduct. In this commit, the
user could specify at which workorder the byproduct is created and
he could directly specify another quantity done in the produce wizard
inside a specific tab for by-products.

Technicaly, abstract workorder will add a new many2one key on workorder
line in order to set 2 different one2many (one for finished goods and
the other for raw materials). The key is set depending the many2one
key for production on the linked stock move. On the by-products itself,
it is now managed as a workorder line, thus the code to generate them
and transform them in a finished stock move line is the same than for
the raw components.
2019-04-12 12:50:34 +00:00
Arnold Moyaux 6f25cf1aa7 [REF] mrp: add groups for byproducts
Since mrp_byproduct is in mrp. We want to keep the byproduct as an
additional feature. So this commit add a group and hide byproducts
fields in views.
2019-04-12 08:46:07 +00:00
Arnold Moyaux 4b2c73b0e0 [DEL] mrp_byproduct: remove module 2019-04-12 08:46:07 +00:00
Arnold Moyaux 5d1e73c5cb [MOV] mrp, mrp_byproduct: move byproduct in mrp
Move code from mrp_byproduct to mrp module. The purpose is to
delete mrp_byproduct module.
2019-04-12 08:46:07 +00:00
Aaron Bohy a3d98dae68 [FIX] web: do not open datepicker on focus
Before this rev., the datepicker was opened when a date(time) field
was focused (e.g. with keyboard navigation). We don't want this
behavior anymore, and we want the datepicker to open only when the
user clicks in the input. This rev. makes this change.

Moreover, this allowed to refined the keyboard navigation (ESC) in
editable list views: when a datepicker is opened, and the user
presses ESC, we close the datepicker, but we keep the row in
edition, whereas before this rev., the row was switched to readonly.

closes odoo/odoo#32408

Signed-off-by: Martin Geubelle (mge) <mge@openerp.com>
2019-04-12 12:42:02 +00:00
Damien Bouvy 19aa7c403a [FIX] stock: enable auto_join for stock_move_line <-> stock_picking
Avoid pathological SQL queries with extremely long list of ids in a
WHERE clause. The strong relation between these models make an auto_join
a no brainer.

closes odoo/odoo#32645

Signed-off-by: Damien Bouvy (dbo) <dbo@odoo.com>
2019-04-12 08:41:19 +00:00
Julien Castiaux c42551b5d2 [FIX] crm, sale: safe override of sales team
The user can delete teams created during the installation of the Sale
Team module, both CRM and Sale modify those teams but the way they
modify the teams doesn't take their deletion into account.

This reverts commit 30a848bffb to replace
post_init_hooks by `forcecreate=False` in the datas.

closes odoo/odoo#32742

Signed-off-by: Christophe Simonis <chs@odoo.com>
2019-04-16 15:10:45 +00:00
Goffin Simon 8631d3cc64 [FIX] sale: _get_conversion_rate called with no date
Steps to reproduce the bug:
- Define two pricelists P1(€) the default one and P2($) with discount_policy = 'without_discount'
- Activate P1 and P2 on the website
- Go on the shop and select P2

Bug:

An error was raised from function _get_conversion_rate because the arguments date and company_id were not defined
because the function _get_real_price_currency was called from _website_product_id_change with
the model "self.env['sale.order.line'] and not with a recordset. So the fields self.company_id and self.order_id.date_order
were not defined.

opw:1969849

closes odoo/odoo#32726

Signed-off-by: Simon Goffin (sig) <sig@openerp.com>
2019-04-16 13:00:36 +00:00
Lucas Perais (lpe) 06b3a290f5 [FIX] calendar: templates with right lang
Before this commit, the standard mail templates for calendar
did not have a language

After this commit, we set it to the the partner's language

OPW 1946686

closes odoo/odoo#32717

Signed-off-by: Lucas Perais (lpe) <lpe@odoo.com>
2019-04-16 11:43:35 +00:00
Goffin Simon ae61ed7f50 [FIX] delivery: Delivery method zip using the customer not shipping address
The available_carriers must be computed according to the shipping address.

opw:1967445

closes odoo/odoo#32693

Signed-off-by: Simon Goffin (sig) <sig@openerp.com>
2019-04-15 13:20:46 +00:00
Lucas Perais (lpe) 9787abaeb0 [FIX] board: support group_by as string in action
the group by key in action context can be a single string
containing the name of a single field or a list of string
reprenting a list of field names

Before this commit, the board did not take this into account

After this commit, it does and supports both expressions

OPW 1956130

closes odoo/odoo#32471

Signed-off-by: Lucas Perais (lpe) <lpe@odoo.com>
2019-04-12 07:57:58 +00:00
Aaron Bohy 7bc53ac30e [FIX] web: crash in editable lists with date field
Assume an editable list view with a date(time) widget, click to
edit a line, focus the date field (the datepicker opens), press
ESC: there is a crash in the lib, and the datepicker remains open
forever.

This fix is twofold:
 - we added a check in the lib to prevent it from crashing (it is
 easily reproducible: it crashes when an opened datepicker is
 removed from the DOM).
 - we added an event handler of ESC keydown event to hide the
 datepicker before the field is removed from the DOM.
2019-04-12 06:31:11 +00:00
David Monjoie cbafa9eddc [FIX] web: fix many2manytags widget height in editable list view
Subpixels computation is different accross browsers and platforms as no
rounding rule is specified by HTML5. Difference in this computation
breaks one of the editable list tests on Chrome and Firefox on MacOS.
2019-04-12 06:14:09 +00:00
Aaron Bohy b94c87c28d [FIX] web: list: update buttons when removing a search facet
In an editable list view with at least a facet (e.g. filter) in
the search view, start editing a row, then click on the 'x' to
remove the facet. The view being updated and re-rendered, the row
in edition (if still present) is back in readonly. However, the
buttons in the control panel are not updated ('Save' and 'Discard'
are still displayed, instead of 'Create' and 'Import').

Normally, when the user clicks outside the list, the edition is
left smoothly. However, this scenario is a corner-case because the
element we clicked on (the 'x' in the facet), is no longer in the
DOM when we enter the list '_onWindowClicked' handler, being in
charge of deciding whether or not we should leave the edition. For
this specific case, this handler doesn't leave the edition, because
it assumes that we have clicked on an sub-element of the list that
is no longer in the DOM (e.g. a modal opened from a field widget).
Since it's no longer in the DOM, there is no way to determine
whether it was in the list or not.

This whole '_onWindowClicked' logic is problematic, but we don't
have any better solution for now. So this rev. fixes the issue by
always resetting the buttons to 'readonly' when the view is
updated, which is valid in the case of the list view.

Unfortunately, we couldn't reproduce the bug in a test, because of
a difference between user clicks (with the mouse) in the browser,
and programmatical clicks (triggered in JS) as we do in the tests.
For natural clicks, there is a delay between the (different level
of) handlers call (probably a nextTick) whereas all handlers are
executed in the same tick for programmatically triggered clicks.
For instance, when the user clicks on the 'x' to remove the facet,
the 'click' handler on '.o_facet_remove' is executed, and the
searchbar is re-rendered (new Widget, so next micro-task tick, but
still before the next tick), and in the next tick, the 'click'
handler on 'html' is executed (and the event is triggered on
core.bus, followed by the execution on '_onWindowClicked'). In the
test, both handlers are executed directly, and thus when in
executing '_onWinowClicked', the searchbar hasn't been replaced by
the new one yet, and the clicked '.o_facet_remove' is still in the
DOM. The row is then unselected, and the buttons are correctly
updated.
2019-04-12 06:14:08 +00:00
Aaron Bohy 6722e66517 [FIX] web: list: editable="top" with less than 4 records
Before this rev., when adding then discarding a new record in a
(main) editable="top" list, the record was added to the top of
the list, and then replaced by an empty row when discarding,
whereas that empty row should have been rendered below potential
data rows.
2019-04-12 06:14:08 +00:00