Odoo - 更改预测小部件的颜色
Odoo - Change color on Forecast Widget
我正在尝试更改销售订单视图中预测小部件的颜色。我认为它是在这个位置定义的 odoo/addons/sale_stock/static/src/xml/sale_stock.xml 这部分代码:
<div t-name="sale_stock.qtyAtDate">
<div t-att-class="!widget.data.display_qty_widget ? 'invisible' : ''">
<a tabindex="0" t-attf-class="fa fa-area-chart {{ widget.data.forecasted_issue ? 'text-danger' : 'text-primary' }}"/>
</div>
</div>
我创建了自定义模块并尝试用我的版本替换上面的代码(当可用数量 = 0 时它应该是红色的,当可用数量 < 5 时它应该是黄色的,当可用数量 > 5 时它应该是绿色的)但是没有成功
<?xml version="1.0" encoding="utf-8"?>
<templates id="template" xml:space="preserve">
<xpath expr="//div[@t-name='sale_stock.qtyAtDate']" position="replace">
<div t-att-class="!widget.data.display_qty_widget ? 'invisible' : ''">
<div t-elif="widget.data.forecasted_issue == 0">
<a tabindex="0" t-attf-class="fa fa-area-chart text-danger"/>
</div>
<div t-if="widget.data.forecasted_issue < 5">
<a tabindex="0" t-attf-class="fa fa-area-chart text-warning"/>
</div>
<div t-elif="widget.data.forecasted_issue > 5">
<a tabindex="0" t-attf-class="fa fa-area-chart text-primary"/>
</div>
</div>
</xpath>
</templates>
谁能指导我如何更改此图标的颜色。谢谢
Odoo 将引发以下错误(终端):
XMLSyntaxError: Unescaped '<' not allowed in attributes values
您需要转义 <
和 >
。
如果您修复了上述错误,您将在浏览器控制台中看到以下错误消息:
Error: QWeb2: Error: t-elif and t-else directives must be preceded by a t-if or t-elif directive
您只需更改 div 的顺序(您可能需要将 widget.data.product_uom_qty != 0
添加到 t-if
)。
查看 Odoo 文档,了解如何 alter qweb templates
扩展继承(in-place改造):
<t t-inherit="base.template" t-inherit-mode="extension">
<xpath expr="//tr[1]" position="after">
<tr><td>new cell</td></tr>
</xpath>
</t>
示例:
<templates>
<t t-inherit="sale_stock.qtyAtDate" t-inherit-mode="extension">
<xpath expr="//div" position="replace">
<div t-att-class="!widget.data.display_qty_widget ? 'invisible' : ''">
<div t-if="widget.data.product_uom_qty != 0 and widget.data.product_uom_qty < 5">
<a tabindex="0" t-attf-class="fa fa-area-chart text-warning"/>
</div>
<div t-elif="widget.data.product_uom_qty == 0">
<a tabindex="0" t-attf-class="fa fa-area-chart text-danger"/>
</div>
<div t-elif="widget.data.product_uom_qty > 5">
<a tabindex="0" t-attf-class="fa fa-area-chart text-primary"/>
</div>
</div>
</xpath>
</t>
</templates>
对于 v14 - 这是有效的解决方案 - 只需将其放入您的 XML 文件中。对于 v15,使用 @Kenly 提供的解决方案。
<?xml version="1.0" encoding="utf-8"?>
<templates id="template" xml:space="preserve">
<t t-inherit="sale_stock.qtyAtDate" t-operation="replace">
<xpath expr="//div" position="replace">
<div t-att-class="!widget.data.display_qty_widget ? 'invisible' : ''">
<a tabindex="0" t-attf-class="fa fa-area-chart {{ widget.data.forecasted_issue ? 'text-danger' : widget.data.qty_available_today > 5 ? 'text-primary' : 'text-warning'}}"/>
</div>
</xpath>
</t>
</templates>
谢谢@Kenly 的帮助,你让我明白了一些事情。
我正在尝试更改销售订单视图中预测小部件的颜色。我认为它是在这个位置定义的 odoo/addons/sale_stock/static/src/xml/sale_stock.xml 这部分代码:
<div t-name="sale_stock.qtyAtDate">
<div t-att-class="!widget.data.display_qty_widget ? 'invisible' : ''">
<a tabindex="0" t-attf-class="fa fa-area-chart {{ widget.data.forecasted_issue ? 'text-danger' : 'text-primary' }}"/>
</div>
</div>
我创建了自定义模块并尝试用我的版本替换上面的代码(当可用数量 = 0 时它应该是红色的,当可用数量 < 5 时它应该是黄色的,当可用数量 > 5 时它应该是绿色的)但是没有成功
<?xml version="1.0" encoding="utf-8"?>
<templates id="template" xml:space="preserve">
<xpath expr="//div[@t-name='sale_stock.qtyAtDate']" position="replace">
<div t-att-class="!widget.data.display_qty_widget ? 'invisible' : ''">
<div t-elif="widget.data.forecasted_issue == 0">
<a tabindex="0" t-attf-class="fa fa-area-chart text-danger"/>
</div>
<div t-if="widget.data.forecasted_issue < 5">
<a tabindex="0" t-attf-class="fa fa-area-chart text-warning"/>
</div>
<div t-elif="widget.data.forecasted_issue > 5">
<a tabindex="0" t-attf-class="fa fa-area-chart text-primary"/>
</div>
</div>
</xpath>
</templates>
谁能指导我如何更改此图标的颜色。谢谢
Odoo 将引发以下错误(终端):
XMLSyntaxError: Unescaped '<' not allowed in attributes values
您需要转义 <
和 >
。
如果您修复了上述错误,您将在浏览器控制台中看到以下错误消息:
Error: QWeb2: Error: t-elif and t-else directives must be preceded by a t-if or t-elif directive
您只需更改 div 的顺序(您可能需要将 widget.data.product_uom_qty != 0
添加到 t-if
)。
查看 Odoo 文档,了解如何 alter qweb templates
扩展继承(in-place改造):
<t t-inherit="base.template" t-inherit-mode="extension">
<xpath expr="//tr[1]" position="after">
<tr><td>new cell</td></tr>
</xpath>
</t>
示例:
<templates>
<t t-inherit="sale_stock.qtyAtDate" t-inherit-mode="extension">
<xpath expr="//div" position="replace">
<div t-att-class="!widget.data.display_qty_widget ? 'invisible' : ''">
<div t-if="widget.data.product_uom_qty != 0 and widget.data.product_uom_qty < 5">
<a tabindex="0" t-attf-class="fa fa-area-chart text-warning"/>
</div>
<div t-elif="widget.data.product_uom_qty == 0">
<a tabindex="0" t-attf-class="fa fa-area-chart text-danger"/>
</div>
<div t-elif="widget.data.product_uom_qty > 5">
<a tabindex="0" t-attf-class="fa fa-area-chart text-primary"/>
</div>
</div>
</xpath>
</t>
</templates>
对于 v14 - 这是有效的解决方案 - 只需将其放入您的 XML 文件中。对于 v15,使用 @Kenly 提供的解决方案。
<?xml version="1.0" encoding="utf-8"?>
<templates id="template" xml:space="preserve">
<t t-inherit="sale_stock.qtyAtDate" t-operation="replace">
<xpath expr="//div" position="replace">
<div t-att-class="!widget.data.display_qty_widget ? 'invisible' : ''">
<a tabindex="0" t-attf-class="fa fa-area-chart {{ widget.data.forecasted_issue ? 'text-danger' : widget.data.qty_available_today > 5 ? 'text-primary' : 'text-warning'}}"/>
</div>
</xpath>
</t>
</templates>
谢谢@Kenly 的帮助,你让我明白了一些事情。