Ejemplo n.º 1
0
        public async Task <List <string> > GetLine()
        {
            var listMaterialPurchase = await _materialPurchaseRepository.FindAll()
                                       .Select(x => new { x.Factory_ID, x.MO_No }).Distinct().ToListAsync();

            var listMesMo = await _mesMoRepository.FindAll()
                            .Select(x => new { x.Factory_ID, x.MO_No, x.Line_ID_ASY }).Distinct().ToListAsync();

            var data = listMaterialPurchase.Join(listMesMo, x => new { x.Factory_ID, x.MO_No }, y => new { y.Factory_ID, y.MO_No },
                                                 (x, y) => y.Line_ID_ASY)
                       .Distinct().OrderBy(z => z).ToList();

            return(data);
        }
Ejemplo n.º 2
0
        public async Task <List <SupplierModel> > SupplierList()
        {
            var listMaterialPurchase = await _repoMaterialPurchase.FindAll(x => x.Supplier_ID.Trim() != "")
                                       .Select(x => new
            {
                Supplier_ID = x.Supplier_ID
            }).Distinct()
                                       .ToListAsync();

            var listHPVendor = await _repoHPVendor.FindAll(x => x.Vendor_No.Trim() != "")
                               .Select(x => new
            {
                Vendor_No   = x.Vendor_No,
                Vendor_Name = x.Vendor_Name
            }).Distinct()
                               .ToListAsync();

            var data = (from T1 in listMaterialPurchase
                        join T2 in listHPVendor
                        on T1.Supplier_ID.Trim() equals T2.Vendor_No.Trim()
                        select new SupplierModel
            {
                Supplier_No = T1.Supplier_ID.Trim(),
                Supplier_Name = T2.Vendor_Name.Trim()
            }).Distinct()
                       .OrderBy(x => x.Supplier_No)
                       .ToList();

            return(data);
        }
