开发者社区> 问答> 正文

有熟悉数据库和ERP相关的大V嘛?(内含软件测试):报错 

事先声明:由于本款产品是终身免费的,故有些功能并不是很全,目前只含有OA/财务/进销存功能。客户有些需求只能通过二次开发的方式去解决。本人对于数据库知识也是一知半解,三脚猫的工夫都算不上。

好了言归正传:事情是酱紫的,之前接到某客户的需求:销售订单生成采购订单(并且通过bom的组件方式去采购半成品和原材料
接到这个需求的时候,老大让我尝试去做一次,美其名曰为了锻炼我,实际上是他懒!!!

没办法,硬着头皮上。我大概分析了下这个需求:
销售订单生成采购订单(并且通过BOM的组件方式去采购半成品和原材料)

首先,满足这个需求,我们应该做哪些。通过怎样的方式去制作来满足这个需求

BOM物料清单(标准版没有)——需自定义业务单据 (这个简单直接忽略)

通过查询配合EDI的方式去生成采购订单(所以要做一个查询&EDI 查询&EDI 查询需要查出哪些列,是否分情况采购。直接采购和生产采购的区别。 直接采购: 因为查询出来的数量是不可以更改的,如果直接在EDI的界面更改数量的话又没有可以参考的值。所以,现在在查询里面定义一个公式,结合库存量,算出需采购数量。同时有些企业可能会有安全库存。我们也要把这个数量考虑进去: 故:【成品需采购数】= 销售订单的数量 库存量 + 安全库存 因为安全库存可能会经常变动,每种物料的安全库存设置可能都会不一样,在后台维护比较繁琐,所以我在【物料信息】上面加一个控件【安全库存】。查询直接从【物料信息】里面取值。 若【成品需采购数< 0 表明库存里面的成品量足够发货,且高于安全库存。这时候则不需要再生成采购订单了。 所以,上述查询结果 满足的条件是【成品需采购数】> 0才显示。 生产采购: 如果【成品需采购数< 0 则生产采购也就没必要了,所以生产采购的数量跟【成品需采购数】挂钩 故:子件需采购数】=成品需采购数】* 基础数量(BOM子件)- 库存量 + 安全库存 若【子件需采购数】< 0 表名库存里面的子件足够生产,且高于安全库存。这时候则不需要再生成采购订单了。所以上述的查询结果 满足的条件是【子件需采购数】> 0 才显示。 那么现在问题来了:①我这个逻辑是否有问题,企业实际会这样去采购嘛?  ②这离简单的MRP物料需求还差多远? ③可以通过查询配合EDI的方式去实现MRP的需求嘛?查询语句应该怎么改? 下面是测试地址:http://www.aio5.com:8182/AIO5_4/Login.aspx 账号:A01  密码:aio5 该功能测试路径:采购——工具——销售订单生成采购订单辅助查询。 再追问一个:这款产品整体的利弊在哪里?哪方面是硬伤?能否在市场上运用起来?虽然不指望这条产品线去赚钱,但也想提升点品牌知名度。 另附查询语句: Select S.*  From  ( Select '直接采购' PurType, cast(TD.LineNum as nvarchar(3)) LineNum, TM.CrdID CltID, TM.CrdName CltName, TM.DocDate, TM.DocNum,  TB.ObjType, TD.ItmID, TD.ItmName, TD.ItmSpec,  TD.BaseQty/TB.PurCvtRate Qty, TB.PurUomID UomID,  TD.PriceFC,  TD.UomID SaleUomID, TD.Qty as SaleQty, TB.PurCvtRate, '' CrdID, IsNull(TB.Z_Aqkc,0) Z_Aqkc, TB1.OnHand, (TD.Qty - TB1.OnHand + IsNull(TB.Z_Aqkc,0)) As PurQty From SAOrd TM  Left Join SAOrdA TD On TM.DocEntry = TD.DocEntry Left Join MDItm TB On TB.ItmID = TD.ItmID Left Join BCStk TB1 On TB1.ItmID = TD.ItmID and TB1.WhsID = TD.WhsID where (TD.Qty - TB1.OnHand + IsNull(TB.Z_Aqkc,0)) >0 union all Select '生产采购' PurType, cast(TD.LineNum as nvarchar(3)) + '-' + cast(T2.LineNum as nvarchar(3)) LineNum, TM.CrdID CltID, TM.CrdName CltName, TM.DocDate, TM.DocNum,  TB.ObjType, TB.ItmID, TB.ItmName, TB.ItmSpec,  TD.BaseQty/TB.PurCvtRate*T2.NetQty Qty, TB.PurUomID UomID, TD.PriceFC,  TB.UomID SaleUomID, TD.Qty SaleQty, TB.PurCvtRate, ''CrdID, IsNull(TB.Z_Aqkc,0) Z_Aqkc, TB1.OnHand, ((TD.Qty-T3.OnHand + IsNull(T4.Z_Aqkc,0))* T2.NetQty - TB1.OnHand + IsNull(TB.Z_Aqkc,0)) As PurQty From SAOrd TM Left Join SAOrdA TD On TM.DocEntry = TD.DocEntry Left Join ZZBom1 T1 On T1.ItmID = TD.ItmID and T1.IsClose = 'N' Left Join BCStk T3 On T3.ItmID = T1.ItmID and T3.WhsID = TD.WhsID  --成品库存 Left Join MDItm T4 On T4.ItmID = T1.ItmID  --成品安全库存 Left Join ZZBomA1 T2 On T2.DocEntry = T1.DocEntry Left Join MDItm TB On TB.ItmID = T2.ItmIDA  --子件安全库存 Left Join BCStk TB1 On TB1.ItmID = TB.ItmID and TB1.WhsID = TB.WhsID  --子件库存 where ((TD.Qty-T3.OnHand + IsNull(T4.Z_Aqkc,0))* T2.NetQty - TB1.OnHand + IsNull(TB.Z_Aqkc,0)) >0 )S Where S.CrdID like @CrdID and S.CrdName like @CrdName and S.DocDate >= @DocDateFr and S.DocDate <= @DocDateTo and S.PurType in (@PurType) Order By S.DocNum, S.LineNum

展开
收起
kun坤 2020-06-04 21:09:10 490 0
1 条回答
写回答
取消 提交回答
  • 这里做ERP的好少啊  

    2020-06-08 10:50:02
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
移动互联网测试到质量的转变 立即下载
给ITer的技术实战进阶课-阿里CIO学院独家教材(四) 立即下载
F2etest — 多浏览器兼容性测试整体解决方案 立即下载