Сообщить о проблеме в odoo 12
Я разработал новый отчет для account.invoice в odoo 12, но когда я предполагаю напечатать это, он дает мне следующее предупреждение в ветке 12.0:
Неправильный шаблон отчета "Название шаблона", обратитесь к администратору.
Невозможно отделить файл для сохранения в качестве вложения, поскольку шаблон отчета не содержит атрибутов "data-oe-model" и "data-oe-id" в div с именем класса "article".
В основной ветке он говорит модель данных вместо data-oe-model, data-id вместо data-oe-id и имя класса "page" вместо "class" classname
Если кто-то сталкивался с той же проблемой и нашел решение, пожалуйста, дайте мне знать.
Спасибо
4 ответа
Я решил это с помощью друга:
В вашем external_layout вы должны определить 't-att-data-oe-model' и 't-att-data-oe-id' . Добавь это:
<div class="article o_report_layout_standard" t-att-data-oe-model="o and o._name" t-att-data-oe-id="o and o.id">
<t t-call="web.address_layout"/>
<t t-raw="0"/>
</div>
Ранее этот фрагмент кода (v11) был таким:
<div class="article o_report_layout_standard">
<t t-raw="0" />
</div>
Надеюсь, это решит вашу проблему. Это изменение связано с тем, что отчет теперь можно редактировать в версии 12 с помощью приложения студии.
Да, вам нужно изменить external_layout, в моем случае это был пользовательский макет, и я решил его, используя ниже XML
<template id="custom_layout">
<!-- Multicompany -->
<div class="article o_report_layout_standard" t-att-data-oe-model="doc and doc._name" t-att-data-oe-id="doc and doc.id">
<t t-if ="doc and 'company_id' in doc" >
<t t-set="company" t-value="doc.company_id"/>
<t t-set="customer" t-value="doc.partner_id"/>
</t>
<t t-call="custom_sale_report_v12.custom_layout_header"/>
<t t-raw="0"/>
<t t-call="ce_sale_report_v12.custom_layout_footer"/>
</div>
</template>
Я столкнулся с той же проблемой.
Причина заключалась в том, что
t-if
состояние перед
<t t-call="web.external_layout">
. Ошибка возникает, когда ее значение равно False.
Эта ошибка может произойти, если нет report_type="qweb-html" для report_type="qweb-pdf". Для решения этой проблемы нужно было как... примерно так:
<report
id="report_invoice_html"
model="MY_MODEL_NAME"
string="Invoice HTML"
name="MODULE.report_invoice_view"
file="MODULE.report_invoice"
report_type="qweb-html" />
<report
id="report_invoice_pdf"
model="MY_MODEL_NAME"
string="Invoice PDF"
name="MODULE.report_invoice_view"
file="MODULE.report_invoice"
report_type="qweb-pdf" />
Если вы посмотрите на исходный код Odoo на ir_actions_report.py, вы увидите оператор сравнения set(res_ids)!= Set(html_ids), если HTML-шаблон не существует, он возвращает True, а затем вызывает ошибку