Ejemplo n.º 3
0
        public async Task <PagedList <ReceivingMaterialMainModel> > SearchByModel(PaginationParams param, FilterReceivingMateParam filterParam)
        {
            var pred_Material_Purchase    = PredicateBuilder.New <WMSB_Material_Purchase>(true);
            var pred_VM_Material_Purchase = PredicateBuilder.New <VM_WMSB_Material_Purchase>(true);

            // Ở kho có Type = 2
            pred_Material_Purchase.And(x => x.Type.Trim() == "2" && x.Biz_Tflag != "D");
            if (filterParam.From_Date != null && filterParam.To_Date != null)
            {
                pred_Material_Purchase.And(x => x.Confirm_Delivery >= Convert.ToDateTime(filterParam.From_Date + " 00:00:00.000"));
                pred_Material_Purchase.And(x => x.Confirm_Delivery <= Convert.ToDateTime(filterParam.To_Date + " 23:59:59.997"));
            }
            if (!String.IsNullOrEmpty(filterParam.MO_No))
            {
                pred_Material_Purchase.And(x => x.MO_No.Trim() == filterParam.MO_No.Trim());
                pred_VM_Material_Purchase.And(x => x.Plan_No.Trim() == filterParam.MO_No.Trim());
            }
            if (!String.IsNullOrEmpty(filterParam.Purchase_No))
            {
                pred_Material_Purchase.And(x => x.Purchase_No.Trim() == filterParam.Purchase_No.Trim());
            }
            if (filterParam.Status != "all")
            {
                pred_Material_Purchase.And(x => x.Status.Trim() == filterParam.Status.Trim());
            }

            var materialPurchases = await _repoPurchase.FindAll(pred_Material_Purchase).ToListAsync();

            var materialPurchaseList = materialPurchases
                                       .Select(x => new PurchaseConvert()
            {
                Purchase_No = x.Purchase_No.Trim(), Status = x.Status, MO_No = x.MO_No, Material_ID = x.Material_ID
            }).GroupBy(x => new { x.Purchase_No, x.Status, x.MO_No, x.Material_ID }).Select(x => x.FirstOrDefault()).ToList();

            var purchaseContainQty = materialPurchases.Select(x => new {
                Purchase_No = x.Purchase_No.Trim(), MO_No = x.MO_No.Trim(), Purchase_Qty = x.Purchase_Qty, Material_ID = x.Material_ID.Trim()
            }).GroupBy(x => new { x.Purchase_No, x.MO_No, x.Material_ID }).Select(x => new {
                Purchase_No = x.FirstOrDefault().Purchase_No,
                MO_No       = x.FirstOrDefault().MO_No,
                Material_ID = x.FirstOrDefault().Material_ID,
                Qty         = x.Sum(cl => cl.Purchase_Qty)
            }).ToList();

            // Distinct lại mảng.Do ko xài Distinct ở trong câu lệnh 1 list Object được.
            var listData = materialPurchaseList.GroupBy(x => new { x.Purchase_No, x.MO_No, x.Material_ID }).Select(y => y.First());
            // ---------------------------------------------------------------------------------------------------------

            var listData_Purchase_No = listData.Select(x => x.Purchase_No.Trim()).Distinct().ToList();

            pred_VM_Material_Purchase.And(x => listData_Purchase_No.Contains(x.Purchase_No));

            var listMaterialView = await _repoMaterialView.FindAll(pred_VM_Material_Purchase)
                                   .Select(x => new { x.Mat_, x.Mat__Name, x.Plan_No, x.Model_No, x.Model_Name, x.Article, x.Purchase_No,
                                                      x.Supplier_No, x.Supplier_Name, x.Subcon_No, x.Subcon_Name, x.T3_Supplier, x.T3_Supplier_Name }).Distinct().ToListAsync();

            listMaterialView = listMaterialView.Distinct().ToList();
            var result = (from a in listData
                          join c in purchaseContainQty
                          on new { Purchase_No = a.Purchase_No.Trim(), MO_No = a.MO_No.Trim(), MaterialID = a.Material_ID.Trim() }
                          equals new { Purchase_No = c.Purchase_No.Trim(), MO_No = c.MO_No.Trim(), MaterialID = c.Material_ID.Trim() }
                          join b in listMaterialView
                          on new { Purchase_No = a.Purchase_No.Trim(), MO_No = a.MO_No.Trim(), MaterialID = a.Material_ID.Trim() }
                          equals new { Purchase_No = b.Purchase_No, MO_No = b.Plan_No.Trim(), MaterialID = b.Mat_.Trim() }
                          select new ReceivingMaterialMainModel {
                Status = a.Status,
                Material_ID = b.Mat_,
                Material_Name = b.Mat__Name,
                MO_No = b.Plan_No,
                Purchase_No = a.Purchase_No,
                Model_No = b.Model_No,
                Model_Name = b.Model_Name,
                Article = b.Article,
                Supplier_ID = b.Supplier_No,
                Supplier_Name = b.Supplier_Name,
                Subcon_No = b.Subcon_No,
                Subcon_Name = b.Subcon_Name,
                T3_Supplier = b.T3_Supplier,
                T3_Supplier_Name = b.T3_Supplier_Name,
                Qty = c.Qty
            }).ToList();

            result = result.OrderBy(x => x.Status).ThenBy(x => x.MO_No).ThenBy(x => x.Purchase_No).ToList();
            return(PagedList <ReceivingMaterialMainModel> .Create(result, param.PageNumber, param.PageSize, false));
        }
