Example #1
0
        public override NotaFiscal InitDto(IReader reader, NotaFiscal dto)
        {
            base.InitDto(reader, dto);

            // Sobreescreve a geração default para estes campos:
            dto.Data = MockReader.GenerateDateTime(-10);
            dto.Total = MockReader.GenerateDecimal(20000);

            // Corrige geração do xml:
            dto.NfeXml = dto.Nfe? MockReader.GenerateXml() : null;

            return dto;
        }
Example #2
0
 public string excluirNotaFiscal(NotaFiscal notaFiscal)
 {
     string erro = null;
     try
     {
         NotasFiscais.DeleteObject(notaFiscal);
         db.SaveChanges();
     }
     catch (Exception ex)
     {
         erro = ex.Message;
     }
     return erro;
 }
Example #3
0
        public string adicionarNotaFiscal(NotaFiscal n)
        {
            string erro = null;
            try
            {
                db.NotaFiscal.AddObject(n);
                db.SaveChanges();

            }

            catch (Exception ex)
            {
                erro = ex.Message;
            }

            return erro;
        }
Example #4
0
        public string editarNotaFiscal(NotaFiscal notaFiscal)
        {
            string erro = null;
            try
            {
                if (notaFiscal.EntityState == System.Data.EntityState.Detached)
                {
                    NotasFiscais.Attach(notaFiscal);
                }
                db.ObjectStateManager.ChangeObjectState(notaFiscal, System.Data.EntityState.Modified);

                db.SaveChanges();
            }
            catch (Exception ex)
            {
                erro = ex.Message;
            }
            return erro;
        }
Example #5
0
        public static bool Incluir(NotaFiscal nota)
        {
            try
            {
                int incluido = NotaFiscalRep.Incluir(nota);

                if (incluido > 0)
                {
                    foreach (Item item in nota.Itens)
                    {
                        NotaFiscalRep.IncluirItens(incluido, item);
                    }

                    return(true);
                }

                return(false);
            }
            catch (Exception)
            {
                throw;
            }
        }
Example #6
0
        public static bool Atualizar(NotaFiscal nota)
        {
            try
            {
                bool atualizado = NotaFiscalRep.Atualizar(nota);

                if (atualizado)
                {
                    foreach (Item item in nota.Itens)
                    {
                        NotaFiscalRep.AtualizarItens(nota.Codigo, item);
                    }

                    return(true);
                }

                return(false);
            }
            catch (Exception)
            {
                throw;
            }
        }
Example #7
0
        public void NotaFiscal_Dominio_CalcularValoresTotais_Sucesso()
        {
            Mock <ProdutoNotaFiscal> produtoNotaFiscal2 = new Mock <ProdutoNotaFiscal>(_notaFiscal, _produtoMock.Object, 1);

            _produtoNotaFiscal.Setup(pnf => pnf.ValorTotal).Returns(100);
            produtoNotaFiscal2.Setup(pnf => pnf.ValorTotal).Returns(50);
            _produtoNotaFiscal.Setup(pnf => pnf.ValorICMS).Returns(70);
            produtoNotaFiscal2.Setup(pnf => pnf.ValorICMS).Returns(40);
            _produtoNotaFiscal.Setup(pnf => pnf.ValorIPI).Returns(30);
            produtoNotaFiscal2.Setup(pnf => pnf.ValorIPI).Returns(50);
            _produtosNotaFiscal.Add(_produtoNotaFiscal.Object);
            _produtosNotaFiscal.Add(produtoNotaFiscal2.Object);
            _notaFiscal = ObjectMother.PegarNotaFiscalValidaComListaDeProdutos(_emitenteMock.Object, _destinatarioMock.Object, _transportadorMock.Object, _produtosNotaFiscal);

            _notaFiscal.ValorTotalFrete = 50;
            _notaFiscal.CalcularValoresTotais();

            _notaFiscal.ValorTotalProdutos.Should().Be(150);
            _notaFiscal.ValorTotalICMS.Should().Be(110);
            _notaFiscal.ValorTotalIPI.Should().Be(80);
            _notaFiscal.ValorTotalImpostos.Should().Be(190);
            _notaFiscal.ValorTotalNota.Should().Be(390);
        }
