summaryrefslogtreecommitdiff
path: root/addons/web/views/report_templates.xml
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/web/views/report_templates.xml
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/web/views/report_templates.xml')
-rw-r--r--addons/web/views/report_templates.xml773
1 files changed, 773 insertions, 0 deletions
diff --git a/addons/web/views/report_templates.xml b/addons/web/views/report_templates.xml
new file mode 100644
index 00000000..573d1f1a
--- /dev/null
+++ b/addons/web/views/report_templates.xml
@@ -0,0 +1,773 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+ <!-- Assets for reports -->
+
+ <template id="report_assets_common">
+ <t t-call="web._assets_helpers">
+ <link rel="stylesheet" type="text/scss" href="/web/static/src/scss/bootstrap_overridden_report.scss"/>
+ </t>
+
+ <t t-call="web._assets_bootstrap"/>
+
+ <link href="/base/static/src/css/description.css" rel="stylesheet" type="text/css"/>
+
+ <link href="/web/static/lib/fontawesome/css/font-awesome.css" rel="stylesheet" type="text/css"/>
+
+ <link rel="stylesheet" type="text/scss" href="/web/static/src/scss/fonts.scss"/>
+
+ <link rel="stylesheet" type="text/scss" href="/web/static/src/scss/report.scss"/>
+ <link rel="stylesheet" type="text/scss" href="/web/static/src/scss/layout_standard.scss"/>
+ <link rel="stylesheet" type="text/scss" href="/web/static/src/scss/layout_background.scss"/>
+ <link rel="stylesheet" type="text/scss" href="/web/static/src/scss/layout_boxed.scss"/>
+ <link rel="stylesheet" type="text/scss" href="/web/static/src/scss/layout_clean.scss"/>
+ <link rel="stylesheet" type="text/scss" href="/web/static/src/scss/asset_styles_company_report.scss"/>
+
+ <script type="text/javascript" src="/web/static/src/js/services/session.js"/>
+ <script type="text/javascript" src="/web/static/src/js/public/public_root.js"/>
+ <script type="text/javascript" src="/web/static/src/js/public/public_root_instance.js"/>
+ <script type="text/javascript" src="/web/static/src/js/public/public_widget.js"/>
+ <script type="text/javascript" src="/web/static/src/js/report/utils.js"/>
+ <script type="text/javascript" src='/web/static/src/js/report/report.js' />
+ </template>
+
+ <template id="report_assets_pdf">
+ <link href="/web/static/src/css/reset.min.css" rel="stylesheet"/>
+ </template>
+
+ <!-- Private templates used internally by reports -->
+
+ <template id="report_layout" name="Report layout">&lt;!DOCTYPE html&gt;
+ <html t-att-lang="lang and lang.replace('_', '-')"
+ t-att-data-report-margin-top="data_report_margin_top"
+ t-att-data-report-header-spacing="data_report_header_spacing"
+ t-att-data-report-dpi="data_report_dpi"
+ t-att-data-report-landscape="data_report_landscape"
+ t-att-web-base-url="web_base_url">
+ <head>
+ <meta charset="utf-8"/>
+ <meta name="viewport" content="initial-scale=1"/>
+ <title><t t-esc="title or 'Odoo Report'"/></title>
+ <t t-call-assets="web.report_assets_common" t-js="false"/>
+ <t t-call-assets="web.assets_common" t-css="false"/>
+ <t t-call-assets="web.report_assets_common" t-css="false"/>
+ </head>
+ <body t-att-class="'container' if not full_width else 'container-fluid'">
+ <div id="wrapwrap">
+ <main>
+ <t t-raw="0"/>
+ </main>
+ </div>
+ </body>
+ </html>
+ </template>
+
+ <template id="report_preview_layout" name="Report layout">&lt;!DOCTYPE html&gt;
+ <html t-att-lang="lang and lang.replace('_', '-')"
+ t-att-data-report-margin-top="data_report_margin_top"
+ t-att-data-report-header-spacing="data_report_header_spacing"
+ t-att-data-report-dpi="data_report_dpi"
+ t-att-data-report-landscape="data_report_landscape"
+ t-att-web-base-url="web_base_url"
+ >
+ <head>
+ <meta charset="utf-8"/>
+ <meta name="viewport" content="initial-scale=1"/>
+ <title><t t-esc="title or 'Odoo Report'"/></title>
+ <t t-call-assets="web.report_assets_common" t-js="false"/>
+ <t t-call-assets="web.assets_common" t-css="false"/>
+ <style>
+ <t t-raw="preview_css"/>
+
+ /**
+ Some css is overridden as it doesn't work properly in the preview.
+ Before generating 'real' reports, a lot of processing is applied. It is therefore quite
+ complicated to have an almost exact replica of the pdf report.
+ This changes down here are hacks to make the preview look as good as possible.
+ **/
+
+ /** The footers are not at the bottom of the page, so we push them down. **/
+ .o_background_footer {
+ margin-top: 270px !important;
+ }
+ .o_standard_footer {
+ margin-top: 190px !important;
+ }
+ .o_boxed_footer {
+ margin-top: 270px !important;
+ }
+ .o_clean_footer {
+ margin-top: 160px !important;
+ }
+
+ /** Avoid image overflowing and creating a scrollbar **/
+ .o_background_header {
+ min-width: initial !important;
+ }
+
+ /** This rule is overridden in web/report.scss to hack around whtml2pdf
+ Simply set it to its default value so it works properly in preview **/
+ .col-auto{
+ -webkit-box-flex: 0 !important;
+ -webkit-flex: 0 0 auto !important;
+ flex: 0 0 auto !important;
+ width: auto !important;
+ max-width: 100% !important;
+ }
+
+ </style>
+ </head>
+ <body t-att-class="'container' if not full_width else 'container-fluid'">
+ <div id="wrapwrap">
+ <t t-raw="0"/>
+ </div>
+ </body>
+ </html>
+ </template>
+
+ <template id="html_container">
+ <t t-set="body_classname" t-value="'container'"/>
+ <t t-call="web.report_layout">
+ <t t-raw="0"/>
+ </t>
+ </template>
+
+ <template id="html_preview_container">
+ <t t-set="body_classname" t-value="'container'"/>
+ <t t-call="web.report_preview_layout">
+ <t t-raw="0"/>
+ </t>
+ </template>
+
+
+ <template id="report_invoice_wizard_preview">
+ <t t-call="web.html_preview_container">
+ <t t-call="web.external_layout">
+ <div class="pt-5">
+ <div class="address row">
+ <div name="address" class="col-md-5 ml-auto">
+ <address>
+ <address class="mb-0" itemscope="itemscope"
+ itemtype="http://schema.org/Organization">
+ <div>
+ <span itemprop="name">Deco Addict</span>
+ </div>
+ <div itemprop="address" itemscope="itemscope"
+ itemtype="http://schema.org/PostalAddress">
+ <div class="d-flex align-items-baseline">
+ <span class="w-100 o_force_ltr" itemprop="streetAddress">77 Santa Barbara
+ Rd<br/>Pleasant Hill CA 94523<br/>United States</span>
+ </div>
+ </div>
+ </address>
+ </address>
+ </div>
+ </div>
+ </div>
+ <div class="page">
+ <h2>
+ <span>Invoice</span>
+ <span>INV/2020/07/0003</span>
+ </h2>
+ <div id="informations" class="row mt32 mb32">
+ <div class="col-auto mw-100 mb-2" name="invoice_date">
+ <strong>Invoice Date:</strong>
+ <p class="m-0">07/08/2020</p>
+ </div>
+ <div class="col-auto mw-100 mb-2" name="due_date">
+ <strong>Due Date:</strong>
+ <p class="m-0">08/07/2020</p>
+ </div>
+ </div>
+ <table class="table table-sm o_main_table" name="invoice_line_table">
+ <thead>
+ <tr>
+ <th name="th_description" class="text-left"><span>Description</span></th>
+ <th name="th_quantity" class="text-right"><span>Quantity</span></th>
+ <th name="th_priceunit" class="text-right d-none d-md-table-cell"><span>Unit Price</span></th>
+ <th name="th_taxes" class="text-left d-none d-md-table-cell"><span>Taxes</span></th>
+ <th name="th_subtotal" class="text-right">
+ <span>Amount</span>
+ </th>
+ </tr>
+ </thead>
+ <tbody class="invoice_tbody">
+ <tr>
+ <td name="account_invoice_line_name"><span>[FURN_8999] Three-Seat Sofa<br/>
+ Three Seater Sofa with Lounger in Steel Grey Colour</span></td>
+ <td class="text-right">
+ <span>5.000</span>
+ </td>
+ <td class="text-right d-none d-md-table-cell">
+ <span class="text-nowrap">1,500.00</span>
+ </td>
+ <td class="text-left d-none d-md-table-cell">
+ <span id="line_tax_ids">15.00%</span>
+ </td>
+ <td class="text-right o_price_total">
+ <span class="text-nowrap">$ <span class="oe_currency_value">7,500.00</span></span>
+ </td>
+ </tr>
+ <tr>
+ <td name="account_invoice_line_name"><span>[FURN_8220] Four Person Desk<br/>
+ Four person modern office workstation</span></td>
+ <td class="text-right">
+ <span>5.000</span>
+ </td>
+ <td class="text-right d-none d-md-table-cell">
+ <span class="text-nowrap">23,500.00</span>
+ </td>
+ <td class="text-left d-none d-md-table-cell">
+ <span id="line_tax_ids">15.00%</span>
+ </td>
+ <td class="text-right o_price_total">
+ <span class="text-nowrap">$ <span class="oe_currency_value">117,500.00</span></span>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <div class="clearfix">
+ <div id="total" class="row">
+ <div class="col-sm-7 col-md-6 ml-auto">
+ <table class="table table-sm" style="page-break-inside: avoid;">
+ <tbody><tr class="border-black o_subtotal" style="">
+ <td><strong>Subtotal</strong></td>
+ <td class="text-right">
+ <span>$ <span class="oe_currency_value">125,000.00</span></span>
+ </td>
+ </tr>
+ <tr style="">
+ <td><span class="text-nowrap">Tax 15%</span></td>
+ <td class="text-right o_price_total">
+ <span class="text-nowrap">$ 18,750.00</span>
+ </td>
+ </tr>
+ <tr class="border-black o_total">
+ <td><strong>Total</strong></td>
+ <td class="text-right">
+ <span class="text-nowrap">$ <span class="oe_currency_value">
+ 143,750.00</span></span>
+ </td>
+ </tr>
+ </tbody></table>
+ </div>
+ </div>
+ </div>
+ <p>
+ Please use the following communication for your payment : <b><span>
+ INV/2020/07/0003</span></b>
+ </p>
+ <p name="payment_term">
+ <span>Payment terms: 30 Days</span>
+ </p>
+ </div>
+ </t>
+ </t>
+ </template>
+
+ <template id="minimal_layout">
+ &lt;!DOCTYPE html&gt;
+ <t t-raw="'&lt;base href=%s&gt;' % base_url"/>
+ <html style="height: 0;">
+ <head>
+ <t t-call-assets="web.report_assets_pdf" t-js="false"/>
+ <t t-call-assets="web.report_assets_common" t-js="false"/>
+ <t t-call-assets="web.report_assets_pdf" t-css="false"/>
+ <meta charset="utf-8"/>
+ <t t-set="subst_needed" t-value="subst is True"/>
+ <t t-if="subst_needed">
+ <script>
+ function subst() {
+ var vars = {};
+ var x = document.location.search.substring(1).split('&amp;');
+ for (var i in x) {
+ var z = x[i].split('=', 2);
+ vars[z[0]] = unescape(z[1]);
+ }
+ var x = ['sitepage', 'sitepages', 'section', 'subsection', 'subsubsection'];
+ var z = {'sitepage': 'page', 'sitepages': 'topage'};
+ for (var i in x) {
+ var y = document.getElementsByClassName(z[x[i]] || x[i])
+ for (var j=0; j&lt;y.length; ++j)
+ y[j].textContent = vars[x[i]];
+ }
+
+ var index = vars['webpage'].split('.', 4)[3];
+ var header = document.getElementById('minimal_layout_report_headers');
+ if(header !== null){
+ var companyHeader = header.children[index];
+ header.textContent = '';
+ header.appendChild(companyHeader);
+ }
+ var footer = document.getElementById('minimal_layout_report_footers');
+ if(footer !== null){
+ var companyFooter = footer.children[index];
+ footer.textContent = '';
+ footer.appendChild(companyFooter);
+ }
+ }
+ </script>
+ </t>
+ </head>
+ <body class="container" t-att-onload="subst_needed and 'subst()'">
+ <t t-raw="body"/>
+ </body>
+ </html>
+ </template>
+
+ <!-- External layouts styles -->
+
+ <template id="address_layout">
+ <t t-set="colclass" t-value="('col-md-5' if report_type == 'html' else 'col-5') + ' ml-auto'"/>
+ <t t-if="address">
+ <div class="address row">
+ <t t-if="information_block">
+ <t t-set="colclass" t-value="'col-5 offset-1'"/>
+ <div name="information_block" class="col-6">
+ <t t-raw="information_block"/>
+ </div>
+ </t>
+ <div name="address" t-att-class="colclass">
+ <t t-raw="address"/>
+ </div>
+ </div>
+ </t>
+ </template>
+
+ <template id="external_layout_background">
+ <div t-attf-class="o_company_#{company.id}_layout header" t-att-style="report_header_style">
+ <div class="o_background_header">
+ <div class="float-right">
+ <h3 class="mt0 text-right" t-field="company.report_header"/>
+ </div>
+ <img t-if="company.logo" t-att-src="image_data_uri(company.logo)" class="float-left" alt="Logo"/>
+ <div class="float-left company_address">
+ <div>
+ <strong t-field="company.partner_id.name"/>
+ </div>
+ <span t-field="company.partner_id"
+ t-options='{"widget": "contact", "fields": ["address"], "no_marker": true}'/>
+ </div>
+ <div class="clearfix mb8"/>
+ </div>
+ </div>
+
+ <div t-attf-class="o_company_#{company.id}_layout article o_report_layout_background" t-att-data-oe-model="o and o._name" t-att-data-oe-id="o and o.id" t-att-data-oe-lang="o and o.env.context.get('lang')">
+ <t t-call="web.address_layout"/>
+ <t t-raw="0"/>
+ </div>
+
+ <div t-attf-class="o_company_#{company.id}_layout footer o_background_footer">
+ <div class="text-center">
+ <ul class="list-inline">
+ <li t-if="company.phone" class="list-inline-item"><i class="fa fa-phone" role="img" aria-label="Phone" title="Phone"/> <span class="o_force_ltr" t-field="company.phone"/></li>
+ <li t-if="company.email" class="list-inline-item"><i class="fa fa-at" role="img" aria-label="Email" title="Email"/> <span t-field="company.email"/></li>
+ <li t-if="company.website" class="list-inline-item"><i class="fa fa-globe" role="img" aria-label="Website" title="Website"/> <span t-field="company.website"/></li>
+ <li t-if="company.vat" class="list-inline-item"><i class="fa fa-building-o" role="img" aria-label="Fiscal number"/><t t-esc="company.country_id.vat_label or 'Tax ID'"/>: <span t-field="company.vat"/></li>
+ </ul>
+ <div t-field="company.report_footer"/>
+ <div t-if="report_type == 'pdf'" class="text-muted">
+ Page:
+ <span class="page"/>
+ of
+ <span class="topage"/>
+ </div>
+ </div>
+ </div>
+ </template>
+
+ <template id="external_layout_boxed">
+ <div t-attf-class="header o_company_#{company.id}_layout" t-att-style="report_header_style">
+ <div class="o_boxed_header">
+ <div class="row mb8">
+ <div class="col-6">
+ <img t-if="company.logo" t-att-src="image_data_uri(company.logo)" alt="Logo"/>
+ </div>
+ <div class="col-6 text-right mb4">
+ <h4 class="mt0" t-field="company.report_header"/>
+ <div name="company_address" class="float-right mb4">
+ <span class="company_address" t-field="company.partner_id"
+ t-options='{"widget": "contact", "fields": ["address", "name"], "no_marker": true}'/>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div t-attf-class="article o_report_layout_boxed o_company_#{company.id}_layout" t-att-data-oe-model="o and o._name" t-att-data-oe-id="o and o.id" t-att-data-oe-lang="o and o.env.context.get('lang')">
+ <div class="pt-5">
+ <!-- This div ensures that the address is not cropped by the header. -->
+ <t t-call="web.address_layout"/>
+ </div>
+ <t t-raw="0"/>
+ </div>
+
+ <div t-attf-class="footer o_boxed_footer o_company_#{company.id}_layout">
+ <div class="text-center">
+ <ul class="list-inline">
+ <li t-if="company.phone" class="list-inline-item"><span class="o_force_ltr" t-field="company.phone"/></li>
+ <li t-if="company.email" class="list-inline-item"><span t-field="company.email"/></li>
+ <li t-if="company.website" class="list-inline-item"><span t-field="company.website"/></li>
+ <li t-if="company.vat" class="list-inline-item"><t t-esc="company.country_id.vat_label or 'Tax ID'"/>: <span t-field="company.vat"/></li>
+ </ul>
+ <div t-field="company.report_footer"/>
+ <div t-if="report_type == 'pdf'">
+ Page: <span class="page"/> / <span class="topage"/>
+ </div>
+ </div>
+ </div>
+ </template>
+
+ <template id="external_layout_clean">
+ <div t-attf-class="header o_company_#{company.id}_layout" t-att-style="report_header_style">
+ <div class="o_clean_header">
+ <div class="row">
+ <div class="col-6">
+ <img t-if="company.logo" t-att-src="image_data_uri(company.logo)" alt="Logo"/>
+ </div>
+ <div class="col-5 offset-1" name="company_address">
+ <ul class="list-unstyled">
+ <strong><li t-if="company.name"><span t-field="company.name"/></li></strong>
+ <li t-if="company.vat"><t t-esc="company.country_id.vat_label or 'Tax ID'"/>: <span t-field="company.vat"/></li>
+ <li t-if="company.phone">Tel: <span class="o_force_ltr" t-field="company.phone"/></li>
+ <li t-if="company.email"><span t-field="company.email"/></li>
+ <li t-if="company.website"><span t-field="company.website"/></li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div t-attf-class="article o_report_layout_clean o_company_#{company.id}_layout" t-att-data-oe-model="o and o._name" t-att-data-oe-id="o and o.id" t-att-data-oe-lang="o and o.env.context.get('lang')">
+ <t t-call="web.address_layout"/>
+ <t t-raw="0"/>
+ </div>
+
+ <div t-attf-class="footer o_clean_footer o_company_#{company.id}_layout">
+ <div class="row mt8">
+ <div class="col-3">
+ <span t-field="company.report_footer"/>
+ </div>
+ <div class="col-4 text-right">
+ <span class="company_address" t-field="company.partner_id"
+ t-options='{"widget": "contact", "fields": ["address"], "no_marker": true}'/>
+ </div>
+ <div class="col-4">
+ <h4 class="mt0 mb0 text-uppercase" t-field="company.report_header"/>
+ </div>
+ <div class="col-1">
+ <ul t-if="report_type == 'pdf'" class="list-inline pagenumber float-right text-center">
+ <li class="list-inline-item"><strong><span class="page"/></strong></li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ </template>
+
+ <template id="external_layout_standard">
+ <div t-attf-class="header o_company_#{company.id}_layout" t-att-style="report_header_style">
+ <div class="row">
+ <div class="col-3 mb4">
+ <img t-if="company.logo" t-att-src="image_data_uri(company.logo)" style="max-height: 45px;" alt="Logo"/>
+ </div>
+ <div class="col-9 text-right" style="margin-top:22px;" t-field="company.report_header" name="moto"/>
+ </div>
+ <div t-if="company.logo or company.report_header" class="row zero_min_height">
+ <div class="col-12">
+ <div style="border-bottom: 1px solid black;"/>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-6" name="company_address">
+ <div t-field="company.partner_id"
+ t-options='{"widget": "contact", "fields": ["address", "name"], "no_marker": true}'
+ />
+ </div>
+ </div>
+ </div>
+
+ <div t-attf-class="article o_report_layout_standard o_company_#{company.id}_layout" t-att-data-oe-model="o and o._name" t-att-data-oe-id="o and o.id" t-att-data-oe-lang="o and o.env.context.get('lang')">
+ <div class="pt-5">
+ <!-- This div ensures that the address is not cropped by the header. -->
+ <t t-call="web.address_layout"/>
+ </div>
+ <t t-raw="0"/>
+ </div>
+
+ <div t-attf-class="footer o_standard_footer o_company_#{company.id}_layout">
+ <div class="text-center" style="border-top: 1px solid black;">
+ <ul class="list-inline mb4">
+ <!-- using the list-inline-item class from bootstrap causes weird behaviours in pdf report
+ adding d-inline class fixes the problem-->
+ <li t-if="company.phone" class="list-inline-item d-inline"><span class="o_force_ltr" t-field="company.phone"/></li>
+ <li t-if="company.email" class="list-inline-item d-inline"><span t-field="company.email"/></li>
+ <li t-if="company.website" class="list-inline-item d-inline"><span t-field="company.website"/></li>
+ <li t-if="company.vat" class="list-inline-item d-inline"><t t-esc="company.country_id.vat_label or 'Tax ID'"/>: <span t-field="company.vat"/></li>
+ </ul>
+
+ <div name="financial_infos">
+ <span t-field="company.report_footer"/>
+ </div>
+
+ <div t-if="report_type == 'pdf'" class="text-muted">
+ Page: <span class="page"/> / <span class="topage"/>
+ </div>
+ </div>
+ </div>
+ </template>
+
+ <!-- Public api: layout to t-call from reports -->
+
+ <template id="external_layout">
+ <t t-if="not o" t-set="o" t-value="doc"/>
+
+ <t t-if="not company">
+ <!-- Multicompany -->
+ <t t-if="company_id">
+ <t t-set="company" t-value="company_id"/>
+ </t>
+ <t t-elif="o and 'company_id' in o and o.company_id.sudo()">
+ <t t-set="company" t-value="o.company_id.sudo()"/>
+ </t>
+ <t t-else="else">
+ <t t-set="company" t-value="res_company"/>
+ </t>
+ </t>
+
+ <t t-if="company.external_report_layout_id" t-call="{{company.external_report_layout_id.key}}"><t t-raw="0"/></t>
+ <t t-else="else" t-call="web.external_layout_standard"><t t-raw="0"/></t>
+
+ </template>
+
+ <template id="internal_layout">
+ <t t-if="not o" t-set="o" t-value="doc"/>
+
+ <t t-if="not company">
+ <!-- Multicompany -->
+ <t t-if="company_id">
+ <t t-set="company" t-value="company_id"/>
+ </t>
+ <t t-elif="o and 'company_id' in o and o.company_id.sudo()">
+ <t t-set="company" t-value="o.company_id.sudo()"/>
+ </t>
+ <t t-else="else">
+ <t t-set="company" t-value="res_company"/>
+ </t>
+ </t>
+
+ <div class="header">
+ <div class="row">
+ <div class="col-3">
+ <span t-esc="context_timestamp(datetime.datetime.now()).strftime('%Y-%m-%d %H:%M')"/>
+ </div>
+ <div class="col-2 offset-2 text-center">
+ <span t-esc="company.name"/>
+ </div>
+ <div class="col-2 offset-3 text-right">
+ <ul class="list-inline">
+ <li class="list-inline-item"><span class="page"/></li>
+ <li class="list-inline-item">/</li>
+ <li class="list-inline-item"><span class="topage"/></li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ <div class="article" t-att-data-oe-model="o and o._name" t-att-data-oe-id="o and o.id" t-att-data-oe-lang="o and o.env.context.get('lang')">
+ <t t-raw="0"/>
+ </div>
+ </template>
+
+ <template id="basic_layout">
+ <t t-call="web.html_container">
+ <t t-if="not o" t-set="o" t-value="doc"/>
+ <div class="article" t-att-data-oe-model="o and o._name" t-att-data-oe-id="o and o.id" t-att-data-oe-lang="o and o.env.context.get('lang')">
+ <t t-raw="0"/>
+ </div>
+ </t>
+ </template>
+
+ <!-- Customize the company form view by adding paperformat field as well as demo reports -->
+ <!-- Demo reports definition -->
+ <template id="preview_internalreport">
+ <t t-set="company" t-value="env.company"/>
+ <t t-call="web.html_container">
+ <t t-set="o" t-value="res_company"/>
+ <t t-call="web.internal_layout">
+ <div class="page">
+ <p>This is a sample of an internal report.</p>
+ </div>
+ </t>
+ </t>
+ </template>
+ <template id="preview_externalreport">
+ <t t-set="company" t-value="env.company"/>
+ <t t-call="web.html_container">
+ <t t-set="o" t-value="res_company"/>
+ <t t-call="web.external_layout">
+ <div class="page">
+ <p>This is a sample of an external report.</p>
+ </div>
+ </t>
+ </t>
+ </template>
+
+ <template id="styles_company_report">
+ <t t-foreach="company_ids" t-as="company" t-translation="off">
+ <t t-set="font" t-value="company.font or 'Lato'" />
+ <t t-set="primary" t-value="company.primary_color or 'black'" />
+ <t t-set="secondary" t-value="company.secondary_color or 'black'" />
+ <t t-set="layout" t-value="company.external_report_layout_id.key or 'web.external_layout_standard'" />
+ .o_company_<t t-esc='company.id'/>_layout {
+ font-family: '<t t-esc="font" />';
+
+ <t t-if="layout == 'web.external_layout_background'">
+ .o_background_header {
+ h3 {
+ color: <t t-esc='primary'/>;
+ }
+ }
+ &amp;.o_background_footer {
+ ul {
+ li {
+ color: <t t-esc='secondary'/>;
+ }
+ }
+ }
+ &amp;.o_report_layout_background {
+ strong {
+ color: <t t-esc='secondary'/>;
+ }
+ h2 {
+ color: <t t-esc='primary'/>;
+ }
+ thead tr th {
+ color: <t t-esc='secondary'/>;
+ }
+ }
+ .row > div > table,
+ div#total table {
+ &amp;:first-child,
+ &amp;:last-child,
+ &amp;.o_subtotal,
+ &amp;.o_total {
+ strong {
+ color: <t t-esc='primary'/>;
+ }
+ }
+ }
+ </t>
+ <t t-elif="layout == 'web.external_layout_boxed'">
+ &amp;.o_report_layout_boxed {
+ #total strong {
+ color: <t t-esc='primary'/>;
+ }
+ #informations strong {
+ color: <t t-esc='secondary'/>;
+ }
+ h2 span {
+ color: <t t-esc='primary'/>;
+ }
+ table {
+ thead {
+ tr th {
+ color: <t t-esc='secondary'/>;
+ }
+ }
+ tbody tr td {
+ &amp;.o_line_section td {
+ background-color: rgba(<t t-esc='primary'/>, 0.7);
+ }
+ &amp;.is-subtotal,
+ td.o_price_total {
+ background-color: rgba(<t t-esc='secondary'/>, 0.1);
+ }
+ }
+ }
+ }
+ .row > div > table,
+ div#total table {
+ tr {
+ &amp;.o_total td {
+ background-color: rgba(<t t-esc='primary'/>, 0.9);
+ }
+ }
+ }
+ </t>
+ <t t-elif="layout == 'web.external_layout_clean'" >
+ &amp;.o_clean_footer {
+ border-top: 3px solid <t t-esc='secondary'/>;
+ h4 {
+ color: <t t-esc='secondary'/>;
+ }
+ .pagenumber {
+ border: 3px solid <t t-esc='primary'/>;
+ background-color: <t t-esc='secondary'/>;
+ }
+ }
+ &amp;.o_report_layout_clean {
+ h1, h2, h3 {
+ color: <t t-esc='primary'/>;
+ }
+ strong {
+ color: <t t-esc='secondary'/>;
+ }
+ table {
+ thead {
+ color: <t t-esc='secondary'/>;
+ tr th {
+ border-top: 3px solid <t t-esc='secondary'/> !important;
+ }
+ }
+ tbody {
+ tr:last-child td {
+ border-bottom: 3px solid <t t-esc='secondary'/>;
+ }
+ }
+ }
+ #total {
+ strong {
+ color: <t t-esc='secondary'/>;
+ }
+ }
+ }
+ </t>
+ <t t-elif="layout == 'web.external_layout_standard'">
+ &amp;.o_report_layout_standard {
+ h2 {
+ color: <t t-esc='primary'/>;
+ }
+ #informations strong {
+ color: <t t-esc='secondary'/>;
+ }
+ #total strong{
+ color: <t t-esc='primary'/>;
+ }
+ table {
+ thead {
+ color: <t t-esc='secondary'/>;
+ }
+ }
+ }
+ </t>
+ }
+ </t>
+ </template>
+
+ <record id="action_report_internalpreview" model="ir.actions.report">
+ <field name="name">Preview Internal Report</field>
+ <field name="model">res.company</field>
+ <field name="report_type">qweb-pdf</field>
+ <field name="report_name">web.preview_internalreport</field>
+ <field name="report_file">web.preview_internalreport</field>
+ <field name="binding_model_id" ref="model_res_company"/>
+ <field name="binding_type">report</field>
+ </record>
+ <record id="action_report_externalpreview" model="ir.actions.report">
+ <field name="name">Preview External Report</field>
+ <field name="model">res.company</field>
+ <field name="report_type">qweb-pdf</field>
+ <field name="report_name">web.preview_externalreport</field>
+ <field name="report_file">web.preview_externalreport</field>
+ <field name="binding_model_id" ref="model_res_company"/>
+ <field name="binding_type">report</field>
+ </record>
+</odoo>