自定义报表上的Odoo 12非类型错误

自定义报表上的Odoo 12非类型错误,odoo,odoo-12,qweb,Odoo,Odoo 12,Qweb,我正在尝试在Odoo 12下创建自定义报告,以添加到“订单”视图下的“打印”选项中。到目前为止,很好,我将XML包括在清单中,并在sale_management/report文件夹下创建XML。我在编辑时更新了模块,并且正确地编译了它。尽管如此,一旦我按下打印按钮,我会出现以下错误: Error: Odoo Server Error Traceback (most recent call last): File "/usr/lib/python3/dist-packages/odoo/ad

我正在尝试在Odoo 12下创建自定义报告,以添加到“订单”视图下的“打印”选项中。到目前为止,很好,我将XML包括在清单中,并在sale_management/report文件夹下创建XML。我在编辑时更新了模块,并且正确地编译了它。尽管如此,一旦我按下打印按钮,我会出现以下错误:

Error:
Odoo Server Error

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/odoo/addons/base/models/qweb.py", line 347, in _compiled_fn
    return compiled(self, append, new, options, log)
  File "<template>", line 1, in template_829_149
  File "<template>", line 2, in body_call_content_148
AttributeError: 'NoneType' object has no attribute 'with_context'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/main.py", line 1671, in report_download
    response = self.report_routes(reportname, docids=docids, converter=converter)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 519, in response_wrap
    response = f(*args, **kw)
  File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/main.py", line 1612, in report_routes
    pdf = report.with_context(context).render_qweb_pdf(docids, data=data)[0]
  File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_actions_report.py", line 712, in render_qweb_pdf
    html = self.with_context(context).render_qweb_html(res_ids, data=data)[0]
  File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_actions_report.py", line 752, in render_qweb_html
    return self.render_template(self.report_name, data), 'html'
  File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_actions_report.py", line 534, in render_template
    return view_obj.render_template(template, values)
  File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_ui_view.py", line 1304, in render_template
    return self.browse(self.get_view_id(template)).render(values, engine)
  File "/usr/lib/python3/dist-packages/odoo/addons/web_editor/models/ir_ui_view.py", line 27, in render
    return super(IrUiView, self).render(values=values, engine=engine, minimal_qcontext=minimal_qcontext)
  File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_ui_view.py", line 1313, in render
    return self.env[engine].render(self.id, qcontext)
  File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_qweb.py", line 59, in render
    result = super(IrQWeb, self).render(id_or_xml_id, values=values, **context)
  File "/usr/lib/python3/dist-packages/odoo/addons/base/models/qweb.py", line 275, in render
    self.compile(template, options)(self, body.append, values or {})
  File "/usr/lib/python3/dist-packages/odoo/addons/base/models/qweb.py", line 354, 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: 'NoneType' object has no attribute 'with_context'
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/odoo/addons/base/models/qweb.py", line 347, in _compiled_fn
    return compiled(self, append, new, options, log)
  File "<template>", line 1, in template_829_149
  File "<template>", line 2, in body_call_content_148
AttributeError: 'NoneType' object has no attribute 'with_context'

Error to render compiling AST
AttributeError: 'NoneType' object has no attribute 'with_context'
Template: 829
Path: /templates/t/t/t[1]
Node: <t t-set="doc" t-value="doc.with_context(lang=doc.partner_id.lang)"/>

