Maxime Richez
8129eb4bfc
Fill secondary unit from product supplier
...
Closes #13933
2025-04-14 18:56:45 +02:00
Cédric Krier
faca1dd187
Order bank account per owners
...
Closes #13937
2025-03-24 18:44:31 +01:00
Cédric Krier
d68df1a8e6
Store payable bank account number on SEPA payment
...
This allows the user to select the bank account to use for the payment instead
of the first IBAN.
Also it stores the bank account that was selected by default on processing.
Closes #13938
2025-03-24 23:10:42 +01:00
Cédric Krier
2a85bd2a14
Remove test on the returned value from production _move method
...
The method always returns a stock move.
2025-03-27 00:26:53 +01:00
Cédric Krier
43dff0d4f6
Add method to prepare stock move from a BOM input or ouput
...
This allows customization of the stock move using data from the BOM.
Closes #13945
2025-03-27 00:25:18 +01:00
Cédric Krier
81134c70da
Update window form buttons when record is modified
...
This synchronize the behavior of these buttons with the one from the One2Many
widget.
Closes #13949
2025-03-28 15:53:05 +01:00
Cédric Krier
3b253210ae
Initialize position of One2Many widget to None/null
2025-03-28 15:51:55 +01:00
Cédric Krier
3a0892126d
Set cursor on product field in opportunity line form
...
Since 9ec3b6ddc7ec the product is no more the first focusable field but it
stays the first useful to have the focus.
Closes #13908
2025-03-31 18:23:37 +02:00
Cédric Krier
1d68553044
Clear browser selection when selecting multiple rows
...
Closes #13952
2025-03-31 23:18:30 +02:00
Cédric Krier
130da3b56d
Archive Shopify products removed instead of deleting them
...
Such that customization made from the admin interface are preserved if the
product is republished.
Closes #13962
2025-04-04 00:27:57 +02:00
Cédric Krier
d169592a30
Do not update Shopify product with empty product description
...
Closes #13963
2025-04-04 00:37:39 +02:00
Cédric Krier
fff5663ae1
Add DecimalNull as tools
2025-04-08 09:59:33 +02:00
Cédric Krier
88b9c02577
Prevent to revise multiple times the same asset with the same invoice line
...
Closes #13970
2025-04-11 13:24:16 +02:00
Cédric Krier
b26b3538cf
Always use flex display for #tabcontent except on small screen
...
On form view, this put the scrollbar for long form only on the form without the
preview.
On small screen the form is switch back to block so the panel-body with the
flex-direction column push the #tabcontent to expand more than the height of
the viewport.
With the content of the preview being always visible without scrollbar (except
for the screen), we can put the navigation at the bottom as natural place.
2025-04-12 12:42:54 +02:00
Nicolas Évrard
cfc38c8070
Store column widths by screen size
2025-04-14 22:57:36 +02:00
Nicolas Évrard
8b6e83e5b2
Allow column widths to be reset
2025-04-14 23:16:26 +02:00
Nicolas Évrard
93ae0df5c3
Allow column resizing in Sao
...
Closes #13115
2025-04-14 23:11:48 +02:00
Nicolas Évrard
15b3e1f5cf
Use the position:sticky on the row of the thead
...
It was previously put on the th because neither Firefox nor Chrome supported it
on thead or tr but it has been solved now.
https://caniuse.com/css-sticky
2024-12-12 10:50:15 +01:00
Nicolas Évrard
4f195c7ffe
Add simple chat widget on sidebar of clients
2025-04-12 17:25:28 +02:00
Cédric Krier
e5c35f988b
Add chat
2025-04-12 16:54:16 +02:00
Nicolas Évrard
a17172f6dd
Toggle the option's selected state on mousedown in the filter window
...
This applies the changes from 3b0ae1dadfa0 to the filter window
2025-04-12 21:32:15 +02:00
Nicolas Évrard
83d280fede
Display checkbox in multiselection in the filter window
...
This applies the changes from 97e82c27dc17 to the filter window
2025-04-12 21:30:56 +02:00
Nicolas Évrard
9babb76a0f
Set sao's multiselection widget height according to its content
2025-03-05 18:13:37 +01:00
Nicolas Évrard
baaf7784fa
Ensure that update_selection is called if init_selection has failed
...
Closes #13960
2025-04-03 16:46:56 +02:00
Cédric Krier
dc53b5fff1
Update npm dependencies
2025-04-12 21:11:11 +02:00
Cédric Krier
f7b37fcf3b
Display xxx2Many widgets when they become visible
...
When a tree is used in a xxx2Many widget then we can lazily request the content
of the tree by relying on the intersection observer that is already present at
the bottom of the table.
2025-04-10 19:09:38 +02:00
Nicolas Évrard
0e9cfb3e84
Do not refresh the pool when the notification comes from the same process
2024-12-18 17:08:26 +01:00
Nicolas Évrard
3cf1d64372
Use process-local data structure to store process related data
2025-01-08 23:20:32 +01:00
Nicolas Évrard
26f7c7142b
Add process local objects ala threading.local
2025-02-14 17:16:55 +01:00
Nicolas Évrard
c643794a85
Remove a useless call to Cache.refresh_pool
...
Since Pool.init is called with a non empty update, it will make a call to
Cache.refresh_pool at the end of its call to load_modules
2024-12-17 15:16:51 +01:00
Nicolas Évrard
ac6e93b078
Reset the pool instances only on the pool initialization
...
In a scenario where cache_timeout is set to zero, concurrent updates to the
pool might result in an empty pool dictionary because the process making the
update lose its reference to the updated pool thus replacing it with an empty
dictionary on the following instantiation of Pool.
Closes #13763
2024-12-17 15:14:04 +01:00
Cédric Krier
7a9820e5af
Change current record for the first selected only if there is no current record
...
#4028 added the behavior to apply the selected record also on form view the
first time.
But when switching to a calendar view from a form view, the tree states is
stored with the current record. If the calendar view is cleared (always with
sao via the search_filter), then the tree_states_done is cleared and on the
second switch to the form view the current record is override by record stored
in the tree states (from the first form switch).
Closes #13939
2025-03-26 20:07:54 +01:00
Nicolas Évrard
cd5a54cb2f
Delete warnings at the end of the Transaction
...
Closes #13686
2025-04-10 19:21:50 +02:00
Nicolas Évrard
68fb5e1fa7
Use high level API of res.user.warning in tests
2024-11-29 18:18:52 +01:00
Nicolas Évrard
fb200e610d
Add selection_change_with to Selection field's edition_depends
...
Closes #13959
2025-04-03 16:33:47 +02:00
Cédric Krier
b426fe621c
Restore asynchronous save but protected by a single promise
...
The write RPC must be done asynchronously in order to manage any concurrency
exception.
But the asynchronous RPC can only be done sequentially, so we ensure there can
be only one single pending promise.
Closes #13940
2025-03-25 13:49:53 +01:00
Cédric Krier
e5f0688da7
Store target of field as relation
...
For Many2Many it replaces the relation model by the target which is what is
expected by usage in many places like the domain for email models.
Closes #13756
2025-03-24 23:32:36 +01:00
Cédric Krier
703223faf7
Do not set more than the fulfillable quantity in Shopify fulfillment
...
Closes #13956
2025-04-02 17:29:47 +02:00
Cédric Krier
2f701eb054
Do not fill mode and views for relation field without views
...
It is useless to send those attributes as they will not be used by the client.
2025-03-31 20:04:51 +02:00
Cédric Krier
6daed3eb95
Test if views attribute is empty using jQuery.isEmptyObject
...
The views attribute can be just an empty object when the xxx2Many field is
using a different widget like a multiselection.
Closes #13917
2025-03-31 20:01:42 +02:00
Cédric Krier
a6c548b400
Check for new record only when saving an actual current record
...
49cbc9b99ed8 added the calculation of a new variable but before the test that a
current record is actually being saved.
Closes #13946
2025-03-28 16:04:21 +01:00
Cédric Krier
275248478a
Ensure the contextual company is not None and positive before using it
...
Closes #13868
2025-03-10 23:43:49 +01:00
Cédric Krier
1e151a15a2
Remove support for Python 3.8
2025-04-06 12:11:03 +02:00
Cédric Krier
6d8b42c687
Add support for Python 3.13
2025-04-06 12:10:20 +02:00
Cédric Krier
b2d84f32c2
Reset sale and shipment to draft before delete
...
Since 6c72b78d92d8 the documents are no more automatically cancelled prior
deletion.
2025-04-07 00:27:05 +02:00
Cédric Krier
b7e5b7d865
Remove coupon name in Vue Storefront test
...
Since 5f9f977bfd12 there is no more a name field on coupon.
2025-04-07 00:25:13 +02:00
Cédric Krier
9ba7970f41
Check invoice state only for modified lines with an invoice
...
Since 6c72b78d92d8 the rewrite of the check did not skip invoice line without
invoice.
2025-04-07 00:23:44 +02:00
Cédric Krier
5041a85ef6
Update on_* field of trigger in tests
...
Since bc7e074fc4d9 the fields of trigger has been suffixed with an '_'.
2025-04-07 00:30:35 +02:00
Cédric Krier
39af772212
Do not override all written ids by ids from each argument in ModelSQL write
...
6f1447bdd702 makes ModelSQL.write retrieve the list of ids written from
_before_Write but they should be used as-is to call _after_write (and others).
2025-04-07 00:18:19 +02:00
Cédric Krier
c5aadfb64a
Clear currency on output move of production to lost and found
2025-04-05 19:43:09 +02:00