Without the size the TableHandler creates a schema without size. When the
schema is updated, it raises a warning because it can not resize from no size.
Also even if SQLite does not enforce the size of the schema, at least we have
a correct schema.
Closes#12471
The disabled attribute is not enough to prevent the click event.
So it is simpler to not render the action that are not supported like tryton
does.
Closes#12470
When deleting a full branch of a tree, if the number of records deleted is
higher than IN_MAX, the foreign key constraint may prevent the deletion
because the group of records deleted may still be referencing a record in the
next group to delete.
To prevent this failure, we must first clean the values of the column with
foreign key referencing the same table. We use the table id as value instead
of NULL in case the column is not nullable.
It is expected to have only a small number of journals.
But also it is uncommon to create of a new journal from a form.
So it provides a better user experience to use a selection widget.
Since d7437e620941 the shipment cost can be defined per party. So a party
without shipment cost should not have a carrier set by default.
A carrier should be set by default only if it is required since bf0b2af7700f.
When a searcher of a Function field compose a domain using mutually exclusive
joins, the boolean operator must always be OR because only one clause is not
NULL.
Closes#12291
When synchronize inventory to outgoing moves, the origin of the inventory is
updated to point to the new corresponding outgoing move instead of the
original one.
Closes#12272
ed41959390ff added a synchronization on assign to prevent infinite warning
loop on pack if it creates new move without origin.
But 38e2a76db719 refactoring lost this behavior.
Closes#12503
When a connection in the pool is disconnected, it stays in the pool and it may
still be served.
Using such connection raise an OperationalError and so the request is retried
but before that the connection is put back to the pool. So we may get it back
again.
It is not possible to distinct between an OperationalError due to a
disconnection or due to a isolation error for example.
So with the current design of Transaction API, an OperationalError always put
back the connection to the pool.
This main that we can only ensure that the connections served are still
connected by executing a simple query. And close connections that are failing.
Closes#12452
The cost price on stock move is only required by validation so we can not
ensure over time that all the stock moves selected have a cost price.
Closes#12468