예제 #1
0
        /// <summary>
        /// Insere uma pessoa no banco de dados
        /// </summary>
        /// <param name="pessoa"></param>
        /// <returns></returns>
        public Int64 Inserir(Pessoa pessoa)
        {
            try
            {
                ValidarCpfCnpj(pessoa);
                var repPessoa = new RepositorioGenerico <PessoaE>();

                if (string.IsNullOrEmpty(pessoa.Nome) || string.IsNullOrEmpty(pessoa.NomeFantasia))
                {
                    throw new NegocioException("O nome e o nome fantasia da pessoa não podem ficar em branco.");
                }
                if (!pessoa.CpfCnpj.Trim().Equals(""))
                {
                    int countPessoasCpfCnpj = GerenciadorPessoa.GetInstance().ObterPorCpfCnpjEquals(pessoa.CpfCnpj).Count();
                    if (countPessoasCpfCnpj > 0)
                    {
                        throw new NegocioException("O CPF/CNPJ já está cadastrado na base de dados.");
                    }
                }


                PessoaE _pessoa = new PessoaE();
                Atribuir(pessoa, _pessoa);

                repPessoa.Inserir(_pessoa);
                repPessoa.SaveChanges();
                return(_pessoa.codPessoa);
            }
            catch (Exception e)
            {
                throw new DadosException("Pessoa", e.Message, e);
            }
        }
예제 #2
0
        private long ObterInserirEmpresaFrete(TNFe nfe)
        {
            if (nfe.infNFe.transp != null && nfe.infNFe.transp.transporta != null && !string.IsNullOrEmpty(nfe.infNFe.transp.transporta.Item))
            {
                Pessoa empresaFrete = GerenciadorPessoa.GetInstance().ObterPorCpfCnpj(nfe.infNFe.transp.transporta.Item).ElementAtOrDefault(0);
                if (empresaFrete == null)
                {
                    empresaFrete = GerenciadorPessoa.GetInstance().ObterPorNome(nfe.infNFe.transp.transporta.xNome).ElementAtOrDefault(0);
                }

                if (empresaFrete == null)
                {
                    empresaFrete              = new Pessoa();
                    empresaFrete.CpfCnpj      = nfe.infNFe.transp.transporta.Item;
                    empresaFrete.Nome         = nfe.infNFe.transp.transporta.xNome.ToUpper();
                    empresaFrete.NomeFantasia = nfe.infNFe.transp.transporta.xNome.ToUpper();
                    empresaFrete.Ie           = nfe.infNFe.transp.transporta.IE;
                    empresaFrete.Endereco     = nfe.infNFe.transp.transporta.xEnder.ToUpper();
                    empresaFrete.Uf           = nfe.infNFe.transp.transporta.UF.ToString().ToUpper();
                    empresaFrete.Cidade       = nfe.infNFe.transp.transporta.xMun.ToUpper();

                    empresaFrete.CodMunicipioIBGE = GerenciadorMunicipio.GetInstance().ObterPorCidadeEstado(empresaFrete.Cidade, empresaFrete.Uf).Codigo;
                    empresaFrete.Tipo             = empresaFrete.CpfCnpj.Length == 11 ? Pessoa.PESSOA_FISICA : Pessoa.PESSOA_JURIDICA;
                    return(GerenciadorPessoa.GetInstance().Inserir(empresaFrete));
                }
                else
                {
                    return(empresaFrete.CodPessoa);
                }
            }
            else
            {
                return(1);
            }
        }
예제 #3
0
 public static GerenciadorPessoa GetInstance()
 {
     if (gPessoa == null)
     {
         gPessoa = new GerenciadorPessoa();
     }
     return(gPessoa);
 }
예제 #4
0
        /// <summary>
        /// Atualiza os dados de um pessoa
        /// </summary>
        /// <param name="pessoa"></param>
        public void Atualizar(Pessoa pessoa)
        {
            ValidarCpfCnpj(pessoa);
            var repPessoa = new RepositorioGenerico <PessoaE>();

            if (pessoa.CodPessoa == Global.CLIENTE_PADRAO)
            {
                throw new NegocioException("Os dados dessa pessoa não podem ser alterados ou removidos");
            }
            if (pessoa.Nome.Trim().Equals("") || pessoa.NomeFantasia.Trim().Equals(""))
            {
                throw new NegocioException("O nome e o nome fantasia da pessoa não podem ficar em branco.");
            }
            try
            {
                PessoaE _pessoa = repPessoa.ObterEntidade(p => p.codPessoa == pessoa.CodPessoa);


                if (!pessoa.CpfCnpj.Trim().Equals(""))
                {
                    IEnumerable <Pessoa> listaPessoas = GerenciadorPessoa.GetInstance().ObterPorCpfCnpjEquals(pessoa.CpfCnpj);
                    foreach (Pessoa p in listaPessoas)
                    {
                        if (p.CodPessoa != pessoa.CodPessoa)
                        {
                            throw new NegocioException("O CPF/CNPJ já está cadastrado na base de dados.");
                        }
                    }
                }


                Atribuir(pessoa, _pessoa);
                repPessoa.SaveChanges();
            }
            catch (Exception e)
            {
                throw new DadosException("Pessoa", e.Message, e);
            }
        }
