152 lines
5.1 KiB
ReStructuredText
Executable File
152 lines
5.1 KiB
ReStructuredText
Executable File
===============
|
|
Onchange Helper
|
|
===============
|
|
|
|
..
|
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
!! This file is generated by oca-gen-addon-readme !!
|
|
!! changes will be overwritten. !!
|
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
!! source digest: sha256:27b27f5ed51ecd627ae8bcaffd0bf100f4ef7b24171a85fae783b64e7fdbe233
|
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
.. |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-LGPL--3-blue.png
|
|
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
|
|
:alt: License: LGPL-3
|
|
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github
|
|
:target: https://github.com/OCA/server-tools/tree/18.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-18-0/server-tools-18-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=18.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:%2018.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>
|
|
- Thien Vo <thienvh@trobz.com>
|
|
|
|
Other credits
|
|
-------------
|
|
|
|
The migration of this module from 17.0 to 18.0 was financially supported
|
|
by Camptocamp.
|
|
|
|
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/18.0/onchange_helper>`_ project on GitHub.
|
|
|
|
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
|