Mostrando postagens com marcador Nfe. Mostrar todas as postagens
Mostrando postagens com marcador Nfe. Mostrar todas as postagens

terça-feira, 3 de maio de 2016

Uma Ajuda.

Olá a Todos!!

Segue, no minimo interessante e um apoio para construção de algum programa:

http://temdetudoprogramas.com/item/Codigo-Fontes-em-Java-do-sistema-de--Nota-Fiscal-Eletronica.html

abraço a todos.


quinta-feira, 29 de novembro de 2012

Nota Técnica 2011 Cancelamento da NF da Nota Fiscal Eletrônica Manual de Integração 2011/006 NF-e como Evento Versão 1.00a Março 2012 - Contribuinte


Para ajudar quem está se preparando para  a nota de cancelamento como evendo
Gerando o arquivo em C#



///

        /// gera o arquivo xml para envio no evento
        ///
        /// diretorio a ser salvo o arquivo
        /// codigo da empresa
        /// tipo ambiente nfe
        /// numero da nota
        /// serie nfe
        /// vesão nfe
        /// justificativa digitada
        /// tipo do evento exemplo Carta de Correcao ou Cancelamento
        /// prefixo inicial do nome do arquivo exemplo CCE (Carta de Correcao) ou CNFE (cancelamento)
        private void GeraArquivoXmlEvento(string DiretorioEnviar, int idEmpresa
                    , int tpAmb, string NumNota, string Serie, string VersaoNF
                    , string Justificativa, string Evento, string prefixoInicialArquivo)
        {
            UTF8Encoding _utf8 = new UTF8Encoding();
            DataTable _infoNfe = new DataTable(); //informações da nfe
            int _seqEvento = 0;
            string _cnpjEmi = string.Empty, _caminhoxml = string.Empty, _tipoEvento = string.Empty;
            try
            {
                //retorna a nota fiscal
                _infoNfe =retorna um datatable contendo a nota fiscal;
                //formata cnpj
                _cnpjEmi = pega o cnpj do emitente da nota.ToString().Replace(".", "").Replace("-", "").Replace("/", "");
                //prepara caminho
                _caminhoxml = DiretorioEnviar + @"\" + prefixoInicialArquivo + _infoNfe.Rows[0]["chNFe"].ToString() + ".xml";
                //busca o tipo do evento
                _tipoEvento = TipoEvento(Evento);
                if (File.Exists(_caminhoxml))
                {
                    File.Delete(_caminhoxml);
                }

                int _i = RetornaSeqEvento(_infoNfe.Rows[0]["chNFe"].ToString(),Evento);
                _seqEvento = _i > 0 ? _i : 1;

                XmlTextWriter _xml = new XmlTextWriter(_caminhoxml, _utf8);

                _xml.WriteStartDocument();

                _xml.WriteStartElement("envEvento");
                if (tpAmb == 1)
                {
                    _xml.WriteStartAttribute("xmlns");
                    _xml.WriteString("http://www.portalfiscal.inf.br/nfe");
                    _xml.WriteEndAttribute();
                    _xml.WriteStartAttribute("versao");
                    _xml.WriteString("1.00");
                    _xml.WriteEndAttribute();
                }
                _xml.WriteStartElement("idLote");//num lote
                _xml.WriteString(_infoNfe.Rows[0]["idlote"].ToString());// numero lote
                _xml.WriteEndElement();

                _xml.WriteStartElement("evento");
                _xml.WriteStartAttribute("xmlns");
                _xml.WriteString("http://www.portalfiscal.inf.br/nfe");
                _xml.WriteEndAttribute();
                _xml.WriteStartAttribute("versao");
                _xml.WriteString("1.00");
                _xml.WriteEndAttribute();
                _xml.WriteStartElement("infEvento");
                _xml.WriteStartAttribute("Id");
                _xml.WriteString("ID" + _tipoEvento + _infoNfe.Rows[0]["chNFe"].ToString() + _seqEvento.ToString("00"));//
                _xml.WriteEndAttribute();
                #region itensInternos

                _xml.WriteStartElement("cOrgao");//num uf ibge
                _xml.WriteString(_infoNfe.Rows[0]["cUF"].ToString());// numero da UF ibge
                _xml.WriteEndElement();

                _xml.WriteStartElement("tpAmb");//num uf ibge
                _xml.WriteString(tpAmb.ToString());// numero da UF ibge
                _xml.WriteEndElement();

                _xml.WriteStartElement("CNPJ");//cnpj emitente
                _xml.WriteString(_cnpjEmi);//
                _xml.WriteEndElement();

                _xml.WriteStartElement("chNFe");//Chave da Nfe 44 posiçoes (nfe antes) NFexxx...
                _xml.WriteString(_infoNfe.Rows[0]["chNFe"].ToString());//
                _xml.WriteEndElement();

                _xml.WriteStartElement("dhEvento");//Serie NFe
                _xml.WriteString(string.Format("{0:yyyy-MM-ddTHH:mm:sszzz}", DateTime.Now));//
                _xml.WriteEndElement();

                _xml.WriteStartElement("tpEvento");//
                _xml.WriteString(_tipoEvento);//
                _xml.WriteEndElement();

                _xml.WriteStartElement("nSeqEvento");//
                _xml.WriteString(_seqEvento.ToString());//
                _xml.WriteEndElement();

                _xml.WriteStartElement("verEvento");//
                _xml.WriteString("1.00");// fixo por hora
                _xml.WriteEndElement();

                _xml.WriteStartElement("detEvento");//abre tag da descrição do envento
                _xml.WriteStartAttribute("versao");//versão
                _xml.WriteString("1.00");// fixo por hora
                _xml.WriteEndAttribute();

                _xml.WriteStartElement("descEvento");//descrição do tipo do envento
                _xml.WriteString(Evento);//
                _xml.WriteEndElement();
//define a mesnagem e campos conforme evento
                switch (Evento)
                {
                    case "Carta de Correcao":
                        /// a sequencia de um mesmo eventdo de cce não pode ser maior que 20 correções
                        if (_seqEvento < 20)
                        {
                            _xml.WriteStartElement("xCorrecao");//Justividativa escrita da cce
                            _xml.WriteString(_comp.RemoveSpecialCharactersXml(Justificativa, true));//
                            _xml.WriteEndElement();

                            _xml.WriteStartElement("xCondUso");//Justividativa escrita da cce
                            _xml.WriteString("A Carta de Correcao e disciplinada pelo paragrafo 1o-A do art. 7o do Convenio S/N," +
                                             " de 15 de dezembro de 1970 e pode ser utilizada para regularizacao de erro ocorrido " +
                                             "na emissao de documento fiscal, desde que o erro nao esteja relacionado com: I - as " +
                                             "variaveis que determinam o valor do imposto tais como: base de calculo, aliquota, " +
                                             "diferenca de preco, quantidade, valor da operacao ou da prestacao; II - a correcao de " +
                                             "dados cadastrais que implique mudanca do remetente ou do destinatario; III - a data de emissao ou de saida.");//
                            _xml.WriteEndElement();
                        }
                        else
                        {
                            throw new Exception("Sequência de correções ultrapassou o limite de 20 para esta nota");
                        }

                        break;
                    case "Cancelamento":
                        _xml.WriteStartElement("nProt");//Numero do protocolo quando aceita a nfe no sefaz
                        _xml.WriteString(_infoNfe.Rows[0]["nProt"].ToString());//
                        _xml.WriteEndElement();

                        _xml.WriteStartElement("xJust");//Justividativa escrita do cancelmaento
                        _xml.WriteString(Justificativa);//
                        _xml.WriteEndElement();
                        break;
                }

                #endregion
                _xml.WriteEndElement();//detEvento
                _xml.WriteEndElement();//infEvento
                _xml.WriteEndElement();//Evento
                _xml.WriteEndElement();//envEvento

                _xml.Close();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                _infoNfe.Dispose();
            }
        }

