示例#1
0
        public void Produto_InfraData_Inserir_EsperadoOK()
        {
            BaseSqlTeste.SemearBancoParaProduto();

            _produto = ProdutoObjetoMae.ObterValido();

            Produto produto = _produtoRepositorio.Inserir(_produto);

            produto.ID.Should().BeGreaterThan(0);
        }
示例#2
0
        public async Task Deve_Retornar_Produto()
        {
            Produto produto = GeradorProduto.NovoProduto();

            repositorio.Inserir(produto);

            var response = await _testContext.Client.GetAsync($"api/produto/{produto.Id}");

            var responseProduto = await response.Content.ReadAsAsync <Produto>();

            responseProduto.Should().BeEquivalentTo(produto);
        }
示例#3
0
        public async Task <IActionResult> Create(Produto produto)
        {
            if (ModelState.IsValid)
            {
                await _produtoRepositorio.Inserir(produto);

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["FornecedorId"] = new SelectList(await ListaFornecedores(), "PessoaId", "RazaoSocial", produto.FornecedorId);
            return(View(produto));
        }
示例#4
0
        public Produto Inserir(ComandoInserirProduto comando)
        {
            if (comando.Valido())
            {
                var novoProduto = new Produto(comando.Codigo, comando.Descricao, comando.Preco);
                _produtoRepositorio.Inserir(novoProduto);

                return(_produtoRepositorio.Obter(novoProduto.Id));
            }

            return(new Produto());
        }
示例#5
0
        public IConsulta Executar(ProdutoDominio entidade)
        {
            try
            {
                var produto = new Produto(entidade.Nome, entidade.Preco, entidade.TipoPromocao);
                _produtoRepositorio.Inserir(produto);

                return(new ProdutoConsultaResultado(produto));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public IActionResult Criar([FromBody] Produto produto)
        {
            if (produto.Codigo == "")
            {
                return(BadRequest("Codigo do produto não informado"));
            }

            if (string.IsNullOrEmpty(produto.Descricao))
            {
                return(BadRequest("Descrição do produto não informada"));
            }

            _repositorio.Inserir(produto);
            return(Created(nameof(Criar), produto));
        }
示例#7
0
        public void Persistir(Produto produto)
        {
            this.ValidarProduto(produto);

            if (produto.Id == 0)
            {
                bool produtoJaExiste = this.BuscarProdutoPeloNome(produto.Nome) != null;
                if (produtoJaExiste)
                {
                    throw new ProdutoException($"Não é possível cadastrar produtos com nome duplicado.");
                }

                produtoRepositorio.Inserir(produto);
            }
            else
            {
                produtoRepositorio.Editar(produto);
            }
        }
示例#8
0
        public void ImportarProdutos()
        {
            try
            {
                _logger.Log().Debug("importação iniciada...");
                _listaCategoriaConfiguracao = _repositorio.RecuperarTodos <ConfiguracaoCategoriaProduto>();
                _logger.Log().Debug("lista de categosrias carregada...");
                EtapaHandler?.Invoke("Lista de categorias de carregada...");
                var caminhoFisicoDaPlanilha = "CaminhoFisicoDaPlanilhaDeProdutos".GetConfigValue();
                var connectionString        =
                    $"Provider=Microsoft.ACE.OLEDB.12.0; data source={caminhoFisicoDaPlanilha}; Extended Properties=Excel 8.0;";
                var adapter = new OleDbDataAdapter("SELECT * FROM [temp$]", connectionString);
                var ds      = new DataSet();
                adapter.Fill(ds, "produtos");
                var data = ds.Tables["produtos"].AsEnumerable();
                _logger.Log().Debug("planilha dos produtos carregada...");
                EtapaHandler?.Invoke("Planilha dos produtos carregada...");
                EtapaHandler?.Invoke("Importando produtos...");
                var produtosDaPlanilha = data.Select(x =>
                {
                    var produto             = new Produto();
                    produto.CodigoParaCupom = CodigoDoCupom;
                    produto.Ativo           = x.Field <string>("ATIVO").Trim().SimNaoToBool();
                    produto.CodigoDeBarra   = x.IsNull("CÓDIGO DE BARRAS")
                        ? null
                        : x.Field <string>("CÓDIGO DE BARRAS").Trim();
                    produto.CodigoNCM     = x.IsNull("NCM") ? null : x.Field <string>("NCM").Trim();
                    produto.Descricao     = x.Field <string>("DESCRIÇÃO").Trim();
                    produto.DigitoCST     = x.Field <string>("DÍGITO CST").Trim();
                    produto.EstoqueMinimo = x.IsNull("ESTOQUE MÍNIMO")
                        ? null
                        : x.Field <double>("ESTOQUE MÍNIMO").ToLong();
                    produto.ExibirNoPdv      = x.Field <string>("PDV").Trim().SimNaoToBool();
                    produto.Marca            = x.Field <string>("MARCA").Trim();
                    produto.Modelo           = x.Field <string>("MODELO").Trim();
                    produto.PrecoCusto       = x.Field <double>("PREÇO DE CUSTO").ToDecimal();
                    produto.PrecoVenda       = x.Field <double>("PREÇO DE VENDA").ToDecimal();
                    produto.PrecoVenda2      = x.Field <double>("PREÇO DE VENDA 2").ToDecimal();
                    produto.TipoFiscal       = x.Field <string>("TIPO1").Trim();
                    produto.TipoProduto      = x.Field <string>("TIPO").Trim();
                    produto.TipoUnidade      = x.Field <string>("UNIDADE").Trim();
                    produto.ControlarEstoque = produto.EstoqueMinimo != null;
                    produto.Categoria        = x.Field <string>("CATEGORIA").Trim();
                    produto.SubCategoria     = x.Field <string>("SUBCATEGORIA").Trim();
                    produto.DescricaoBusca   =
                        string.Concat(produto.CodigoDeBarra, produto.Descricao).ToComparableString();

                    AtribuirDescontarInsumoNaVendaETemProducao(produto);
                    return(produto);
                }).ToList();

                var count = 1;
                produtosDaPlanilha.ForEach(produto =>
                {
                    if (string.IsNullOrEmpty(produto.CodigoDeBarra))
                    {
                        AdicionarMensagem(
                            $"O produto {produto.Descricao} não foi importado, pois não possui código de barras.",
                            EnumStatusDoResultado.RegraDeNegocioInvalida);
                    }
                    else
                    {
                        try
                        {
                            var prodDb =
                                _produtoRepositorio.Recuperar(new Produto()
                            {
                                CodigoDeBarra = produto.CodigoDeBarra
                            });
                            if (prodDb == null)
                            {
                                _produtoRepositorio.Inserir(produto);
                            }
                            else
                            {
                                _produtoRepositorio.Atualizar(produto);
                            }
                        }
                        catch (Exception ex)
                        {
                            _logger.Log().Error(ex);
                        }
                    }
                    ProdutoImportadoHandler?.Invoke(count, produtosDaPlanilha.Count, produto.Descricao);
                    _logger.Log().Debug($"{count}/{produtosDaPlanilha.Count} - {produto.Descricao}");
                    count++;
                });


                AdicionarMensagem("Produtos Importados com Sucesso");
                _logger.Log().Debug("####### Produtos Importados com Sucesso #######");
                ImportacaoConcluidaHandler?.Invoke(null);
            }
            catch (Exception ex)
            {
                _logger.Log().Error(ex);
                ImportacaoConcluidaHandler?.Invoke(ex);
            }
        }