public async Task <TransferLocation_Dto> GetByQrCodeId(object qrCodeId) { TransferLocation_Dto model = new TransferLocation_Dto(); // Lấy ra TransactionMain cùng QRCode_ID và Can_Move == "Y" và QRCode_Version mới nhất var transactionModel = await _repoTransactionMain.FindAll(x => x.QRCode_ID.Trim() == qrCodeId.ToString().Trim() && x.Can_Move == "Y" && (x.Transac_Type.Trim() == "I" || x.Transac_Type.Trim() == "M" || x.Transac_Type.Trim() == "R")).OrderByDescending(x => x.QRCode_Version).FirstOrDefaultAsync(); var qrCodeModel = await _repoQRCodeMain.GetByQRCodeID(qrCodeId); if (transactionModel != null) { var packingListModel = await _repoPackingList.FindAll().Where(x => x.MO_No.Trim() == transactionModel.MO_No.Trim()).FirstOrDefaultAsync(); var materialPurchaseModel = await _repoMaterialView.FindAll().Where(x => x.Plan_No.Trim() == transactionModel.MO_No.Trim() && x.Purchase_No.Trim() == transactionModel.Purchase_No.Trim() && x.Mat_.Trim() == transactionModel.Material_ID.Trim()).FirstOrDefaultAsync(); model.Id = transactionModel.ID; model.QrCodeId = transactionModel.QRCode_ID.Trim(); model.TransferNo = "TB" + DateTime.Now.ToString("yyyyMMdd") + "001"; model.PlanNo = transactionModel.MO_No.Trim(); model.ReceiveNo = qrCodeModel.Receive_No.Trim(); model.Batch = transactionModel.MO_Seq; model.MatId = transactionModel.Material_ID.Trim(); model.MatName = transactionModel.Material_Name.Trim(); model.FromLocation = transactionModel.Rack_Location.Trim(); model.Qty = _repoTransactionDetail.GetQtyByTransacNo(transactionModel.Transac_No); model.UpdateBy = "Emma"; model.TransacTime = DateTime.Now; model.ModelName = packingListModel.Model_Name; model.ModelNo = packingListModel.Model_No; model.Article = packingListModel.Article; model.CustmoerPart = materialPurchaseModel.Custmoer_Part; model.CustmoerName = materialPurchaseModel.Custmoer_Name; } return(model); }
public async Task<PagedList<QrCodeAgain_Dto>> FilterQrCodeAgain(PaginationParams param, FilterQrCodeAgainParam filterParam) { var pred_List_Transaction_Main = PredicateBuilder.New<WMSB_Transaction_Main>(true); pred_List_Transaction_Main.And(x => x.Can_Move == "Y"); if (!String.IsNullOrEmpty(filterParam.To_Date) && !String.IsNullOrEmpty(filterParam.From_Date)) { pred_List_Transaction_Main.And(x => x.Transac_Time >= Convert.ToDateTime(filterParam.From_Date + " 00:00:00.000") && x.Transac_Time <= Convert.ToDateTime(filterParam.To_Date + " 23:59:59.997")); } if (!String.IsNullOrEmpty(filterParam.MO_No)) { pred_List_Transaction_Main.And(x => x.MO_No.Trim() == filterParam.MO_No.Trim()); } if (!String.IsNullOrEmpty(filterParam.Rack_Location)) { pred_List_Transaction_Main.And(x => x.Rack_Location.Trim() == filterParam.Rack_Location.Trim()); } if (!String.IsNullOrEmpty(filterParam.Material_ID)) { pred_List_Transaction_Main.And(x => x.Material_ID.Trim() == filterParam.Material_ID.Trim()); } var listTransactionMain = _repoTransactionMain.FindAll(pred_List_Transaction_Main); var packingLists = _repoPackingList.FindAll(); var data = (from a in listTransactionMain join b in packingLists on new { MO_No = a.MO_No.Trim(), Purchase_No = a.Purchase_No.Trim(), Mo_Seq = a.MO_Seq, Material_View_Dto = a.Material_ID.Trim() } equals new { MO_No = b.MO_No.Trim(), Purchase_No = b.Purchase_No.Trim(), Mo_Seq = b.MO_Seq, Material_View_Dto = b.Material_ID.Trim() } select new QrCodeAgain_Dto() { ID = a.ID, Transac_Type = a.Transac_Type, Transac_No = a.Transac_No, Transac_Sheet_No = a.Transac_Sheet_No, Can_Move = a.Can_Move, Transac_Time = a.Transac_Time, QRCode_ID = a.QRCode_ID, QRCode_Version = a.QRCode_Version, MO_No = a.MO_No, Purchase_No = a.Purchase_No, MO_Seq = a.MO_Seq, Material_ID = a.Material_ID, Material_Name = a.Material_Name, Purchase_Qty = a.Purchase_Qty, Transacted_Qty = a.Transacted_Qty, Rack_Location = a.Rack_Location, Missing_No = a.Missing_No, Pickup_No = a.Pickup_No, Supplier_ID = b.Supplier_ID, Supplier_Name = b.Supplier_Name, Updated_By = a.Updated_By, Updated_Time = a.Updated_Time }); if (!String.IsNullOrEmpty(filterParam.Supplier_ID) && filterParam.Supplier_ID.Trim() != "All") { data = data.Where(x => x.Supplier_ID.Trim() == filterParam.Supplier_ID.Trim()); } data = data.Distinct().OrderByDescending(x => x.Updated_Time); return await PagedList<QrCodeAgain_Dto>.CreateAsync(data, param.PageNumber, param.PageSize, false); }
public async Task <List <Transfer_Form_Print_Dto> > GetInfoTransferFormPrintDetail(List <Transfer_Form_Generate_Dto> generateTransferForm) { List <Transfer_Form_Print_Dto> listTransferFormPrint = new List <Transfer_Form_Print_Dto>(); var transationMain = _transactionMainRepo.FindAll(); var packingList = _packingListRepository.FindAll(); var qrCodeMain = _qRCodeMainRepository.FindAll(); var data = generateTransferForm.GroupJoin( transationMain, x => x.Transac_No, y => y.Transac_No, (x, y) => new { GenerateTransferForm = x, TransationMain = y }) .SelectMany( x => x.TransationMain.DefaultIfEmpty(), (x, y) => new { GenerateTransferForm = x.GenerateTransferForm, TransationMain = y }) .GroupJoin( qrCodeMain, x => new { QRCode_ID = x.TransationMain.QRCode_ID, QRCode_Version = x.TransationMain.QRCode_Version }, y => new { QRCode_ID = y.QRCode_ID, QRCode_Version = y.QRCode_Version }, (x, y) => new { GenerateTransferFormTransactionMain = x, QrCodeMain = y }) .SelectMany( x => x.QrCodeMain.DefaultIfEmpty(), (x, y) => new { GenerateTransferFormTransactionMain = x.GenerateTransferFormTransactionMain, QrCodeMain = y }) .GroupJoin( packingList, x => x.QrCodeMain.Receive_No, y => y.Receive_No, (x, y) => new { GenerateTransferFormTransactionMainQrCodeMain = x, PackingList = y }) .SelectMany( x => x.PackingList.DefaultIfEmpty(), (x, y) => new Transfer_Form_Print_Dto { Rack_Location = x.GenerateTransferFormTransactionMainQrCodeMain.GenerateTransferFormTransactionMain.TransationMain.Rack_Location, Collect_Trans_No = x.GenerateTransferFormTransactionMainQrCodeMain.GenerateTransferFormTransactionMain.GenerateTransferForm.Collect_Trans_No, MO_No = x.GenerateTransferFormTransactionMainQrCodeMain.GenerateTransferFormTransactionMain.TransationMain.MO_No, MO_Seq = x.GenerateTransferFormTransactionMainQrCodeMain.GenerateTransferFormTransactionMain.TransationMain.MO_Seq, Material_ID = x.GenerateTransferFormTransactionMainQrCodeMain.GenerateTransferFormTransactionMain.TransationMain.Material_ID, Material_Name = x.GenerateTransferFormTransactionMainQrCodeMain.GenerateTransferFormTransactionMain.TransationMain.Material_Name, T3_Supplier = y.T3_Supplier, T3_Supplier_Name = y.T3_Supplier_Name, Supplier_ID = y.Supplier_ID, Supplier_Name = y.Supplier_Name, Article = y.Article, Subcon_ID = y.Subcon_ID, Subcon_Name = y.Subcon_Name, Model_Name = y.Model_Name, Model_No = y.Model_No, Custmoer_Part = x.GenerateTransferFormTransactionMainQrCodeMain.GenerateTransferFormTransactionMain.GenerateTransferForm.Custmoer_Part, Custmoer_Name = x.GenerateTransferFormTransactionMainQrCodeMain.GenerateTransferFormTransactionMain.GenerateTransferForm.Custmoer_Name, Line_ASY = _cacheRepository.GetLineASY(y.MO_No, y.MO_Seq, y.Material_ID, y.Purchase_No), Line_STF = _materialViewRepository.GetLineSTF(y.MO_No, y.MO_Seq, y.Material_ID, y.Purchase_No), TransferFormQty = GetTransferFormPrintQty(x.GenerateTransferFormTransactionMainQrCodeMain.GenerateTransferFormTransactionMain.GenerateTransferForm.Collect_Trans_No) }).ToList(); return(await Task.FromResult(data)); }
public async Task <List <object> > PrintByQRCodeIDList(List <QrCodeIDVersion> data) { var objectResult = new List <object>(); var listAllQrCodeMainView = await this.GetListQrCodeMainView(data); foreach (var item in data) { var qrCodeMainItem = listAllQrCodeMainView .Where(x => x.QRCode_ID.Trim() == item.QRCode_ID.Trim() && x.MO_Seq == item.MO_Seq).FirstOrDefault(); var object1 = await this.FindByQrCodeID(item); // Lấy dữ liệu show phần Suggested Location Material Form var transactionMain = await _repoTransactionMain .FindAll(x => x.MO_No.Trim() == item.MO_No.Trim() && x.MO_Seq == item.MO_Seq && x.Can_Move.Trim() == "Y" && x.Material_ID.Trim() == qrCodeMainItem.Material_ID.Trim()).ToListAsync(); var suggestedReturn1 = transactionMain.Select(x => new { x.Rack_Location }).Distinct().ToList(); var objectItem = new { object1, qrCodeMainItem, suggestedReturn1 }; objectResult.Add(objectItem); } return(objectResult); }
public async Task <Output_Dto> GetByQrCodeId(string qrCodeId) { string message = "No data!"; // biến qrcodeid là sheet no của bảng materialsheetsize, dựa theo mã đó lấy ra listmaterialsheetsize là danh sánh đơn output ra var listMaterialSheetSize = await _repoMaterialSheetSize.FindAll(x => x.Sheet_No.Trim() == qrCodeId.Trim()).ProjectTo <Material_Sheet_Size_Dto>(_configMapper).OrderBy(x => x.Tool_Size).ToListAsync(); // kiểm tra xem Sheet_No đó đã output bao giờ chưa, nếu có rồi là kiểm tra đơn đó đã output ra hết chưa var listTransactionMainTypeOByPickupNo = await _repoTransactionMain.FindAll(x => x.Pickup_No.Trim() == qrCodeId && x.Transac_Type.Trim() == "O").ToListAsync(); List <WMSB_Transaction_Detail> listTransactionDetailByBistTransactionMainTypeOByPickupNo = new List <WMSB_Transaction_Detail>(); if (listTransactionMainTypeOByPickupNo.Count > 0) { foreach (var item in listTransactionMainTypeOByPickupNo) { var tmp = await _repoTransactionDetail.FindAll(x => x.Transac_No == item.Transac_No).ToListAsync(); listTransactionDetailByBistTransactionMainTypeOByPickupNo.AddRange(tmp); } var totalTransQtyOutput = listTransactionDetailByBistTransactionMainTypeOByPickupNo.GroupBy(x => new { x.Order_Size }) .Select(y => new { OrderSize = y.Key.Order_Size, TotalTransQty = (decimal)y.Sum(z => z.Trans_Qty) }).ToList(); foreach (var itemMaterialSheetSize in listMaterialSheetSize) { var transQtyHadOutput = totalTransQtyOutput.Where(x => x.OrderSize == itemMaterialSheetSize.Order_Size).FirstOrDefault(); var qty = transQtyHadOutput != null ? transQtyHadOutput.TotalTransQty : 0; itemMaterialSheetSize.Qty = (decimal)itemMaterialSheetSize.Qty - qty; } } // hết kiểm tra xem Sheet_No đó đã output ra bao giờ chưa List <OutputMain_Dto> listOuput = new List <OutputMain_Dto>(); var materialSheetSize = await _repoMaterialSheetSize.FindAll(x => x.Sheet_No.Trim() == qrCodeId.Trim()).FirstOrDefaultAsync(); if (materialSheetSize != null) { List <WMSB_Transaction_Main> transactionModel = new List <WMSB_Transaction_Main>(); // trong transaction main lấy theeo mo_no, material_id và batch transactionModel = await _repoTransactionMain.FindAll(x => x.MO_No.Trim() == materialSheetSize.Manno.Trim() && x.MO_Seq.Trim() == materialSheetSize.Batch.Trim() && x.Material_ID == materialSheetSize.Material_ID && x.Can_Move == "Y" && x.Transac_Type != "O").ToListAsync(); foreach (var item in transactionModel) { var rackLocation = await _repoRackLocation.FindAll(x => x.Rack_Location.Trim() == item.Rack_Location.Trim()).FirstOrDefaultAsync(); // dữ liệu output cần hiển thị: trong bảng tranasaction main, transaction detail ... OutputMain_Dto output = new OutputMain_Dto(); output.Id = item.ID; output.TransacNo = item.Transac_No; output.QrCodeId = item.QRCode_ID.Trim(); output.QrCodeVersion = item.QRCode_Version; output.PlanNo = item.MO_No.Trim(); output.Batch = item.MO_Seq; output.MatId = item.Material_ID.Trim(); output.MatName = item.Material_Name.Trim(); output.PickupNo = qrCodeId; output.RackLocation = item.Rack_Location; output.InStockQty = _repoTransactionDetail.GetQtyByTransacNo(item.Transac_No); output.TransOutQty = 0; output.RemainingQty = _repoTransactionDetail.GetQtyByTransacNo(item.Transac_No); var qrCodeModel = await _repoQRCodeMain.GetByQRCodeID(item.QRCode_ID); var packingListModel = await _repoPackingList.GetByReceiveNo(qrCodeModel.Receive_No); if (packingListModel != null) { output.SupplierName = packingListModel.Supplier_Name.Trim(); output.SupplierNo = packingListModel.Supplier_ID.Trim(); output.T3Supplier = packingListModel.T3_Supplier.Trim(); output.T3SupplierName = packingListModel.T3_Supplier_Name; output.SubconId = packingListModel.Subcon_ID.Trim(); output.SubconName = packingListModel.Subcon_Name; } listOuput.Add(output); } if (transactionModel.Count() == 0) { message = "Had been finishing outputted!"; } } // kiểm tra đơn yêu cầu có bị dư toolsize nào ko thì loại ra // do hệ thống còn liên quan đến hp nên có thể toolsize bị dư ko output được // lấy theo toolsize của bảng transaction detail, của những đơn cần output List <OutputTotalNeedQty_Dto> listNeedQtyByOutput = new List <OutputTotalNeedQty_Dto>(); if (listOuput.Count() > 0) { var tmpTransacno = listOuput.FirstOrDefault().TransacNo; var tmpListDetail = await _repoTransactionDetail.FindAll(x => x.Transac_No.Trim() == tmpTransacno.Trim()).OrderBy(x => x.Tool_Size).ToListAsync(); foreach (var itemTmpListDetail in tmpListDetail) { var tmpMaterialSheetSize = listMaterialSheetSize.Where(x => x.Tool_Size.Trim() == itemTmpListDetail.Tool_Size.Trim() && x.Order_Size.Trim() == itemTmpListDetail.Order_Size.Trim() && x.Model_Size.Trim() == itemTmpListDetail.Model_Size.Trim()) .Select(x => new OutputTotalNeedQty_Dto { Model_Size = x.Model_Size, Order_Size = x.Order_Size, Qty = x.Qty, Tool_Size = x.Tool_Size }).FirstOrDefault(); if (tmpMaterialSheetSize != null) { listNeedQtyByOutput.Add(tmpMaterialSheetSize); } } // kiểm tra phần tử có trong transaction detail có mà trong material sheet size ko có, thì thêm vào material sheet size qty bằng 0 var toolSizeHaveInDetailNotHaveInSheet = tmpListDetail.Where(p => !listMaterialSheetSize.Any(x => x.Tool_Size.Trim() == p.Tool_Size.Trim() && x.Order_Size.Trim() == p.Order_Size.Trim() && x.Model_Size.Trim() == p.Model_Size.Trim())).ToList(); if (toolSizeHaveInDetailNotHaveInSheet.Any()) { var tmpMaterialSheetSize = listMaterialSheetSize.First(); foreach (var item in toolSizeHaveInDetailNotHaveInSheet) { OutputTotalNeedQty_Dto tmp = new OutputTotalNeedQty_Dto(); tmp.Model_Size = item.Model_Size; tmp.Tool_Size = item.Tool_Size; tmp.Order_Size = item.Order_Size; tmp.Qty = 0; listNeedQtyByOutput.Add(tmp); } } } //// hết đoạn kiểm tra toolsize // dữ liệu cần lấy ra để hiển thị: listoutputmain là trong bảng transaction main với type bằng I, R, M và listmaterialsheetsize là số lượng cần output ra của đơn Output_Dto result = new Output_Dto(); result.Outputs = listOuput.OrderBy(x => x.InStockQty).ToList(); result.OutputTotalNeedQty = listNeedQtyByOutput.OrderBy(x => x.Tool_Size).ToList(); result.Message = message; return(result); }
public async Task <Output_Dto> GetByQrCodeId(string qrCodeId) { // biến qrcodeid là sheet no của bảng materialsheetsize, dựa theo mã đó lấy ra listmaterialsheetsize là danh sánh đơn output ra var listMaterialSheetSize = await _repoMaterialSheetSize.FindAll(x => x.Sheet_No.Trim() == qrCodeId.Trim()).ProjectTo <Material_Sheet_Size_Dto>(_configMapper).OrderBy(x => x.Tool_Size).ToListAsync(); // kiểm tra xem Sheet_No đó đã output bao giờ chưa, nếu có rồi là kiểm tra đơn đó đã output ra hết chưa var listTransactionMainTypeOByPickupNo = await _repoTransactionMain.FindAll().Where(x => x.Pickup_No.Trim() == qrCodeId && x.Transac_Type.Trim() == "O").ToListAsync(); List <WMSB_Transaction_Detail> listTransactionDetailByBistTransactionMainTypeOByPickupNo = new List <WMSB_Transaction_Detail>(); if (listTransactionMainTypeOByPickupNo.Count > 0) { foreach (var item in listTransactionMainTypeOByPickupNo) { var tmp = await _repoTransactionDetail.FindAll(x => x.Transac_No == item.Transac_No).ToListAsync(); listTransactionDetailByBistTransactionMainTypeOByPickupNo.AddRange(tmp); } var totalTransQtyOutput = listTransactionDetailByBistTransactionMainTypeOByPickupNo.GroupBy(x => new { x.Order_Size }) .Select(y => new { OrderSize = y.Key.Order_Size, TotalTransQty = (decimal)y.Sum(z => z.Trans_Qty) }).ToList(); listMaterialSheetSize = listMaterialSheetSize.Join(totalTransQtyOutput, x => x.Order_Size, y => y.OrderSize, (x, y) => new Material_Sheet_Size_Dto { Qty = (decimal)x.Qty - y.TotalTransQty, Factory_ID = x.Factory_ID, Batch = x.Batch, Cur_Ent = x.Cur_Ent, HP_Update_Time = x.HP_Update_Time, HP_User = x.HP_User, Manno = x.Manno, Material_ID = x.Material_ID, Model_Size = x.Model_Size, Order_Size = x.Order_Size, Print_Size = x.Print_Size, Prod_Delivery_Way = x.Prod_Delivery_Way, Sheet_No = x.Sheet_No, Subcont_Material = x.Subcont_Material, Tool_Size = x.Tool_Size, Update_By = x.Update_By, Update_Time = x.Update_Time }).ToList(); } // hết kiểm tra xem Sheet_No đó đã output ra bao giờ chưa List <OutputMain_Dto> listOuput = new List <OutputMain_Dto>(); var materialSheetSize = await _repoMaterialSheetSize.FindAll(x => x.Sheet_No.Trim() == qrCodeId.Trim()).FirstOrDefaultAsync(); if (materialSheetSize != null) { List <WMSB_Transaction_Main> transactionModel = new List <WMSB_Transaction_Main>(); // Nếu Prod_Delivery_Way == "A" thì chỉ lấy trong transaction main theo material_id và mo_no if (materialSheetSize.Prod_Delivery_Way == "A") { transactionModel = await _repoTransactionMain.FindAll(x => x.MO_No.Trim() == materialSheetSize.Manno.Trim() && x.Material_ID == materialSheetSize.Material_ID && x.Can_Move == "Y" && x.Transac_Type != "O").ToListAsync(); } // ngược lại là lấy theeo mo_no, material_id và batch else { transactionModel = await _repoTransactionMain.FindAll(x => x.MO_No.Trim() == materialSheetSize.Manno.Trim() && x.MO_Seq.Trim() == materialSheetSize.Batch.Trim() && x.Material_ID == materialSheetSize.Material_ID && x.Can_Move == "Y" && x.Transac_Type != "O").ToListAsync(); } foreach (var item in transactionModel) { var rackLocation = await _repoRackLocation.FindAll(x => x.Rack_Location.Trim() == item.Rack_Location.Trim()).FirstOrDefaultAsync(); // dữ liệu output cần hiển thị: trong bảng tranasaction main, transaction detail ... OutputMain_Dto output = new OutputMain_Dto(); output.Id = item.ID; output.TransacNo = item.Transac_No; output.QrCodeId = item.QRCode_ID.Trim(); output.QrCodeVersion = item.QRCode_Version; output.PlanNo = item.MO_No.Trim(); output.Batch = item.MO_Seq; output.MatId = item.Material_ID.Trim(); output.MatName = item.Material_Name.Trim(); if (rackLocation != null) { output.Building = _repoCode.FindSingle(x => x.Code_Type == 3 && x.Code_ID == rackLocation.Build_ID).Code_Ename; // building With WMS_Code.Code_TYPE = 3 output.Area = _repoCode.FindSingle(x => x.Code_Type == 5 && x.Code_ID == rackLocation.Area_ID).Code_Ename; // building With WMS_Code.Code_TYPE = 5 output.WH = _repoCode.FindSingle(x => x.Code_Type == 2 && x.Code_ID == rackLocation.WH_ID).Code_Ename; // building With WMS_Code.Code_TYPE = 2 } output.RackLocation = item.Rack_Location; output.InStockQty = _repoTransactionDetail.GetQtyByTransacNo(item.Transac_No); output.TransOutQty = 0; output.RemainingQty = _repoTransactionDetail.GetQtyByTransacNo(item.Transac_No); var qrCodeModel = await _repoQRCodeMain.GetByQRCodeID(item.QRCode_ID); var packingListModel = await _repoPackingList.GetByReceiveNo(qrCodeModel.Receive_No); if (packingListModel != null) { output.SupplierName = packingListModel.Supplier_Name.Trim(); output.SupplierNo = packingListModel.Supplier_ID.Trim(); } listOuput.Add(output); } } // dữ liệu cần lấy ra để hiển thị: listoutputmain là trong bảng transaction main với type bằng I, R, M và listmaterialsheetsize là số lượng cần output ra của đơn Output_Dto result = new Output_Dto(); result.Outputs = listOuput.OrderBy(x => x.InStockQty).ToList(); result.MaterialSheetSizes = listMaterialSheetSize; return(result); }