Пример отчета Odoo 12 - PullRequest
       42

Пример отчета Odoo 12

1 голос
/ 03 октября 2019

Я пытаюсь сделать отчет, но без использования external_layout или internal_layout, потому что в них есть заголовки. Я хотел иметь свой собственный верхний и нижний колонтитулы.

Я пытался использовать minimal_layout, потому что кажется, что это менее загруженный макет по сравнению с другими макетами.

Но я продолжал иметь ошибку body_parent = root.xpath('//main')[0] IndexError: list index out of range - - -

Вот мойкод

<template id="applicant_contract_css">
    <t t-call="web._assets_helpers"/>
    <link rel="stylesheet" type="text/scss" href="/fhid_recruitment/static/src/css/applicant-contract.css"/>
</template>

<template id="minimal_layout" inherit_id="web.minimal_layout">
    <xpath expr="//head" position="inside">
        <t t-call-assets="fhid_recruitment.applicant_contract_css"/>
    </xpath>
</template>

<template id="applicant_contract_offering">
    <t t-call="web.minimal_layout">
        <t t-foreach="docs" t-as="o">
            <div class="header">
                My Header
            </div>
            <div class="article">
                Content
            </div>
            <div class="footer">
                My footer
            </div>
        </t>
    </t>
</template>

Как использовать minimal layout? или я должен использовать другой макет?

Ответы [ 2 ]

2 голосов
/ 04 октября 2019

Если вы хотите создать шаблон отчета, вам нужно как минимум позвонить, "web.html_container" с вызовом "web.report_layout" с определением Minal Report layout.

все css файл для шаблона отчета должен быть добавлен в report_assets_common шаблон:

<template id="assets_common" name="a proper name for your template purpuse" inherit_id="web.report_assets_common">
    <xpath expr="." position="inside">
        <link rel="stylesheet" type="text/scss" href="/fhid_recruitment/static/src/css/applicant-contract.css"/>
    </xpath>
</template>

Лучше извлечь заголовок и нижний колонтитул в шаблон, чтобы использовать их в нескольких отчетах,как и external_layout, вы можете взглянуть на external_layout_standard, чтобы получить основную идею.

<template id="external_layout">
    <div class="header">
        My Header
    </div>
    <!-- everything inside t-call="fhid_recruitment.external_layout" will be rendered here -->
    <t t-raw="0" />

    <div class="footer">
        My footer
    </div>
</template>

В шаблоне просто вызовите свой собственный внешний макет здесь:

<template id="applicant_contract_offering">
    <t t-call="web.html_container">
        <!-- because it's defined in this module "fhid_recruitment" -->
        <t t-call="fhid_recruitment.external_layout">
           <t t-foreach="docs" t-as="o">
               <div call="page">
                    <div class="article">
                        Content
                    </div>
                </div>
            </t>
        </t>
    </t>
</template>

Одной из наиболее важных вещей, которые вам нужно знать о шаблоне, является <t t-raw="0" />, если, например, шаблон x_template имеет его, когда мы называем его так:

<t t-call="x_template">
    any_content
</t>

что такое Qwebдвигатель сделает, заменив <t t-raw="0" /> внутри x_template на any_content при рендеринге отчета.

Чтобы упростить задачу, если вы собираетесь использовать верхний и нижний колонтитулы только для одного шаблона:

<template id="applicant_contract_offering">
    <t t-call="web.html_container">
        <t t-foreach="docs" t-as="o">
            <div class="header">
                My Header
            </div>
            <div class="article">
                Content
            </div>
            <div class="footer">
                My footer
            </div>
        </t>
    </t>
</template>
1 голос
/ 04 октября 2019

Вы можете унаследовать либо external_layout, либо internal_layout и переопределить поведение по умолчанию своим пользовательским кодом. И используйте это в своем отчете.

...