|
|
@@ -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:获取成品库存、在制库存、灭菌库存,参与运算
|