예제 #1
0
        private async Task <(IEnumerable <SaleFileDataError> errorList, IEnumerable <SaleFileData> dataList)> ValidateSaleTab(SaleFile saleFile, ExcelWorksheet saleTab)
        {
            var ListSaleFileDataError = new List <SaleFileDataError>();
            var ListSaleFileData      = new List <SaleFileData>();


            for (var row = 2; row <= saleTab.Dimension.End.Row; row++)
            {
                if (saleTab.Cells[row, 1].Value != null &&
                    saleTab.Cells[row, 2].Value != null &&
                    saleTab.Cells[row, 3].Value != null &&
                    saleTab.Cells[row, 4].Value != null &&
                    saleTab.Cells[row, 5].Value != null &&
                    saleTab.Cells[row, 7].Value != null &&
                    saleTab.Cells[row, 8].Value != null &&
                    saleTab.Cells[row, 9].Value != null &&
                    saleTab.Cells[row, 10].Value != null &&
                    saleTab.Cells[row, 11].Value != null)
                {
                    var saleFileData = new SaleFileData
                    {
                        ShopCode           = (saleTab.Cells[row, 2].Value != null) ? saleTab.Cells[row, 2].Value.ToString().Replace(".0", "") : String.Empty,
                        Cnpj               = (saleTab.Cells[row, 3].Value != null) ? saleTab.Cells[row, 3].Value.ToString().PadLeft(14, '0').Replace("-", "").Replace("/", "").Replace(".", "").Replace(".0", "") : String.Empty,
                        CpfSalesman        = (saleTab.Cells[row, 4].Value != null) ? saleTab.Cells[row, 4].Value.ToString().PadLeft(11, '0').Replace("-", "").Replace(".", "").Replace(".0", "").Trim() : String.Empty,
                        RequestNumber      = (saleTab.Cells[row, 10].Value != null) ? saleTab.Cells[row, 10].Value.ToString().Replace(".0", "") : String.Empty,
                        SaleDate           = (saleTab.Cells[row, 9].Value != null) && Validation.CheckValidDateFromBr(saleTab.Cells[row, 9].Value.ToString()) ? new DateTime(int.Parse(saleTab.Cells[row, 9].Value.ToString().Split('/')[2]), int.Parse(saleTab.Cells[row, 9].Value.ToString().Split('/')[1]), int.Parse(saleTab.Cells[row, 9].Value.ToString().Split('/')[0])) : DateTime.MinValue,
                        ProductDescription = (saleTab.Cells[row, 7].Value != null) ? saleTab.Cells[row, 7].Value.ToString().Replace("'", "").Substring(0, saleTab.Cells[row, 7].Value.ToString().Length - 1) : String.Empty,
                        Amount             = (saleTab.Cells[row, 8].Value != null) ? Convert.ToInt16(saleTab.Cells[row, 8].Value.ToString().Replace(".0", "")) : 0,
                        Category           = (saleTab.Cells[row, 6].Value != null) ? saleTab.Cells[row, 6].Value.ToString() : String.Empty,
                        NameSalesman       = (saleTab.Cells[row, 5].Value != null) ? saleTab.Cells[row, 5].Value.ToString() : String.Empty,
                        Resale             = (saleTab.Cells[row, 1].Value != null) ? saleTab.Cells[row, 1].Value.ToString() : String.Empty,
                        CreatedAt          = DateTime.Now,
                        SaleFile           = saleFile,
                        SaleFileSkuStatus  = await _saleFileSkuStatusRepository.GetById((int)FileSKUStatusEnum.PendingClassification),
                        Product            = 0,
                        EanCode            = (saleTab.Cells[row, 11].Value != null) ? saleTab.Cells[row, 11].Value.ToString() : String.Empty,
                    };

                    ListSaleFileDataError.AddRange(await ValidateSpreadsheetRow(saleFileData, saleFile, row, saleFile.CurrentMonth));

                    ListSaleFileData.Add(saleFileData);
                }
                else
                {
                    ListSaleFileDataError.Add(new SaleFileDataError
                    {
                        CreatedAt   = DateTime.Now,
                        Description = "Possui uma coluna não preenchida",
                        SaleFile    = saleFile,
                        Line        = row
                    });
                }
            }


            return(ListSaleFileDataError, ListSaleFileData);
        }
