Odoo中如何区分pick、pack、out单据实现拣货行颜色配置
Odoo拣货单类型区分及行颜色配置方案
你可以通过Odoo标准关联字段直接区分Pick、Pack、Out三类单据,不需要额外新增字段,修改原xpath的装饰器判断条件即可实现仅对应类型单据行生效颜色规则。
核心区分逻辑
move_ids_without_package对应的stock.move模型默认关联父级拣货单字段picking_id,拣货单的picking_type_id字段关联对应作业类型,通过作业类型的属性即可区分三类单据。
方案1:通过作业类型序列编码判断(最稳定,不受名称翻译/修改影响)
多步出库场景下三类作业默认的序列编码前缀分别为PICK/PACK/OUT,修改后的代码示例如下:
<xpath expr="//field[@name='move_ids_without_package']/tree" position="attributes"> <!-- Pick单完成行标绿 --> <attribute name="decoration-success">picking_id.picking_type_id.sequence_code == 'PICK' and quantity_done >= product_uom_qty</attribute> <!-- 按需追加其他类型样式 --> <attribute name="decoration-warning">picking_id.picking_type_id.sequence_code == 'PACK' and quantity_done >= product_uom_qty</attribute> <attribute name="decoration-info">picking_id.picking_type_id.sequence_code == 'OUT' and quantity_done >= product_uom_qty</attribute> </xpath>
- 若你的系统自定义过作业类型序列编码,替换条件中的
PICK/PACK/OUT为实际使用的编码即可。
方案2:通过作业类型编码+名称组合判断
如果序列编码无固定规则,可结合作业类型的code和名称关键词判断:
- Pick单判断条件:
picking_id.picking_type_id.code == 'internal' and 'Pick' in picking_id.picking_type_id.name - Pack单判断条件:
picking_id.picking_type_id.code == 'internal' and 'Pack' in picking_id.picking_type_id.name - Out单判断条件:
picking_id.picking_type_id.code == 'outgoing' and 'Out' in picking_id.picking_type_id.name
中文系统可替换名称关键词为对应中文,比如
'拣货' in picking_id.picking_type_id.name。
内容的提问来源于stack exchange,提问作者Oscar Vardela
相关产品推荐
相关产品推荐

