public async Task <string> StatusPurchase(MaterialMainViewModel model) { var packingList = _repoPackingList.GetAll().Where(x => x.Purchase_No.Trim() == model.Purchase_No.Trim()); var material = new List <Material_Dto>(); var status = "ok"; if (model.Missing_No == "") { material = await _repoPurchase.GetAll().Where(x => x.Purchase_No.Trim() == model.Purchase_No.Trim()) .ProjectTo <Material_Dto>(_configMapper).ToListAsync(); } else { material = await _repoMissing.GetAll().Where(x => x.Purchase_No.Trim() == model.Purchase_No.Trim()) .ProjectTo <Material_Dto>(_configMapper).ToListAsync(); } // Nếu purchase đó chưa có hàng nhận vào. if (packingList.Count() > 0) { foreach (var item in packingList) { // Nếu trong bảng packingList có 1 receiveNo của purchase đó chưa đc sản sinh qrcode thì // chưa cho thêm hàng tiếp if (item.Generated_QRCode.Trim() == "N") { status = "no"; break; } } } else { status = "ok"; } // Nếu tồn tại 1 Status trong bảng Purchase hoặc bảng Missing có status = N thì thêm đc.Còn Y là // đã đủ hàng rồi.Ko đc thêm tiếp. if (status == "ok") { var checkmaterial = "enough"; foreach (var item in material) { if (item.Status == "N") { checkmaterial = "not enough"; break; } } if (checkmaterial == "enough") { status = "no"; } } return(status); }
public async Task<bool> AddListQRCode(List<string> listReceiveNo) { var checkCreate = true; Random ran = new Random(); foreach (var item in listReceiveNo) { // Tạo QrCodeMain để thêm vào database var qrCodeDto = new QRCode_Main_Dto(); var packing = await _repoPacking.GetAll().Where(x => x.Receive_No.Trim() == item.Trim()).FirstOrDefaultAsync(); packing.Generated_QRCode = "Y"; int so = ran.Next(100,999); string qrCodeId = "B" + packing.MO_No.Trim() + so.ToString(); qrCodeDto.QRCode_ID = qrCodeId; qrCodeDto.Receive_No = packing.Receive_No.Trim(); qrCodeDto.QRCode_Version = 1; qrCodeDto.Valid_Status = "Y"; qrCodeDto.Is_Scanned = "N"; qrCodeDto.QRCode_Type = packing.Sheet_Type.Trim(); await _repoPacking.SaveAll(); var qrCodeMain = _mapper.Map<WMSB_QRCode_Main>(qrCodeDto); _repoQrcode.Add(qrCodeMain); // Tạo QrCodeDetail để thêm vào database var listPackingDetail = await _repoPackingDetail.GetAll().Where(x => x.Receive_No.Trim() == item.Trim()).ToListAsync(); foreach (var packingItem in listPackingDetail) { var qrCodeDetailDto = new QRCode_Detail_Dto(); qrCodeDetailDto.QRCode_ID = qrCodeId; qrCodeDetailDto.QRCode_Version = 1; qrCodeDetailDto.Order_Size = packingItem.Order_Size; qrCodeDetailDto.Model_Size = packingItem.Model_Size; qrCodeDetailDto.Tool_Size = packingItem.Tool_Size; qrCodeDetailDto.Spec_Size = packingItem.Spec_Size; qrCodeDetailDto.Qty = packingItem.Received_Qty; qrCodeDetailDto.Updated_By = "Emma"; var qrCodeDetail = _mapper.Map<WMSB_QRCode_Detail>(qrCodeDetailDto); _repoQrCodeDetail.Add(qrCodeDetail); if (!await _repoQrCodeDetail.SaveAll()) { checkCreate = false; break; } } } await _repoQrcode.SaveAll(); return checkCreate; }
// ---Phần in QrCodeId khi vào Menu 2.QrGenerate => Print (Material Form)-------// public async Task <object> FindByQrCodeID(QrCodeIDVersion data) { var qrCodeMan = await _repoQrcode.GetAll() .Where(x => x.QRCode_ID.Trim() == data.QRCode_ID.Trim() && x.QRCode_Version == data.QRCode_Version).FirstOrDefaultAsync(); var packingList = await _repoPackingList.GetAll().ToListAsync(); // Tìm kiếm Purchase và Sheet_Type của qrcodeid với version đó. var packingListFind = packingList .Where(x => x.Receive_No.Trim() == qrCodeMan.Receive_No.Trim()).FirstOrDefault(); // Tìm List ReceiveNo tương ứng với Purchase và Sheet_Type ở trên var ReceiveNoList = packingList .Where(x => x.Sheet_Type.Trim() == packingListFind.Sheet_Type.Trim() && x.Purchase_No.Trim() == packingListFind.Purchase_No.Trim() && x.Receive_Date <= packingListFind.Receive_Date) .Select(x => x.Receive_No).ToList(); var packingListDetailAll = await _repoPackingListDetail.GetAll().ToListAsync(); var packingDetailList = new List <WMSB_PackingList_Detail>(); foreach (var item in ReceiveNoList) { var packingdetailitem = packingListDetailAll.Where(x => x.Receive_No.Trim() == item.Trim()).ToList(); packingDetailList.AddRange(packingdetailitem); } // Gộp theo từng tool size và tính tổng Purchase, Received Qty theo tool size đó. var BalByToolSize = packingDetailList.GroupBy(x => x.Tool_Size).Select(x => new { Tool_Size = x.FirstOrDefault().Tool_Size, Bal = x.Sum(cl => cl.Purchase_Qty) / (ReceiveNoList.Count()) - x.Sum(cl => cl.Received_Qty) }); var packingListDetailModel = new List <PackingListDetailViewModel>(); var packingListDetailModel1 = new List <PackingListDetailViewModel>(); var packingListDetailModel2 = new List <PackingListDetailViewModel>(); var packingListDetailModel3 = new List <PackingListDetailViewModel>(); decimal?totalPQty = 0; decimal?totalRQty = 0; var lists = packingListDetailAll .Where(x => x.Receive_No.Trim() == qrCodeMan.Receive_No.Trim()).ToList(); foreach (var item in lists) { var packingItem1 = new PackingListDetailViewModel(); packingItem1.Receive_No = item.Receive_No; packingItem1.Order_Size = item.Order_Size; packingItem1.Model_Size = item.Model_Size; packingItem1.Tool_Size = item.Tool_Size; packingItem1.Spec_Size = item.Spec_Size; packingItem1.MO_Qty = item.MO_Qty; packingItem1.Purchase_Qty = item.Purchase_Qty; packingItem1.Received_Qty = item.Received_Qty; packingItem1.Act = 0; foreach (var itemByToolSize in BalByToolSize) { if (itemByToolSize.Tool_Size.Trim() == item.Tool_Size.Trim()) { packingItem1.Bal = itemByToolSize.Bal; } } totalPQty = totalPQty + item.Purchase_Qty; totalRQty = totalRQty + item.Received_Qty; packingListDetailModel.Add(packingItem1); } //----------------- Xử lý mảng dữ liệu cho 1 số dòng cùng tool size.----------------// // List các Tool Size mà có nhiều Order Size trong bảng Packing List Detail var toolSizeMoreOrderSize = lists.Where(x => x.Tool_Size.Trim() != x.Order_Size.Trim()).Select(x => x.Tool_Size).Distinct().ToList(); if (toolSizeMoreOrderSize.Count() > 0) { foreach (var itemToolSize in toolSizeMoreOrderSize) { var model1 = packingListDetailModel.Where(x => x.Tool_Size.Trim() == itemToolSize.Trim()) .GroupBy(x => x.Tool_Size).Select(x => new { Purchase_Qty = x.Sum(cl => cl.Purchase_Qty), Received_Qty = x.Sum(cl => cl.Received_Qty), Act = x.Sum(cl => cl.Act), Bal = x.First().Bal }).FirstOrDefault(); var packingDetailByToolSize = packingListDetailModel .Where(x => x.Tool_Size.Trim() == itemToolSize.Trim()).ToList(); for (var i = 0; i < packingDetailByToolSize.Count; i++) { if (i != 0) { packingDetailByToolSize[i].Purchase_Qty = null; packingDetailByToolSize[i].Received_Qty = null; packingDetailByToolSize[i].Act = null; packingDetailByToolSize[i].Bal = null; } else { packingDetailByToolSize[i].Purchase_Qty = model1.Purchase_Qty; packingDetailByToolSize[i].Received_Qty = model1.Received_Qty; packingDetailByToolSize[i].Act = model1.Act; packingDetailByToolSize[i].Bal = model1.Bal; } } } } var count = packingListDetailModel.Count(); if (count > 0 && count <= 8) { packingListDetailModel1 = packingListDetailModel; } else if (count > 8 && count <= 16) { for (int i = 0; i < 8; i++) { packingListDetailModel1.Add(packingListDetailModel[i]); } for (int i = 8; i < count; i++) { packingListDetailModel2.Add(packingListDetailModel[i]); } } else if (count > 16) { for (int i = 0; i < 8; i++) { packingListDetailModel1.Add(packingListDetailModel[i]); } for (int i = 8; i < 16; i++) { packingListDetailModel2.Add(packingListDetailModel[i]); } for (int i = 16; i < count; i++) { packingListDetailModel3.Add(packingListDetailModel[i]); } } // Lấy dữ liệu show phần Suggested Location Material Form var transactionMain = await _repoTransactionMain.GetAll().ToListAsync(); var transactionMain1 = transactionMain.Where(x => x.QRCode_ID.Trim() == data.QRCode_ID.Trim() && (x.Transac_Type == "I" || x.Transac_Type == "M" || x.Transac_Type == "R") && x.Can_Move.Trim() == "Y"); var suggestedReturn1 = transactionMain1.Select(x => new { rack_Location = x.Rack_Location }).Distinct().ToList(); // Lấy dữ liệu show phần Suggested Location Sorting Form var transactionMain2 = transactionMain .Where(x => x.QRCode_ID.Trim() == data.QRCode_ID.Trim() && x.Transac_Type == "I" && x.Can_Move.Trim() == "Y"); var suggestedReturn2 = transactionMain2.Select(x => new { rack_Location = x.Rack_Location }).Distinct().ToList(); var result = new { totalPQty, totalRQty, packingListDetailModel1, packingListDetailModel2, packingListDetailModel3, suggestedReturn1, suggestedReturn2, }; return(result); }
public async Task <List <Packing_List_Dto> > GetAllAsync() { return(await _repoPackingList.GetAll().ProjectTo <Packing_List_Dto>(_configMapper).ToListAsync()); }