|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | for (int i = 0; i < stockInfos.Count; i++) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Dt_StockInfo stockInfo = stockInfos[i]; | 
|---|
|  |  |  | float useableStockQuantity = stockInfo.Details.Where(x => x.MaterielCode == materielCode).Sum(x => x.StockQuantity - x.OutboundQuantity); | 
|---|
|  |  |  | if (useableStockQuantity < needQuantity) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | stockInfo.Details.ForEach(x => x.OutboundQuantity = x.StockQuantity); | 
|---|
|  |  |  | needQuantity -= useableStockQuantity; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | stockInfo.Details.ForEach(x => | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (x.StockQuantity > x.OutboundQuantity && x.MaterielCode == materielCode) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (x.StockQuantity - x.OutboundQuantity >= needQuantity) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | x.OutboundQuantity += needQuantity; | 
|---|
|  |  |  | needQuantity = 0; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | needQuantity -= (x.StockQuantity - x.OutboundQuantity); | 
|---|
|  |  |  | x.OutboundQuantity = x.StockQuantity; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | outStocks.Add(stockInfo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | throw new Exception("搴撳瓨涓嶈冻"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | residueQuantity = needQuantity; | 
|---|
|  |  |  | return outStocks; | 
|---|