我有1500多种产品和2000多个地点。我已使用产品中的更新清单向导更新了库存,并且我已处理了一些交货订单和内部移动。现在我想把库存归零。我制作了一个脚本来清理库存。问题在于,将库存更新为零需要花费太多时间,因为每个产品可以是2000个位置的任何产品。是否有任何OpenERP函数可以返回产品可用的所有位置?
答案 0 :(得分:4)
为了简化数据模型(KISS)并避免缓存失效问题,OpenERP不会在每个位置保留当前产品库存的缓存。该信息是通过计算进入和离开每个股票仓位的股票交易的复式余额来获得的。这与用于财务会计的复式记账非常相似。
通过查询每个stock.move
的{{1}}模型,有多种方法可以使用OpenERP API以编程方式获取此信息。对于初学者,您可以查看stock.location
模块的stock.fill.inventory
wizard class,该模块可以选择使用归零线填充实际库存。 stock
模型还有一个product.product
方法,可以为给定的一组产品返回此信息。
然后,您可以创建相应的对应get_product_available
条目,以在每个位置实现0的平衡,其方式与标准stock.move
向导非常相似。
或者,如果您只想将整个库存及其历史记录作为一次性操作删除,则会有一种快速而肮脏的方式。您可以使用数据库上的直接SQL查询(例如,使用stock.fill.inventory
命令行工具或pgadmin)来执行此操作,只需擦除psql
和stock_move
表。
请勿在包含真实数据的生产数据库上执行此操作!这将擦除数据库的一部分
假设您已经安装了销售管理模块(stock_picking
)并且正在使用OpenERP 6.1,则以下内容应该可以删除股票交易的历史记录及其来源的文档:
哦,先备份!
DELETE FROM stock_move; DELETE FROM mrp_production; DELETE FROM stock_picking; DELETE FROM sale_order; DELETE FROM procurement_order;