Created by 蓝色布鲁斯,QQ32876341,blog http://www.cnblogs.com/zzyan/
iDempiere官方中文wiki主页 http://wiki.idempiere.org/zh
iDempiere 中文社区www.idempiere.org.cn
iDempiere 中文社区QQ群 65713012

本文研究iDempiere的库存出入库机制,主要涉及到2张表格m_storageonhand, m_storagereservation以及视图m_storage。
可以先参照花生的wiki,了解一下这3张表的用途,然后再回来看一下本文的实际测试部分。
http://wiki.idempiere.org/zh/库存管理机制

本测试使用的组织为Fertilizer,warehouse为Fertilizer
由于后面account设置问题,最后一个测试切换到HQ组织进行,但是原理是相同的。

仓库设置locator如下

使用Material Receipt进行一笔接收操作

接收单如下,分别接收到两个locator中,RAW1和RAW2,数量分别为100,200

对接收单执行complete操作。

由于account设置问题,Complete出错,新建PO再建立receipt order操作了

更新代码以后好像出现了一个Counter Document的东西,导致了前面直接建立receipt order出错

接收完成以后,查看物料的库存,可以看到,已经显示库存量增加

可以看到,系统的located at 功能,并没有显示现有量的汇总信息,而是直接显示了每个locator的现有量信息

查看数据库,可以看到,M_Storage是一个视图,定义如下
m_storage由两张表组成,分别是m_storageonhand和m_storagereservation

  1. CREATE OR REPLACE VIEW m_storage AS
  2. SELECT s.m_product_id,
  3. s.m_locator_id,
  4. s.ad_client_id,
  5. s.ad_org_id,
  6. s.isactive,
  7. s.created,
  8. s.createdby,
  9. s.updated,
  10. s.updatedby,
  11. s.qtyonhand,
  12. 0 AS qtyreserved,
  13. 0 AS qtyordered,
  14. s.datelastinventory,
  15. s.m_attributesetinstance_id,
  16. s.m_storageonhand_uu AS m_storage_uu,
  17. s.datematerialpolicy
  18. FROM m_storageonhand s
  19. UNION ALL
  20. SELECT sr.m_product_id,
  21. w.m_reservelocator_id AS m_locator_id,
  22. sr.ad_client_id,
  23. sr.ad_org_id,
  24. sr.isactive,
  25. sr.created,
  26. sr.createdby,
  27. sr.updated,
  28. sr.updatedby,
  29. 0 AS qtyonhand,
  30. sr.qty AS qtyreserved,
  31. 0 AS qtyordered,
  32. sr.datelastinventory,
  33. sr.m_attributesetinstance_id,
  34. sr.m_storagereservation_uu AS m_storage_uu,
  35. NULL::timestamp without time zone AS datematerialpolicy
  36. FROM m_storagereservation sr
  37. JOIN m_warehouse w ON sr.m_warehouse_id = w.m_warehouse_id
  38. WHERE sr.issotrx = 'Y'::bpchar AND sr.qty <> 0::numeric
  39. UNION ALL
  40. SELECT so.m_product_id,
  41. w.m_reservelocator_id AS m_locator_id,
  42. so.ad_client_id,
  43. so.ad_org_id,
  44. so.isactive,
  45. so.created,
  46. so.createdby,
  47. so.updated,
  48. so.updatedby,
  49. 0 AS qtyonhand,
  50. 0 AS qtyreserved,
  51. so.qty AS qtyordered,
  52. so.datelastinventory,
  53. so.m_attributesetinstance_id,
  54. so.m_storagereservation_uu AS m_storage_uu,
  55. NULL::timestamp without time zone AS datematerialpolicy
  56. FROM m_storagereservation so
  57. JOIN m_warehouse w ON so.m_warehouse_id = w.m_warehouse_id
  58. WHERE so.issotrx = 'N'::bpchar AND so.qty <> 0::numeric;

从m_storagereservation的表列信息可以看到,除了基本的onhand信息以外没有源单据的信息,所以没有办法从reservation反向查询到订单等信息

执行前面的接收以后,m_storageonhand增加一行,同时m_transaction也增加一行

查看M_transaciton,可以看到多了一行记录。
从M_transaction表格可以看出,movemnettype有3种,V,M,C,测试对比以后,这3个代码应该代表如下意思。
V 表示Vender
M应该表示move order或者类似的组织/仓库内部移动,代表库存内部移转
C表示Customer,销售订单出货时候,movementtype为 C-
对应的3种主类型后面的信息均包括+/-号,表示该locator的数量值增减

在当前的库存状态下,尝试建立一张standard SO并且进行complete操作,看系统是否会自动进行reservation操作

建立的SO数量为20

SO complete以后,可以看到界面上面reservation qty=20

刷新product界面,查看onhand信息,发现其中一行onhand qty=0的行中,on order qty 变为了38,刚好比刚才多了20个数量,说明reservation记录已经创建。

查看db中的m_reservation表的信息,发现系统更新了reservation行,onhand显示为0,SOTRX=Y,表示这个是一个SO transaction。数量更改为38

对比onhand,发现onhand的信息没有变,仍然是原来的行记录,数量为100

以上界面也说明了我们的m_storage是m_storageonhand和m_reservation两个表的union all。而product info上面的located at信息直接抓取了m_storage视图。

我们再新建一张订单,这时候选择订单类型为POS,同时创建好订单以后执行complete操作,由于是POS订单,所以系统会自动执行出货操作。我们把订单数量设置为17