Ejemplo n.º 4
0
        public async Task <PagedList <MaterialMainViewModel> > SearchByModel(PaginationParams param, FilterMaterialParam filterParam)
        {
            var listMaterialView = await _repoMaterialView.FindAll().ToListAsync();

            var materialPurchaseList = await _repoPurchase.FindAll().
                                       Select(x => new {
                Purchase_No      = x.Purchase_No,
                Status           = x.Status,
                Missing_No       = "",
                Confirm_Delivery = x.Confirm_Delivery
            }).Distinct().ToListAsync();

            var materialMissingList = await _repoMissing.GetAll()
                                      .Select(x => new {
                Purchase_No      = x.Purchase_No,
                Status           = x.Status,
                Missing_No       = x.Missing_No,
                Confirm_Delivery = x.Confirm_Delivery
            }).Distinct().ToListAsync();

            foreach (var item in materialMissingList)
            {
                materialPurchaseList.Add(item);
            }
            // Nếu purchase đó có 1 batch là N thì status show ra sẽ là N. Còn Y hết thì hiển thị Y
            // Tạo ra 1 mảng đối tượng mới
            var materialPurchaseListConvert = new List <PurchaseConvert>();

            foreach (var item in materialPurchaseList)
            {
                var item1 = new PurchaseConvert {
                    Purchase_No      = item.Purchase_No,
                    Status           = item.Status,
                    Missing_No       = item.Missing_No,
                    Confirm_Delivery = item.Confirm_Delivery
                };
                materialPurchaseListConvert.Add(item1);
            }
            foreach (var item in materialPurchaseListConvert)
            {
                if (item.Status.Trim() == "N")
                {
                    foreach (var item1 in materialPurchaseListConvert)
                    {
                        if (item1.Purchase_No.Trim() == item.Purchase_No.Trim() && item1.Missing_No == item.Missing_No)
                        {
                            item1.Status = "N";
                        }
                    }
                }
            }
            // Distinct lại mảng.Do ko xài Distinct ở trong câu lệnh 1 list Object được.
            var listData = materialPurchaseListConvert.GroupBy(x => new{ x.Purchase_No, x.Missing_No }).Select(y => y.First());
            // --------------------------------------------------------------------------
            var listMaterial = (from a in listData join b in listMaterialView
                                on a.Purchase_No.Trim() equals b.Purchase_No.Trim()
                                select new MaterialMainViewModel {
                Status = a.Status,
                Material_ID = b.Mat_,
                Material_Name = b.Mat__Name,
                Missing_No = a.Missing_No == null? "" : a.Missing_No,
                MO_No = b.Plan_No,
                Confirm_Delivery = a.Confirm_Delivery,
                Purchase_No = a.Purchase_No,
                Model_No = b.Model_No,
                Model_Name = b.Model_Name,
                Article = b.Article,
                Custmoer_Name = b.Custmoer_Name,
                Supplier_ID = b.Supplier_No,
                Supplier_Name = b.Supplier_Name,
                Subcon_No = b.Subcon_No,
                Subcon_Name = b.Subcon_Name,
                T3_Supplier = b.T3_Supplier,
                T3_Supplier_Name = b.T3_Supplier_Name
            }).ToList();

            if (filterParam.From_Date != null && filterParam.To_Date != null)
            {
                listMaterial = listMaterial.Where(x => x.Confirm_Delivery >= Convert.ToDateTime(filterParam.From_Date + " 00:00:00.000") &&
                                                  x.Confirm_Delivery <= Convert.ToDateTime(filterParam.To_Date + " 23:59:59.997")).ToList();
            }
            if (filterParam.MO_No != null && filterParam.MO_No != string.Empty)
            {
                listMaterial = listMaterial.Where(x => x.MO_No.Trim() == filterParam.MO_No.Trim()).ToList();
            }
            if (filterParam.Supplier_ID != null && filterParam.Supplier_ID != string.Empty)
            {
                listMaterial = listMaterial.Where(x => x.Supplier_ID.Trim() == filterParam.Supplier_ID.Trim()).ToList();
            }
            if (filterParam.Status != "all")
            {
                listMaterial = listMaterial.Where(x => x.Status.Trim() == filterParam.Status.Trim()).ToList();
            }
            return(PagedList <MaterialMainViewModel> .Create(listMaterial, param.PageNumber, param.PageSize));
        }
