Initial commit: Odoo 18.0-20251222 extra-addons
This commit is contained in:
6
onchange_helper/readme/CONTRIBUTORS.md
Executable file
6
onchange_helper/readme/CONTRIBUTORS.md
Executable file
@@ -0,0 +1,6 @@
|
||||
- Guewen Baconnier \<<guewen.baconnier@camptocamp.com>\>
|
||||
- Florian da Costa \<<florian.dacosta@akretion.com>\>
|
||||
- Andrea Stirpe \<<a.stirpe@onestein.nl>\>
|
||||
- Souheil Bejaoui \<<souheil.bejaoui@acsone.eu>\>
|
||||
- Kevin Khao \<<kevin.khao@akretion.com>\>
|
||||
- Thien Vo \<<thienvh@trobz.com>\>
|
||||
1
onchange_helper/readme/CREDITS.md
Executable file
1
onchange_helper/readme/CREDITS.md
Executable file
@@ -0,0 +1 @@
|
||||
The migration of this module from 17.0 to 18.0 was financially supported by Camptocamp.
|
||||
2
onchange_helper/readme/DESCRIPTION.md
Executable file
2
onchange_helper/readme/DESCRIPTION.md
Executable file
@@ -0,0 +1,2 @@
|
||||
This is a technical module. Its goal is to ease the play of onchange
|
||||
method directly called from Python code.
|
||||
4
onchange_helper/readme/ROADMAP.md
Executable file
4
onchange_helper/readme/ROADMAP.md
Executable file
@@ -0,0 +1,4 @@
|
||||
Note that onchanges tend to disappear due to the introduction of
|
||||
'computed stored readonly False fields' in most cases. When migrating,
|
||||
it is best to prefer changing it to that way instead of using this
|
||||
module.
|
||||
50
onchange_helper/readme/USAGE.md
Executable file
50
onchange_helper/readme/USAGE.md
Executable file
@@ -0,0 +1,50 @@
|
||||
To use this module, you need to:
|
||||
|
||||
- depend on this module
|
||||
- call yourmodel.play_onchanges(values, \['field'\])
|
||||
|
||||
Example if you want to create a sale order and you want to get the
|
||||
values relative to partner_id field (as if you fill the field from UI)
|
||||
|
||||
> vals = {'partner_id': 1}
|
||||
>
|
||||
> vals = self.env\['sale.order'\].play_onchanges(vals, \['partner_id'\])
|
||||
|
||||
Then, vals will be updated with partner_invoice_id, partner_shipping_id,
|
||||
pricelist_id, etc...
|
||||
|
||||
Default values will be used to process onchange methods, if respective
|
||||
fields are not set in vals. You can get them if you pass fields name in
|
||||
the list of fields.
|
||||
|
||||
> vals = {'partner_id': 1}
|
||||
>
|
||||
> vals = self.env\['sale.order'\].play_onchanges(vals, \['partner_id',
|
||||
> 'date_order'\])
|
||||
|
||||
vals will contain, in addition to the changed values, the default value
|
||||
for date_order
|
||||
|
||||
You can also use it on existing record for example:
|
||||
|
||||
> vals = {'partner_shipping_id': 1}
|
||||
>
|
||||
> vals = sale.play_onchanges(vals, \['partner_shipping_id'\])
|
||||
|
||||
Then the onchange will be played with the vals passed and the existing
|
||||
vals of the sale. vals will be updated with partner_invoice_id,
|
||||
pricelist_id, etc..
|
||||
|
||||
Behind the scene, play_onchanges will execute **all the methods**
|
||||
registered for the list of changed fields, so you do not have to call
|
||||
manually each onchange. To avoid performance issue when the method is
|
||||
called on a record, the record will be transformed into a memory record
|
||||
before calling the registered methods to avoid to trigger SQL updates
|
||||
command when values are assigned to the record by the onchange
|
||||
|
||||
Notes:
|
||||
|
||||
- Order in onchange_fields is very important as onchanges methods will
|
||||
be played in that order.
|
||||
- If you use memory object in vals, be award that onchange method in
|
||||
base model call self.invalidate_cache() that reset it.
|
||||
Reference in New Issue
Block a user