예제 #2
0
        private async Task <IEnumerable <SaleFileDataError> > ValidateSpreadsheetRow(SaleFileData saleFileData, SaleFile saleFile, int line, int month)
        {
            var ListSaleFileDataError = new List <SaleFileDataError>();

            if (!string.IsNullOrEmpty(saleFileData.EanCode))
            {
                var network = (await _shopUserRepository.CustomFind(x => x.Shop.Cnpj.Equals(saleFileData.Cnpj), x => x.Shop)).FirstOrDefault();

                if (network != null)
                {
                    var product = (await _productRepository.CustomFind(x => x.Ean.Equals(saleFileData.EanCode))).FirstOrDefault();
                    if (product != null)
                    {
                        saleFileData.Product           = product.Id;
                        saleFileData.SaleFileSkuStatus = await _saleFileSkuStatusRepository.GetById((int)FileSKUStatusEnum.AutomaticValidate);
                    }
                }
            }

            if (String.IsNullOrEmpty(saleFileData.ProductDescription))
            {
                ListSaleFileDataError.Add(new SaleFileDataError
                {
                    CreatedAt   = DateTime.Now,
                    Description = "Código produto em branco.",
                    SaleFile    = saleFile,
                    Line        = line
                });
            }

            if (String.IsNullOrEmpty(saleFileData.Resale))
            {
                ListSaleFileDataError.Add(new SaleFileDataError
                {
                    CreatedAt   = DateTime.Now,
                    Description = "Revenda em branco.",
                    SaleFile    = saleFile,
                    Line        = line
                });
            }

            if (String.IsNullOrEmpty(saleFileData.ShopCode) || saleFileData.ShopCode == "0")
            {
                ListSaleFileDataError.Add(new SaleFileDataError
                {
                    CreatedAt   = DateTime.Now,
                    Description = "Código Loja em branco.",
                    SaleFile    = saleFile,
                    Line        = line
                });
            }

            if (Convert.ToDateTime(saleFileData.SaleDate) == DateTime.MinValue)
            {
                ListSaleFileDataError.Add(new SaleFileDataError
                {
                    CreatedAt   = DateTime.Now,
                    Description = "Data inválida.",
                    SaleFile    = saleFile,
                    Line        = line
                });
            }
            else if (Convert.ToDateTime(saleFileData.SaleDate).Month != month)
            {
                ListSaleFileDataError.Add(new SaleFileDataError
                {
                    CreatedAt   = DateTime.Now,
                    Description = "Data fora do período informado.",
                    SaleFile    = saleFile,
                    Line        = line
                });
            }

            if (String.IsNullOrEmpty(saleFileData.RequestNumber))
            {
                ListSaleFileDataError.Add(new SaleFileDataError
                {
                    CreatedAt   = DateTime.Now,
                    Description = "Número Pedido em branco.",
                    SaleFile    = saleFile,
                    Line        = line
                });
            }



            if (String.IsNullOrEmpty(saleFileData.Cnpj))
            {
                ListSaleFileDataError.Add(new SaleFileDataError
                {
                    CreatedAt   = DateTime.Now,
                    Description = "CNPJ em branco.",
                    SaleFile    = saleFile,
                    Line        = line,
                });
            }
            else if (!String.IsNullOrEmpty(saleFileData.Cnpj))
            {
                if (!Validation.ValidaCnpj(saleFileData.Cnpj))
                {
                    ListSaleFileDataError.Add(new SaleFileDataError
                    {
                        CreatedAt   = DateTime.Now,
                        Description = $"CNPJ {saleFileData.Cnpj} inválido.",
                        SaleFile    = saleFile,
                        Line        = line
                    });
                }
                else
                {
                    var hasCnpj = await _shopRepository.CustomFind(x => x.Cnpj.Equals(saleFileData.Cnpj));

                    if (!hasCnpj.Any())
                    {
                        ListSaleFileDataError.Add(new SaleFileDataError
                        {
                            CreatedAt   = DateTime.Now,
                            Description = $"CNPJ {saleFileData.Cnpj} não encontrado.",
                            SaleFile    = saleFile,
                            Line        = line
                        });
                    }
                }
            }

            if (String.IsNullOrEmpty(saleFileData.CpfSalesman))
            {
                ListSaleFileDataError.Add(new SaleFileDataError
                {
                    CreatedAt   = DateTime.Now,
                    Description = "CPF em branco.",
                    SaleFile    = saleFile,
                    Line        = line
                });
            }
            else if (!String.IsNullOrEmpty(saleFileData.CpfSalesman))
            {
                var user = (await _userRepository.CustomFind(x => x.Cpf.Contains(saleFileData.CpfSalesman), x => x.Office)).FirstOrDefault();

                if (user != null && user.Office.Id != (int)OfficeEnum.Salesman)
                {
                    ListSaleFileDataError.Add(new SaleFileDataError
                    {
                        CreatedAt   = DateTime.Now,
                        Description = "Usuario não é um vendedor.",
                        SaleFile    = saleFile,
                        Line        = line
                    });
                }

                if (!Validation.ValidaCPF(saleFileData.CpfSalesman))
                {
                    ListSaleFileDataError.Add(new SaleFileDataError
                    {
                        CreatedAt   = DateTime.Now,
                        Description = "CPF inválido.",
                        SaleFile    = saleFile,
                        Line        = line
                    });
                }
            }

            if (String.IsNullOrEmpty(saleFileData.NameSalesman))
            {
                ListSaleFileDataError.Add(new SaleFileDataError
                {
                    CreatedAt   = DateTime.Now,
                    Description = "Nome em branco.",
                    SaleFile    = saleFile,
                    Line        = line
                });
            }
            else if (!saleFileData.NameSalesman.ToCharArray().All(t => !char.IsDigit(t)))
            {
                ListSaleFileDataError.Add(new SaleFileDataError
                {
                    CreatedAt   = DateTime.Now,
                    Description = "Nome inválido.",
                    SaleFile    = saleFile,
                    Line        = line,
                });
            }

            if (saleFileData.Amount == 0)
            {
                ListSaleFileDataError.Add(new SaleFileDataError
                {
                    CreatedAt   = DateTime.Now,
                    Description = "Quantidade em branco.",
                    SaleFile    = saleFile,
                    Line        = line
                });
            }

            if (saleFileData.Amount < 0)
            {
                ListSaleFileDataError.Add(new SaleFileDataError
                {
                    CreatedAt   = DateTime.Now,
                    Description = "Quantidade de unidades negativa.",
                    SaleFile    = saleFile,
                    Line        = line
                });
            }

            return(ListSaleFileDataError);
        }