Browse Source

销售预测成品库存调整

heteng 2 years ago
parent
commit
e902836c70

+ 11 - 8
MicroServices/Business/Business.Application/SaleForecastManagement/MonthlyCapacityLoadAppService.cs

@@ -255,12 +255,15 @@ namespace Business.SaleForecastManagement
             //1.5、获取规格型号对应的标准SKU数据:获取最小包装单位
             List<string> itemNums = standards.Select(p=>p.ItemNumber).Distinct().ToList();
             List<ic_item> items = _ic_item.GetListAsync(p=> itemNums.Contains(p.number) && p.tenant_id == input.tenant_id && p.company_id == input.company_id && p.factory_id == input.factory_id && !p.IsDeleted).Result;
-            //1.6、获取成品库存、灭菌库存、在制库存
-            List<SAPInv> sAPInvs = _SAPInv.Select(p => p.WERKS == input.factory_id.ToString() && itemNums.Contains(p.MATNR));
+            //1.6、获取成品库存、灭菌库存、在制库存(会从SAP同步的库存表更新到LocationDetail、ic_item表中)
+            //List<SAPInv> sAPInvs = _SAPInv.Select(p => p.WERKS == input.factory_id.ToString() && itemNums.Contains(p.MATNR));
+            List<LocationDetail> locations = _locationDetail.Select(p => p.Domain == input.factory_id.ToString() && itemNums.Contains(p.ItemNum) && p.IsActive);
             //1.7、获取节假日设置
             List<HolidayMaster> holidays = _holidayMaster.Select(p => (p.Dated.Value.Year == input.year || p.Dated.Value.Year == (input.year + 1)) && p.Domain == input.factory_id.ToString() && p.IsActive);
             //1.8、获取平台库存监控月份设置
             List<PlatStockMonitorSetting> monitorSettings = _platStockMonitorSetting.GetListAsync(p => p.Year == input.year && p.Month == input.month && p.tenant_id == input.tenant_id && p.company_id == input.company_id && p.factory_id == input.factory_id && !p.IsDeleted).Result;
+            //1.9、获取客户要求交期在N+1月的销售订单
+            //List<>
             #region 数据校验
             //1、校验当前年的年度生产大纲是否导入
             if (!yearDemands.Any())
@@ -383,11 +386,11 @@ namespace Business.SaleForecastManagement
                     packQty = curItem == null ? 1 : (curItem.minpackqty.GetValueOrDefault() == 0.0m ? 1 : curItem.minpackqty.Value);
                     cycle = curStd.ReplenishCycle;
                     //成品库存
-                    cpQty = sAPInvs.Where(p => p.MATNR == curStd.ItemNumber && p.LGORT == "8001").Sum(p => Convert.ToDecimal(p.LABST));
+                    cpQty = locations.Where(p => p.ItemNum == curStd.ItemNumber && p.Location == "8001").Sum(p => Convert.ToDecimal(p.QtyOnHand));
                     //在制库存
-                    zzQty = sAPInvs.Where(p => p.MATNR == curStd.ItemNumber && p.LGORT == "8000").Sum(p => Convert.ToDecimal(p.LABST));
+                    zzQty = locations.Where(p => p.ItemNum == curStd.ItemNumber && p.Location == "8000").Sum(p => Convert.ToDecimal(p.QtyOnHand));
                     //灭菌库存
-                    mjQty = sAPInvs.Where(p => p.MATNR == curStd.ItemNumber && p.LGORT == "5008").Sum(p => Convert.ToDecimal(p.LABST));
+                    mjQty = locations.Where(p => p.ItemNum == curStd.ItemNumber && p.Location == "5008").Sum(p => Convert.ToDecimal(p.QtyOnHand));
                 }
                 //N+1月使用N+2月的再订货点参与计算
                 decimal rop = CalcRop(strN2+"-01", sumN2, packQty, holidays, cycle);
@@ -446,11 +449,11 @@ namespace Business.SaleForecastManagement
                     var curItem = items.FirstOrDefault(p => p.number == curStd.ItemNumber);
                     packQty = curItem == null ? 1 : (curItem.minpackqty.GetValueOrDefault() == 0.0m ? 1 : curItem.minpackqty.Value);
                     //成品库存
-                    cpQty = sAPInvs.Where(p => p.MATNR == curStd.ItemNumber && p.LGORT == "8001").Sum(p => Convert.ToDecimal(p.LABST));
+                    cpQty = locations.Where(p => p.ItemNum == curStd.ItemNumber && p.Location == "8001").Sum(p => Convert.ToDecimal(p.QtyOnHand));
                     //在制库存
-                    zzQty = sAPInvs.Where(p => p.MATNR == curStd.ItemNumber && p.LGORT == "8000").Sum(p => Convert.ToDecimal(p.LABST));
+                    zzQty = locations.Where(p => p.ItemNum == curStd.ItemNumber && p.Location == "8000").Sum(p => Convert.ToDecimal(p.QtyOnHand));
                     //灭菌库存
-                    mjQty = sAPInvs.Where(p => p.MATNR == curStd.ItemNumber && p.LGORT == "5008").Sum(p => Convert.ToDecimal(p.LABST));
+                    mjQty = locations.Where(p => p.ItemNum == curStd.ItemNumber && p.Location == "5008").Sum(p => Convert.ToDecimal(p.QtyOnHand));
                 }
                 //海外生产需求量=当月的50%+下一月的50%-成品库存-在制库存-灭菌库存
                 //TODO:获取成品库存、在制库存、灭菌库存,参与运算