Comentem se usarem...e melhorem também...
att
Fernando

terça-feira, 20 de março de 2012

Deletar .pdf ou .gif de um diretório


///


        /// deleta registros .pdf e .gif gerados para o envio das danfes aos clientes via email
        ///

        ///
caminho do diretório
        public static void DeletaPdfGif(string Diretorio)
        {
            DirectoryInfo d;
            try
            {
                //limpar arquivos no CaminhoXmlTemp com data < 3 meses da data de hoje;
                d = new DirectoryInfo(Diretorio);
                foreach (FileInfo item in d.GetFiles("*.pdf"))
                {                  
                    item.Delete();
                }
                foreach (FileInfo item in d.GetFiles("*.gif"))
                {
                    item.Delete();
                }
            }
            catch (Exception ex)
            {
                throw (ex);
            }
            finally
            {
                d = null;
            }
        }

terça-feira, 17 de janeiro de 2012

Gerar Arquivo Xml Inutilizacao NFE C#


///


        /// gera o arquivo xml para solicitar Inutilização da nfe., você precisara enviar algumas informações ///criando uma função que retorna o datatable com os dados necessários para gerar o arquivo.
        ///

        ///

        ///

        ///

        ///

        ///

        public void GerarArquivoXmlInutilizacao(string DiretorioEnviarInut,
            int idEmpresa, string NumNota, string Serie, string Justificativa)
        {
            UTF8Encoding _utf8 = new UTF8Encoding();
            string _cnpjEmi = string.Empty;

            DataTable _infoNfe = new DataTable(); //informações da nfe
            try
            {
                _infoNfe = this.RetornarNfeCabecVisCom(idEmpresa, NumNota, Serie);
                _cnpjEmi = _infoNfe.Rows[0]["CNPJ"].ToString().Replace(".", "").Replace("-", "").Replace("/", "");

                XmlTextWriter _xml = new XmlTextWriter(DiretorioEnviarInut +
                                                @"\NFe" + _cnpjEmi +
                                                _infoNfe.Rows[0]["sc_numnota"].ToString() +
                                                _infoNfe.Rows[0]["sc_serie"].ToString(), _utf8);
                _xml.WriteStartDocument();

                _xml.WriteStartElement("inutNFe");
                _xml.WriteStartAttribute("xsi:schemaLocation");
                _xml.WriteString("http://www.portalfiscal.inf.br/nfe inutNFe_v2.00.xsd");
                _xml.WriteEndAttribute();
                _xml.WriteStartAttribute("xmlns:xsi");
                _xml.WriteString("http://www.w3.org/2001/XMLSchema-instance");
                _xml.WriteEndAttribute();
                _xml.WriteStartAttribute("versao");
                _xml.WriteString("2.0");
                _xml.WriteEndAttribute();
                _xml.WriteStartAttribute("xmlns");
                _xml.WriteString("http://www.portalfiscal.inf.br/nfe");
                _xml.WriteEndAttribute();

                    #region infInut
                    _xml.WriteStartElement("infInut");
                    _xml.WriteStartAttribute("Id");
                    _xml.WriteString("ID" + _infoNfe.Rows[0]["SC_IDNFE"].ToString());
                    #region internos
                        _xml.WriteStartElement("tpAmb");//num uf ibge
                        _xml.WriteString(_infoNfe.Rows[0][""].ToString());// numero da UF ibge
                        _xml.WriteEndElement();

                        _xml.WriteStartElement("xServ");//cnpj emitente
                        _xml.WriteString("INUTILIZAR");//
                        _xml.WriteEndElement();

                        _xml.WriteStartElement("UF");//num uf ibge
                        _xml.WriteString(_infoNfe.Rows[0]["cUF"].ToString());// numero da UF ibge
                        _xml.WriteEndElement();

                        _xml.WriteStartElement("ano");//ano da emissao da nota
                        _xml.WriteString(Convert.ToDateTime(_infoNfe.Rows[0]["dEmi"]).ToString("yy"));//
                        _xml.WriteEndElement();

                        _xml.WriteStartElement("CNPJ");//cnpj emitente
                        _xml.WriteString(_infoNfe.Rows[0]["CNPJ"].ToString());//
                        _xml.WriteEndElement();

                        _xml.WriteStartElement("mod");//Modelo nota
                        _xml.WriteString(_infoNfe.Rows[0][""].ToString());//
                        _xml.WriteEndElement();

                        _xml.WriteStartElement("serie");//Serie da nfe
                        _xml.WriteString(Justificativa);//
                        _xml.WriteEndElement();

                        _xml.WriteStartElement("nNFIni");//Numero nota inicio
                        _xml.WriteString(_infoNfe.Rows[0]["nNF"].ToString());//sem formatação
                        _xml.WriteEndElement();

                        _xml.WriteStartElement("nNFFin");//Numero numero nota fim
                        _xml.WriteString(_infoNfe.Rows[0]["nNF"].ToString());//  sem formatação
                        _xml.WriteEndElement();

                        _xml.WriteStartElement("xJust");//Justificativa escrita da inutilização
                        _xml.WriteString(Justificativa);//
                        _xml.WriteEndElement();
                    #endregion
                    _xml.WriteEndElement();//infInut

                    #endregion

                _xml.WriteEndElement();//inutNFe

                _xml.Close();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                _infoNfe.Dispose();
            }
        }

