Python 如何关联国家和发票以打印自定义文本?

Python 如何关联国家和发票以打印自定义文本?,python,xml,odoo,helper,Python,Xml,Odoo,Helper,在发票视图中,我有一个自定义布尔字段和一个自定义文本字段 Odoo Server Error Traceback (most recent call last): File "/home/ubuntu/OdooAddons/odoo/odoo/addons/base/models/qweb.py", line 348, in _compiled_fn return compiled(self, append, new, options, log) File

在发票视图中,我有一个自定义布尔字段和一个自定义文本字段

 Odoo Server Error
Traceback (most recent call last):
  File "/home/ubuntu/OdooAddons/odoo/odoo/addons/base/models/qweb.py", line 348, in _compiled_fn
    return compiled(self, append, new, options, log)
  File "<template>", line 1, in template_account_report_invoice_document_with_payments_104
  File "<template>", line 2, in body_call_content_103
  File "/home/ubuntu/OdooAddons/odoo/addons-extra/emb_account/models/account_invoice.py", line 13, in country_group_country_ids
    return self.env['country.group'].search([('name', '=', group)]).mapped('country_ids.id')
  File "/home/ubuntu/OdooAddons/odoo/odoo/api.py", line 831, in __getitem__
    return self.registry[model_name]._browse((), self)
  File "/home/ubuntu/OdooAddons/odoo/odoo/modules/registry.py", line 177, in __getitem__
    return self.models[model_name]
KeyError: 'country.group'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/ubuntu/OdooAddons/odoo/addons/web/controllers/main.py", line 1686, in report_download
    response = self.report_routes(reportname, docids=docids, converter=converter)
  File "/home/ubuntu/OdooAddons/odoo/odoo/http.py", line 519, in response_wrap
    response = f(*args, **kw)
  File "/home/ubuntu/OdooAddons/odoo/addons/web/controllers/main.py", line 1627, in report_routes
    pdf = report.with_context(context).render_qweb_pdf(docids, data=data)[0]
  File "/home/ubuntu/OdooAddons/odoo/odoo/addons/base/models/ir_actions_report.py", line 727, in render_qweb_pdf
    html = self.with_context(context).render_qweb_html(res_ids, data=data)[0]
  File "/home/ubuntu/OdooAddons/odoo/odoo/addons/base/models/ir_actions_report.py", line 767, in render_qweb_html
    return self.render_template(self.report_name, data), 'html'
  File "/home/ubuntu/OdooAddons/odoo/odoo/addons/base/models/ir_actions_report.py", line 540, in render_template
    return view_obj.render_template(template, values)
  File "/home/ubuntu/OdooAddons/odoo/odoo/addons/base/models/ir_ui_view.py", line 1338, in render_template
    return self.browse(self.get_view_id(template)).render(values, engine)
  File "/home/ubuntu/OdooAddons/odoo/addons/web_editor/models/ir_ui_view.py", line 29, in render
    return super(IrUiView, self).render(values=values, engine=engine, minimal_qcontext=minimal_qcontext)
  File "/home/ubuntu/OdooAddons/odoo/odoo/addons/base/models/ir_ui_view.py", line 1347, in render
    return self.env[engine].render(self.id, qcontext)
  File "/home/ubuntu/OdooAddons/odoo/odoo/addons/base/models/ir_qweb.py", line 59, in render
    result = super(IrQWeb, self).render(id_or_xml_id, values=values, **context)
  File "/home/ubuntu/OdooAddons/odoo/odoo/addons/base/models/qweb.py", line 275, in render
    self.compile(template, options)(self, body.append, values or {})
  File "/home/ubuntu/OdooAddons/odoo/odoo/addons/base/models/qweb.py", line 350, in _compiled_fn
    raise e
  File "/home/ubuntu/OdooAddons/odoo/odoo/addons/base/models/qweb.py", line 348, in _compiled_fn
    return compiled(self, append, new, options, log)
  File "<template>", line 1, in template_967_50
  File "<template>", line 2, in body_call_content_49
  File "<template>", line 3, in foreach_48
  File "/home/ubuntu/OdooAddons/odoo/odoo/addons/base/models/qweb.py", line 355, in _compiled_fn
    raise QWebException("Error to render compiling AST", e, path, node and etree.tostring(node[0], encoding='unicode'), name)