예제 #5
0
        /// <summary>
        /// Gera o cupom fiscal a partir das saídas e valores a vista de cada saía
        /// </summary>
        /// <param name="saidaPagamentos"></param>
        private void GerarDocumentoECF(List <tb_solicitacao_saida> listaSolicitacaoSaida, List <tb_solicitacao_pagamento> listaPagamentos)
        {
            try
            {
                List <Saida> saidas = new List <Saida>();
                decimal      totalSolicitacaoSaidas = 0;
                foreach (tb_solicitacao_saida solicitacaoSaida in listaSolicitacaoSaida)
                {
                    Saida saida = GerenciadorSaida.GetInstance(null).Obter(solicitacaoSaida.codSaida);
                    if (!string.IsNullOrEmpty(saida.CupomFiscal))
                    {
                        throw new NegocioException("Cupom Fiscal referente a essa pré-venda já foi impresso.");
                    }
                    saidas.Add(saida);
                    totalSolicitacaoSaidas += solicitacaoSaida.valorTotal;
                }

                if (saidas.Count > 0)
                {
                    DirectoryInfo pastaECF = new DirectoryInfo(Global.PASTA_COMUNICACAO_FRENTE_LOJA);

                    if (pastaECF.Exists)
                    {
                        // nome do arquivo é igual ao primeiro da lista
                        String       nomeArquivo = Global.PASTA_COMUNICACAO_FRENTE_LOJA + saidas[0].CodSaida + ".txt";
                        StreamWriter arquivo     = new StreamWriter(nomeArquivo, false, Encoding.ASCII);

                        // imprime dados do cliente no cupom fiscal
                        if (!saidas[0].CpfCnpj.Trim().Equals(""))
                        {
                            arquivo.WriteLine("<CPF>" + saidas[0].CpfCnpj);
                        }
                        decimal precoTotalProdutosVendidos = 0;

                        // imprime produtos dos cupons fiscais
                        List <SaidaProduto> listaSaidaProdutos = new List <SaidaProduto>();
                        Pessoa cliente = (Pessoa)GerenciadorPessoa.GetInstance().Obter(saidas[0].CodCliente).ElementAt(0);
                        foreach (Saida saida in saidas)
                        {
                            List <SaidaProduto> saidaProdutos = new List <SaidaProduto>();
                            if (cliente.ImprimirCF)
                            {
                                saidaProdutos = GerenciadorSaidaProduto.GetInstance(null).ObterPorSaida(saida.CodSaida);
                            }
                            else
                            {
                                saidaProdutos = GerenciadorSaidaProduto.GetInstance(null).ObterPorSaidaSemCST(saida.CodSaida, Cst.ST_OUTRAS);
                            }

                            decimal totalAVista = listaSolicitacaoSaida.Where(cs => cs.codSaida.Equals(saida.CodSaida)).Sum(cs => cs.valorTotal);
                            if (saidaProdutos.Count > 0)
                            {
                                // associa as saídas ao pedido que foi gerado para emissão do cupom fiscal
                                //GerenciadorSaidaPedido.GetInstance().RemoverPorSaida(saida.CodSaida, saceContext);
                                if (GerenciadorSaidaPedido.GetInstance().ObterPorSaida(saida.CodSaida).Count == 0)
                                {
                                    GerenciadorSaidaPedido.GetInstance().Inserir(new SaidaPedido()
                                    {
                                        CodSaida = saida.CodSaida, CodPedido = saidas[0].CodSaida, TotalAVista = totalAVista
                                    });
                                }
                                else
                                {
                                    GerenciadorSaidaPedido.GetInstance().Atualizar(new SaidaPedido()
                                    {
                                        CodSaida = saida.CodSaida, CodPedido = saidas[0].CodSaida, TotalAVista = totalAVista
                                    });
                                }
                                listaSaidaProdutos.AddRange(saidaProdutos);
                            }
                            else
                            {
                                GerenciadorSaida.GetInstance(null).AtualizarTipoPedidoGeradoPorSaida(Saida.TIPO_VENDA, "", totalAVista, saida.CodSaida);
                            }
                        }

                        int quantidadeProdutosImpressos = ImprimirProdutosCupomFiscal(arquivo, ref precoTotalProdutosVendidos, listaSaidaProdutos);

                        if (quantidadeProdutosImpressos > 0)
                        {
                            // imprime detalhes do cliente
                            if (!saidas[0].CodCliente.Equals(Global.CLIENTE_PADRAO))
                            {
                                arquivo.WriteLine("<NOME> Cliente: " + saidas[0].NomeCliente);
                                arquivo.WriteLine("<CPF> CPF/CNPJ: " + saidas[0].CpfCnpj);
                            }

                            // imprimir imposto na nota
                            decimal valorImposto           = GerenciadorImposto.GetInstance().CalcularValorImpostoProdutos(listaSaidaProdutos).Sum(sp => sp.ValorImposto);
                            decimal valorImpostoPercentual = valorImposto / saidas.Sum(s => s.TotalAVista) * 100;
                            arquivo.WriteLine("<OBS>Val Aprox dos Tributos R$ " + valorImposto.ToString("N2") + " (" + valorImpostoPercentual.ToString("N2") + "%) " + "  Fonte: IBPT");


                            // Buscar pagamentos quando não foram passados por parâmetro
                            //List<SaidaPagamento> saidaPagamentos = (List<SaidaPagamento>)GerenciadorSaidaPagamento.GetInstance(null).ObterPorSaidas(listaSolicitacaoCupomSaida.Select(cs=>cs.codSaida).ToList());

                            // imprime desconto
                            decimal desconto = (precoTotalProdutosVendidos - listaSolicitacaoSaida.Sum(cs => cs.valorTotal));
                            if (desconto >= 0)
                            {
                                arquivo.WriteLine("<DESCONTO>" + desconto.ToString("N2"));
                            }
                            //arquivo.WriteLine("<OBS> Total de Impostos pagos:" + saida.
                            foreach (tb_solicitacao_pagamento pagamento in listaPagamentos)
                            {
                                if (pagamento.codFormaPagamento != FormaPagamento.CARTAO)
                                {
                                    arquivo.Write("<PGTO> 01;DINHEIRO;");
                                    arquivo.Write(pagamento.valor + ";");
                                    arquivo.WriteLine("N;"); //N ou V
                                }
                                else
                                {
                                    CartaoCredito cartaoCredito = GerenciadorCartaoCredito.GetInstance().Obter(pagamento.codCartao).ElementAtOrDefault(0);
                                    arquivo.Write("<PGTO>" + cartaoCredito.Mapeamento + ";");
                                    arquivo.Write(cartaoCredito.Nome + ";");
                                    arquivo.Write(pagamento.valor + ";");
                                    arquivo.WriteLine("V;"); //N ou V vinculado ao TEF
                                }
                            }
                            arquivo.Close();
                        }
                        else
                        {
                            arquivo.Close();
                            ExcluirDocumentoFiscal(saidas[0].CodSaida);
                        }
                    }
                }
                //transaction.Commit();
            }
            catch (Exception e)
            {
                //transaction.Rollback();
                if (e is NegocioException)
                {
                    throw e;
                }
                //TODO: definir mecanismo para lançar exceção de processo background
            }
            //finally
            //{
            //    saceContext.Connection.Close();
            //}
        }