错误:
Odoo服务器错误
回溯(最近一次呼叫最后一次):
文件“/usr/lib/python3/dist-packages/odoo/addons/base/models/qweb.py”,第347行,在
返回已编译(self、append、new、options、log)
文件“”,第1行,在模板\u 829\u 149中
文件“”,第2行,在正文中\u调用\u内容\u 148
AttributeError:“非类型”对象没有“具有上下文”的属性
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“/usr/lib/python3/dist packages/odoo/addons/web/controllers/main.py”,第1671行,报告下载
response=self.report\u路由(reportname,docid=docid,converter=converter)
文件“/usr/lib/python3/dist packages/odoo/http.py”,第519行,作为响应
响应=f(*参数,**kw)
文件“/usr/lib/python3/dist packages/odoo/addons/web/controllers/main.py”,第1612行,在报告中
pdf=报表。带有上下文(context)。呈现\qweb\uPDF(docids,data=data)[0]
文件“/usr/lib/python3/dist packages/odoo/addons/base/models/ir\u actions\u report.py”,第712行,在render\u qweb\u pdf中
html=self.with_context(context).render_qweb_html(res_id,data=data)[0]
文件“/usr/lib/python3/dist packages/odoo/addons/base/models/ir\u actions\u report.py”,第752行,以render\u qweb\u html格式
返回self.render_模板(self.report_名称、数据),'html'
文件“/usr/lib/python3/dist packages/odoo/addons/base/models/ir\u actions\u report.py”,第534行,位于渲染模板中
返回视图对象渲染模板(模板,值)
文件“/usr/lib/python3/dist packages/odoo/addons/base/models/ir\u ui\u view.py”,第1304行,位于渲染模板中
返回self.browse(self.get\u view\u id(模板)).render(值,引擎)
文件“/usr/lib/python3/dist packages/odoo/addons/web_editor/models/ir_ui_view.py”,第27行,在render中
返回super(IrUiView,self).render(值=值,引擎=引擎,最小值\u qcontext=最小值\u qcontext)
文件“/usr/lib/python3/dist packages/odoo/addons/base/models/ir_ui_view.py”,第1313行,在渲染中
返回self.env[engine].render(self.id,qcontext)
文件“/usr/lib/python3/dist packages/odoo/addons/base/models/ir_qweb.py”,第59行,在render中
result=super(IrQWeb,self).render(id\u或xml\u id,value=value,**上下文)
文件“/usr/lib/python3/dist packages/odoo/addons/base/models/qweb.py”,第275行,在渲染中
compile(模板、选项)(self、body.append、value或{})
文件“/usr/lib/python3/dist packages/odoo/addons/base/models/qweb.py”,第354行,在
引发QWebException(“呈现编译AST时出错”,e,path,node和etree.tostring(node[0],encoding='unicode'),name)
odoo.addons.base.models.qweb.QWebException:“NoneType”对象没有“with_context”属性
回溯(最近一次呼叫最后一次):
文件“/usr/lib/python3/dist-packages/odoo/addons/base/models/qweb.py”,第347行,在
返回已编译(self、append、new、options、log)
文件“”,第1行,在模板\u 829\u 149中
文件“”,第2行,在正文中\u调用\u内容\u 148
AttributeError:“非类型”对象没有“具有上下文”的属性
在编译AST时出现错误
AttributeError:“非类型”对象没有“具有上下文”的属性
模板:829
路径:/templates/t/t/t[1]
节点:
出于测试目的,XML几乎与名为sale\u report\u templates.XML的同一目录中已包含的模板完全相同,我的整个文件是:

<?xml version="1.0" encoding="utf-8"?>
<odoo>
        <report
            id="albaran_sin_valorar"
            string="Documento sin valorar"
            model="sale.order"
            report_type="qweb-pdf"
            name="sale_management.report_albaran_sin_valorar"
        />

<template id="report_albaran_sin_valorar" inherit_id="sale.report_saleorder_document">
    <xpath expr="//div[hasclass('page')]/p[@id='fiscal_position_remark']" position="after">
        <div t-if="doc.sale_order_option_ids and doc.state in ['draft', 'sent']">
            <t t-set="has_option_discount" t-value="any(doc.sale_order_option_ids.filtered(lambda o: o.discount$
            <h4>
                <span>Optional Products</span>
            </h4>
            <table class="table table-sm">
                <thead>
                    <tr>
                        <th class="text-left">Description</th>
                        <th t-if="has_option_discount" groups="sale.group_discount_per_so_line" class="text-lef$
                        <th class="text-right">Unit Price</th>
                    </tr>
                </thead>
                <tbody class="sale_tbody">
                    <tr t-foreach="doc.sale_order_option_ids" t-as="option">
                        <td>
                            <span t-field="option.name"/>
                        </td>
                        <td t-if="has_option_discount" groups="sale.group_discount_per_so_line">
   ...
   </template>
   </odoo>


您正试图继承
默认Odoo销售报告,但您调用的报告操作不同。在您的自定义报告中,该对象没有分离['sale.order'],因此您没有对象,而没有对象

只需浏览有关如何使用报表继承的链接

XML销售报告定制文件中

<template id="report_saleorder_document_customise" inherit_id="sale.report_saleorder_document">
    <!-- Give the xpath according to your requirement -->
    <xpath expr="//table[hasclass('o_main_table')]//tr/th[@name='th_subtotal']" position="before">
       <!-- Add your customise with give the xpath -->
    </xpath>
</template>

清单文件中添加Xml文件


谢谢

非常感谢。12版本的工作流程有什么不同吗?是的,在odoo12上添加了一些功能。因此,您最好能找到有关odoo 12功能的视频/文档。我恐怕无法使其正常工作,也找不到正确的文档来执行此操作。我花了两个多星期的时间试图把所有的事情放在一起,但都没有结果。我只想添加第二个选项来打印订单,而不包括价格。在你的url之后,不清楚它是如何工作的,如果我将丢失原始格式并使用新格式,为什么本教程不显示清单文件(是否不需要?),等等。。。有很多问题。我真的迷路了,来自odoo的文档无法帮助我理解所有的底层机制。有一件事,你必须自定义销售报告,而不仅仅是只需要一个XML文件并将其添加到清单文件中。然后,在链接的XML文件上,使用inherit_id=“sale.report_id”代码,使用xpath尝试修改你的报告。只有这件事你必须做,你得到的结果。所以请尝试。我已经编辑了我的答案,所以你可以按照这个。