如何修复此错误;类型错误:';未定义';对象不可调用";在OpenERP7WebKit报告中?

如何修复此错误;类型错误:';未定义';对象不可调用";在OpenERP7WebKit报告中?,openerp,mako,Openerp,Mako,我已经在webkit报告中尝试了我所知道的关于amount to text函数的一切,但我只是一无所获。我查看了支票书写模块,并尽可能多地复制了它,但仍然没有结果。我使用webkit而不是rml,我不确定这是否会在v7中产生差异,因为相同的代码在6.1中工作良好。任何帮助都将不胜感激 这是.py文件中的代码: import time from report import report_sxw from osv import osv from openerp.osv import osv

我已经在webkit报告中尝试了我所知道的关于amount to text函数的一切,但我只是一无所获。我查看了支票书写模块,并尽可能多地复制了它,但仍然没有结果。我使用webkit而不是rml,我不确定这是否会在v7中产生差异,因为相同的代码在6.1中工作良好。任何帮助都将不胜感激

这是.py文件中的代码:

import time
from report import report_sxw
from osv import osv     
from openerp.osv import osv,fields
from openerp.tools.translate import _
from openerp.tools.amount_to_text_en import amount_to_text

class tax_receipt(report_sxw.rml_parse):
    def __init__(self, cr, uid, name, context):
        super(tax_receipt, self).__init__(cr, uid, name, context=context)
        self.localcontext.update({
            'time': time,
            'cr':cr,
            'uid': uid,
            'amount_to_text': amount_to_text,
        })

report_sxw.report_sxw('report.tax.receipt',
                       'account.bank.statement.line', 
                       'addons/account_financial_report_webkit/report/webkit_html_bank_statement.mako',
                       parser=tax_receipt)

# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
mako文件的摘录如下所示:

<table width="95%" cellpadding="5px" cellpadding="5px">
    <tbody>
      <tr style="text-align:left;border-bottom:1px solid;">
        <td width="10%">The sum of </td>
        <td width="80%" style="text-align:left;border-bottom:1px solid;">**${ amount_to_text(inv.amount) }**</td>
      </tr> 
    </tbody>
</table>

总数
**${amount\u to\u text(inv.amount)}**
当我尝试生成报告时,我得到:

Traceback (most recent call last):
File "C:\Program Files (x86)\OpenERP 7.0\Server\server\openerp\addons\report_webkit\webkit_report.py", line 266, in create_single_pdf

File "mako\template.pyc", line 302, in render

File "mako\runtime.pyc", line 660, in _render

File "mako\runtime.pyc", line 692, in _render_context

File "mako\runtime.pyc", line 718, in _exec_template

File "memory:0x4a2d6d0", line 78, in render_body
<td width="80%" style="text-align:left;border-bottom:1px solid;">${ amount_to_text(inv.amount) }</td>
TypeError: 'Undefined' object is not callable
回溯(最近一次呼叫最后一次):
文件“C:\Program Files(x86)\OpenERP 7.0\Server\Server\OpenERP\addons\report\u webkit\webkit\u report.py”,第266行,在create\u single\u pdf中
文件“mako\template.pyc”,第302行,在渲染中
文件“mako\runtime.pyc”,第660行,在渲染中
文件“mako\runtime.pyc”,第692行,在渲染上下文中
文件“mako\runtime.pyc”,第718行,在_exec_模板中
文件“内存:0x4a2d6d0”,第78行,在渲染体中
${amount\u to\u text(inv.amount)}
TypeError:“未定义”对象不可调用

谢谢。

确保将.py解析器正确导入到模块中,即init.py中

### __init__.py file###

import your_parser

我不确定你在哪里有数量到文本函数的函数防御。在openerp 7中,必须以这种方式指定

class tax_receipt(report_sxw.rml_parse):
    def __init__(self, cr, uid, name, context):
        super(tax_receipt, self).__init__(cr, uid, name, context=context)
        self.localcontext.update({
            'time': time,
            'cr':cr,
            'uid': uid,
            'amount_to_text': self._amount_to_text,
        })
def _amount_to_text(self):
        res_users_obj = pooler.get_pool(self.cr.dbname).get('res.users')
        company_vat = res_users_obj.browse(self.cr, self.uid, self.uid).company_id.partner_id.vat
        return company_vat
在报告中你必须使用这个

<table width="95%" cellpadding="5px" cellpadding="5px">
    <tbody>
      <tr style="text-align:left;border-bottom:1px solid;">
        <td width="10%">The sum of </td>
        <td width="80%" style="text-align:left;border-bottom:1px solid;">${amount_to_text(inv.amount)} </td>
      </tr> 
    </tbody>
</table>
查看销售\订单\网络工具包模块以获取示例。并返回进行澄清。祝你好运

<% res_text = amount_to_text(inv.amount) %>
${res_text}