Esempio n. 1
0
        public async Task <bool> Add(Packing_List_Dto model)
        {
            var data = _mapper.Map <WMSB_Packing_List>(model);

            _repoPackingList.Add(data);
            return(await _repoPackingList.SaveAll());
        }
Esempio n. 2
0
        public async Task<bool> AddListQRCode(List<string> listReceiveNo)
        {
            var checkCreate = true;
            Random ran = new Random();
            foreach (var item in listReceiveNo)
            {
                // Tạo QrCodeMain để thêm vào database
                var qrCodeDto = new QRCode_Main_Dto();
                var packing = await _repoPacking.GetAll().Where(x => x.Receive_No.Trim() == item.Trim()).FirstOrDefaultAsync();
                packing.Generated_QRCode = "Y";
                int so = ran.Next(100,999);
                string qrCodeId = "B" + packing.MO_No.Trim() + so.ToString();
                qrCodeDto.QRCode_ID = qrCodeId;
                qrCodeDto.Receive_No = packing.Receive_No.Trim();
                qrCodeDto.QRCode_Version = 1;
                qrCodeDto.Valid_Status = "Y";
                qrCodeDto.Is_Scanned = "N";
                qrCodeDto.QRCode_Type = packing.Sheet_Type.Trim();
                await _repoPacking.SaveAll();
                var qrCodeMain = _mapper.Map<WMSB_QRCode_Main>(qrCodeDto);
                _repoQrcode.Add(qrCodeMain);

                // Tạo QrCodeDetail để thêm vào database
                var listPackingDetail = await _repoPackingDetail.GetAll().Where(x => x.Receive_No.Trim() == item.Trim()).ToListAsync();
                foreach (var packingItem in listPackingDetail)
                    {
                        var qrCodeDetailDto = new QRCode_Detail_Dto();
                        qrCodeDetailDto.QRCode_ID = qrCodeId;
                        qrCodeDetailDto.QRCode_Version = 1;
                        qrCodeDetailDto.Order_Size = packingItem.Order_Size;
                        qrCodeDetailDto.Model_Size = packingItem.Model_Size;
                        qrCodeDetailDto.Tool_Size = packingItem.Tool_Size;
                        qrCodeDetailDto.Spec_Size = packingItem.Spec_Size;
                        qrCodeDetailDto.Qty = packingItem.Received_Qty;
                        qrCodeDetailDto.Updated_By = "Emma";
                        var qrCodeDetail = _mapper.Map<WMSB_QRCode_Detail>(qrCodeDetailDto);
                        _repoQrCodeDetail.Add(qrCodeDetail);
                        if (!await _repoQrCodeDetail.SaveAll()) {
                            checkCreate = false;
                            break;
                        }
                    }
            }
            await _repoQrcode.SaveAll();
            return checkCreate;
        }