Ejemplo n.º 5
0
        public async Task <object> MaterialMerging(MaterialMainViewModel model)
        {
            var listMaterial = new List <Material_Dto>();

            if (model.Missing_No != "")
            {
                listMaterial = await _repoMissing.FindAll(x => x.Purchase_No.Trim() == model.Purchase_No.Trim() &&
                                                          x.Missing_No.Trim() == model.Missing_No.Trim() &&
                                                          x.MO_No.Trim() == model.MO_No.Trim())
                               .ProjectTo <Material_Dto>(_configMapper)
                               .ToListAsync();
            }
            else
            {
                listMaterial = await _repoPurchase.FindAll(x => x.Purchase_No.Trim() == model.Purchase_No.Trim() &&
                                                           x.MO_No.Trim() == model.MO_No.Trim() &&
                                                           x.Biz_Tflag.Trim() != "D" &&
                                                           (x.MO_Qty != 0 || x.Purchase_Qty != 0)
                                                           )

                               .ProjectTo <Material_Dto>(_configMapper)
                               .ToListAsync();
            }
            listMaterial.OrderByDescending(x => x.MO_Seq);
            var OrderSizeGroup = listMaterial.GroupBy(x => x.Order_Size).Select(x => x.Key);

            OrderSizeGroup = OrderSizeGroup.OrderBy(x => decimal.Parse(x)).ToList();
            var listBatch = listMaterial.GroupBy(x => x.MO_Seq).Select(y => new
            {
                MO_Seq = y.First().MO_Seq
            }).ToList();
            var list3 = new List <OrderSizeByBatch>();

            foreach (var item in listBatch)
            {
                var item1 = new OrderSizeByBatch();
                item1.MO_Seq           = item.MO_Seq;
                item1.Purchase_No      = model.Purchase_No;
                item1.Missing_No       = model.Missing_No;
                item1.Material_ID      = model.Material_ID;
                item1.Material_Name    = model.Material_Name;
                item1.Model_No         = model.Model_No;
                item1.Model_Name       = model.Model_Name;
                item1.MO_No            = model.MO_No;
                item1.Article          = model.Article;
                item1.Supplier_ID      = model.Supplier_ID;
                item1.Supplier_Name    = model.Supplier_Name;
                item1.Subcon_No        = model.Subcon_No;
                item1.Subcon_Name      = model.Subcon_Name;
                item1.T3_Supplier      = model.T3_Supplier;
                item1.T3_Supplier_Name = model.T3_Supplier_Name;

                // ---- Start Check xem Batch này đã insert đủ hết chưa.-----
                item1.CheckInsert = "1";
                foreach (var item4 in listMaterial)
                {
                    if (item4.MO_Seq == item.MO_Seq)
                    {
                        if (item4.Accumlated_In_Qty != item4.Purchase_Qty)
                        {
                            item1.CheckInsert = "0";
                            break;
                        }
                    }
                }
                // -----------------------------End------------------------

                var item3 = new List <OrderSizeAccumlate>();
                foreach (var orderSize in OrderSizeGroup)
                {
                    var materialByBathOrderSize = listMaterial
                                                  .Where(x => x.Order_Size.Trim() == orderSize.Trim() &&
                                                         x.MO_Seq == item.MO_Seq);
                    if (materialByBathOrderSize.Count() > 0)
                    {
                        foreach (var item2 in materialByBathOrderSize)
                        {
                            var item4 = new OrderSizeAccumlate();
                            item4.Order_Size         = item2.Order_Size;
                            item4.Model_Size         = item2.Model_Size;
                            item4.Tool_Size          = item2.Tool_Size;
                            item4.Spec_Size          = item2.Spec_Size;
                            item4.Purchase_Qty_Const = item2.Purchase_Qty;
                            item4.MO_Qty             = item2.MO_Qty;
                            item4.Purchase_Qty       = item2.Purchase_Qty - item2.Accumlated_In_Qty;
                            item4.Accumlated_In_Qty  = item2.Accumlated_In_Qty;
                            item4.Received_Qty       = 0;
                            item3.Add(item4);
                            item1.Purchase_Qty = item3;
                        }
                    }
                    else
                    {
                        var item4 = new OrderSizeAccumlate();
                        item4.Order_Size = orderSize;
                        item3.Add(item4);
                    }
                }
                list3.Add(item1);
            }


            // -------------------------------------------------------------------------------------------//
            var list1 = listMaterial.GroupBy(l => l.Order_Size)
                        .Select(cl => new
            {
                Tool_Size            = cl.First().Tool_Size,
                Order_Size           = cl.First().Order_Size,
                Accumlated_In_Qty    = cl.Sum(c => c.Accumlated_In_Qty),
                Delivery_Qty_Batches = cl.Sum(x => x.Accumlated_In_Qty),
                Purchase_Qty         = cl.Sum(c => c.Purchase_Qty),
                Delivery_Qty         = cl.Sum(c => c.Purchase_Qty) - cl.Sum(c => c.Accumlated_In_Qty)
            }).ToList();
            var list2 = listMaterial.GroupBy(x => new { x.Order_Size, x.Purchase_Qty, x.MO_Seq })
                        .Select(y => new
            {
                Order_Size   = y.First().Order_Size,
                Purchase_Qty = y.First().Purchase_Qty,
                MO_Seq       = y.First().MO_Seq,
            });
            var list4 = new List <MaterialMergingViewMode>();

            foreach (var orderSize in OrderSizeGroup)
            {
                var list5 = list1.Where(x => x.Order_Size.Trim() == orderSize.Trim());
                foreach (var item in list5)
                {
                    var arrayItem = new MaterialMergingViewMode();
                    arrayItem.Tool_Size            = item.Tool_Size;
                    arrayItem.Order_Size           = item.Order_Size;
                    arrayItem.Purchase_Qty         = item.Purchase_Qty;
                    arrayItem.Accumlated_In_Qty    = item.Accumlated_In_Qty;
                    arrayItem.Delivery_Qty         = item.Delivery_Qty;
                    arrayItem.Delivery_Qty_Batches = item.Delivery_Qty_Batches;
                    var array1 = new List <BatchQtyItem>();
                    foreach (var item1 in list2)
                    {
                        if (item1.Order_Size.Trim() == item.Order_Size.Trim())
                        {
                            var item2 = new BatchQtyItem();
                            item2.MO_Seq       = item1.MO_Seq;
                            item2.Purchase_Qty = item1.Purchase_Qty;
                            array1.Add(item2);
                            arrayItem.Purchase_Qty_Item = array1;
                        }
                    }
                    list4.Add(arrayItem);
                }
            }

            var totalByBatch = new List <TotalQtyOfBatch>();

            foreach (var item in list3)
            {
                var totalQty     = item.Purchase_Qty.Sum(x => x.Purchase_Qty);
                var itemTotalQty = new TotalQtyOfBatch();
                itemTotalQty.Total  = totalQty;
                itemTotalQty.MO_Seq = item.MO_Seq;
                totalByBatch.Add(itemTotalQty);
            }

            var listTotalQty = new TotalQty();

            listTotalQty.TotalPurchaseQty   = list4.Sum(x => x.Purchase_Qty);
            listTotalQty.TotalAccumated_Qty = list4.Sum(x => x.Accumlated_In_Qty);
            listTotalQty.TotalDeliveryQty   = list4.Sum(x => x.Delivery_Qty);
            // --------------------------------------End----------------------------------------//
            var result = new
            {
                list3,
                list4,
                totalByBatch,
                listTotalQty
            };

            return(result);
        }