3

我有 1500 多种产品和 2000 多个地点。我已经使用产品中的更新库存向导更新了库存,并且我已经处理了一些交货订单和内部移动。现在我想清零库存。我制作了一个脚本来清零库存。问题在于将库存更新为零需要花费太多时间,因为每种产品都可能位于 2000 个位置中的任何位置。是否有任何 OpenERP 函数可以返回产品可用的所有位置?

4

1 回答 1

4

语境

为了保持数据模型简单 ( KISS ) 并避免缓存失效问题,OpenERP 不会在每个位置保留当前产品库存的缓存。该信息是通过计算进出每个库存位置的库存交易的复式余额来获得的。这与用于财务会计的复式簿记非常相似。

选项 1:使用 API

有几种方法可以使用 OpenERP API 以编程方式获取此信息,方法是查询stock.move每个stock.location. 对于初学者,您可以查看模块的stock.fill.inventory向导类stock它可以选择用零线填写实物库存。该product.product模型还有一个get_product_available方法可以为给定的一组产品返回此信息。

然后,您可以创建适当的对应条目以在每个位置实现平衡 0,其方式与标准向导所做stock.move的非常相似。stock.fill.inventory

选项 2:使用直接 SQL 清除

或者,如果您只是想一次性删除整个库存及其历史记录,则有一种快速而肮脏的方法。您可以使用对数据库的直接 SQL 查询(例如使用psql命令行工具或 pgadmin)来完成,只需清除stock_movestock_picking表。

不要在具有真实数据的生产数据库上执行此操作!这将清除数据库的一部分

假设您已经安装了销售管理模块sale

哦,先做好备份

从 stock_move 中删除;
从 mrp_production 中删除;
从 stock_picking 中删除;
从销售订单中删除;
从采购订单中删除;
于 2012-09-18T14:57:11.867 回答