They are supposed to be removed by clean_for_save, but when
someone breaks it, the result is a js error here instead of
a proper error in the subsequent tour steps.
In other words, the 'split lot' button should be visible immediately
when choosing a product with lot/serial number tracking and this will
also make the quantity field read-only.
Compute fields do not need to be set as read-only.
It gave problems with the old onchange that needed to set it.
This allows to detect barcode scans while the focus is in such a field.
It is not the default behaviour because buffering keystrokes to see if
they are a barcode then releasing them if they aren't isn't trivial
(it is impossible to trigger a native keyboard event).
For a model to use it, it must :
- Inherit barcodes.barcode_events_mixin and override on_barcode_scanned(self, barcode)
- Add <field name=barcode_scanned widget=barcode_handler/> to each form view that
should listen to barcode events and trigger on_barcode_scanned.
The method on_barcode_scanned works just like an onchange.
A 'display: none' rule on hover has been added for boolean buttons, on each
'o_stat_button o_stat_text' that hasn't classname o_hover. This applies on
every stat button that isn't a boolean button, so their content is always
hidden on hover.
* migration to new API
* removed delivery.grid object, has been merged with delivery.carrier
* change view of delivery.carrier (price rules, etc.)
* tests from yml to py
* website : restrict the list of countries for delivery address in the shop
Old code was searching at the same time the xmlid with and without the module
name. But if a file contains a template for his module (without prefix module
name) and a template with the same name for an other template, the node which
are returned canbe the bad template.
Eg: in the same file from an other module than website
<template id="test">
...
</template>
<template id="website.test">
...
</template>
If you are looking for template website.test, the old code was returning the first
"test" instead of "website.test".
Now we look for the more precise xml_id (website.test), before to fallback on the
implicit name (test = without module name).
The onchange for location zones in picking takes into account
partner locations on partner of the picking. (e.g. Suppliers/IT Vendors instead of Suppliers)
This is only the case when the default location of the picking type is empty.
If a partner is assigned to a warehouse, its default supplier/customer location becomes
the Transit location of the company.
That way, when you set a partner on a picking that is the address of a warehouse,
the default source/destination location (depending if it in/out) will be automatically
set to the Transit Location.
The risk was introduced by b7f1b9c.
IF _store_set_values() recall another _create() or _write(),
the recomputation mechanism enter in an infinite recursion
trying to reevaluate for each call exactly the same fields
for the same records than the previous one
This revision replaces the loop of _store_set_values()
by 2 nested loops:
- that not breaks the entire consumption
of recompute_old queue
(Tested thanks to revision a922d39),
- that allows to clear the queue
before each recomputations bundle fixing thereby the recursion
Closes#7558