1

Webkit レポートの amount_to_text 関数で知っていることはすべて試しましたが、どうにもなりません。小切手作成モジュールを見て、できる限り複製しましたが、まだ結果はありません。rml の代わりに webkit を使用していますが、同じコードが 6.1 で正常に動作するため、これが v7 で違いを生むかどうかはわかりません。どんな助けでも大歓迎です

これは .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>

レポートを生成しようとすると、次のようになります。

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

ありがとうございました。

4

2 に答える 2

1

amount_to_text 関数の関数定義がどこにあるのかわかりません。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}

サンプルについては、sale_order_webkit モジュールを参照してください。そして、説明のために元に戻ります。幸運を!!

于 2013-09-03T10:45:53.703 に答える