Esempio n. 3
0
        public async Task <bool> AddListQRCode(List <string> listReceiveNo, string updateBy)
        {
            listReceiveNo = listReceiveNo.Select(x => x.Trim()).ToList();
            var packingLists = await _repoPacking.FindAll(x => listReceiveNo.Contains(x.Receive_No.Trim())).ToListAsync();

            var checkCreate = true;

            foreach (var item in listReceiveNo)
            {
                // Tạo QrCodeMain để thêm vào database
                var qrCodeDto = new QRCode_Main_Dto();
                var packing   = packingLists.Where(x => x.Receive_No.Trim() == item).FirstOrDefault();
                // Nếu Generated_QrCode khác Y thì mới Tạo QrCode
                if (packing.Generated_QRCode != "Y")
                {
                    packing.Generated_QRCode = "Y";
                    string qrCodeId = "";
                    if (packing.Sheet_Type.Trim() == "R" || packing.Sheet_Type.Trim() == "M")
                    {
                        do
                        {
                            var    po = packing.MO_No.Trim().Length == 9 ? packing.MO_No.Trim() + "Z" : packing.MO_No.Trim();
                            string so = CodeUtility.RandomNumber(3);
                            qrCodeId = "A" + po + so + CodeUtility.RandomStringUpper(1);
                        } while (await this.CheckQrCodeID(qrCodeId));
                    }
                    else if (packing.Sheet_Type.Trim() == "B")
                    {
                        do
                        {
                            var    po = packing.MO_No.Trim().Length == 9 ? packing.MO_No.Trim() + "Z" : packing.MO_No.Trim();
                            string so = CodeUtility.RandomNumber(3);
                            qrCodeId = "B" + po + so + CodeUtility.RandomStringUpper(1);
                        } while (await this.CheckQrCodeID(qrCodeId));
                    }
                    qrCodeDto.QRCode_ID      = qrCodeId;
                    qrCodeDto.Receive_No     = packing.Receive_No.Trim();
                    qrCodeDto.QRCode_Version = 1;
                    qrCodeDto.Valid_Status   = "Y";
                    qrCodeDto.Is_Scanned     = "N";
                    qrCodeDto.QRCode_Type    = packing.Sheet_Type.Trim();
                    qrCodeDto.Updated_By     = updateBy;
                    await _repoPacking.SaveAll();

                    var qrCodeMain = _mapper.Map <WMSB_QRCode_Main>(qrCodeDto);
                    _repoQrcode.Add(qrCodeMain);

                    // Tạo QrCodeDetail để thêm vào database
                    var listPackingDetail = await _repoPackingDetail.FindAll(x => x.Receive_No.Trim() == item).ToListAsync();

                    foreach (var packingItem in listPackingDetail)
                    {
                        var qrCodeDetailDto = new QRCode_Detail_Dto();
                        qrCodeDetailDto.QRCode_ID      = qrCodeId;
                        qrCodeDetailDto.QRCode_Version = 1;
                        qrCodeDetailDto.Order_Size     = packingItem.Order_Size;
                        qrCodeDetailDto.Model_Size     = packingItem.Model_Size;
                        qrCodeDetailDto.Tool_Size      = packingItem.Tool_Size;
                        qrCodeDetailDto.Spec_Size      = packingItem.Spec_Size;
                        qrCodeDetailDto.Qty            = packingItem.Received_Qty;
                        qrCodeDetailDto.Updated_By     = updateBy;
                        var qrCodeDetail = _mapper.Map <WMSB_QRCode_Detail>(qrCodeDetailDto);
                        _repoQrCodeDetail.Add(qrCodeDetail);
                        if (!await _repoQrCodeDetail.SaveAll())
                        {
                            checkCreate = false;
                            break;
                        }
                    }
                }
            }
            await _repoQrcode.SaveAll();

            return(checkCreate);
        }
