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();
            }
        }