예제 #6
0
 private long ObterInserirFornecedor(TNFe nfe)
 {
     if (nfe.infNFe.emit != null)
     {
         Pessoa fornecedor = GerenciadorPessoa.GetInstance().ObterPorCpfCnpj(nfe.infNFe.emit.Item).ElementAtOrDefault(0);
         if (fornecedor == null)
         {
             fornecedor = GerenciadorPessoa.GetInstance().ObterPorNome(nfe.infNFe.emit.xNome).ElementAtOrDefault(0);
         }
         if (fornecedor == null)
         {
             fornecedor         = new Pessoa();
             fornecedor.CpfCnpj = nfe.infNFe.emit.Item;
             fornecedor.Nome    = nfe.infNFe.emit.xNome.Length > 50 ? nfe.infNFe.emit.xNome.ToUpper().Substring(0, 50) : nfe.infNFe.emit.xNome.ToUpper();
             if (nfe.infNFe.emit.xFant != null)
             {
                 fornecedor.NomeFantasia = nfe.infNFe.emit.xFant.Length > 50 ? nfe.infNFe.emit.xFant.ToUpper().Substring(0, 50) : nfe.infNFe.emit.xFant.ToUpper();
             }
             else
             {
                 fornecedor.NomeFantasia = fornecedor.Nome;
             }
             fornecedor.Ie               = nfe.infNFe.emit.IE;
             fornecedor.Endereco         = nfe.infNFe.emit.enderEmit.xLgr.ToUpper();
             fornecedor.Cep              = nfe.infNFe.emit.enderEmit.CEP;
             fornecedor.Cidade           = nfe.infNFe.emit.enderEmit.xMun.ToUpper();
             fornecedor.CodMunicipioIBGE = Convert.ToInt32(nfe.infNFe.emit.enderEmit.cMun);
             fornecedor.Complemento      = (nfe.infNFe.emit.enderEmit.xCpl != null) ? nfe.infNFe.emit.enderEmit.xCpl.ToUpper() : "";
             if (string.IsNullOrEmpty(nfe.infNFe.emit.enderEmit.fone))
             {
                 fornecedor.Fone1 = "";
             }
             else
             {
                 fornecedor.Fone1 = nfe.infNFe.emit.enderEmit.fone.Length <= 12 ? nfe.infNFe.emit.enderEmit.fone : nfe.infNFe.emit.enderEmit.fone.Substring(0, 12);
             }
             fornecedor.Bairro = nfe.infNFe.emit.enderEmit.xBairro.ToUpper();
             fornecedor.Ie     = nfe.infNFe.emit.IE;
             if (nfe.infNFe.emit.IEST != null)
             {
                 fornecedor.IeSubstituto = nfe.infNFe.emit.IEST;
             }
             fornecedor.Numero = nfe.infNFe.emit.enderEmit.nro.Length > 10 ? nfe.infNFe.emit.enderEmit.nro.Substring(0, 10):nfe.infNFe.emit.enderEmit.nro;
             fornecedor.Uf     = nfe.infNFe.emit.enderEmit.UF.ToString();
             fornecedor.Tipo   = fornecedor.CpfCnpj.Length == 11 ? Pessoa.PESSOA_FISICA : Pessoa.PESSOA_JURIDICA;
             return(GerenciadorPessoa.GetInstance().Inserir(fornecedor));
         }
         else
         {
             fornecedor.CpfCnpj          = nfe.infNFe.emit.Item;
             fornecedor.Nome             = nfe.infNFe.emit.xNome.Length > 50 ? nfe.infNFe.emit.xNome.ToUpper().Substring(0, 50) : nfe.infNFe.emit.xNome.ToUpper();
             fornecedor.Ie               = nfe.infNFe.emit.IE;
             fornecedor.Endereco         = nfe.infNFe.emit.enderEmit.xLgr.ToUpper();
             fornecedor.Cep              = nfe.infNFe.emit.enderEmit.CEP;
             fornecedor.Cidade           = nfe.infNFe.emit.enderEmit.xMun.ToUpper();
             fornecedor.CodMunicipioIBGE = Convert.ToInt32(nfe.infNFe.emit.enderEmit.cMun);
             fornecedor.Complemento      = (nfe.infNFe.emit.enderEmit.xCpl != null) ? nfe.infNFe.emit.enderEmit.xCpl.ToUpper() : "";
             if (string.IsNullOrEmpty(nfe.infNFe.emit.enderEmit.fone))
             {
                 fornecedor.Fone1 = "";
             }
             else
             {
                 fornecedor.Fone1 = nfe.infNFe.emit.enderEmit.fone.Length <= 12 ? nfe.infNFe.emit.enderEmit.fone : nfe.infNFe.emit.enderEmit.fone.Substring(0, 12);
             }
             fornecedor.Bairro       = nfe.infNFe.emit.enderEmit.xBairro.ToUpper();
             fornecedor.Ie           = nfe.infNFe.emit.IE;
             fornecedor.IeSubstituto = nfe.infNFe.emit.IEST;
             fornecedor.Numero       = nfe.infNFe.emit.enderEmit.nro.Length > 10 ? nfe.infNFe.emit.enderEmit.nro.Substring(0, 10) : nfe.infNFe.emit.enderEmit.nro;
             fornecedor.Uf           = nfe.infNFe.emit.enderEmit.UF.ToString();
             fornecedor.Tipo         = fornecedor.CpfCnpj.Length == 11 ? Pessoa.PESSOA_FISICA : Pessoa.PESSOA_JURIDICA;
             GerenciadorPessoa.GetInstance().Atualizar(fornecedor);
             return(fornecedor.CodPessoa);
         }
     }
     else
     {
         return(1); // quando por algum motivo não conseguir recuperar o fornecedor
     }
 }