Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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;
        }
Example #5
0
        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);
        }
Example #6
0
        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);
        }
Example #7
0
        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);
        }