【问题标题】:Odoo 10 Qweb Report, define filename for PDF fileOdoo 10 Qweb 报告,为 PDF 文件定义文件名
【发布时间】:2018-02-13 06:20:01
【问题描述】:

我有以下自定义报告:

<?xml version="1.0"?>
<odoo>
  <report
        id = "report_custom_sale_order"
        name = "custom_saleorder_v2.custom_report_saleorder"
        string = "Custom Quotation / Order"
        model = "sale.order"
        report_type = "qweb-pdf"
        report_name = "((object.number or 'SaleOrder').replace('/','')+'.pdf')"
        attachment_use = "False"
  />

</odoo>

对于带有参考/顺序SO003 的销售订单,我希望将PDF 下载为SO003.pdf,对于没有指定参考/顺序的草稿销售订单,我希望下载为SaleOrder.pdf

当我尝试使用 report_name 实现此类行为时,出现以下错误:

AssertionError: Element odoo has extra content: report, line 11

report_name应该如何使用?


按照我试过的 CZoellner 评论:

<?xml version="1.0"?>
<odoo>
    <report
        id = "report_custom_sale_order"
        name = "custom_saleorder_v2.custom_report_saleorder"
        string = "Custom Quotation / Order"
        model = "sale.order"
        report_type = "qweb-pdf"
        attachment_use = "False"
    />
    <record id="report_custom_sale_order" model="ir.actions.report.xml">
        <field name="print_report_name"><![CDATA[((object.number or 'SaleOrder').replace('/','')+'.pdf')]]></field>
    </record>
</odoo>

我收到以下错误:

ParseError: "null value in column "name" violates not-null constraint
DETAIL:  Failing row contains (523, 1, null, 1, 2018-02-13 17:17:20.385168, null, 2018-02-13 17:17:20.385168, ir.actions.report.xml, null, null, t, pdf, null, null, null, null, null, t, null, f, null, null, null, f, null, null, ((object.number or 'SaleOrder').replace('/','')+'.pdf')).
" while parsing /usr/lib/python2.7/dist-packages/odoo/custom_addons/custom_saleorder_v2/reports/sale_report.xml:12, near
<record id="report_custom_sale_order" model="ir.actions.report.xml">
    <field name="print_report_name">((object.number or 'SaleOrder').replace('/','')+'.pdf')</field>
</record>

注意:如果我使用object.name 而不是object.number 也是一样的(我认为这是获取文档引用/顺序的正确方法。

【问题讨论】:

    标签: odoo odoo-10 qweb


    【解决方案1】:

    在数据 XML 中使用特殊标记 report 时,不会转换字段 print_report_name。所以之后只需添加带有普通 XML 记录的字段:

    <?xml version="1.0"?>
    <odoo>
        <report
                id = "report_custom_sale_order"
                name = "custom_saleorder_v2.custom_report_saleorder"
                string = "Custom Quotation / Order"
                model = "sale.order"
                report_type = "qweb-pdf"
                attachment_use = "False"
        />
        <record id="custom_module_name.report_custom_sale_order" model="ir.actions.report.xml">
            <field name="print_report_name"><![CDATA[((object.number or 'SaleOrder').replace('/','')+'.pdf')]]></field>
        </record>
    </odoo>
    

    Odoo 10 中没有转换,但在Odoo 11 中添加了该字段。

    【讨论】:

    • 尝试将您的模块名称添加到记录 ID 中,例如 &lt;record id="my_module.my_xml_id" ...
    • 这就是问题所在。谢谢!
    【解决方案2】:

    您正在为报告名称和对象使用不同的字段。我已使用正确的字段名称更新了您的代码,如下所示。

    <?xml version="1.0"?>
    <odoo>
      <report
            id = "report_custom_sale_order"
            name = "custom_saleorder_v2.custom_report_saleorder"
            string = "Custom Quotation / Order"
            model = "sale.order"
            report_type = "qweb-pdf"
            print_report_name = "((object.name or 'SaleOrder').replace('/','')+'.pdf')"
            attachment_use = "False"
      />
    

    希望对你有帮助。

    【讨论】:

    • 我仍然收到错误消息。如果我删除该特定行,它可以正常工作。
    • 请在此处添加您遇到错误的行。
    • 失败的是特定行的 print_report_name。如果我删除该行,它工作正常。
    • 您是否在 print_report_name 属性值中使用object.number?仅供参考,销售订单对象中没有带有 number 的字段名称。使用object.name 而不是object.number
    • 我正在使用object.name 我已经意识到没有object.number。似乎该问题可能与 &lt;report&gt; 用法有关。我将测试 CZoellner 的建议,
    【解决方案3】:

    您可以使用print_report_name

    <?xml version="1.0"?>
    <odoo>
        <report id = "report_custom_sale_order"
                name = "custom_saleorder_v2.custom_report_saleorder"
                string = "Custom Quotation / Order"
                model = "sale.order"
                report_type = "qweb-pdf"
                print_report_name = "((object.number or 'SaleOrder').replace('/','')+'.pdf')"
                attachment_use = "False" />
    </odoo>
    

    【讨论】:

    • 我仍然遇到同样的错误。如果我删除该特定行,它可以正常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多