在 Odoo 中,仓库管理包含多个 stock.location 类型,每种类型在仓库操作中扮演不同的角色。常见的仓库位置类型包括 stock, input, output, quality, 和 packing。以下是这些位置类型的详细说明以及它们与出库、入库和库存的关系。
常见的 stock.location 类型:
Stock:
描述: 主库存位置,用于存放产品。
用途: 存放已入库的产品,待处理或销售的库存。
Input:
描述: 采购入库位置。
用途: 新采购的产品首先进入此位置,等待检验或入库。
Output:
描述: 出库位置。
用途: 准备发货的产品从此位置出库,等待运输。
Quality:
描述: 质量检查位置。
用途: 用于质量检查的产品存放位置。
Packing:
描述: 包装位置。
用途: 准备发货的产品在此位置进行包装。
出库、入库与库存的关系
入库流程
Input: 采购订单创建后,供应商发货,货物进入 Input 位置。
Quality: 从 Input 移动到 Quality 位置进行质量检查(如果配置了质量检查)。
Stock: 质检合格后,货物从 Quality 移动到 Stock 位置,成为可用库存。
出库流程
Stock: 订单确认后,货物从 Stock 位置准备出库。
Packing: 从 Stock 移动到 Packing 位置进行包装。
Output: 打包完成后,货物移动到 Output 位置,等待装运。
出库: 最后,货物从 Output 位置装运,完成出库流程。
库存统计
库存统计可以通过查询 stock.quant 模型来实现。stock.quant 记录了每个产品在各个位置的数量。以下是一些常见的库存统计方式:
总库存量
计算所有位置的总库存量:
import xmlrpc.client
url = "http://your-odoo-url:8069"
db = "your-database"
username = "your-username"
password = "your-password"
common = xmlrpc.client.ServerProxy("{}/xmlrpc/2/common".format(url))
uid = common.authenticate(db, username, password, {})
models = xmlrpc.client.ServerProxy("{}/xmlrpc/2/object".format(url))
product_id = 1 # 替换为实际的产品 ID
# 获取所有位置的总库存量
quants = models.execute_kw(db, uid, password, 'stock.quant', 'search_read', [[
['product_id', '=', product_id]
]], {'fields': ['quantity']})
total_quantity = sum(quant['quantity'] for quant in quants)
print("Total Quantity for Product ID {}: {}".format(product_id, total_quantity))
可用库存量
计算可用库存量(总库存量减去预留库存量):
# 获取所有位置的可用库存量
quants = models.execute_kw(db, uid, password, 'stock.quant', 'search_read', [[
['product_id', '=', product_id]
]], {'fields': ['quantity', 'reserved_quantity']})
available_quantity = sum(quant['quantity'] - quant['reserved_quantity'] for quant in quants)
print("Available Quantity for Product ID {}: {}".format(product_id, available_quantity))
特定位置库存
计算特定位置的库存量:
location_id = 1 # 替换为实际的位置 ID
# 获取特定位置的总库存量
quants = models.execute_kw(db, uid, password, 'stock.quant', 'search_read', [[
['product_id', '=', product_id],
['location_id', '=', location_id]
]], {'fields': ['quantity']})
location_total_quantity = sum(quant['quantity'] for quant in quants)
print("Total Quantity for Product ID {} at Location ID {}: {}".format(product_id, location_id, location_total_quantity))
总结
Stock: 主库存位置,存放已入库的产品。
Input: 采购入库位置,等待检验或入库的产品。
Output: 出库位置,等待发货的产品。
Quality: 质量检查位置,用于质检的产品。
Packing: 包装位置,准备发货的产品。
通过查询 stock.quant 模型,可以统计所有位置的总库存量、可用库存量以及特定位置的库存量。希望这些信息能帮助你更好地理解 Odoo 中的仓库管理和库存统计。如果有更多问题,请随时提问。