145 lines
5.0 KiB
ReStructuredText
145 lines
5.0 KiB
ReStructuredText
===============
|
|
Onchange Helper
|
|
===============
|
|
|
|
..
|
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
!! This file is generated by oca-gen-addon-readme !!
|
|
!! changes will be overwritten. !!
|
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
!! source digest: sha256:f99de3ee6c925e95e76870bbc84e80cfeb2842ff3e1e71af1f2bd17deeb935b6
|
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
|
|
:target: https://odoo-community.org/page/development-status
|
|
:alt: Beta
|
|
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
|
|
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
|
|
:alt: License: AGPL-3
|
|
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github
|
|
:target: https://github.com/OCA/server-tools/tree/17.0/onchange_helper
|
|
:alt: OCA/server-tools
|
|
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
|
|
:target: https://translation.odoo-community.org/projects/server-tools-17-0/server-tools-17-0-onchange_helper
|
|
:alt: Translate me on Weblate
|
|
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
|
|
:target: https://runboat.odoo-community.org/builds?repo=OCA/server-tools&target_branch=17.0
|
|
:alt: Try me on Runboat
|
|
|
|
|badge1| |badge2| |badge3| |badge4| |badge5|
|
|
|
|
This is a technical module. Its goal is to ease the play of onchange
|
|
method directly called from Python code.
|
|
|
|
**Table of contents**
|
|
|
|
.. contents::
|
|
:local:
|
|
|
|
Usage
|
|
=====
|
|
|
|
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.
|
|
|
|
Known issues / Roadmap
|
|
======================
|
|
|
|
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.
|
|
|
|
Bug Tracker
|
|
===========
|
|
|
|
Bugs are tracked on `GitHub Issues <https://github.com/OCA/server-tools/issues>`_.
|
|
In case of trouble, please check there if your issue has already been reported.
|
|
If you spotted it first, help us to smash it by providing a detailed and welcomed
|
|
`feedback <https://github.com/OCA/server-tools/issues/new?body=module:%20onchange_helper%0Aversion:%2017.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
|
|
|
|
Do not contact contributors directly about support or help with technical issues.
|
|
|
|
Credits
|
|
=======
|
|
|
|
Authors
|
|
-------
|
|
|
|
* Akretion
|
|
* Camptocamp
|
|
|
|
Contributors
|
|
------------
|
|
|
|
- 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>
|
|
|
|
Maintainers
|
|
-----------
|
|
|
|
This module is maintained by the OCA.
|
|
|
|
.. image:: https://odoo-community.org/logo.png
|
|
:alt: Odoo Community Association
|
|
:target: https://odoo-community.org
|
|
|
|
OCA, or the Odoo Community Association, is a nonprofit organization whose
|
|
mission is to support the collaborative development of Odoo features and
|
|
promote its widespread use.
|
|
|
|
This module is part of the `OCA/server-tools <https://github.com/OCA/server-tools/tree/17.0/onchange_helper>`_ project on GitHub.
|
|
|
|
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
|