public async Task <List <TransferLocationDetail_Dto> > GetDetailTransaction(string transacNo) { // lấy ra tất cả transaction detail dựa vào transacno var model = _repoTransactionDetail.FindAll(x => x.Transac_No.Trim() == transacNo.Trim()); var data = await model.ProjectTo <TransferLocationDetail_Dto>(_configMapper).OrderBy(x => x.Tool_Size).ToListAsync(); return(data); }
public async Task <HistoryDetail_Dto> GetDetailTransaction(string transacNo) { var transactionMain = _repoTransactionMain.FindSingle(x => x.Transac_No.Trim() == transacNo.Trim()); // lấy ra tất cả transaction detail dựa vào transacno var model = _repoTransactionDetail.FindAll(x => x.Transac_No.Trim() == transacNo.Trim()); var transactionDetail = await model.ProjectTo <TransferLocationDetail_Dto>(_configMapper).OrderBy(x => x.Tool_Size).ToListAsync(); HistoryDetail_Dto data = new HistoryDetail_Dto(); data.listTransactionDetail = transactionDetail; data.transactionMain = _mapper.Map <Transaction_Main_Dto>(transactionMain); return(data); }
public List <dynamic> GetAccumulatedTransQtyTransferForm(string collectTransNo) { List <dynamic> transactionDetailTotalActTranQty = new List <dynamic>(); var transferFormActTranQty = _transferFormRepository.FindAll(x => x.Collect_Trans_No == collectTransNo).FirstOrDefault(); var transacNoActTranQty = _transferFormRepository.FindAll(x => x.MO_No == transferFormActTranQty.MO_No && x.MO_Seq == transferFormActTranQty.MO_Seq && x.Material_ID == transferFormActTranQty.Material_ID).Select(x => x.Transac_No).ToList(); foreach (var itemTransacNoActTranQty in transacNoActTranQty) { var transactionDetail = _transactionDetailRepo.FindAll(x => x.Transac_No == itemTransacNoActTranQty).Select(x => new { x.Tool_Size, x.Order_Size, x.Trans_Qty }).OrderBy(x => x.Tool_Size).ToList(); transactionDetailTotalActTranQty.AddRange(transactionDetail); } var transactionDetailResultActTranQty = transactionDetailTotalActTranQty.GroupBy(x => new { x.Tool_Size, x.Order_Size }) .Select(x => new { Tool_Size = x.Key.Tool_Size, Order_Size = x.Key.Order_Size, Trans_Qty = x.Sum(x => Convert.ToInt32(x.Trans_Qty)) }).ToList <dynamic>(); return(transactionDetailResultActTranQty); }
public async Task<QRCodePrint_Dto> GetQrCodePrint(string qrCodeId, int qrCodeVersion) { var qrCodeModel = _repoQrcode.FindSingle(x => x.QRCode_ID.Trim() == qrCodeId.Trim() && x.QRCode_Version == qrCodeVersion); var packingListModel = await _repoPacking.FindAll(x => x.Receive_No.Trim() == qrCodeModel.Receive_No.Trim()).ProjectTo<Packing_List_Dto>(_configMapper).FirstOrDefaultAsync(); var transactionMainModel = _repoTransactionMain.FindSingle(x => x.QRCode_ID.Trim() == qrCodeModel.QRCode_ID.Trim() && x.QRCode_Version == qrCodeModel.QRCode_Version && (x.Transac_Type.Trim() == "I" || x.Transac_Type.Trim() == "R")); var transactionDetailModel = await _repoTransactionDetail.FindAll(x => x.Transac_No.Trim() == transactionMainModel.Transac_No.Trim()).ProjectTo<TransferLocationDetail_Dto>(_configMapper).OrderBy(x => x.Tool_Size).ToListAsync(); // Lấy ra những thuộc tính cần in QRCodePrint_Dto result = new QRCodePrint_Dto(); result.TransactionDetailByQrCodeId = transactionDetailModel; result.PackingListByQrCodeId = packingListModel; result.RackLocation = transactionMainModel.Rack_Location; return result; }
public async Task <MissingPrint_Dto> GetMaterialPrint(string missingNo) { var materialMissingModel = await _repoMaterialMissing.FindAll(x => x.Missing_No.Trim() == missingNo.Trim()).ProjectTo <Material_Dto>(_configMapper).FirstOrDefaultAsync(); var transactionMainModel = _repoTransactionMain.FindSingle(x => x.Missing_No.Trim() == missingNo.Trim() && x.Transac_Type.Trim() == "I"); var transactionDetailByMissingNo = await _repoTransactionDetail.FindAll(x => x.Transac_No.Trim() == transactionMainModel.Transac_No.Trim()).ProjectTo <TransferLocationDetail_Dto>(_configMapper).OrderBy(x => x.Tool_Size).ToListAsync(); var materialPurchaseModel = await _repoMaterialView.FindAll().Where(x => x.Plan_No.Trim() == materialMissingModel.MO_No.Trim() && x.Purchase_No.Trim() == materialMissingModel.Purchase_No.Trim() && x.Mat_.Trim() == materialMissingModel.Material_ID.Trim()).FirstOrDefaultAsync(); materialMissingModel.Custmoer_Name = materialPurchaseModel.Custmoer_Name; // Lấy ra những thuộc tính cần in MissingPrint_Dto result = new MissingPrint_Dto(); result.MaterialMissing = materialMissingModel; result.TransactionDetailByMissingNo = transactionDetailByMissingNo; return(result); }
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); }