如何在 odoo 的报价中创建发票字段中将默认值从 'on delivery order' 设置为 'on demand'?

How to set default value from 'on delivery order' to 'on demand' in create invoice field in quotations in odoo?

我正在尝试在 odoo 的其他信息选项卡的报价中创建发票字段中将默认值从 'on delivery order' 设置为 'on demand'。但它没有设置为按需的默认值。任何人都可以帮助我如何在 'on demand' 中设置创建发票的默认值。

代码:

'order_policy': fields.selection([
                        ('manual', 'On Demand'),
                        ('picking', 'On Delivery Order'),
                        ('prepaid', 'Before Delivery'),
                    ],
                    'Create Invoice',
                    required=True,
                    readonly=True,
                    states={
                        'draft': [('readonly', False)],
                        'sent':  [('readonly', False)]
                    },
                ),

结果

_defaults = {
        'order_policy': 'manual',
}

您可以在字段中使用默认属性

'order_policy': fields.selection([
                    ('manual', 'On Demand'),
                    ('picking', 'On Delivery Order'),
                    ('prepaid', 'Before Delivery'),
                ],
                'Create Invoice',
                default='manual',
                required=True,
                readonly=True,
                states={
                    'draft': [('readonly', False)],
                    'sent':  [('readonly', False)]
                },
            ),

你可以通过两种方式完成。

1).正如@KHELILI Hamza 建议的那样,您应该重新定义该字段并设置默认值。

2).您需要覆盖 default_get 方法。

解法:

def default_get(self, cr, uid, fields, context=None):
    res = super(class_name, self).default_get(cr, uid, fields, context=context)
    res.update({'order_policy': 'manual'})
    return res

如果您想有条件地设置默认值,那么您可以在该代码中轻松管理。