assalamu'alaikum.
saya akan share bagaimana cara menampilkan one2many di kanban.
kali ini saya akan memberikan contoh pada object project.project. perhatikan pada sintaks berikut:
saya akan menjelaskan dengan warna #seperti ini
# -*- coding: utf-8 -*-
from odoo import api, fields, models
import json
class Project(models.Model):
_inherit = "project.project" # nama object yang akan ditampilkan
data_rab_json = fields.Text(string='Data RAB Json',compute='get_data_rab') # ini adalah
yang paling penting karena akan dipanggil dan di looping di tampilan kanban
yang paling penting karena akan dipanggil dan di looping di tampilan kanban
@api.depends('rab_line')
def get_data_rab(self): # method compute untuk mencari data one2many yg akan di tampilkan
for project in self: #
analytics = self.env['account.analytic.account'] #
for anl in project.rab_line: #
analytics += anl.analytic_account_id #
sql = """select aaa.name, pr.jumlah, pr.percentage, pr.realization, pr.sisa
from project_rab pr
left join account_analytic_account aaa on pr.analytic_account_id = aaa.id
where aaa.id in %s"""
params = [tuple(analytics.ids) if analytics else (None,)]
self._cr.execute(sql,tuple(params))
data_rab = self._cr.dictfetchall()
def format_uang(value):
new_value = "{:,.2f}".format(value)
return new_value
for x in data_rab:
x['jumlah'] = format_uang(x['jumlah']) if x['jumlah'] else 0
x['realization'] = format_uang(x['realization']) if x['realization'] else 0
x['percentage'] = '%.2f'% x['percentage'] if x['percentage'] else 0
x['sisa'] = format_uang(x['sisa']) if x['sisa'] else 0
project.data_rab_json = json.dumps(data_rab) if data_rab else False
berikut adalah sintaks xml kanban
<table class="table table-condensed" width="100%">
<tr class="text-center">
<th style="padding:0.5rem;" rowspan="2" class="text-center">Jenis Biaya</th>
<th style="padding:0.5rem;" rowspan="2" class="text-center">Cost</th>
<th style="padding:0.5rem;" colspan="2" class="text-center">Realization</th>
<th style="padding:0.5rem;" rowspan="2" class="text-center">Sisa</th>
</tr>
<tr>
<th style="padding:0.5rem;" class="text-center">(%)</th>
<th style="padding:0.5rem;" class="text-center">Amount</th>
</tr>
<t t-value="JSON.parse(record.data_rab_json.raw_value)" t-set="rab_line"/> dibagian
inilah field data_rab_json dipanggil untuk ditampilkan ke kanban
inilah field data_rab_json dipanggil untuk ditampilkan ke kanban
<t t-foreach="rab_line" t-as="x">
<tr>
<td class="text-left">
<span t-esc="x.name"/>
</td>
<td class="text-right">
<span t-esc="x.jumlah"/>
</td>
<td class="text-right">
<span t-esc="x.percentage"/>
</td>
<td class="text-right">
<span t-esc="x.realization"/>
</td>
<td class="text-right">
<span t-esc="x.sisa"/>
</td>
</tr>
</t>
</table>
Ini adalah hasilnya :