Odoo Mencatat Perubahan Data

Pada module Sale, jika anda membuka Quotation atau Order, dibagian paling bawah sendiri ada sebuah blok. Jika anda membuat perubahan misal mengganti customer, mengubah harga dll, perubahan akan tercatat di blok tersebut. Lihat gambar dibawah.

Bagian ini biasanya disebut Chatter (saya belum tahu ini nama resminya apa, tapi di forum disebut seperti itu). Pada tutorial ini kita akan membahas bagaimana menambahkan chatter ke dalam suatu form sehingga kita bisa tahu siapa melakukan perubahan apa dan kapan perubahan itu dilakukan.

Kode Python

# -*- coding: utf-8 -*-
from odoo import api, fields, models, exceptions, _

class MyService(models.Model):    
    _name = 'my.service'

    # sebaiknya _description anda isi
    # isi dengan nama yang pantas, agar saat dibaca di chatter juga enak
    _description = 'Service'

    # bagian ini wajib, jika anda menginginkan fungsi chatter
    _inherit = ['portal.mixin', 'mail.thread', 'mail.activity.mixin']

    # perhatikan pada bagian track_visibility
    name = fields.Char('Nomor Service', track_visibility='onchange')
    pelanggan = fields.Many2one('res.partner','Pelanggan', track_visibility='onchange')
    tanggal = fields.Date('Tanggal')
    service_detail = fields.One2many('my.service.detail', 'service_id')


class MyServiceDetail(models.Model):    
    _name = 'my.service.detail'

    # sebaiknya _description anda isi
    # isi dengan nama yang pantas, agar saat dibaca di chatter juga enak
    _description = 'Service Detail'

    # bagian ini wajib, jika anda menginginkan fungsi chatter
    _inherit = ['portal.mixin', 'mail.thread', 'mail.activity.mixin']

    # perhatikan pada bagian track_visibility
    product = fields.Many2one('product.product', 'Product', track_visibility='onchange')
    keluhan = fields.Char('Keluhan', track_visibility='onchange')
    garansi = fields.Boolean('Garansi')
    service_id = fields.Many2one('my.service')




Anda harus inherit ke tiga model ini portal.mixin, mail.thread dan mail.activity.mixin untuk menggunakan fungsi chatter.

Dan gunakan parameter track_visibility pada field yang ingin anda catat perubahan-nya. Ada dua pilihan yang bisa anda gunakan yaitu onchange dan always.

Sedangkan _description tidak wajib anda isi. Tapi alangkah baiknya jika diisi.

Kode XML

Berikut adalah contoh kode xml untuk menampilkan chatter.

<record id="service_form" model="ir.ui.view">
    <field name="name">Service Form</field>
    <field name="model">my.service</field>
    <field name="type">form</field>
    <field name="arch" type="xml">
        <form>                    
            <sheet>
                <group>
                    <group>
                        <field name="name" />
                    </group>
                    <group>
                        <field name="pelanggan" />
                        <field name="tanggal" />
                    </group>
                </group>
                <notebook>
                    <page string="Detail">
                        <field name="service_detail">
                            <tree editable="bottom">
                                <field name="product" />
                                <field name="keluhan" />
                                <field name="garansi" />
                            </tree>
                        </field>
                    </page>
                </notebook>
            </sheet>
            <!-- bagian diatas adalah view normal Odoo -->
            <!-- bagian dibawah ini adalah kode untuk menampilkan chatter -->
            <div class="oe_chatter">
                <field name="message_follower_ids" widget="mail_followers" />
                <field name="activity_ids" widget="mail_activity" />
                <field name="message_ids" widget="mail_thread" />
            </div>
        </form>
    </field>
</record>

Untuk menampilkan fungsi chatter, anda cukup menambahkan div dengan class oe_chatter dan beberapa field bawaan dari model portal.mixin, mail.thread dan mail.activity.mixin.

Jika form atau model anda dibuka dalam bentuk modal, seperti form service detail diatas jangan gunakan class oe_chatter. Cukup field-nya. Karena jika anda menggunakan-nya, chatter tidak akan tampil. Silakan download source code lewat link dibawah untuk detailnya.

Perbedaan antara menggunakan class oe_chatter dan tidak adalah jika anda menggunakan class oe_chatter anda bisa menambah catatan / log secara manual, tetapi chatter tidak tampil jika dibuka lewat modal. Sedangkan jika tidak menggunakan class oe_chatter fungsi chatter tetap tampil jika dibuka lewat modal tapi tidak bisa menambah catatan / log secara manual.

Download Source Code

Tulisan Serupa

Leave a Reply

Your email address will not be published. Required fields are marked *