由于fertilizer的库存组织没有设置account信息,所以SO没有办法complete,直接切换到HQ组织做一次。重新对HQ采购100数量到HQ Warehouse。建立SO,数量17,并尝试complete操作。

Complete了以后,可以看到SO行中的数量信息更改了,deliver qty 为17,表示该数量已经发货。

查看DB,可以看到多了一行m_transaction信息,moveordertype=C-,表示库存减少,类型为Customer。

查看onhand信息,可以看到,系统并没有扣减我们最新的一行记录,而是把我们旧的数据中的一笔记录的数量进行了扣减,说明默认情况下,iDempiere的库存扣减是通过先进后出(FIFO)的方式扣减onhand数量的。

iDempiere 使用指南 库存出入库研究的更多相关文章

  1. iDempiere 使用指南 绿色版一键启动测试环境

    Created by 蓝色布鲁斯,QQ32876341,blog http://www.cnblogs.com/zzyan/ iDempiere官方中文wiki主页 http://wiki.idemp ...

  2. PDA手持终端在ERP系统仓库管理出入库盘点环节的应用

    PDA手持终端在ERP系统仓库管理出入库盘点环节的应用 传统库存管理的数据录入过程,常采用PC机录入数据,或在电脑上结合条码枪扫描条码进行管理(非实时),造成管理上的不便.因而,采用无线(WIFI)手 ...

  3. PDA应用在WMS仓储管理系统 实现无线扫描出入库作业

    WMS系统是根据仓储物流管理的建设实施经验而推出的一款专业化仓储管理软件.与传统进销存软件相比优势在于,其不但包含了正常的出入库.盘点等库存管理基本功能,重点在于可以实现仓库作业过程的管理,通过条码及 ...

  4. ERP出入库进阶操作与子流程--开源软件诞生28

    赤龙ERP出入库进阶讲解--第28篇 用日志记录"开源软件"的诞生 [进入地址 点亮星星]----祈盼着一个鼓励 博主开源地址: 码云:https://gitee.com/redr ...

  5. 安卓智能POS终端手持机PDA应用仓库出入库,移库,盘点,销售开单系统

    随着移动互联网的兴起,目前仓储管理所面临的的问题可以迎刃而解,WMS仓库系统解决方案通过智能终端扫描条码技术应用解决了工作量大导致工作效率不高,以及数据实时传输等问题,该方案主要提供仓库出入库,移库, ...

  6. iDempiere 使用指南 采购入库流程

    Created by 蓝色布鲁斯,QQ32876341,blog http://www.cnblogs.com/zzyan/ iDempiere官方中文wiki主页 http://wiki.idemp ...

  7. iDempiere 使用指南 BOM及工单流程

    Created by 蓝色布鲁斯,QQ32876341,blog http://www.cnblogs.com/zzyan/ iDempiere官方中文wiki主页 http://wiki.idemp ...

  8. iDempiere 使用指南 使用MRP进行生产及采购排程

    Created by 蓝色布鲁斯,QQ32876341,blog http://www.cnblogs.com/zzyan/ iDempiere官方中文wiki主页 http://wiki.idemp ...

  9. iDempiere 开发指南 Process(iDem后台进程)及插件的开发及部署

    Created by 蓝色布鲁斯,QQ32876341,blog http://www.cnblogs.com/zzyan/ iDempiere官方中文wiki主页 http://wiki.idemp ...

随机推荐

  1. svn学习笔记(二)

    一.TortoiseSVN日常使用 1.1 浏览仓库 Repo-browser : 浏览仓库中资源信息 1.2 导入导出 Export :导出项目 ,和checkout区别 (checkout检出后文 ...

  2. json、xml

    json:(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然 ...

  3. Day45--js基本小结

    JavaScript基本总结 一:基本背景 01:注:ES6就是指ECMAScript 6.(2015 ECMAScript6 添加类和模块) ECMAScript和JavaScript的关系 199 ...

  4. JDK原生的HttpURLConnection请求实例

    不想说啥,上代码! package com.my.https; import java.io.BufferedReader; import java.io.IOException; import ja ...

  5. window 安装 python

    官网地址下载安装包 点击下载 会自动识别你当前的系统,或者点击你需要安装的平台 或者选择其他版本 执行安装 高级选项说明: Install for all users 所有用户可使用 Associat ...

  6. 【算法笔记】B1029 旧键盘

    1029 旧键盘 (20 分) 旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及实际被输入的文字,请你列出肯定坏掉的那些键. 输入格式: 输入在 2 ...

  7. SQL数据库查询一张表新建一个排序字段并根据某列的排序存储排序值

    现在有一张表如下Id Name Age Classify Score1 张一 18 一班 122 张二 17 二班 19 3 张三 19 三班 30 我跟据他们的分数进行排名 再去新建一个列存储排序值 ...

  8. Java 安全套接字编程以及 keytool 使用最佳实践

    Java 安全套接字编程以及 keytool 使用最佳实践 http://www.ibm.com/developerworks/cn/java/j-lo-socketkeytool/

  9. naginx安装入门

    一.nginx是什么 nginx是一个开源的,支持高性能,高并发的www服务和代理服务软件.它是一个俄罗斯人lgor sysoev开发的,作者将源代码开源出来供全球使用. nginx比它大哥apach ...

  10. 金融量化分析-python量化分析系列之---使用python获取股票历史数据和实时分笔数据

    财经数据接口包tushare的使用(一) Tushare是一款开源免费的金融数据接口包,可以用于获取股票的历史数据.年度季度报表数据.实时分笔数据.历史分笔数据,本文对tushare的用法,已经存在的 ...