如何在odoo中获取.rml报告中的字段值? [英] how to get field values in .rml report in odoo?

查看:93
本文介绍了如何在odoo中获取.rml报告中的字段值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下.rml代码,用于从form中提取字段值.但我有many2one字段,因此它获取的索引值是值或字符串

I have following code this .rml code to extract field value from form . but i have many2one fields so its getting index values insted of value or string

<?xml version="1.0"?>
<document filename="test.pdf">
 <template showBoundary="1">
 <pageTemplate id="main">
 <pageGraphics>
 </pageGraphics>
 <frame id="first" x1="200" y1="400" width="150" height="400"/>
 </pageTemplate>
 </template>
 <stylesheet>
 <blockTableStyle id="blocktablestyle4">
 <!-- show a grid: this also comes in handy for debugging your tables.-->
 <lineStyle kind="GRID" colorName="black" thickness="1" start="0,0" stop="-1,-1" />
 </blockTableStyle>
 <paraStyle name="textstyle1" fontName="Helvetica" fontSize="9" textColor="black"/>
 <paraStyle name="textstyle2" fontName="Helvetica-Bold" fontSize="9" textColor="blue"/>
 <paraStyle name="P5" fontName="Helvetica-Bold" fontSize="16.0" textColor="blue" leading="22" alignment="CENTER"/>

 </stylesheet>
 <story>
<para style="P1">[[ repeatIn(objects,'o') ]]</para>
<para style="P2">
      <font color="white"> </font>
</para>

<para style="P5">Feedback Form</para>

 <blockTable style="blocktablestyle4">
 <tr>
 <td>
   <para style="textstyle1">ID : [[ o.folionum]]</para>

   <para style="textstyle1">Folio    : [[ o.folio_number ]]</para> 
 </td>
 <td>

   <para style="textstyle1">Inspection Type      : [[ o.inspec_type ]]</para>

 </td>
 </tr>

 </blockTable>

 </story>
</document>

这是我想要此报告的.py模块

and this is .py module from where i wanted this reports

from openerp.osv import fields, osv
from openerp import api
import logging

class feedback_form(osv.Model):
    _name = 'feedback.form'
    _rec_name = 'inspec_type'
    _columns = {

        'folionum' : fields.many2one('calendar.event','Maintainace ID',),
        'folio_number' : fields.many2one('asset.asset','Folio number',),
        'inspec_type' : fields.many2one('asset1.inspection','Inspection Type',),

        'frequency' : fields.char('Frequency'),
        'shutdown' : fields.char('Shut Down'),
        #'insp_msr1' : fields.many2one('results.measure','Result',),
        'insp_msr1' : fields.many2many('results.measure','results_measure_rel','super_id','results_measure_id','Result',),
        'insp_rslt' : fields.one2many('feedback.tree','insp_rsltts','Inspection Result',),

    }


    def onchange_folio(self, cr, uid, ids, folionum, context=None):
        dids = []
        for record in self.pool.get('calendar.event').browse(cr, uid, folionum, context=context):
            dids = [x.id for x in record.folio_num]
        return {'domain':{'folio_number':[('id','in',dids)]}}

    def onchange_client(self, cr, uid, ids, folio_number, inspec_type, context=None):
        res={}
        order_obj = self.pool.get('calendar.event')
        order_ids = order_obj.search(cr,uid, [('folio_num','=',folio_number)])
        return {'domain':{'inspec_type':[('id','in',order_ids)]}}

    '''def onchange_insp(self, cr, uid, ids, folio_number, context=None):
        dids = []
        for record in self.pool.get('calendar.event').browse(cr, uid, folio_number, context=context):
            dids = [x.id for x in record.inspection_name]
        return {'domain':{'inspec_type':[('id','in',dids)]}}'''

    def onchange_measure(self, cr, uid, ids, inspec_type, context=None):
        dids = []
        for record in self.pool.get('asset1.inspection').browse(cr, uid, inspec_type, context=context):
            dids = [x.id for x in record.msr_insp]
        return {'domain':{'insp_msr1':[('id','in',dids)]}}

feedback_form()

class feedback_tree(osv.Model):
    _name = 'feedback.tree'

    _columns = {

        'valuess' : fields.char('Values/Results'),
        'insp_rsltts': fields.many2one('feedback.form','Result Id'),

    }

feedback_tree()

推荐答案

尝试使用此代码

<blockTable style="blocktablestyle4">
    <tr>
    <td>
        <para style="textstyle1">ID : [[ o.folionum and o.folionum.name or '']]</para>

        <para style="textstyle1">Folio    : [[ o.folio_number and o.folio_number.name or '' ]]</para> 
   </td>
   <td>

   <para style="textstyle1">Inspection Type  : [[ o.inspec_type and o.inspec_type.name or '']]</para>

   </td>
   </tr>

</blockTable>

如果您有many2one字段,那么我们可以使用many2one_field.field_name来访问表值

If you have many2one field than we can access table value using many2one_field.field_name

这篇关于如何在odoo中获取.rml报告中的字段值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