Example #8
0
        public bool salvarNotaFiscal(NotaFiscal notaFiscal)
        {
            try
            {
                using (var comandoBancoDeDados = new SqlCommand())
                {
                    comandoBancoDeDados.CommandText = "dbo.P_NOTA_FISCAL";
                    comandoBancoDeDados.Connection  = conexaoBancoDeDados;
                    comandoBancoDeDados.CommandType = CommandType.StoredProcedure;

                    comandoBancoDeDados.Parameters.Add("@pId", SqlDbType.Int).Direction = ParameterDirection.InputOutput;
                    comandoBancoDeDados.Parameters["@pId"].Value = notaFiscal.Id;
                    comandoBancoDeDados.Parameters.Add("@pNumeroNotaFiscal", SqlDbType.Int);
                    comandoBancoDeDados.Parameters["@pNumeroNotaFiscal"].Value = notaFiscal.NumeroNotaFiscal;
                    comandoBancoDeDados.Parameters.Add("@pSerie", SqlDbType.Int);
                    comandoBancoDeDados.Parameters["@pSerie"].Value = notaFiscal.Serie;
                    comandoBancoDeDados.Parameters.Add("@pNomeCliente", SqlDbType.VarChar, 50);
                    comandoBancoDeDados.Parameters["@pNomeCliente"].Value = notaFiscal.NomeCliente;
                    comandoBancoDeDados.Parameters.Add("@pEstadoDestino", SqlDbType.VarChar, 50);
                    comandoBancoDeDados.Parameters["@pEstadoDestino"].Value = notaFiscal.EstadoDestino;
                    comandoBancoDeDados.Parameters.Add("@pEstadoOrigem", SqlDbType.VarChar, 50);
                    comandoBancoDeDados.Parameters["@pEstadoOrigem"].Value = notaFiscal.EstadoOrigem;

                    conexaoBancoDeDados.Open();
                    comandoBancoDeDados.ExecuteNonQuery();

                    if (notaFiscal.Id == 0)
                    {
                        notaFiscal.Id = Convert.ToInt32(comandoBancoDeDados.Parameters["@pId"].Value);
                    }
                    conexaoBancoDeDados.Close();
                }
            }
            catch (Exception e) { return(false); }

            return(true);
        }
        public int SalvarNotaFiscalPendente(NotaFiscal notaFiscal, string v, Ambiente ambiente)
        {
            var NotaFiscalEntity = new NotaFiscalEntity();

            if (notaFiscal.Destinatario != null && notaFiscal.Destinatario.Endereco != null)
            {
                NotaFiscalEntity.UfDestinatario = notaFiscal.Destinatario.Endereco.UF;
            }
            else
            {
                NotaFiscalEntity.UfDestinatario = notaFiscal.Emitente.Endereco.UF;
            }

            NotaFiscalEntity.Destinatario = notaFiscal.Destinatario == null
                ? "CONSUMIDOR NÃO IDENTIFICADO"
                : notaFiscal.Destinatario.NomeRazao;
            NotaFiscalEntity.DocumentoDestinatario =
                notaFiscal.Destinatario == null ? null : notaFiscal.Destinatario.Documento;
            NotaFiscalEntity.Status        = (int)notaFiscal.Identificacao.Status;
            NotaFiscalEntity.Chave         = notaFiscal.Identificacao.Chave;
            NotaFiscalEntity.DataEmissao   = notaFiscal.Identificacao.DataHoraEmissao;
            NotaFiscalEntity.Modelo        = notaFiscal.Identificacao.Modelo == Modelo.Modelo55 ? "55" : "65";
            NotaFiscalEntity.Serie         = notaFiscal.Identificacao.Serie.ToString();
            NotaFiscalEntity.TipoEmissao   = notaFiscal.Identificacao.TipoEmissao.ToString();
            NotaFiscalEntity.ValorDesconto = notaFiscal.TotalNFe.IcmsTotal.ValorTotalDesconto;
            NotaFiscalEntity.ValorDespesas = notaFiscal.TotalNFe.IcmsTotal.ValorDespesasAcessorias;
            NotaFiscalEntity.ValorFrete    = notaFiscal.TotalNFe.IcmsTotal.ValorTotalFrete;
            NotaFiscalEntity.ValorICMS     = notaFiscal.TotalNFe.IcmsTotal.ValorTotalIcms;
            NotaFiscalEntity.ValorProdutos = notaFiscal.ValorTotalProdutos;
            NotaFiscalEntity.ValorSeguro   = notaFiscal.TotalNFe.IcmsTotal.ValorTotalSeguro;
            NotaFiscalEntity.ValorTotal    = notaFiscal.TotalNFe.IcmsTotal.ValorTotalNFe;
            NotaFiscalEntity.Ambiente      = ambiente == Ambiente.Homologacao ? 2 : 1;
            NotaFiscalEntity.Numero        = notaFiscal.Identificacao.Numero;
            NotaFiscalEntity.IsProducao    = ambiente == Ambiente.Producao;

            return(Salvar(NotaFiscalEntity));
        }
