예제 #1
0
        private void AtribuirDescontarInsumoNaVendaETemProducao(Produto produto)
        {
            var categoriaConfiguracao = _listaCategoriaConfiguracao.FirstOrDefault(x => x.Categoria == produto.Categoria);

            if (categoriaConfiguracao != null)
            {
                produto.TemProducao            = categoriaConfiguracao.TemProducao;
                produto.DescontarInsumoNaVenda = categoriaConfiguracao.TemProducao;
            }
        }
예제 #2
0
 public void AdicionarVendaProduto(Produto produto, decimal quantidade)
 {
     VendaCorrente.AdicionarProdutoNaVenda(produto, quantidade, produto.PrecoVenda);
     ListaDeVendaProdutos = VendaCorrente.VendaCorrente.VendaProdutoes.Reverse().ToList();
 }
예제 #3
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);
            }
        }