| | |
| | | using Microsoft.AspNetCore.Http; |
| | | using Org.BouncyCastle.Asn1.Ocsp; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | |
| | | return WebResponseContent.Instance.Error("æªæ¾å°ææçåºåºéå®ä¿¡æ¯"); |
| | | |
| | | // 2. æ£æ¥å©ä½é宿°é |
| | | decimal remainingLockQuantity = lockInfo.AssignQuantity - lockInfo.PickedQty; |
| | | decimal remainingLockQuantity = lockInfo.OriginalQuantity - lockInfo.PickedQty; |
| | | if (request.SplitQuantity > remainingLockQuantity) |
| | | return WebResponseContent.Instance.Error($"æå
æ°éä¸è½å¤§äºå©ä½é宿°éï¼å©ä½ï¼{remainingLockQuantity}"); |
| | | |
| | | var stockDetail = await _stockInfoDetailService.Db.Queryable<Dt_StockInfoDetail>() |
| | | .Where(x => x.Barcode == request.OriginalBarcode) |
| | | .Where(x => x.Barcode == request.OriginalBarcode && x.StockId == lockInfo.StockId) |
| | | .FirstAsync(); |
| | | if (stockDetail == null) |
| | | throw new Exception($"æªæ¾å°æ¡ç {request.OriginalBarcode}对åºçåºåè®°å½"); |
| | | |
| | | stockDetail.StockQuantity = request.SplitQuantity; |
| | | stockDetail.OutboundQuantity = request.SplitQuantity; |
| | | _stockInfoDetailService.Db.Updateable<Dt_StockInfoDetail>(stockDetail).ExecuteCommand(); |
| | | |
| | | |
| | | var seq = await _dailySequenceService.GetNextSequenceAsync(); |
| | | // 3. çææ°æ¡ç |
| | | string newBarcode = "WSLOT" + DateTime.Now.ToString("yyyyMMdd") + seq.ToString()?.PadLeft(5, '0'); |
| | | string newBarcode = "WSLOT" + DateTime.Now.ToString("yyyyMMdd") + seq.ToString()?.PadLeft(5, '0'); |
| | | |
| | | decimal remainingQty = remainingLockQuantity - request.SplitQuantity; |
| | | |
| | | // 为æå
产ççæ°æ¡ç å建åºåè®°å½ |
| | | var newStockDetail = new Dt_StockInfoDetail |
| | | { |
| | | SupplyCode = stockDetail.SupplyCode, |
| | | WarehouseCode = stockDetail.WarehouseCode, |
| | | BarcodeQty = stockDetail.BarcodeQty, |
| | | BarcodeUnit = stockDetail.Barcode, |
| | | BusinessType = stockDetail.BusinessType, |
| | | Unit = stockDetail.Unit, |
| | | StockId = lockInfo.StockId, |
| | | MaterielCode = stockDetail.MaterielCode, |
| | | OrderNo = stockDetail.OrderNo, |
| | | BatchNo = stockDetail.BatchNo, |
| | | StockQuantity = remainingQty, |
| | | OutboundQuantity = remainingQty, // éå®å
¨é¨æ°é |
| | | Barcode = newBarcode, |
| | | InboundOrderRowNo = stockDetail.InboundOrderRowNo, |
| | | |
| | | }; |
| | | await _outStockLockInfoService.Db.Insertable(newStockDetail).ExecuteCommandAsync(); |
| | | |
| | | // 4. å建æ°çåºåºéå®ä¿¡æ¯ï¼æ°æ¡ç ï¼ |
| | | var newLockInfo = new Dt_OutStockLockInfo |
| | | { |
| | | |
| | | |
| | | OrderNo = lockInfo.OrderNo, |
| | | OrderDetailId = lockInfo.OrderDetailId, |
| | | BatchNo = lockInfo.BatchNo, |
| | | MaterielCode = lockInfo.MaterielCode, |
| | | MaterielName = lockInfo.MaterielName, |
| | | StockId = lockInfo.StockId, |
| | | OrderQuantity = lockInfo.OrderQuantity, |
| | | OriginalQuantity = lockInfo.OriginalQuantity, |
| | | AssignQuantity = request.SplitQuantity, // æ°æ¡ç åé
æ°é |
| | | OrderQuantity = remainingQty, |
| | | OriginalQuantity = remainingQty, |
| | | AssignQuantity = remainingQty, // æ°æ¡ç åé
æ°é |
| | | PickedQty = 0, // æ°æ¡ç æªæ£é |
| | | LocationCode = lockInfo.LocationCode, |
| | | PalletCode = lockInfo.PalletCode, |
| | |
| | | Status = (int)OutLockStockStatusEnum.åºåºä¸, |
| | | Unit = lockInfo.Unit, |
| | | SupplyCode = lockInfo.SupplyCode, |
| | | OrderType=lockInfo.OrderType, |
| | | OrderType = lockInfo.OrderType, |
| | | CurrentBarcode = newBarcode, // æ°æ¡ç |
| | | OriginalLockQuantity = request.SplitQuantity, |
| | | IsSplitted = 1, |
| | |
| | | await _outStockLockInfoService.Db.Insertable(newLockInfo).ExecuteCommandAsync(); |
| | | |
| | | // 5. æ´æ°åéå®ä¿¡æ¯çåé
æ°éï¼åå°æå
æ°éï¼ |
| | | lockInfo.AssignQuantity -= request.SplitQuantity; |
| | | lockInfo.AssignQuantity = request.SplitQuantity; |
| | | await _outStockLockInfoService.Db.Updateable(lockInfo).ExecuteCommandAsync(); |
| | | |
| | | // 6. è®°å½æå
åå²ï¼ç¨äºè¿½è¸ªï¼ |
| | | var splitHistory = new Dt_SplitPackageRecord |
| | | { |
| | | FactoryArea = lockInfo.FactoryArea, |
| | | TaskNum=lockInfo.TaskNum, |
| | | TaskNum = lockInfo.TaskNum, |
| | | OutStockLockInfoId = lockInfo.Id, |
| | | StockId = stockDetail?.StockId ?? 0, |
| | | Operator = App.User.UserName, |
| | |
| | | OriginalBarcode = lockInfo.CurrentBarcode, |
| | | NewBarcode = newBarcode, |
| | | SplitQty = request.SplitQuantity, |
| | | RemainQuantity = lockInfo.RemainQuantity - request.SplitQuantity, |
| | | RemainQuantity = lockInfo.OriginalQuantity - request.SplitQuantity, |
| | | MaterielCode = lockInfo.MaterielCode, |
| | | SplitTime = DateTime.Now, |
| | | OrderNo = request.OrderNo, |