Example #10
0
        /// <inheritdoc />
        protected override void LoadPrestador(NotaFiscal nota, XElement rootNFSe)
        {
            // Endereco Prestador
            var prestadorServico = rootNFSe.ElementAnyNs("PrestadorServico");

            if (prestadorServico == null)
            {
                return;
            }

            nota.Prestador.RazaoSocial  = prestadorServico.ElementAnyNs("RazaoSocial")?.GetValue <string>() ?? string.Empty;
            nota.Prestador.NomeFantasia = prestadorServico.ElementAnyNs("NomeFantasia")?.GetValue <string>() ?? string.Empty;
            nota.Prestador.NomeFantasia = prestadorServico.ElementAnyNs("NomeFantasia")?.GetValue <string>() ?? string.Empty;

            // Endereco Prestador
            var enderecoPrestador = rootNFSe.ElementAnyNs("Endereco");

            if (enderecoPrestador != null)
            {
                nota.Prestador.Endereco.Logradouro      = enderecoPrestador.ElementAnyNs("Endereco")?.GetValue <string>() ?? string.Empty;
                nota.Prestador.Endereco.Numero          = enderecoPrestador.ElementAnyNs("Numero")?.GetValue <string>() ?? string.Empty;
                nota.Prestador.Endereco.Complemento     = enderecoPrestador.ElementAnyNs("Complemento")?.GetValue <string>() ?? string.Empty;
                nota.Prestador.Endereco.Bairro          = enderecoPrestador.ElementAnyNs("Bairro")?.GetValue <string>() ?? string.Empty;
                nota.Prestador.Endereco.CodigoMunicipio = enderecoPrestador.ElementAnyNs("CodigoMunicipio")?.GetValue <int>() ?? 0;
                nota.Prestador.Endereco.Uf  = enderecoPrestador.ElementAnyNs("Uf")?.GetValue <string>() ?? string.Empty;
                nota.Prestador.Endereco.Cep = enderecoPrestador.ElementAnyNs("Cep")?.GetValue <string>() ?? string.Empty;
            }

            // Contato Prestador
            var contatoPrestador = rootNFSe.ElementAnyNs("Contato");

            if (contatoPrestador != null)
            {
                nota.Prestador.DadosContato.Telefone = contatoPrestador.ElementAnyNs("Telefone")?.GetValue <string>() ?? string.Empty;
                nota.Prestador.DadosContato.Email    = contatoPrestador.ElementAnyNs("Email")?.GetValue <string>() ?? string.Empty;
            }
        }
    private void Carrega()
    {
        {
            ItemNotaFiscal itemnotafiscal = new ItemNotaFiscal();
            txtFabricacao.TextMode = TextBoxMode.Date;
            txtValidade.TextMode   = TextBoxMode.Date;
            NotaFiscalBD bd         = new NotaFiscalBD();
            NotaFiscal   notafiscal = NotaFiscalBD.Select(Convert.ToInt32(Session["IDNotaFiscal"].ToString()));



            //  txtNumero.Text = Session["IDNotaFiscal"].ToString();


            txtNumero.Text      = Convert.ToString(notafiscal.Numero);
            txtDataEmissao.Text = Convert.ToString(notafiscal.DataEmissao);
            txtValorTotal.Text  = Convert.ToString(notafiscal.ValorTotal);
            ddlFornecedor.Items.Insert(0, new ListItem(notafiscal.Fornecedor.NomeFantasia, notafiscal.Fornecedor.pes_id.ToString()));
        }


        //Carrega Matéria-Prima
        MateriaPrimaBD materiaprimabd = new MateriaPrimaBD();
        DataSet        materiaprimads = materiaprimabd.SelectAllNn();

        //vincula matéria-prima ao dropdownlist
        ddlMateria.DataSource     = materiaprimads.Tables[0].DefaultView;
        ddlMateria.DataTextField  = "map_nome";
        ddlMateria.DataValueField = "map_id";
        ddlMateria.DataBind();
        ddlMateria.Items.Insert(0, "Selecione");

        //ItemNotaFiscalBD bditem = new ItemNotaFiscalBD();
        //DataSet ds = bditem.SelectAll();
        //grvItem.DataSource = ds.Tables[0].DefaultView;
        //grvItem.DataBind();
    }
