库存数量计算相关代码分析 - xiaohao0576/odoo-doc GitHub Wiki
产品库存数量计算方法
_compute_quantities_dict
方法负责计算产品的库存数量,查看源码
这个方法的定义和参数列表如下
def _compute_quantities_dict(self, lot_id, owner_id, package_id, from_date=False, to_date=False)
方法计算后,同时更新以下几个字段的数据
qty_available
free_qty
incoming_qty
outgoing_qty
virtual_available
更新quant数量
_update_available_quantity
方法用于直接增加或者减少Quant的quantity
或reserved quantity
,查看源码
在stock.move.line中同步stock.quant数量
_synchronize_quant
方法用于在stock.move.line中同步quant的数量,主要也是调用Quant的_update_available_quantity
方法,查看源码
使用方法实例
# 1. 完成库存移动时
move_line._synchronize_quant(-quantity, source_location) # 减少源库位数量
move_line._synchronize_quant(quantity, destination_location) # 增加目标库位数量
# 2. 预留库存时
move_line._synchronize_quant(quantity, location, action="reserved")
查找采购/销售订单行对应的stock.move
在源码中搜索def _get_outgoing_incoming_moves
可以找到相关逻辑
销售订单行对应的库存移动,查看源码
采购订单行对应的库存移动,查看源码
统计产品的入库和出库次数
_compute_nbr_moves
方法,用于计算产品的入库次数和出库次数,更新product.product的nbr_moves_in
和nbr_moves_out
字段,查看源码
计算采购订单行已收货数量
_compute_qty_received
用于计算采购订单行的已收货数量,根据qty_received_method
的值不同,采用不同的计算逻辑,对于实物库存,qty_received_method=stock_moves, 计算逻辑的源码点击查看
计算销售订单行已发货数量
_compute_qty_delivered
用于计算采购订单行的已发货数量,根据qty_delivered_method
的值不同,采用不同的计算逻辑,对于实物库存,qty_delivered_method=stock_moves, 计算逻辑的源码查看源码
由于销售的类型有很多种,比如租赁、订阅,每种销售类型都实现了自己的_compute_qty_delivered
方法去计算已交货的数量