/// <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); } }
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); } }
public static GerenciadorPessoa GetInstance() { if (gPessoa == null) { gPessoa = new GerenciadorPessoa(); } return(gPessoa); }
/// <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); } }
/// <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(); //} }
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 } }