Example #12
0
        public bool GerarXMLNota(string diretorio, NotaFiscal nota)
        {
            try
            {
                if (!diretorio.EndsWith("\\"))
                {
                    diretorio = diretorio + "\\";
                }

                diretorio = diretorio + nota.NumeroNotaFiscal.ToString() + " - " + nota.NomeCliente.ToString() + ".xml";

                if (!File.Exists(diretorio))
                {
                    XmlTextWriter xmlArquivo = new XmlTextWriter(diretorio, Encoding.GetEncoding("ISO-8859-1"));
                    XmlSerializer x          = new XmlSerializer(nota.GetType());
                    x.Serialize(xmlArquivo, nota);
                    if (File.Exists(diretorio))
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                else
                {
                    return(false);
                }
            }
            catch (Exception e)
            {
                return(false);

                throw new Exception(e.Message);
            }
        }
Example #13
0
        public ICommandResult Handle(EmissaoNotaFiscalCommand command)
        {
            if (command == null)
            {
                return(new CommandResult(false, "Não foi possível gravar a Nota Fiscal"));
            }

            //Fail Fast Validation
            command.Validate();
            if (command.Invalid)
            {
                AddNotifications(command);
                return(new CommandResult(false, "Não foi possível gravar a Nota Fiscal"));
            }

            //Emitir a nota fiscal
            NotaFiscal notaFiscal = this.EmitirNotaFiscal(command);

            //Agrupar as Validações
            AddNotifications(notaFiscal, command);

            //Checar as notificações
            if (Invalid)
            {
                return(new CommandResult(false, "Não foi possível gravar a Nota Fiscal"));
            }

            //Gerar XML
            if (_XmlService.Gravar(notaFiscal))
            {
                //Salvar as informações
                _repository.CreateNotaFiscal(notaFiscal);
            }

            //Retornar informações
            return(new CommandResult(true, "Nota Fiscal armazenada com sucesso"));
        }
Example #14
0
        public static NotaFiscal Criar(XElement xml, Usuario usuario = null)
        {
            var infNFe  = xml.Descendants().Elements(xmlns + "infNFe").First();
            var ide     = infNFe.Element(xmlns + "ide");
            var total   = infNFe.Element(xmlns + "total");
            var ICMSTot = total.Element(xmlns + "ICMSTot");

            var notaFiscal = new NotaFiscal();

            notaFiscal.ChaveAcesso = infNFe.Attribute("Id").Value;

            notaFiscal.CodigoUF            = ParseToString(ide.Element(xmlns + "cUF"), 0);
            notaFiscal.Codigo              = ParseToString(ide.Element(xmlns + "cNF"), 0);
            notaFiscal.Numero              = ParseToString(ide.Element(xmlns + "nNF"), 0);
            notaFiscal.Modelo              = ParseToString(ide.Element(xmlns + "mod"), 55);
            notaFiscal.Serie               = ParseToString(ide.Element(xmlns + "serie"), 0);
            notaFiscal.TipoNF              = ParseToString(ide.Element(xmlns + "tpNF"), 0);
            notaFiscal.Ambiente            = ParseToString(ide.Element(xmlns + "tpAmb"), 0);
            notaFiscal.Operacao            = ParseToString(ide.Element(xmlns + "natOp"), 0);
            notaFiscal.Pagamento           = ParseToString(ide.Element(xmlns + "indPag"), 0);
            notaFiscal.TipoEmissao         = ParseToString(ide.Element(xmlns + "tpEmis"), 0);
            notaFiscal.Finalidade          = ParseToString(ide.Element(xmlns + "finNFe"), 0);
            notaFiscal.Processo            = ParseToString(ide.Element(xmlns + "procEmi"), 0);
            notaFiscal.VersaoProcesso      = ParseToString(ide.Element(xmlns + "verProc"), 0);
            notaFiscal.Digito              = ParseToString(ide.Element(xmlns + "cDV"), 0);
            notaFiscal.DataEmissao         = Convert.ToDateTime(ParseToString(ide.Element(xmlns + "dEmi"), DateTime.Today));
            notaFiscal.DataEntradaSaida    = Convert.ToDateTime(ParseToString(ide.Element(xmlns + "dSaiEnt"), DateTime.Today));
            notaFiscal.HoraEntradaSaida    = ParseToString(ide.Element(xmlns + "hSaiEnt"), "00:00:00");
            notaFiscal.CnpjCpfEmitente     = FabricaParticipante.CriarEmitente(xml).CnpjCpf;
            notaFiscal.CnpjCpfDestinatario = FabricaParticipante.CriarDestinatario(xml).CnpjCpf;
            notaFiscal.ValorNotaFiscal     = ParseToDouble(ICMSTot.Element(xmlns + "vNF"), 0);
            notaFiscal.Itens               = FabricaItemNotaFiscal.Criar(xml);

            notaFiscal.Usuario = usuario;

            return(notaFiscal);
        }
Example #15
0
        public Mensagem AtualizarNotaFiscal(NotaFiscal PNotaFiscal)
        {
            Mensagem msg = new Mensagem();

            msg.Codigo    = PNotaFiscal.ID;
            msg.Descricao = "Nota Fiscal gravada com sucesso";

            using (Contexto db = new Contexto())
            {
                //db.NotasFiscais.Add(PNotaFiscal);
                try
                {
                    db.Entry(PNotaFiscal).State = EntityState.Modified;
                    db.SaveChanges();
                }
                catch (Exception e)
                {
                    msg.Codigo    = 0;
                    msg.Descricao = "Erro ao gravar a Nota Fiscal: " + e.Message.ToString();
                }

                return(msg);
            }
        }
Example #16
0
        private void PreencherCampos(NotaFiscal nota)
        {
            txtCliente.Text = nota.NomeCliente;
            txtRegiao.Text  = nota.Regiao;
            txtTotal.Value  = Convert.ToDecimal(nota.TotalNota);
            txtNF.Value     = Convert.ToDecimal(nota.NumNF);

            var pesquisa = controle.procurarVendedorCpf(nota.VendedorCPF);

            txtVendedor.Text = pesquisa;

            var novaListUsuario = nota.listaProdutos.Select(notinha => new
            {
                Item          = notinha.Numero,
                Descrição     = notinha.Nome,
                Qtd           = notinha.Quant,
                ValorUnitário = notinha.PrecoUnitario,
                ValorItem     = notinha.Total
            }).ToList();

            tabela.DataSource          = novaListUsuario;
            tabela.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
            tabela.ColumnHeadersDefaultCellStyle.ForeColor = Color.Red;
        }
Example #17
0
 public static NotaFiscal Buscar(int codigo)
 {
     try
     {
         NotaFiscal nota = null;
         using (SqlConnection connection = new SqlConnection(Properties.Settings.Default.BancoDados))
         {
             connection.Open();
             using (SqlCommand command = new SqlCommand("[dbo].[usp_NotaFiscal_Buscar]", connection))
             {
                 command.CommandType = CommandType.StoredProcedure;
                 command.Parameters.AddWithValue("@Codigo", codigo);
                 using (SqlDataReader reader = command.ExecuteReader())
                 {
                     if (reader.HasRows)
                     {
                         while (reader.Read())
                         {
                             nota                = new NotaFiscal();
                             nota.Codigo         = reader.GetInt32(reader.GetOrdinal("Codigo"));
                             nota.ValorTotal     = reader.GetDecimal(reader.GetOrdinal("ValorTotal"));
                             nota.Cliente        = new Cliente();
                             nota.Cliente.Codigo = reader.GetInt32(reader.GetOrdinal("CodigoCliente"));
                             nota.Data           = reader.GetDateTime(reader.GetOrdinal("Data"));
                         }
                     }
                 }
             }
         }
         return(nota);
     }
     catch (Exception)
     {
         throw;
     }
 }
Example #18
0
        private NotaFiscal EmitirNotaFiscal(EmissaoNotaFiscalCommand pedido)
        {
            NotaFiscal nota = new NotaFiscal(99999,
                                             new Random().Next(Int32.MaxValue),
                                             pedido.NomeCliente,
                                             pedido.EstadoDestino,
                                             pedido.EstadoOrigem
                                             );

            foreach (PedidoItem itemPedido in pedido.ItensDoPedido)
            {
                NotaFiscalItem notaFiscalItem = new NotaFiscalItem(
                    pedido.EstadoOrigem,
                    pedido.EstadoDestino,
                    itemPedido.ValorItemPedido,
                    itemPedido.Brinde,
                    itemPedido.NomeProduto,
                    itemPedido.CodigoProduto);

                nota.AddItensDaNotaFiscal(notaFiscalItem);
            }

            return(nota);
        }
Example #19
0
        private bool VerificarNumeroNFDuplicado(NotaFiscal notaFiscal)
        {
            DataAccess dao = new DataAccess();
            Dictionary <string, string> lstParametros = new Dictionary <string, string>();
            bool existeNF = true;

            try
            {
                lstParametros.Add("@NumeroNota", notaFiscal.numeroNota.ToString());
                lstParametros.Add("@IdEmpresa", notaFiscal.idEmpresa.ToString());
                lstParametros.Add("@TipoNota", notaFiscal.tipoNota.ToString());

                using (DataSet ds = dao.Pesquisar("SP_NOTASFISCAIS_VERIFICARDUPLICIDADE", lstParametros))
                {
                    existeNF = ds.Tables[0].Rows.Count > 0;
                }
            }
            catch (Exception ex)
            {
                string parametrosSQL = string.Empty;
                parametrosSQL = helper.ConcatenarParametrosSQL(lstParametros);

                LogErro log = new LogErro()
                {
                    procedureSQL  = "SP_NOTASFISCAIS_VERIFICARDUPLICIDADE",
                    parametrosSQL = parametrosSQL,
                    mensagemErro  = ex.ToString()
                };

                bizLogErro.IncluirLogErro(log);

                throw ex;
            }

            return(existeNF);
        }
        public bool GerarArquivoXML(NotaFiscal notaFiscal)
        {
            try
            {
                var caminho = ConfigurationManager.AppSettings.Get("CaminhoArquivoXMLNotaFiscal");

                System.Xml.Serialization.XmlSerializer writer =
                    new System.Xml.Serialization.XmlSerializer(typeof(NotaFiscal),
                                                               extraTypes: new Type[] { typeof(NotaFiscalItem) });

                var path = caminho + "//NotaFiscal_" + notaFiscal.Serie + ".xml";
                using (FileStream file = System.IO.File.Create(path))
                {
                    writer.Serialize(file, notaFiscal);
                }

                return(true);
            }
            catch (Exception)
            {
            }

            return(false);
        }
Example #21
0
        public async Task AtualizarNotaFiscalCancelada(long codigoIntegracao)
        {
            if (!(Convert.ToBoolean(ConfigurationManager.AppSettings["IntegracaoSankhya_Habilitar"])))//TODO Temporário
            {
                return;
            }

            string union = string.Format(" UNION SELECT NUNOTA FROM TGFCAB_EXC ", codigoIntegracao);
            List <NotaFiscalCanceladaIntegracao> notasIntegracao = await IntegracaoSankhya.Instance.PreExecutarQuery <NotaFiscalCanceladaIntegracao>(inner : union);

            foreach (var notasInt in notasIntegracao)
            {
                var codNota = Convert.ToInt64(notasInt.NUNOTA);

                NotaFiscal notaFiscal = _uow.NotaFiscalRepository.ObterPorCodigoIntegracao(codNota);

                if (notaFiscal != null && notaFiscal.NotaFiscalStatus.IdNotaFiscalStatus == NotaFiscalStatusEnum.AguardandoRecebimento)
                {
                    notaFiscal.NotaFiscalStatus.IdNotaFiscalStatus = NotaFiscalStatusEnum.Cancelada;
                    _uow.NotaFiscalRepository.Update(notaFiscal);
                    _uow.SaveChanges();
                }
            }
        }
        /// <summary>
        /// Grava a nota fiscal
        /// </summary>
        /// <param name="notaFiscal">Dados da Nota fiscal</param>
        public void GravarNotaFiscal(NotaFiscal notaFiscal)
        {
            try
            {
                using (var scope = new TransactionScope())
                {
                    notaFiscal.Id = Gravar(notaFiscal);
                    NotaFiscalItemRepository notaFiscalItemRepository = new NotaFiscalItemRepository();

                    notaFiscalItemRepository.GravarItemNotaFiscal(notaFiscal.ItensDaNotaFiscal, notaFiscal.Id);

                    bool xmlGerado = GerarXml(notaFiscal);

                    if (xmlGerado)
                    {
                        scope.Complete();
                    }
                }
            }
            catch (Exception ex)
            {
                AddError(ex.Message);
            }
        }
Example #23
0
        public void GerarNotaFiscalTest()
        {
            NotaFiscalRepository notaFiscalRepository = new NotaFiscalRepository();

            //arrange
            Pedido pedido = new Pedido("SP", "RO", "Cliente A", _itens);

            pedido.AddItem(new PedidoItem("Produto A", Guid.NewGuid().ToString().Substring(0, 10), Math.Round(new Random().NextDouble(), 4), true));
            pedido.AddItem(new PedidoItem("Produto B", Guid.NewGuid().ToString().Substring(0, 10), Math.Round(new Random().NextDouble(), 4), false));
            pedido.AddItem(new PedidoItem("Produto C", Guid.NewGuid().ToString().Substring(0, 10), Math.Round(new Random().NextDouble(), 4), false));

            if (pedido.IsValid)
            {
                NotaFiscal notaFiscal = new NotaFiscal(pedido.NomeCliente, pedido.EstadoDestino, pedido.EstadoOrigem, _itens);

                if (notaFiscal.IsValid)
                {
                    //act
                    notaFiscalRepository.GravarNotaFiscal(notaFiscal);
                }
            }

            Assert.IsTrue(notaFiscalRepository.IsValid);
        }
        static void Main(string[] args)
        {
            NotaFiscalBuilder builder = new NotaFiscalBuilder(new List <IAcaoAposGerarNotaFiscal> {
                new EnviadorEmail(), new EnviadorSms(), new NotaFiscalDAO()
            });

            //Fluent Interface ou  Method Chain
            builder
            .ParaEmpresa("MFY IT")
            .ComCNPJ("123.456.789/0001-01")
            .ComItem(new ItemNotaFiscal("item 1", 100.00))
            .ComItem(new ItemNotaFiscal("item 2", 150.30))
            .NaDataAtual()
            .ComObservacoes("Teste com object builder");

            // builder.AdicionaAcao(new EnviadorEmail());
            // builder.AdicionaAcao(new EnviadorSms());
            // builder.AdicionaAcao(new NotaFiscalDAO());

            NotaFiscal nf = builder.Constroi();

            Console.WriteLine(nf.ValorBruto);
            Console.WriteLine(nf.ValorImposto);
        }
Example #25
0
        /// <summary>
        /// Calcula IPI de acordo com a regulamentação
        /// </summary>
        /// <param name="notaFiscal">Informações da Nota Fiscal</param>
        /// <param name="itemPedido">Item do Pedido</param>
        /// <param name="notaFiscalItem">Item da Nota Fiscal</param>
        private static void CalcularIcms(NotaFiscal notaFiscal, PedidoItem itemPedido, NotaFiscalItem notaFiscalItem)
        {
            if (notaFiscal.EstadoDestino == notaFiscal.EstadoOrigem)
            {
                notaFiscalItem.TipoIcms     = "60";
                notaFiscalItem.AliquotaIcms = 0.18;
            }
            else
            {
                notaFiscalItem.TipoIcms     = "10";
                notaFiscalItem.AliquotaIcms = 0.17;
            }
            if (notaFiscalItem.Cfop == "6.009")
            {
                notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido * 0.90; //redução de base
            }
            else
            {
                notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido;
            }
            notaFiscalItem.ValorIcms = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms;

            AplicarRegraBrindeIcms(itemPedido, notaFiscalItem);
        }
Example #26
0
        private static List <ProdutoViewModel> ConverterParaProdutoModel(NotaFiscal notaFiscal)
        {
            var produtos = new List <ProdutoViewModel>();

            foreach (var produto in notaFiscal.Produtos)
            {
                ProdutoViewModel produtoModel = new ProdutoViewModel
                {
                    AliquotaIcms  = produto.Imposto.AliquotaICMS,
                    AliquotaIpi   = produto.Imposto.AliquotaIPI,
                    BaseIcms      = produto.ValorTotal,
                    Codigo        = produto.CodigoProduto.ToString(),
                    Descricao     = produto.Descricao,
                    Quantidade    = produto.Quantidade,
                    ValorIcms     = produto.Imposto.ValorICMS,
                    ValorIpi      = produto.Imposto.ValorIPI,
                    ValorTotal    = produto.ValorTotal,
                    ValorUnitario = produto.ValorUnitario,
                };

                produtos.Add(produtoModel);
            }
            return(produtos);
        }
Example #27
0
        public int InsertRetornaId(NotaFiscal notaFiscal)
        {
            int retorno = 0;

            try
            {
                System.Data.IDbConnection objConexao;
                System.Data.IDbCommand    objCommand;
                string sql = "INSERT INTO nfi_notafiscal(nfi_numeroNotaFiscal, nfi_dataEmissao, nfi_valorTotal, pes_id) VALUES (?numero, ?dataEmissao, ?valorTotal, ?fornecedor); select last_insert_id();";

                objConexao = Mapped.Connection();
                objCommand = Mapped.Command(sql, objConexao);

                objCommand.Parameters.Add(Mapped.Parameter("?numero", notaFiscal.Numero));
                objCommand.Parameters.Add(Mapped.Parameter("?dataEmissao", notaFiscal.DataEmissao));
                objCommand.Parameters.Add(Mapped.Parameter("?valorTotal", notaFiscal.ValorTotal));
                objCommand.Parameters.Add(Mapped.Parameter("?fornecedor", notaFiscal.Fornecedor.pes_id));



                retorno = Convert.ToInt32(objCommand.ExecuteScalar());
                objConexao.Close();
                objCommand.Dispose();
                objConexao.Dispose();
            }
            catch (MySql.Data.MySqlClient.MySqlException ex)
            {
                retorno = -1;
            }
            catch (Exception)
            {
                retorno = -2;
            }

            return(retorno);
        }
        public void Emitir_NotaFiscal_Sem_Desconto_Estado_Destino_Sudeste()
        {
            NotaFiscal nf = new NotaFiscal();

            Pedido pedido = new Pedido();

            pedido.EstadoOrigem  = "SP";
            pedido.EstadoDestino = "SE";
            pedido.NomeCliente   = "teste1";


            pedido.ItensDoPedido.Add(
                new PedidoItem()
            {
                Brinde          = true,
                CodigoProduto   = "100",
                NomeProduto     = "Produto1",
                ValorItemPedido = 10
            });

            nf.EmitirNotaFiscal(pedido);

            Assert.AreEqual(nf.ItensDaNotaFiscal[0].Desconto, 0);
        }
        public void Emitir_NotaFiscal_Aliquota_Valor_IPI_100()
        {
            NotaFiscal nf = new NotaFiscal();

            Pedido pedido = new Pedido();

            pedido.EstadoOrigem  = "SP";
            pedido.EstadoDestino = "RO";
            pedido.NomeCliente   = "teste1";


            pedido.ItensDoPedido.Add(
                new PedidoItem()
            {
                Brinde          = false,
                CodigoProduto   = "100",
                NomeProduto     = "Produto1",
                ValorItemPedido = 10
            });

            nf.EmitirNotaFiscal(pedido);

            Assert.AreEqual(nf.ItensDaNotaFiscal[0].ValorIPI, 100);
        }
        public void Emitir_NotaFiscal_Estado_Origem_Igual_Estado_Destino_AliquotaIcms_Igual_18()
        {
            NotaFiscal nf = new NotaFiscal();

            Pedido pedido = new Pedido();

            pedido.EstadoOrigem  = "SP";
            pedido.EstadoDestino = "SP";
            pedido.NomeCliente   = "teste1";


            pedido.ItensDoPedido.Add(
                new PedidoItem()
            {
                Brinde          = true,
                CodigoProduto   = "100",
                NomeProduto     = "Produto1",
                ValorItemPedido = 10
            });

            nf.EmitirNotaFiscal(pedido);

            Assert.AreEqual(nf.ItensDaNotaFiscal[0].AliquotaIcms, 0.18);
        }
        public void Emitir_NotaFiscal_Origem_SP_Destino_RO()
        {
            NotaFiscal nf = new NotaFiscal();

            Pedido pedido = new Pedido();

            pedido.EstadoOrigem  = "SP";
            pedido.EstadoDestino = "RO";
            pedido.NomeCliente   = "teste1";


            pedido.ItensDoPedido.Add(
                new PedidoItem()
            {
                Brinde          = true,
                CodigoProduto   = "100",
                NomeProduto     = "Produto1",
                ValorItemPedido = 200
            });

            nf.EmitirNotaFiscal(pedido);

            Assert.AreEqual(nf.ItensDaNotaFiscal[0].Cfop, "6.006");
        }
        public static NotaFiscal Criar(XElement xml, Usuario usuario = null)
        {
            var infNFe = xml.Descendants().Elements(xmlns + "infNFe").First();
            var ide = infNFe.Element(xmlns + "ide");
            var total = infNFe.Element(xmlns + "total");
            var ICMSTot = total.Element(xmlns + "ICMSTot");

            var notaFiscal = new NotaFiscal();
            notaFiscal.ChaveAcesso = infNFe.Attribute("Id").Value;

            notaFiscal.CodigoUF = ParseToString(ide.Element(xmlns + "cUF"), 0);
            notaFiscal.Codigo = ParseToString(ide.Element(xmlns + "cNF"), 0);
            notaFiscal.Numero = ParseToString(ide.Element(xmlns + "nNF"), 0);
            notaFiscal.Modelo = ParseToString(ide.Element(xmlns + "mod"), 55);
            notaFiscal.Serie = ParseToString(ide.Element(xmlns + "serie"), 0);
            notaFiscal.TipoNF = ParseToString(ide.Element(xmlns + "tpNF"), 0);
            notaFiscal.Ambiente = ParseToString(ide.Element(xmlns + "tpAmb"), 0);
            notaFiscal.Operacao = ParseToString(ide.Element(xmlns + "natOp"), 0);
            notaFiscal.Pagamento = ParseToString(ide.Element(xmlns + "indPag"), 0);
            notaFiscal.TipoEmissao = ParseToString(ide.Element(xmlns + "tpEmis"), 0);
            notaFiscal.Finalidade = ParseToString(ide.Element(xmlns + "finNFe"), 0);
            notaFiscal.Processo = ParseToString(ide.Element(xmlns + "procEmi"), 0);
            notaFiscal.VersaoProcesso = ParseToString(ide.Element(xmlns + "verProc"), 0);
            notaFiscal.Digito = ParseToString(ide.Element(xmlns + "cDV"), 0);
            notaFiscal.DataEmissao = Convert.ToDateTime(ParseToString(ide.Element(xmlns + "dEmi"), DateTime.Today));
            notaFiscal.DataEntradaSaida = Convert.ToDateTime(ParseToString(ide.Element(xmlns + "dSaiEnt"), DateTime.Today));
            notaFiscal.HoraEntradaSaida = ParseToString(ide.Element(xmlns + "hSaiEnt"), "00:00:00");
            notaFiscal.CnpjCpfEmitente = FabricaParticipante.CriarEmitente(xml).CnpjCpf;
            notaFiscal.CnpjCpfDestinatario = FabricaParticipante.CriarDestinatario(xml).CnpjCpf;
            notaFiscal.ValorNotaFiscal = ParseToDouble(ICMSTot.Element(xmlns + "vNF"), 0);
            notaFiscal.Itens = FabricaItemNotaFiscal.Criar(xml);

            notaFiscal.Usuario = usuario;

            return notaFiscal;
        }
Example #33
0
        private NotaFiscal MontaNotaFiscal(Model.Comanda.Comanda comanda, int descontoCerveja)
        {
            NotaFiscal notaFiscal = new NotaFiscal();
            double     valorTotal = 0;

            foreach (var item in comanda.Itens)
            {
                notaFiscal.Item.Add(item);
                valorTotal = item.Preco;
            }

            notaFiscal.ValorTotal = valorTotal;

            if (descontoCerveja != 0)
            {
                notaFiscal.Desconto = descontoCerveja * 2;
            }
            else
            {
                notaFiscal.Desconto = 0;
            }

            return(notaFiscal);
        }
Example #34
0
        internal static string GerarXmlLoteNFe(NotaFiscal notaFiscal, string nFeNamespaceName)
        {
            var ide     = GetIdentificacao(notaFiscal);
            var emit    = GetEmitente(notaFiscal);
            var det     = GetDetalhamentoProdutos(notaFiscal);
            var pag     = GetPagamento(notaFiscal);
            var transp  = GetTransporte(notaFiscal);
            var infAdic = GetInformacaoAdicional(notaFiscal);
            var total   = GetTotal(notaFiscal);

            var infNFe = new TNFeInfNFe();

            if (notaFiscal.Destinatario != null)
            {
                var dest = GetDestinatario(notaFiscal);
                infNFe.dest = dest;
            }

            infNFe.ide     = ide;
            infNFe.emit    = emit;
            infNFe.det     = det;
            infNFe.pag     = pag;
            infNFe.transp  = transp;
            infNFe.infAdic = infAdic;
            infNFe.total   = total;
            infNFe.versao  = notaFiscal.VersaoLayout;
            infNFe.Id      = "NFe" + notaFiscal.Identificacao.Chave;

            var nfe = new TNFe();

            nfe.infNFe = infNFe;

            if (notaFiscal.Identificacao.Modelo == Modelo.Modelo65)
            {
                nfe.infNFeSupl = new TNFeInfNFeSupl
                {
                    qrCode = "", urlChave = "http://dec.fazenda.df.gov.br/ConsultarNFCe.aspx"
                }
            }
            ;
            else
            {
                nfe.infNFeSupl = null;
            }

            var nfeArray = new TNFe[1];

            nfeArray[0] = nfe;

            var lote = new TEnviNFe();

            lote.idLote  = "999999";              //qual a regra pra gerar o id?
            lote.indSinc = TEnviNFeIndSinc.Item1; //apenas uma nota no lote
            lote.versao  = "4.00";
            lote.NFe     = nfeArray;

            var parametroXml = Serialize(lote, nFeNamespaceName);

            parametroXml = parametroXml.Replace("<NFe>", "<NFe xmlns=\"http://www.portalfiscal.inf.br/nfe\">");

            return(parametroXml);
        }
Example #35
0
 private void obterNotaFiscal()
 {
     notaFiscal = new NotaFiscal();
     //notaFiscal.idTransacao = Convert.ToInt32(txtNumEntrada.Text);
     notaFiscal.idTransacao = idEntrada;
     notaFiscal.dataHora = Convert.ToDateTime(txtDataNotaFiscal.Text);
     notaFiscal.numero = txtNotaFiscal.Text;
 }
Example #36
0
 public void SetUp()
 {
     _notaFiscal            = new NotaFiscal();
     _notaFiscalRepositorio = new NotaFiscalRepositorioSql();
 }
Example #37
0
 private void PersirtindoNoBanco(NotaFiscal.NotaFiscal nf)
 {
     Console.WriteLine("Salvando nota fiscal na base de dados");
 }
        private NotaFiscal NotaFiscalDevolucao(NovaNotaRequisicao requisicao, DateTime dataUpload)
        {
            var clinica = _clinicaRepositorio.ObterPor(requisicao.CodigoDaClinica);
            var responsavel = _funcionarioRepositorio.ObterPor(requisicao.CodigoDoResponsavel);
            var programa = _programaRepositorio.ObterPor(requisicao.CodigoDoPrograma);
            var nota = new NotaFiscal
            {
                Clinica = clinica,
                Responsavel = responsavel,
                Valor = requisicao.Valor,
                Numero = requisicao.Numero,
                Data = requisicao.Data,
                DataRecebimento = requisicao.DataRecebimento,
                Arquivo = new Arquivo(requisicao.DescricaoDoArquivo, requisicao.NomeDoArquivo, dataUpload),
                Programa = programa
            };

            //IMPLEMENTAR VINCULO NF DEVOLVIDA COM INFUSAO.

            //foreach (var infusaoAssociar in requisicao.Infusoes)
            //{
            //    var infusao = _infusaoRepositorio.ObterPor(infusaoAssociar.Codigo);

            //    infusao.EmAberto();
            //    if (infusaoAssociar.Glosar)
            //        infusao.Glosar();

            //    nota.Infusoes.Add(infusao);
            //}

            return nota;
        }
        private NotaFiscal NotaFiscal(NovaNotaRequisicao requisicao, DateTime dataUpload)
        {
            var clinica = _clinicaRepositorio.ObterPor(requisicao.CodigoDaClinica);
            var responsavel = _funcionarioRepositorio.ObterPor(requisicao.CodigoDoResponsavel);
            var programa = _programaRepositorio.ObterPor(requisicao.CodigoDoPrograma);
            var nota = new NotaFiscal
                           {
                               Clinica = clinica,
                               Responsavel = responsavel,
                               Valor = requisicao.Valor,
                               Numero = requisicao.Numero,
                               Data = requisicao.Data,
                               DataRecebimento = requisicao.DataRecebimento,
                               Arquivo = new Arquivo(requisicao.DescricaoDoArquivo, requisicao.NomeDoArquivo, dataUpload),
                               Programa = programa
                           };

            foreach (var infusaoAssociar in requisicao.Infusoes)
            {
                var infusao = _infusaoRepositorio.ObterPor(infusaoAssociar.Codigo);

                infusao.EmAberto();
                if (infusaoAssociar.Glosar)
                    infusao.Glosar();

                nota.Infusoes.Add(infusao);
            }
            return nota;
        }
Example #40
0
 public void ExecutarAcao(NotaFiscal.NotaFiscal nf)
 {
     this.PersirtindoNoBanco(nf);
 }
        public NotaFiscal Gera(Fatura fatura)
        {
            double valor = fatura.ValorMensal;

            NotaFiscal nf = new NotaFiscal(valor, ImpostoSimplesSobreO(valor));

            email.EnviaEmail(nf);
            dao.Persiste(nf);

            return nf;
        }