为什么价值观正在消失?
Why values are disappearing?
我在 Odoo13 工作,我在创建销售订单时计算了一些税费,并且在执行此操作时我成功地计算了我各自的税费,如下所示。
但是在保存我的销售订单或确认它之后,我所有的自定义税字段都消失了,如:
这是我的Python文件代码:
class SaleOrder(models.Model):
_inherit = ['sale.order']
federal_tax = fields.Float('Federal Tax', readonly=True)
state_tax = fields.Float('State Tax', readonly=True)
county_tax = fields.Float('County Tax', readonly=True)
city_tax = fields.Float('City Tax', readonly=True)
unincorporated_tax = fields.Float('Unincorporated Tax', store=True, readonly=True)
这是我的 XML 文件:
<xpath expr="/form/sheet/notebook/page/group/group/field[@name='amount_untaxed']" position="after">
<field name="federal_tax" attrs="{'invisible':[('federal_tax','==', 0.00)]}"/>
<field name="state_tax" attrs="{'invisible':[('state_tax','==', 0.00)]}"/>
<field name="county_tax" attrs="{'invisible':[('county_tax','==', 0.00)]}"/>
<field name="city_tax" attrs="{'invisible':[('city_tax','==', 0.00)]}"/>
<field name="unincorporated_tax" attrs="{'invisible':[('unincorporated_tax','==', 0.00)]}"/>
</xpath>
Note: After confirming my order or by saving it my custom fields
value turn to 0 that is why they are disappearing but why they are
turning to zero?
从 xml 字段声明中删除 invisible
属性。
重启Odoo服务器,升级模块。并验证您的输出。
之后你就知道问题出在哪里了
如果您想隐藏税收,请执行以下操作。
attrs="{'invisible': [('federal_tax','=', 0.00)]}"
注意:
我没有看到任何税项计算,而您已使用 readonly=True
属性声明了它。这意味着它会在记录保存时刷新值。
您可以将只读字段属性放在视图而不是模型上,例如:
class SaleOrder(models.Model):
_inherit = ['sale.order']
federal_tax = fields.Float('Federal Tax',)
state_tax = fields.Float('State Tax',)
county_tax = fields.Float('County Tax',)
city_tax = fields.Float('City Tax',)
unincorporated_tax = fields.Float('Unincorporated Tax',)
<xpath expr="/form/sheet/notebook/page/group/group/field[@name='amount_untaxed']" position="after">
<field name="federal_tax" attrs="{'invisible':[('federal_tax','==', 0.00)]}" readonly="True"/>
<field name="state_tax" attrs="{'invisible':[('state_tax','==', 0.00)]}" readonly="True"/>
<field name="county_tax" attrs="{'invisible':[('county_tax','==', 0.00)]}" readonly="True"/>
<field name="city_tax" attrs="{'invisible':[('city_tax','==', 0.00)]}" readonly="True"/>
<field name="unincorporated_tax" attrs="{'invisible':[('unincorporated_tax','==', 0.00)]}" readonly="True"/>
</xpath>
现在的主要问题是,为什么您的数据没有被存储,这是因为在模型定义中您将字段定义为只读,默认情况下 Odoo 不会存储来自 readonly
字段的表单数据属性设置为 True
。我假设您正在从 onchange
函数计算表单视图上的那些只读字段,因此数据只是即时计算,但尚未保存在数据库中,但由于这是只读的,Odoo 忽略了这些字段值,因此你总是得到 ) 即使在按下保存之后。您可以使用 force_save
属性覆盖 Odoo 默认行为,即使只读,它也会覆盖 Odoo 默认表单行为以提交字段值。
<xpath expr="/form/sheet/notebook/page/group/group/field[@name='amount_untaxed']" position="after">
<field name="federal_tax" attrs="{'invisible':[('federal_tax','==', 0.00)]}" readonly="True" force_save="1"/>
<field name="state_tax" attrs="{'invisible':[('state_tax','==', 0.00)]}" readonly="True" force_save="1"/>
<field name="county_tax" attrs="{'invisible':[('county_tax','==', 0.00)]}" readonly="True" force_save="1"/>
<field name="city_tax" attrs="{'invisible':[('city_tax','==', 0.00)]}" readonly="True" force_save="1"/>
<field name="unincorporated_tax" attrs="{'invisible':[('unincorporated_tax','==', 0.00)]}" readonly="True" force_save="1"/>
</xpath>
Odoo 也对 invisible
字段遵循相同的行为,因此您还必须在 invisible
字段中使用 force_save
属性。
我在 Odoo13 工作,我在创建销售订单时计算了一些税费,并且在执行此操作时我成功地计算了我各自的税费,如下所示。
但是在保存我的销售订单或确认它之后,我所有的自定义税字段都消失了,如:
这是我的Python文件代码:
class SaleOrder(models.Model):
_inherit = ['sale.order']
federal_tax = fields.Float('Federal Tax', readonly=True)
state_tax = fields.Float('State Tax', readonly=True)
county_tax = fields.Float('County Tax', readonly=True)
city_tax = fields.Float('City Tax', readonly=True)
unincorporated_tax = fields.Float('Unincorporated Tax', store=True, readonly=True)
这是我的 XML 文件:
<xpath expr="/form/sheet/notebook/page/group/group/field[@name='amount_untaxed']" position="after">
<field name="federal_tax" attrs="{'invisible':[('federal_tax','==', 0.00)]}"/>
<field name="state_tax" attrs="{'invisible':[('state_tax','==', 0.00)]}"/>
<field name="county_tax" attrs="{'invisible':[('county_tax','==', 0.00)]}"/>
<field name="city_tax" attrs="{'invisible':[('city_tax','==', 0.00)]}"/>
<field name="unincorporated_tax" attrs="{'invisible':[('unincorporated_tax','==', 0.00)]}"/>
</xpath>
Note: After confirming my order or by saving it my custom fields value turn to 0 that is why they are disappearing but why they are turning to zero?
从 xml 字段声明中删除 invisible
属性。
重启Odoo服务器,升级模块。并验证您的输出。
之后你就知道问题出在哪里了
如果您想隐藏税收,请执行以下操作。
attrs="{'invisible': [('federal_tax','=', 0.00)]}"
注意:
我没有看到任何税项计算,而您已使用 readonly=True
属性声明了它。这意味着它会在记录保存时刷新值。
您可以将只读字段属性放在视图而不是模型上,例如:
class SaleOrder(models.Model):
_inherit = ['sale.order']
federal_tax = fields.Float('Federal Tax',)
state_tax = fields.Float('State Tax',)
county_tax = fields.Float('County Tax',)
city_tax = fields.Float('City Tax',)
unincorporated_tax = fields.Float('Unincorporated Tax',)
<xpath expr="/form/sheet/notebook/page/group/group/field[@name='amount_untaxed']" position="after">
<field name="federal_tax" attrs="{'invisible':[('federal_tax','==', 0.00)]}" readonly="True"/>
<field name="state_tax" attrs="{'invisible':[('state_tax','==', 0.00)]}" readonly="True"/>
<field name="county_tax" attrs="{'invisible':[('county_tax','==', 0.00)]}" readonly="True"/>
<field name="city_tax" attrs="{'invisible':[('city_tax','==', 0.00)]}" readonly="True"/>
<field name="unincorporated_tax" attrs="{'invisible':[('unincorporated_tax','==', 0.00)]}" readonly="True"/>
</xpath>
现在的主要问题是,为什么您的数据没有被存储,这是因为在模型定义中您将字段定义为只读,默认情况下 Odoo 不会存储来自 readonly
字段的表单数据属性设置为 True
。我假设您正在从 onchange
函数计算表单视图上的那些只读字段,因此数据只是即时计算,但尚未保存在数据库中,但由于这是只读的,Odoo 忽略了这些字段值,因此你总是得到 ) 即使在按下保存之后。您可以使用 force_save
属性覆盖 Odoo 默认行为,即使只读,它也会覆盖 Odoo 默认表单行为以提交字段值。
<xpath expr="/form/sheet/notebook/page/group/group/field[@name='amount_untaxed']" position="after">
<field name="federal_tax" attrs="{'invisible':[('federal_tax','==', 0.00)]}" readonly="True" force_save="1"/>
<field name="state_tax" attrs="{'invisible':[('state_tax','==', 0.00)]}" readonly="True" force_save="1"/>
<field name="county_tax" attrs="{'invisible':[('county_tax','==', 0.00)]}" readonly="True" force_save="1"/>
<field name="city_tax" attrs="{'invisible':[('city_tax','==', 0.00)]}" readonly="True" force_save="1"/>
<field name="unincorporated_tax" attrs="{'invisible':[('unincorporated_tax','==', 0.00)]}" readonly="True" force_save="1"/>
</xpath>
Odoo 也对 invisible
字段遵循相同的行为,因此您还必须在 invisible
字段中使用 force_save
属性。