odoo.addons.base.models.qweb.QWebException: 'country.group'
Traceback (most recent call last):
  File "/home/ubuntu/OdooAddons/odoo/odoo/addons/base/models/qweb.py", line 348, in _compiled_fn
    return compiled(self, append, new, options, log)
  File "<template>", line 1, in template_account_report_invoice_document_with_payments_104
  File "<template>", line 2, in body_call_content_103
  File "/home/ubuntu/OdooAddons/odoo/addons-extra/emb_account/models/account_invoice.py", line 13, in country_group_country_ids
    return self.env['country.group'].search([('name', '=', group)]).mapped('country_ids.id')
  File "/home/ubuntu/OdooAddons/odoo/odoo/api.py", line 831, in __getitem__
    return self.registry[model_name]._browse((), self)
  File "/home/ubuntu/OdooAddons/odoo/odoo/modules/registry.py", line 177, in __getitem__
    return self.models[model_name]
KeyError: 'country.group'

Error to render compiling AST
KeyError: 'country.group'
Template: account.report_invoice_document_with_payments
Path: /templates/t/t/div/t[2]
Node: <t t-set="is_for_emb_message_country" t-value="o.partner_id.country_id and o.partner_id.country_id.id in o.country_group_country_ids('Exportaciones')"/>
            