segunda-feira, 24 de outubro de 2011

Report Viewer Pdf

Olá a todos.

Neste projeto, é passado uma dataset dinamicamente, onde no reportviewe, ira preencher os produtos, o cabeçalho e demais itens são preenchidos por parametros configurados no reportviewer, e logo depois converte para pdf.

string a = Server.MapPath("Logo/Logo.jpg");
                string b = Server.MapPath("~/Temp/");
                ReportViewer1.LocalReport.EnableExternalImages = true;
                ReportViewer1.LocalReport.DataSources.Clear();
                ReportViewer1.LocalReport.SetParameters(_danfe.RetornaParametrosRptWEB(Convert.ToString(Session["XMLNFe"]), out _DsNFe, Server.MapPath("Logo/Logo.jpg"), Server.MapPath("~/Temp/")));
                ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DsNFe_DetalheNfe", _DsNFe.Tables[0]));
                //ReportViewer1.LocalReport.Refresh();
//converte para pdf.
                byte[] exportBytes = ReportViewer1.LocalReport.Render("PDF", null, out mimeType, out  encoding, out  fileNameExtension, out  streamids, out  warnings);
                HttpContext.Current.Response.Buffer = true;
                HttpContext.Current.Response.Clear();
                HttpContext.Current.Response.ContentType = mimeType;
                HttpContext.Current.Response.AddHeader("content-disposition", ("inline; filename=ExportedReport." + fileNameExtension));
                HttpContext.Current.Response.BinaryWrite(exportBytes);
                HttpContext.Current.Response.Flush();

