|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | delProStockDetails.Add(proStockInfoDetail); | 
|---|
|  |  |  | proStockInfo.proStockInfoDetails.Remove(proStockInfoDetail); | 
|---|
|  |  |  | item.OutDetailId = proStockInfoDetail.OutDetailId; | 
|---|
|  |  |  | item.OutDetailSaleNo = proStockInfoDetail.OutDetailSaleNo; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | proStockInfoDetail.StockPcsQty -= item.StockPcsQty; | 
|---|
|  |  |  | proStockInfoDetail.SETQty -= item.SETQty; | 
|---|
|  |  |  | proStockInfoDetail.OutboundQuantity = 0; | 
|---|
|  |  |  | item.OutDetailId = 0; | 
|---|
|  |  |  | item.OutDetailSaleNo = ""; | 
|---|
|  |  |  | upProStockDetails.Add(proStockInfoDetail); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | _stockRepository.ProStockInfoDetailRepository.UpdateData(upProStockDetails); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | content.OK(); | 
|---|
|  |  |  | content.OK("æå", proStockInfoDetails); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | catch (Exception ex) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  | public List<Dt_ProStockInfo> GetUseableStocks(Dt_MesRworkOutboundOrder mesRworkOutboundOrder) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | //è½¬æ¢æ æåä»ä»åºä¿¡æ¯è·åå°¾æ°å±æ§çè´§ä½ | 
|---|
|  |  |  | Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x=>x.WarehouseCode==WarehouseEnum.HA71.ToString()); | 
|---|
|  |  |  | Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x=>x.WarehouseId== mesRworkOutboundOrder.WarehouseId); | 
|---|
|  |  |  | List<string> locationCodes = _basicRepository.LocationInfoRepository.GetCanOutLocationCodes(warehouse.WarehouseId); | 
|---|
|  |  |  | return BaseDal.GetProStocks(mesRworkOutboundOrder, locationCodes); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //æ¥æ¾å¯ç¨æ¥åºåºå | 
|---|
|  |  |  | public List<Dt_ProStockInfo> GetUseableStocks(int warehoseId, Dt_ErpProScrapSheetDetail erpProScrapSheetDetail) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | List<string> locationCodes = _basicRepository.LocationInfoRepository.GetCanOutLocationCodes(warehoseId); | 
|---|
|  |  |  | return BaseDal.GetProStocks(erpProScrapSheetDetail, locationCodes); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | /// <summary> | 
|---|
|  |  |  | /// è·ååºåºåºå | 
|---|
|  |  |  | 
|---|
|  |  |  | public List<Dt_ProStockInfo> GetOutboundStocks(List<Dt_ProStockInfo> stockInfos, Dt_ProOutOrderDetail outOrderDetail, float needQuantity, out float residueQuantity) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | List<Dt_ProStockInfo> assignOutStocks =new List<Dt_ProStockInfo>(); | 
|---|
|  |  |  | float stockTotalQuantity = stockInfos.Select(x => x.proStockInfoDetails.Sum(v => v.StockPcsQty - v.OutboundQuantity)).Sum(x => x); | 
|---|
|  |  |  | //stockInfos = stockInfos.OrderBy(x => x.Id).ToList(); | 
|---|
|  |  |  | bool isCanLot = string.IsNullOrEmpty(outOrderDetail.PLot); | 
|---|
|  |  |  | bool isCanDate = string.IsNullOrEmpty(outOrderDetail.DateCode); | 
|---|
|  |  |  | float stockTotalQuantity = stockInfos.Select(x => x.proStockInfoDetails.Where(x => x.ProductCode == outOrderDetail.PCode && x.ProductVersion.StartsWith(outOrderDetail.PVer.Substring(0, 1)) | 
|---|
|  |  |  | && (isCanLot ? isCanLot : x.ProductCode == outOrderDetail.PLot) | 
|---|
|  |  |  | && (isCanDate ? isCanDate : x.DateCode == outOrderDetail.DateCode)) | 
|---|
|  |  |  | .Sum(v => v.StockPcsQty - v.OutboundQuantity)).Sum(x => x); | 
|---|
|  |  |  | //stockInfos = stockInfos.OrderBy(x => x.Id).ToList(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (stockTotalQuantity >= needQuantity)//åºåå¤ | 
|---|
|  |  |  | { | 
|---|
|  |  |  | int index = 0; | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Dt_ProStockInfo stockInfo = stockInfos[index]; | 
|---|
|  |  |  | float useableStockQuantity = stockInfo.proStockInfoDetails | 
|---|
|  |  |  | .Where(x => x.ProductCode == outOrderDetail.PCode && x.ProductVersion == outOrderDetail.PVer | 
|---|
|  |  |  | && (isCanLot ? isCanLot : x.BagNo == outOrderDetail.PLot) | 
|---|
|  |  |  | .Where(x => x.ProductCode == outOrderDetail.PCode && x.ProductVersion.StartsWith(outOrderDetail.PVer.Substring(0,1)) | 
|---|
|  |  |  | && (isCanLot ? isCanLot : x.ProductCode == outOrderDetail.PLot) | 
|---|
|  |  |  | && (isCanDate ? isCanDate : x.DateCode == outOrderDetail.DateCode)) | 
|---|
|  |  |  | .Sum(x => x.StockPcsQty - x.OutboundQuantity); | 
|---|
|  |  |  | if (useableStockQuantity < needQuantity) | 
|---|
|  |  |  | if (useableStockQuantity < needQuantity && useableStockQuantity >0) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | stockInfo.proStockInfoDetails.ForEach(x => x.OutboundQuantity = x.StockPcsQty); | 
|---|
|  |  |  | stockInfo.proStockInfoDetails.Where(x => x.ProductCode == outOrderDetail.PCode && x.ProductVersion.StartsWith(outOrderDetail.PVer.Substring(0, 1)) | 
|---|
|  |  |  | && (isCanLot ? isCanLot : x.ProductCode == outOrderDetail.PLot) | 
|---|
|  |  |  | && (isCanDate ? isCanDate : x.DateCode == outOrderDetail.DateCode)).ToList().ForEach(x => x.OutboundQuantity = x.StockPcsQty); | 
|---|
|  |  |  | needQuantity -= useableStockQuantity; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | stockInfo.proStockInfoDetails.ForEach(x => | 
|---|
|  |  |  | { | 
|---|
|  |  |  | //满足æ¡ä»¶è¿è¡åé
 | 
|---|
|  |  |  | if ((x.StockPcsQty > x.OutboundQuantity) | 
|---|
|  |  |  | && x.ProductCode == outOrderDetail.PCode && x.ProductVersion == outOrderDetail.PVer | 
|---|
|  |  |  | && (isCanLot ? isCanLot : x.BagNo == outOrderDetail.PLot) | 
|---|
|  |  |  | && x.ProductCode == outOrderDetail.PCode && x.ProductVersion.StartsWith(outOrderDetail.PVer.Substring(0, 1)) | 
|---|
|  |  |  | && (isCanLot ? isCanLot : x.ProductCode == outOrderDetail.PLot) | 
|---|
|  |  |  | && (isCanDate ? isCanDate : x.DateCode == outOrderDetail.DateCode)) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (x.StockPcsQty - x.OutboundQuantity >= needQuantity) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | x.OutboundQuantity += needQuantity; | 
|---|
|  |  |  | needQuantity = 0; | 
|---|
|  |  |  | x.OutDetailSaleNo = outOrderDetail.SaleOrder; | 
|---|
|  |  |  | x.OutDetailId = outOrderDetail.Id; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | needQuantity -= (x.StockPcsQty - x.OutboundQuantity); | 
|---|
|  |  |  | x.OutboundQuantity = x.StockPcsQty; | 
|---|
|  |  |  | x.OutDetailSaleNo = outOrderDetail.SaleOrder; | 
|---|
|  |  |  | x.OutDetailId = outOrderDetail.Id; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | 
|---|
|  |  |  | index++; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | #region æåå¯ç¨åºåä¸è¶³ä¸è¿è¡åé
 | 
|---|
|  |  |  | //else | 
|---|
|  |  |  | //{ | 
|---|
|  |  |  | //    for (int i = 0; i < stockInfos.Count; i++) | 
|---|
|  |  |  | //    { | 
|---|
|  |  |  | //        Dt_ProStockInfo stockInfo = stockInfos[i]; | 
|---|
|  |  |  | //        float useableStockQuantity = stockInfo.proStockInfoDetails | 
|---|
|  |  |  | //            .Where(x => x.ProductCode == outOrderDetail.PCode && x.ProductVersion == outOrderDetail.PVer | 
|---|
|  |  |  | //                && (isCanLot ? isCanLot : x.BagNo == outOrderDetail.PLot) | 
|---|
|  |  |  | //                && (isCanDate ? isCanDate : x.DateCode == outOrderDetail.DateCode)) | 
|---|
|  |  |  | //            .Sum(x => x.StockPcsQty - x.OutboundQuantity); | 
|---|
|  |  |  | //        if (useableStockQuantity < needQuantity) | 
|---|
|  |  |  | //        { | 
|---|
|  |  |  | //            stockInfo.proStockInfoDetails.ForEach(x => x.OutboundQuantity = x.StockPcsQty); | 
|---|
|  |  |  | //            needQuantity -= useableStockQuantity; | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | //        else | 
|---|
|  |  |  | //        { | 
|---|
|  |  |  | //            stockInfo.proStockInfoDetails.ForEach(x => | 
|---|
|  |  |  | //            { | 
|---|
|  |  |  | //                if (x.StockPcsQty > x.OutboundQuantity && x.ProductCode == outOrderDetail.PCode && x.ProductVersion == outOrderDetail.PVer | 
|---|
|  |  |  | //                    && (isCanLot ? isCanLot : x.BagNo == outOrderDetail.PLot) | 
|---|
|  |  |  | //                    && (isCanDate ? isCanDate : x.DateCode == outOrderDetail.DateCode)) | 
|---|
|  |  |  | //                { | 
|---|
|  |  |  | //                    if (x.StockPcsQty - x.OutboundQuantity >= needQuantity) | 
|---|
|  |  |  | //                    { | 
|---|
|  |  |  | //                        x.OutboundQuantity += needQuantity; | 
|---|
|  |  |  | //                        needQuantity = 0; | 
|---|
|  |  |  | //                    } | 
|---|
|  |  |  | //                    else | 
|---|
|  |  |  | //                    { | 
|---|
|  |  |  | //                        needQuantity -= (x.StockPcsQty - x.OutboundQuantity); | 
|---|
|  |  |  | //                        x.OutboundQuantity = x.StockPcsQty; | 
|---|
|  |  |  | //                    } | 
|---|
|  |  |  | //                } | 
|---|
|  |  |  | //            }); | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | //        stockInfo.proStockInfoDetails.ForEach(x => | 
|---|
|  |  |  | //        { | 
|---|
|  |  |  | //            x.OutDetailSaleNo = outOrderDetail.SaleOrder; | 
|---|
|  |  |  | //            x.OutDetailId = outOrderDetail.Id; | 
|---|
|  |  |  | //        }); | 
|---|
|  |  |  | //        assignOutStocks.Add(stockInfo); | 
|---|
|  |  |  | //    } | 
|---|
|  |  |  | //} | 
|---|
|  |  |  | #endregion | 
|---|
|  |  |  | residueQuantity = needQuantity; | 
|---|
|  |  |  | return assignOutStocks; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | /// <summary> | 
|---|
|  |  |  | /// è·åæ¥åºåºå | 
|---|
|  |  |  | /// </summary> | 
|---|
|  |  |  | public List<Dt_ProStockInfo> GetOutboundStocks(List<Dt_ProStockInfo> stockInfos, Dt_ErpProScrapSheetDetail outOrderDetail, float needQuantity, out float residueQuantity) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | List<Dt_ProStockInfo> assignOutStocks = new List<Dt_ProStockInfo>(); | 
|---|
|  |  |  | float stockTotalQuantity = stockInfos.Select(x => x.proStockInfoDetails.Where(x => | 
|---|
|  |  |  | x.ProductCode == outOrderDetail.ScrapProCode | 
|---|
|  |  |  | && x.ProductVersion == outOrderDetail.ScrapProVersion | 
|---|
|  |  |  | && x.LotNumber == outOrderDetail.ScrapProLotNo).Sum(v => v.StockPcsQty - v.OutboundQuantity)).Sum(x => x); | 
|---|
|  |  |  | //stockInfos = stockInfos.OrderBy(x => x.Id).ToList(); | 
|---|
|  |  |  | if (stockTotalQuantity >= needQuantity)//åºåå¤ | 
|---|
|  |  |  | { | 
|---|
|  |  |  | for (int i = 0; i < stockInfos.Count; i++) | 
|---|
|  |  |  | int index = 0; | 
|---|
|  |  |  | while (needQuantity > 0) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Dt_ProStockInfo stockInfo = stockInfos[i]; | 
|---|
|  |  |  | Dt_ProStockInfo stockInfo = stockInfos[index]; | 
|---|
|  |  |  | float useableStockQuantity = stockInfo.proStockInfoDetails | 
|---|
|  |  |  | .Where(x => x.ProductCode == outOrderDetail.PCode && x.ProductVersion == outOrderDetail.PVer | 
|---|
|  |  |  | && (isCanLot ? isCanLot : x.BagNo == outOrderDetail.PLot) | 
|---|
|  |  |  | && (isCanDate ? isCanDate : x.DateCode == outOrderDetail.DateCode)) | 
|---|
|  |  |  | .Where(x => | 
|---|
|  |  |  | x.ProductCode == outOrderDetail.ScrapProCode | 
|---|
|  |  |  | && x.ProductVersion==outOrderDetail.ScrapProVersion | 
|---|
|  |  |  | && x.LotNumber == outOrderDetail.ScrapProLotNo) | 
|---|
|  |  |  | .Sum(x => x.StockPcsQty - x.OutboundQuantity); | 
|---|
|  |  |  | if (useableStockQuantity < needQuantity) | 
|---|
|  |  |  | if (useableStockQuantity < needQuantity && useableStockQuantity > 0) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | stockInfo.proStockInfoDetails.ForEach(x => x.OutboundQuantity = x.StockPcsQty); | 
|---|
|  |  |  | stockInfo.proStockInfoDetails.Where(x => | 
|---|
|  |  |  | x.ProductCode == outOrderDetail.ScrapProCode | 
|---|
|  |  |  | && x.ProductVersion == outOrderDetail.ScrapProVersion | 
|---|
|  |  |  | && x.LotNumber == outOrderDetail.ScrapProLotNo).ToList().ForEach(x => x.OutboundQuantity = x.StockPcsQty); | 
|---|
|  |  |  | needQuantity -= useableStockQuantity; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | stockInfo.proStockInfoDetails.ForEach(x => | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (x.StockPcsQty > x.OutboundQuantity && x.ProductCode == outOrderDetail.PCode && x.ProductVersion == outOrderDetail.PVer | 
|---|
|  |  |  | && (isCanLot ? isCanLot : x.BagNo == outOrderDetail.PLot) | 
|---|
|  |  |  | && (isCanDate ? isCanDate : x.DateCode == outOrderDetail.DateCode)) | 
|---|
|  |  |  | //满足æ¡ä»¶è¿è¡åé
 | 
|---|
|  |  |  | if ((x.StockPcsQty > x.OutboundQuantity) | 
|---|
|  |  |  | && x.ProductCode == outOrderDetail.ScrapProCode | 
|---|
|  |  |  | && x.ProductVersion == outOrderDetail.ScrapProVersion | 
|---|
|  |  |  | && x.LotNumber == outOrderDetail.ScrapProLotNo) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (x.StockPcsQty - x.OutboundQuantity >= needQuantity) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | x.OutboundQuantity += needQuantity; | 
|---|
|  |  |  | needQuantity = 0; | 
|---|
|  |  |  | x.OutDetailId = outOrderDetail.Id; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | needQuantity -= (x.StockPcsQty - x.OutboundQuantity); | 
|---|
|  |  |  | x.OutboundQuantity = x.StockPcsQty; | 
|---|
|  |  |  | x.OutDetailId = outOrderDetail.Id; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | assignOutStocks.Add(stockInfo); | 
|---|
|  |  |  | index++; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | residueQuantity = needQuantity; | 
|---|
|  |  |  | 
|---|
|  |  |  | public List<Dt_ProStockInfo> GetOutboundStocks(List<Dt_ProStockInfo> stockInfos, Dt_MesRworkOutboundOrder mesRworkOutboundOrder, float needQuantity, out float residueQuantity) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | List<Dt_ProStockInfo> assignOutStocks = new List<Dt_ProStockInfo>(); | 
|---|
|  |  |  | float stockTotalQuantity = stockInfos.Select(x => x.proStockInfoDetails.Sum(v => v.StockPcsQty - v.OutboundQuantity)).Sum(x => x); | 
|---|
|  |  |  | //stockInfos = stockInfos.OrderBy(x => x.Id).ToList(); | 
|---|
|  |  |  | bool isCanDate = string.IsNullOrEmpty(mesRworkOutboundOrder.DateCode); | 
|---|
|  |  |  | float stockTotalQuantity = stockInfos.Select(x => x.proStockInfoDetails.Where(x => x.ProductCode == mesRworkOutboundOrder.ProductCode | 
|---|
|  |  |  | && x.ProductVersion == mesRworkOutboundOrder.ProductVersion | 
|---|
|  |  |  | && (isCanDate ? isCanDate : x.DateCode == mesRworkOutboundOrder.DateCode)) | 
|---|
|  |  |  | .Sum(v => v.StockPcsQty - v.OutboundQuantity)).Sum(x => x); | 
|---|
|  |  |  | //stockInfos = stockInfos.OrderBy(x => x.Id).ToList(); | 
|---|
|  |  |  | if (stockTotalQuantity >= needQuantity)//åºåå¤ | 
|---|
|  |  |  | { | 
|---|
|  |  |  | int index = 0; | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Dt_ProStockInfo stockInfo = stockInfos[index]; | 
|---|
|  |  |  | float useableStockQuantity = stockInfo.proStockInfoDetails | 
|---|
|  |  |  | .Where(x => x.SaleOrder == mesRworkOutboundOrder.SaleOrder | 
|---|
|  |  |  | && x.ProductCode == mesRworkOutboundOrder.ProductCode | 
|---|
|  |  |  | .Where(x => x.ProductCode == mesRworkOutboundOrder.ProductCode | 
|---|
|  |  |  | && x.ProductVersion == mesRworkOutboundOrder.ProductVersion | 
|---|
|  |  |  | && (isCanDate? isCanDate: x.DateCode == mesRworkOutboundOrder.DateCode)) | 
|---|
|  |  |  | .Sum(x => x.StockPcsQty - x.OutboundQuantity); | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | stockInfo.proStockInfoDetails.ForEach(x => | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if ((x.StockPcsQty > x.OutboundQuantity) && x.SaleOrder == mesRworkOutboundOrder.SaleOrder | 
|---|
|  |  |  | if ((x.StockPcsQty > x.OutboundQuantity) | 
|---|
|  |  |  | && x.ProductCode == mesRworkOutboundOrder.ProductCode | 
|---|
|  |  |  | && x.ProductVersion == mesRworkOutboundOrder.ProductVersion | 
|---|
|  |  |  | && (isCanDate ? isCanDate : x.DateCode == mesRworkOutboundOrder.DateCode)) | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | assignOutStocks.Add(stockInfo); | 
|---|
|  |  |  | index++; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | for (int i = 0; i < stockInfos.Count; i++) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Dt_ProStockInfo stockInfo = stockInfos[i]; | 
|---|
|  |  |  | float useableStockQuantity = stockInfo.proStockInfoDetails | 
|---|
|  |  |  | .Where(x => x.SaleOrder == mesRworkOutboundOrder.SaleOrder | 
|---|
|  |  |  | && x.ProductCode == mesRworkOutboundOrder.ProductCode | 
|---|
|  |  |  | && x.ProductVersion == mesRworkOutboundOrder.ProductVersion | 
|---|
|  |  |  | && (isCanDate ? isCanDate : x.DateCode == mesRworkOutboundOrder.DateCode)) | 
|---|
|  |  |  | .Sum(x => x.StockPcsQty - x.OutboundQuantity); | 
|---|
|  |  |  | if (useableStockQuantity < needQuantity) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | stockInfo.proStockInfoDetails.ForEach(x => x.OutboundQuantity = x.StockPcsQty); | 
|---|
|  |  |  | needQuantity -= useableStockQuantity; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | stockInfo.proStockInfoDetails.ForEach(x => | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (x.StockPcsQty > x.OutboundQuantity && x.SaleOrder == mesRworkOutboundOrder.SaleOrder | 
|---|
|  |  |  | && x.ProductCode == mesRworkOutboundOrder.ProductCode | 
|---|
|  |  |  | && x.ProductVersion == mesRworkOutboundOrder.ProductVersion | 
|---|
|  |  |  | && (isCanDate ? isCanDate : x.DateCode == mesRworkOutboundOrder.DateCode)) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (x.StockPcsQty - x.OutboundQuantity >= needQuantity) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | x.OutboundQuantity += needQuantity; | 
|---|
|  |  |  | needQuantity = 0; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | needQuantity -= (x.StockPcsQty - x.OutboundQuantity); | 
|---|
|  |  |  | x.OutboundQuantity = x.StockPcsQty; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | assignOutStocks.Add(stockInfo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | residueQuantity = needQuantity; | 
|---|
|  |  |  | 
|---|
|  |  |  | //    } | 
|---|
|  |  |  | //    return (deleteStockDetails, updateStockDetails); | 
|---|
|  |  |  | //} | 
|---|
|  |  |  | public WebResponseContent GetProCodeByWarehouse(int warehouseId) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | try | 
|---|
|  |  |  | { | 
|---|
|  |  |  | //è·åææåºååå· | 
|---|
|  |  |  | List<Dt_ProStockInfoDetail> proStockInfoDetails = _stockRepository.ProStockInfoRepository.Db.Queryable<Dt_ProStockInfo, Dt_ProStockInfoDetail>((master, detail) => master.Id == detail.ProStockId) | 
|---|
|  |  |  | .Where((master, detail) => master.WarehouseId == warehouseId) | 
|---|
|  |  |  | .Select((master, detail) => detail) | 
|---|
|  |  |  | .ToList(); | 
|---|
|  |  |  | //è¿æ»¤éå¤ | 
|---|
|  |  |  | List<string> proCode = proStockInfoDetails.Select(x => x.ProductCode).Distinct().ToList(); | 
|---|
|  |  |  | return WebResponseContent.Instance.OK("æå",data: proCode); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | catch (Exception ex) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | return WebResponseContent.Instance.Error(ex.Message); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public WebResponseContent GetProVersionByCode(string scrapProCode, int warehouseId) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | try | 
|---|
|  |  |  | { | 
|---|
|  |  |  | //è·åæå®äº§ååºåçæ¬ | 
|---|
|  |  |  | List<Dt_ProStockInfoDetail> proStockInfoDetails = _stockRepository.ProStockInfoRepository.Db.Queryable<Dt_ProStockInfo, Dt_ProStockInfoDetail>((master, detail) => master.Id == detail.ProStockId) | 
|---|
|  |  |  | .Where((master, detail) => master.WarehouseId == warehouseId && detail.ProductCode== scrapProCode) | 
|---|
|  |  |  | .Select((master, detail) => detail) | 
|---|
|  |  |  | .ToList(); | 
|---|
|  |  |  | //è¿æ»¤éå¤ | 
|---|
|  |  |  | List<string> productVersion = proStockInfoDetails.Select(x => x.ProductVersion).Distinct().ToList(); | 
|---|
|  |  |  | return WebResponseContent.Instance.OK("æå",data: productVersion); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | catch (Exception ex) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | return WebResponseContent.Instance.Error(ex.Message); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public WebResponseContent GetProLotNoByCode(string scrapProCode, int warehouseId) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | try | 
|---|
|  |  |  | { | 
|---|
|  |  |  | //è·åæå®äº§ååºåæ¹æ¬¡ | 
|---|
|  |  |  | List<Dt_ProStockInfoDetail> proStockInfoDetails = _stockRepository.ProStockInfoRepository.Db.Queryable<Dt_ProStockInfo, Dt_ProStockInfoDetail>((master, detail) => master.Id == detail.ProStockId) | 
|---|
|  |  |  | .Where((master, detail) => master.WarehouseId == warehouseId && detail.ProductCode == scrapProCode) | 
|---|
|  |  |  | .Select((master, detail) => detail) | 
|---|
|  |  |  | .ToList(); | 
|---|
|  |  |  | //è¿æ»¤éå¤ | 
|---|
|  |  |  | List<string> lotNumber = proStockInfoDetails.Select(x => x.LotNumber).Distinct().ToList(); | 
|---|
|  |  |  | return WebResponseContent.Instance.OK("æå", data: lotNumber); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | catch (Exception ex) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | return WebResponseContent.Instance.Error(ex.Message); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|