Esempio n. 4
0
        public async Task <bool> EditDetail(List <MaterialEditModel> data)
        {
            // Update Receive_Date trong bảng PackingList.
            var packingListFind = await _repoPackingList.GetAll()
                                  .Where(x => x.Receive_No.Trim() == data[0].Receive_No.Trim()).FirstOrDefaultAsync();

            packingListFind.Receive_Date = DateTime.Now;
            await _repoPackingList.SaveAll();

            var editResult        = false;
            var receive_No        = data[0].Receive_No;
            var missing_No        = data[0].Missing_No;
            var packinglistDetail = _repoPackingListDetail.GetAll().Where(x => x.Receive_No.Trim() == receive_No.Trim());

            foreach (var item in packinglistDetail)
            {
                foreach (var item1 in data)
                {
                    if (item1.Order_Size.Trim() == item.Order_Size.Trim())
                    {
                        item.Received_Qty = item.Received_Qty + item1.Received_Qty_Edit;
                    }
                }
            }
            var SavePackingListDetail = await _repoPackingListDetail.SaveAll();

            var saveMaterial = false;

            // Áp dụng cho bảng Material_Purchase
            if (missing_No == "")
            {
                var materialPurchaseList = _repoPurchase.GetAll()
                                           .Where(x => x.Purchase_No.Trim() == data[0].Purchase_No.Trim() &&
                                                  x.MO_Seq.Trim() == data[0].MO_Seq_Edit.Trim());
                foreach (var item2 in data)
                {
                    foreach (var item4 in materialPurchaseList)
                    {
                        if (item4.Order_Size.Trim() == item2.Order_Size.Trim())
                        {
                            // Số lượng mới = số lượng hiện tại trừ đi số lượng đã nhận trước và + cho số lượng nhận mới.
                            item4.Accumlated_In_Qty = item4.Accumlated_In_Qty + item2.Received_Qty_Edit;
                        }
                    }
                }
                await _repoPurchase.SaveAll();

                //------------------------- Update giá trị Status--------------------------------------------//
                await this.UpdateStatusMaterial(data[0].Purchase_No, data[0].MO_Seq_Edit, missing_No);

                saveMaterial = await _repoPurchase.SaveAll();
            }
            // Áp dụng cho bảng Material_Missing
            else
            {
                var materialPurchaseList = _repoMissing.GetAll()
                                           .Where(x => x.Purchase_No.Trim() == data[0].Purchase_No.Trim() &&
                                                  x.MO_Seq.Trim() == data[0].MO_Seq_Edit.Trim());
                foreach (var item2 in data)
                {
                    foreach (var item4 in materialPurchaseList)
                    {
                        if (item4.Order_Size.Trim() == item2.Order_Size.Trim())
                        {
                            // Số lượng mới = số lượng hiện tại trừ đi số lượng đã nhận trước và + cho số lượng nhận mới.
                            item4.Accumlated_In_Qty = item4.Accumlated_In_Qty + item2.Received_Qty_Edit;
                        }
                    }
                }
                await _repoMissing.SaveAll();

                await this.UpdateStatusMaterial(data[0].Purchase_No, data[0].MO_Seq_Edit, missing_No);

                saveMaterial = await _repoMissing.SaveAll();
            }
            if (SavePackingListDetail == true && saveMaterial == true)
            {
                editResult = true;
            }
            return(editResult);
        }