Odoo服务器错误
回溯(最近一次呼叫最后一次):
文件“/home/ubuntu/odooadons/odoo/odoo/addons/base/models/qweb.py”,第348行,在
返回已编译(self、append、new、options、log)
文件“”,第1行,在模板\u账户\u报告\u发票\u文档\u中,带有\u付款\u 104
文件“”,第2行,在body\u call\u content\u 103中
文件“/home/ubuntu/odooadons/odoo/addons extra/emb_account/models/account_invoice.py”,第13行,国家/地区/集团/国家/地区ID
返回self.env['country.group'].search([('name','=',group)]).mapped('country_id.id'))
文件“/home/ubuntu/odooadons/odoo/odoo/api.py”,第831行,在__
返回self.registry[model_name]。_浏览((),self)
文件“/home/ubuntu/odooadons/odoo/odoo/modules/registry.py”,第177行,在__
返回self.models[模型名称]
KeyError:'country.group'
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“/home/ubuntu/odooadons/odoo/addons/web/controllers/main.py”,第1686行,在报告下载中
response=self.report\u路由(reportname,docid=docid,converter=converter)
文件“/home/ubuntu/odooadons/odoo/odoo/http.py”,第519行,作为回应
响应=f(*参数,**kw)
文件“/home/ubuntu/odooadons/odoo/addons/web/controllers/main.py”,第1627行,在报告中
pdf=报表。带有上下文(context)。呈现\qweb\uPDF(docids,data=data)[0]
文件“/home/ubuntu/odooadons/odoo/odoo/addons/base/models/ir\u actions\u report.py”,第727行,在render\u qweb\u pdf中
html=self.with_context(context).render_qweb_html(res_id,data=data)[0]
文件“/home/ubuntu/odooadons/odoo/odoo/addons/base/models/ir_actions_report.py”,第767行,在render_qweb_html中
返回self.render_模板(self.report_名称、数据),'html'
文件“/home/ubuntu/odooadons/odoo/odoo/addons/base/models/ir\u actions\u report.py”,第540行,在渲染模板中
返回视图对象渲染模板(模板,值)
文件“/home/ubuntu/odooadons/odoo/odoo/addons/base/models/ir_ui_view.py”,第1338行,在render_模板中
返回self.browse(self.get\u view\u id(模板)).render(值,引擎)
文件“/home/ubuntu/odooadons/odoo/addons/web_editor/models/ir_ui_view.py”,第29行,在render中
返回super(IrUiView,self).render(值=值,引擎=引擎,最小值\u qcontext=最小值\u qcontext)
文件“/home/ubuntu/odooadons/odoo/odoo/addons/base/models/ir_ui_view.py”,第1347行,在render中
返回self.env[engine].render(self.id,qcontext)
文件“/home/ubuntu/odooadons/odoo/odoo/addons/base/models/ir_qweb.py”,第59行,在render中
result=super(IrQWeb,self).render(id\u或xml\u id,value=value,**上下文)
文件“/home/ubuntu/odooadons/odoo/odoo/addons/base/models/qweb.py”,第275行,在render中
compile(模板、选项)(self、body.append、value或{})
文件“/home/ubuntu/odooadons/odoo/odoo/addons/base/models/qweb.py”,第350行,在
提高e
文件“/home/ubuntu/odooadons/odoo/odoo/addons/base/models/qweb.py”,第348行,在
返回已编译(self、append、new、options、log)
模板_967_50中第1行的文件“”
文件“”,第2行,在body\u call\u content\u 49中
文件“”,第3行,在foreach_48中
文件“/home/ubuntu/odooadons/odoo/odoo/addons/base/models/qweb.py”,第355行,在
引发QWebException(“呈现编译AST时出错”,e,path,node和etree.tostring(node[0],encoding='unicode'),name)
odoo.addons.base.models.qweb.QWebException:'country.group'
回溯(最近一次呼叫最后一次):
文件“/home/ubuntu/odooadons/odoo/odoo/addons/base/models/qweb.py”,第348行,在
返回已编译(self、append、new、options、log)
文件“”,第1行,在模板\u账户\u报告\u发票\u文档\u中,带有\u付款\u 104
文件“”,第2行,在body\u call\u content\u 103中
文件“/home/ubuntu/odooadons/odoo/addons extra/emb_account/models/account_invoice.py”,第13行,国家/地区/集团/国家/地区ID
返回self.env['country.group'].search([('name','=',group)]).mapped('country_id.id'))
文件“/home/ubuntu/odooadons/odoo/odoo/api.py”,第831行,在__
返回self.registry[model_name]。_浏览((),self)
文件“/home/ubuntu/odooadons/odoo/odoo/modules/registry.py”,第177行,在__
返回self.models[模型名称]
KeyError:'country.group'
在编译AST时出现错误
KeyError:'country.group'
模板:account.report\u发票\u凭证\u和\u付款
路径:/templates/t/t/div/t[2]
节点:
我正试图在报告中打印自定义字段的文本,但只有当发票要转到国家组时,我才有它的id。 我怎样才能完成这个功能?
如何将国家/地区和发票关联起来以创建此项?

最简单的方法是在帐户发票模型中添加一个函数,并从qweb报告中调用它。您可以定义一个并在那里定义它,以便它在报告上下文中可用

示例

我认为国家组的定义如下:

class CountryGroup(models.Model):
_名称='country.group'
name=fields.Char()
country\u id=fields.Many2many(“res.country”)
您只需在account invoice model中定义一个函数,以返回特定国家/地区组的国家/地区ID:

class AccountInvoice(models.Model):
_继承='account.invoice'
def国家/地区组国家/地区ID(自身、组):
返回self.env['country.group'].search([('name','=',group)]).mapped('country_id.id'))
以下代码扩展了发票报告,并在发票状态之后显示参考字段以进行演示:

<template id="report_invoice_document" inherit_id="account.report_invoice_document">
    <xpath expr="//h2" position="after">
        <t t-if="o.partner_id.country_id and o.partner_id.country_id.id in o.country_group_country_ids('export')">
            <p t-field="o.reference"/>
        </t>
    </xpath>
</template>

请输入您的代码或您在这一点上的尝试。我没有代码。我不知道如何将国家组与发票联系起来。我需要这个