コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: InputService.cs プロジェクト: HuynhEmCuong/Bottom
        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);
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        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);
        }
コード例 #5
0
ファイル: OutputService.cs プロジェクト: HuynhEmCuong/Bottom
        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);
        }
コード例 #6
0
ファイル: OutputService.cs プロジェクト: SD-Team/WH_Bottom
        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);
        }