Esempio n. 5
0
        public async Task <List <ReceiveNoMain> > UpdateMaterial(List <OrderSizeByBatch> data, string updateBy)
        {
            foreach (var item in data)
            {
                item.Purchase_Qty = item.Purchase_Qty.Where(x => x.Tool_Size != null).ToList();
            }
            var Purchase_No = data[0].Purchase_No.Trim();
            var MO_No       = data[0].MO_No.Trim();

            // ------------------------------------------------------------------------------------------------------//
            if (data[0].Missing_No == "")
            {
                // --------Update lại Accumlated_In_Qty theo Purchase_No,Order_Size và Mo_Seq ở bảng Material_Purchase----//
                var purchaseMaterialAll = await _repoPurchase.FindAll(x => x.Biz_Tflag.Trim() != "D" &&
                                                                      (x.MO_Qty != 0 || x.Purchase_Qty != 0) &&
                                                                      x.Purchase_No.Trim() == Purchase_No.Trim()).ToListAsync();

                foreach (var item in data)
                {
                    foreach (var item1 in item.Purchase_Qty)
                    {
                        var materialItem = purchaseMaterialAll
                                           .Where(x => x.MO_No.Trim() == MO_No &&
                                                  x.Order_Size == item1.Order_Size &&
                                                  x.MO_Seq == item.MO_Seq).FirstOrDefault();
                        // materialItem.Accumlated_In_Qty = item1.Accumlated_In_Qty;
                        // Số lượng bằng số lượng nhận hiện tại + số lượng vừa mới nhận vào.
                        materialItem.Accumlated_In_Qty = materialItem.Accumlated_In_Qty + item1.Received_Qty;
                    }
                }

                //------------------------- Update giá trị Status--------------------------------------------//
                foreach (var item in data)
                {
                    await this.UpdateStatusMaterialSubmit(item.Purchase_No, item.MO_No, item.MO_Seq, item.Missing_No);
                }
            }
            else
            {
                // Update lại Accumlated_In_Qty theo Purchase_No,Order_Size và Mo_Seq ở bảng Material_Missing
                var MaterialMissingAll = await _repoMissing.FindAll(x => x.Purchase_No.Trim() == Purchase_No.Trim()).ToListAsync();

                foreach (var item in data)
                {
                    foreach (var item1 in item.Purchase_Qty)
                    {
                        var materialItem = MaterialMissingAll
                                           .Where(x => x.MO_No.Trim() == MO_No &&
                                                  x.Order_Size == item1.Order_Size &&
                                                  x.MO_Seq == item.MO_Seq).FirstOrDefault();
                        materialItem.Accumlated_In_Qty = item1.Accumlated_In_Qty;
                    }
                }

                // Update lại Status
                foreach (var item in data)
                {
                    await this.UpdateStatusMaterialSubmit(item.Purchase_No, item.MO_No, item.MO_Seq, item.Missing_No);
                }
            }

            //------------------------Thêm vào 2 bảng Packing_List và Packing_List_Detail------------------//
            var ReceiveNoMain = new List <ReceiveNoMain>();

            foreach (var item in data)
            {
                // Check xem có tiến hành thêm hay ko
                var checkAdd = false;
                foreach (var item1 in item.Purchase_Qty)
                {
                    // Kiểm tra nếu tồn tại Received_Qty lớn hơn 0
                    //,có nghĩa là tồn tại 1 Order_Size trong batch đó có nhận hàng
                    if (item1.Received_Qty > 0)
                    {
                        checkAdd = true;
                        break;
                    }
                }
                // Tiến hành thêm vào bảng Packing_List và Packing_List_Detail
                if (checkAdd == true)
                {
                    var packing_List = new Packing_List_Dto();
                    if (item.Missing_No == string.Empty)
                    {
                        packing_List.Sheet_Type = "R";
                    }
                    else
                    {
                        packing_List.Sheet_Type = "M";
                    }
                    packing_List.Missing_No       = item.Missing_No;
                    packing_List.Supplier_ID      = item.Supplier_ID;
                    packing_List.Supplier_Name    = item.Supplier_Name;
                    packing_List.MO_No            = item.MO_No;
                    packing_List.Purchase_No      = item.Purchase_No;
                    packing_List.MO_Seq           = item.MO_Seq;
                    packing_List.Delivery_No      = item.Delivery_No;
                    packing_List.Material_ID      = item.Material_ID;
                    packing_List.Material_Name    = item.Material_Name;
                    packing_List.Model_No         = item.Model_No;
                    packing_List.Model_Name       = item.Model_Name;
                    packing_List.Article          = item.Article;
                    packing_List.Subcon_ID        = item.Subcon_No;
                    packing_List.Subcon_Name      = item.Subcon_Name;
                    packing_List.T3_Supplier      = item.T3_Supplier;
                    packing_List.T3_Supplier_Name = item.T3_Supplier_Name;
                    packing_List.Generated_QRCode = "N";
                    packing_List.Receive_Date     = DateTime.Now;
                    packing_List.Updated_By       = updateBy;
                    packing_List.Receive_No       = CodeUtility.RandomReceiveNo("RW", 2);

                    var packing_ListAdd = _mapper.Map <WMSB_Packing_List>(packing_List);
                    _repoPackingList.AddModel(packing_ListAdd);

                    foreach (var item2 in item.Purchase_Qty)
                    {
                        var packing_List_detail = new Packing_List_Detail_Dto();
                        packing_List_detail.Receive_No   = packing_List.Receive_No;
                        packing_List_detail.Order_Size   = item2.Order_Size;
                        packing_List_detail.Model_Size   = item2.Model_Size;
                        packing_List_detail.Tool_Size    = item2.Tool_Size;
                        packing_List_detail.Spec_Size    = item2.Spec_Size;
                        packing_List_detail.MO_Qty       = item2.MO_Qty;
                        packing_List_detail.Purchase_Qty = item2.Purchase_Qty_Const;
                        packing_List_detail.Received_Qty = item2.Received_Qty;
                        packing_List_detail.Updated_Time = DateTime.Now;
                        packing_List_detail.Updated_By   = updateBy;
                        var packingDetailAdd = _mapper.Map <WMSB_PackingList_Detail>(packing_List_detail);
                        _repoPackingListDetail.AddModel(packingDetailAdd);
                    }
                }
            }
            await _repoPackingList.SaveAll();

            return(ReceiveNoMain);
        }