segunda-feira, 16 de maio de 2011

C# NFe Danfe, Retornando DataSet de Produtos

Olá!

Este procedimento abaixo retorna um dataset com os produtos pronto para serem usados na geração da Danfe, ou seja, já retorna no formato correto para preencher o grid de uma Danfe feita por exemplo com o Report Viwer.
Ele recebe o arquivo xml, e varre as tags gerando um Ds com as mesmas.

private DataSet GeraDsProd(string caminhoXml)
        {
            DataSet _ds = new DataSet();
            DataTable _dt = new DataTable("DetalheNFe");
            //Instancia doc com o xml
            XmlDocument doc = new XmlDocument();
            try
            {
                //le o xml no caminho correto
                doc.Load(caminhoXml);
                //le o elemento a ser trabalhado
                XmlNodeList No = doc.GetElementsByTagName("prod");
                //cria as colunas para serem colocandas no dataset.
                _dt.Columns.Add("cProd");
                _dt.Columns.Add("xProd");
                _dt.Columns.Add("NCM");
                _dt.Columns.Add("CFOP");
                _dt.Columns.Add("uCom");
                _dt.Columns.Add("qCom");
                _dt.Columns.Add("vUnCom");
                _dt.Columns.Add("vProd");
                _dt.Columns.Add("vUnTrib");
                _dt.Columns.Add("CST");
                _dt.Columns.Add("vBC");
                _dt.Columns.Add("pICMS");
                _dt.Columns.Add("vICMS");
                _dt.Columns.Add("vIPI");
                _dt.Columns.Add("pIPI");
                //carrega o dataset
                _ds.Tables.Add(_dt);
                //Leitura dos nos selecionados
                foreach (XmlNode book in No)
                {
                    //Criando Registros
                    DataRow _row;
                    _row = _dt.NewRow();
                    _dt.Rows.Add(_row);
                    for (int i = 0; i < book.ChildNodes.Count; i++)
                    {
                        //Verifica o nome do no correspondente a ser colocado na dataset
                        switch (book.ChildNodes.Item(i).Name)
                        {
                            case "cProd":
                                _row["cProd"] = book.ChildNodes.Item(i).InnerXml;
                                break;
                            case "xProd":
                                _row["xProd"] = book.ChildNodes.Item(i).InnerXml;
                                break;
                            case "NCM":
                                _row["NCM"] = book.ChildNodes.Item(i).InnerXml;
                                break;
                            case "CFOP":
                                _row["CFOP"] = book.ChildNodes.Item(i).InnerXml;
                                break;
                            case "uCom":
                                _row["uCom"] = book.ChildNodes.Item(i).InnerXml;
                                break;
                            case "qCom":
                                _row["qCom"] = string.Format("{0:d}", (book.ChildNodes.Item(i).InnerXml));
                                break;
                            case "vUnCom":
                                _row["vUnCom"] = string.Format("{0:d}", book.ChildNodes.Item(i).InnerXml);
                                break;
                            case "vProd":
                                _row["vProd"] = string.Format("{0:d}", (book.ChildNodes.Item(i).InnerXml));
                                break;
                            case "vUnTrib":
                                _row["vUnTrib"] = string.Format("{0:d}", (book.ChildNodes.Item(i).InnerXml));
                                break;
                        }
                    }
                    _row["vBC"] = "0.00";
                    _row["pICMS"] = "0.00";
                    _row["vICMS"] = "0.00";
                    _row["vIPI"] = "0.00";
                    _row["pIPI"] = "0.00";
                    if (book.NextSibling.Name.ToString() == "imposto")
                    {
                        for (int i = 0; i < book.NextSibling.ChildNodes.Count; i++)
                        {
                            switch (book.NextSibling.ChildNodes.Item(i).Name.ToString())
                            {
                                case "ICMS":
                                    //verifica quantos filhos de icms estao dentro do pai
                                    for (int ii = 0; ii < book.NextSibling.ChildNodes.Item(i).ChildNodes.Count; ii++)
                                    {
                                        for (int iii = 0; iii < book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Count; iii++)
                                        {
                                            switch (book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).Name.ToString())
                                            {
                                                case "CSOSN":
                                                    //if (_dsAux.Tables[0].Columns.Contains("CST"))
                                                    //{
                                                    _row["CST"] = String.Format("{0:000}", Convert.ToInt32(book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml));
                                                    //}
                                                    break;
                                                case "CST":
                                                    //if (_dsAux.Tables[0].Columns.Contains("CST"))
                                                    //{
                                                    _row["CST"] = String.Format("{0:000}", Convert.ToInt32(book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml));
                                                    //}
                                                    break;
                                                case "vBC":
                                                    if (book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml != string.Empty)
                                                    {
                                                        _row["vBC"] = book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml;
                                                    }
                                                    break;
                                                case "pICMS":
                                                    if (book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml != string.Empty)
                                                    {
                                                        _row["pICMS"] = book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml;
                                                    }
                                                    break;
                                                case "vICMS":
                                                    if (book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml != string.Empty)
                                                    {
                                                        _row["vICMS"] = book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml;
                                                    }
                                                    break;
                                            }
                                        }
                                    }
                                    break;
                                case "IPI":
                                    //verifica quantos filhos de icms estao dentro do pai
                                    for (int ii = 0; ii < book.NextSibling.ChildNodes.Item(i).ChildNodes.Count; ii++)
                                    {
                                        for (int iii = 0; iii < book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Count; iii++)
                                        {
                                            switch (book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).Name.ToString())
                                            {
                                                case "vIPI":
                                                    if (book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml != string.Empty)
                                                    {
                                                        _row["vIPI"] = book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml;
                                                    }
                                                    break;
                                                case "pIPI":
                                                    if (book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml != string.Empty)
                                                    {
                                                        _row["pIPI"] = book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml;
                                                    }
                                                    break;
                                            }
                                        }
                                    }
                                    break;
                            }
                        }//for imposto
                    }//if imposto
                }
                return _ds;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

Grande Abraço a Todos

Fernando Valota