Odoo 14 标头自定义
Posted
技术标签:
【中文标题】Odoo 14 标头自定义【英文标题】:Odoo 14 header customization 【发布时间】:2021-09-19 15:51:45 【问题描述】:在 Odoo 14 中,我想编辑我的发票。我已经在上面坐了几个小时了,不能再进一步了。许多标题自定义是针对 Odoo 12 或更低版本描述的,但没有给我具体的答案。我想在发票右侧显示我的公司地址,在公司地址所在的左侧显示买方地址。
我想编辑页眉,使公司地址只出现在首页上,而徽标则保留在连续页面上。
当我创建一个<div class=header>
。整个页眉不再显示在任何页面上。
<?xml version="1.0"?>
<t t-name="web.external_layout_standard">
<div class="" t-attf-class="header o_company_#company.id_layout" t-att-style="report_header_style">
<div class="row" >
<div class="col-6 mb4">
<img t-if="company.logo" t-att-src="image_data_uri(company.logo)" style="max-height: 75px;width:80%; object-fit:contain;" />
<span style="width:150%; font-weight:bold; font-size:smaller;padding:0;margin-bottom:-10px;">Professionelle Businesslösung für Ihren Erfolg</span><br/>
<span style="width:150%; font-size:smaller;padding:0;margin-top:-10px;">Smart Solutions - Video Producing - IT Network - Aircraft Solutions</span>
</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: 3px solid #fa0219;"/>
</div>
</div>
<div class="row" style="height:15px;">
<div class="col-6" style="font-size:x-small;width:100%; padding:50px 0 0 50px;height:20px;">
<span>test</span>
</div>
<div class="col-6" name="company_address" style="float:right; text-align:right;padding-top:15px; ">
<div t-field="company.partner_id" t-options=""widget": "contact", "fields": ["address", "name"], "no_marker": true"/>
<span class="o_force_ltr" t-field="company.phone"/><br/>
<span t-field="company.email"/><br/>
<span t-field="company.website"/>
</div>
</div>
</div>
<div style="" 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 style="" class="pt-5">
<!-- This div ensures that the address is not cropped by the header. -->
<t style="" t-call="web.address_layout"/>
</div>
<div style="" class="pt-5">
<t t-raw="0"/>
</div>
</div>
<div t-attf-class="footer o_standard_footer o_company_#company.id_layout">
<div class="" style="border-top: 1px solid #fa0219;color:gray;">
<div name="financial_infos" style="font-size:smaller; text-align:left;float:left;width:90%;margin-top:5px;">
<span t-field="company.report_footer"/>
<div t-if="report_type == 'pdf'" class="text-muted">
Seite: <span class="page"/> / <span class="topage"/>
</div>
</div>
<div style="float:right;width:69px; text-align:center;margin-top:5px;font-size:smaller;">
<img src="data:image/gif;>img</img>
<span style="width:100%;margin-bottom:2px;padding:0;">ISO</span>
<span style="width:100%;margin-bottom:2px;padding:0;">9001:2015</span>
<span style="width:100%;margin-bottom:2px;padding:0;">Zertifiziert</span>
</div>
</div>
</div>
</t>
【问题讨论】:
【参考方案1】:Odoo 期望 external_layout
具有三个主要的 div:header
、article
和 footer
,彼此相邻才能正确渲染。
查看您的代码,您将新的代码行放在标题旁边,而不是在其中。这很可能不起作用,除非您在 Odoo 的源代码中更深入地继承和更改父视图 - 我不推荐这样做。
您可以尝试将所有代码放入 header
或 article
div 中。看看它是否至少显示并从那里拿走。
编辑:
要控制标头的可见性,您可以查看 OCA 模块 Report Qweb Element Page Visibility。目前Odoo 14.0没有版本,但是自己实现应该不会太难,因为它基本上只有一个XML文件。
使用上面模块中的功能,您只需将一个类 first-page
添加到应该只在第一页上可见的元素中。
<div class="header">
<div>
<!-- Company logo etc - visible on every page -->
</div>
<div class="first-page">
<!-- Company address etc - visible only on the first page -->
</div>
</div>
【讨论】:
你好,如果我重写我的代码,让我有 3 个主 div。是否会隐藏页眉和页脚。我仍然不知道该怎么办。 它们将是可见的。您可以尝试使用 OCA 模块隐藏标题 - 请查看我编辑的答案以了解详细信息。以上是关于Odoo 14 标头自定义的主要内容,如果未能解决你的问题,请参考以下文章
odoo首页添加自定义模块,修改代码后报错,请问各路大神啥情况