Assalamu'alaikum Warohmatullah Wabarokatuh.
Pada kesempatan kali ini, saya ingin berbagi pengalaman tentang bagaimana caranya membuat sistem bagi hasil penjualan produk/jasa.
Karena akan ada banyak step yang harus dilakukan, saya akan membagi artikel ini menjadi beberapa bagian, dan bagian pertama adalah custom tampilan pada product.category dan product.template.
Baiklah langsung saja kita mulai bagian dasarnya terlebih dahulu
1. Pastikan anda sudah membuat modul baru untuk tutorial ini, kemudian masuk buka file models.py pada text editor.
2. Masukkan kode di bawah ini terlebih dahulu
from odoo import models, fields, api, _
class KomponenPembagianTarif(models.Model): _name = 'pembagian.tarif' name = fields.Char(string='Komponen Pembagian')
3. Kemudian kita buat object template.komponen.tarif dan tempelkan object tersebut pada field One2many di object product.category
class TemplateKomponenTarif(models.Model): _name = 'template.komponen.tarif' category_id = fields.Many2one('product.category') pembagian_id = fields.Many2one('pembagian.tarif',string='Pembagian',required=True,) tipe = fields.Selection([ ('langsung','Langsung'), ('tidaklangsung','Tidak Langsung') ],default='tidaklangsung', string='Tipe Pembagian')
class ProductCategoryCustom(models.Model): _inherit = 'product.category' komponen_tarif_line = fields.One2many('template.komponen.tarif', 'category_id', string='Komponen Tarif')
4. Setelah selesai membuat template komponen, mari buat juga komponen tarif pada object product.template. Konsepnya adalah komponen tarif yang ada pada object product.template harus sama dengan kategori produk tersebut. \
class KomponenTarif(models.Model):
_name = 'komponen.tarif'
product_id = fields.Many2one('product.template', string='Produk')
pembagian_id = fields.Many2one('pembagian.tarif', string='Pembagian', required=True, readonly=True, )
nilai = fields.Float(string='Nilai')
persentase = fields.Float(string='Persentase')
tipe = fields.Selection([
('langsung','Langsung'),
('tidaklangsung','Tidak Langsung')
],default='tidaklangsung', string='Tipe Pembagian', readonly=True, )
class ProductKomponenTarif(models.Model):
_inherit = 'product.template'
kelas_id = fields.Many2one('master.kelas', string='Kelas')
komponen_tarif_line = fields.One2many('komponen.tarif', 'product_id', string='Komponen Tarif')
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink akses_template_komponen_tarif,access_template_komponen_tarif,model_template_komponen_tarif,,1,1,1,1 akses_komponen_tarif,access_komponen_tarif,model_komponen_tarif,,1,1,1,1 akses_pembagian_tarif,access_pembagian_tarif,model_pembagian_tarif,,1,1,1,1 akses_master_kelas,access_master_kelas,model_master_kelas,,1,1,1,1
6. Tahap terakhir pada tutorial kali ini adalah membuat tampilan xml untuk kode di atas, silakan buka file views > views.xml dan masukkan kode di bawah ini.
<odoo> <data> <record id="product_template_add_komponen_tarif" model="ir.ui.view"> <field name="name">product.template.add.komponen.tarif</field> <field name="model">product.template</field> <field name="inherit_id" ref="product.product_template_form_view"/> <field name="arch" type="xml"> <xpath expr='//notebook' position='inside'> <page string="Komponen Tarif"> <field name='komponen_tarif_line'> <tree editable='bottom' create='false' delete='false'> <field name='pembagian_id'/> <field name='tipe'/> <field name='nilai'/> <field name='persentase' widget='percentage'/> </tree> </field> </page> </xpath> </field> </record>Alhamdulillah artikel bagian pertama sudah selesai, untuk bagian kedua saya akan berbagi tentang bagaimana menyesuaikan komponen tarif yang ada pada produk agar sama dengan produk kategorinya.
<record id="product_category_add_template_komponen_tarif" model="ir.ui.view"> <field name="name">product.category.add.template.komponen.tarif</field> <field name="model">product.category</field> <field name="inherit_id" ref="product.product_category_form_view"/> <field name="arch" type="xml"> <xpath expr='/form/sheet' position='
<notebook> <page string="Komponen Tarif"> <field name='komponen_tarif_line'> <tree editable='bottom'> <field name='pembagian_id'/> <field name='tipe'/> </tree> </field> </page> </notebook> </xpath> </field> </record> </data> </odoo>
Terima kasih telah berkunjung ke artikel saya yang sederhana ini, mohon maaf jika banyak kesalahan penulisan maupun bahasa kodingan saya cukup berantakan :-)
Wassalamu'alaikum Warohmatullah Wabarokatuh