Пример #1
0
        public XmlDocument Consulta_Cadastro_Cliente(string sEstado, string sEstado_Cliente, string sIE_Cliente, string sCpfCnpj_Cliente, int iEmpresa)
        {
            NFe.Dados_DocumentosNFe doc = new Dados_DocumentosNFe(Tipos_Servicos.NfeConsultaCadastro, sEstado);
            cadconsultacadastro4.CadConsultaCadastro4 nfe = new cadconsultacadastro4.CadConsultaCadastro4();

            //-- Busca a URL correta para trabalalho de acordo com o Estado e o nome do serviço
            nfe.Url = doc.Url_WebService;

            //-- Encontra o serial number do Certificado e adiciona ao web service.
            nfe.ClientCertificates.Add(Funcoes_NFe.Certificado_Digital(iEmpresa));

            //-- Cria o XMl para envio.
            StringBuilder sb = new StringBuilder();

            sb.Append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?><consCad><versao>1.01</versao><infCons><xServ>CONS-CAD</xServ><UF>SP</UF><CNPJ>62461140000117</CNPJ></infCons></consCad>");

            System.IO.StreamWriter sw = new System.IO.StreamWriter(@"c:\teste.xml");
            sw.Write(sb.ToString());
            sw.Close();
            sw.Dispose();

            CompSoft.NFe.ValidadorXMLClass valida = new ValidadorXMLClass();
            valida.ValidarXML(@"c:\teste.xml", @"F:\NFe\Schemas\consCad_v1.01.xsd");

            //-- Verifica status do serviço
            XmlNode sRetornoXML = nfe.consultaCadastro(Funcoes_NFe.StringXmlToXMLDocument(sb.ToString()).DocumentElement);

            XmlDocument xml = Funcoes_NFe.StringXmlToXMLDocument(sRetornoXML.OuterXml);

            return(xml);
        }
Пример #2
0
        /// <summary>
        /// Consulta situação atual da NF-e na Secretária da Fazenda.
        /// </summary>
        /// <param name="daNFe">Dados_Arquivo_NFe com todos os paramentros necessários para NF-e</param>
        /// <returns>XmlDocument com o resultado da pesquisa.</returns>
        public XmlDocument Consulta_NFe(Dados_Arquivo_NFe daNFe)
        {
            System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
            NFe.Dados_DocumentosNFe doc = new Dados_DocumentosNFe(Tipos_Servicos.NfeConsultaProtocolo, daNFe.Estado_Emissor);
            nfeconsultaprotocolo4.NFeConsultaProtocolo4 nfe = new nfeconsultaprotocolo4.NFeConsultaProtocolo4();

            //-- Busca a URL correta para trabalalho de acordo com o Estado e o nome do serviço
            nfe.Url = doc.Url_WebService;

            //-- Encontra o serial number do Certificado e adiciona ao web service.
            nfe.ClientCertificates.Add(Funcoes_NFe.Certificado_Digital(daNFe.Empresa));

            //-- Cria o XMl para envio.
            StringBuilder sb = new StringBuilder();

            sb.Append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?><consSitNFe xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=");
            sb.Append('"');
            sb.Append(doc.Versao_Dados);
            sb.Append('"');
            sb.Append("><tpAmb>");
            sb.Append((int)daNFe.Ambiente);
            sb.Append("</tpAmb><xServ>CONSULTAR</xServ><chNFe>");
            sb.Append(daNFe.Chave_Acesso);
            sb.Append("</chNFe></consSitNFe>");

            //-- Verifica status do serviço
            XmlNode     sRetornoXML = nfe.nfeConsultaNF(Funcoes_NFe.StringXmlToXMLDocument(sb.ToString()).DocumentElement);
            XmlDocument xml         = Funcoes_NFe.StringXmlToXMLDocument(sRetornoXML.OuterXml);

            return(xml);
        }
Пример #3
0
        /// <summary>
        /// Envia arquivo de lote de NF-e
        /// </summary>
        /// <param name="daNFe">classe que contem todos os parametros do arquivo XML</param>
        /// <returns>XMLDocument com o recibo de envio</returns>
        public XmlDocument Enviar_LoteNFe(Dados_Arquivo_NFe daNFe)
        {
            NFe.Dados_DocumentosNFe doc = new Dados_DocumentosNFe(Tipos_Servicos.NfeRecepcao, daNFe.Estado_Emissor);

            var certificado = Funcoes_NFe.Certificado_Digital(daNFe.Empresa);

            System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
            autorizeNFE.NFeAutorizacao4 nfe = new autorizeNFE.NFeAutorizacao4();
            nfe.Url = doc.Url_WebService; //--"https://nfe.fazenda.sp.gov.br/ws/nfeautorizacao4.asmx";
            nfe.ClientCertificates.Add(certificado);
            nfe.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12;

            //-- Captura o XML do arquivo.
            XmlDocument xml = new XmlDocument();

            xml.Load(daNFe.Arquivo_XML);

            //-- Gera o número do lote.
            CompSoft.compFrameWork.Funcoes func;
            string sNum_Lote_NFe = func.Contador("IdLote_NFe", true);

            daNFe.Numero_Lote = Convert.ToInt32(sNum_Lote_NFe);

            ////-- Gera cabeçalho da NF-e
            //NFeRecepcao2.nfeCabecMsg cabecMsg = new NFeRecepcao2.nfeCabecMsg();
            //cabecMsg.cUF = daNFe.Codigo_Estado_Emissor.ToString();
            //cabecMsg.versaoDados = doc.Versao_Dados;
            //nfe.nfeCabecMsgValue = cabecMsg;

            //-- Gera capa do processo do lote
            StringBuilder sb = new StringBuilder();

            sb.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?><enviNFe xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=");
            sb.Append('"');
            sb.Append(doc.Versao_Dados);
            sb.Append('"');
            sb.Append("><idLote>");
            sb.Append(sNum_Lote_NFe);
            sb.Append("</idLote>");
            sb.Append("<indSinc>0</indSinc>");
            sb.Append(xml.GetElementsByTagName("NFe")[0].OuterXml);
            sb.Append("</enviNFe>");

            //-- Faz a comunicação com o servidor.
            XmlNode sRetorno_XML = nfe.nfeAutorizacaoLote(Funcoes_NFe.StringXmlToXMLDocument(sb.ToString()).DocumentElement);

            //-- XML de retorno.
            XmlDocument xml_Ret = Funcoes_NFe.StringXmlToXMLDocument(sRetorno_XML.OuterXml);

            return(xml_Ret);
        }
Пример #4
0
        /// <summary>
        /// Verifica se o WebService está ativo
        /// </summary>
        /// <param name="daNFe">Dados da NF-e para consuta do status do Webservice.</param>
        /// <returns>true/false Indicando se o serviço está Ativo</returns>
        public bool Status_WebService(Dados_Arquivo_NFe daNFe)
        {
            bool bRetorno = false;

            try
            {
                compFrameWork.Funcoes   func;
                NFe.Dados_DocumentosNFe doc = new Dados_DocumentosNFe(Tipos_Servicos.NfeStatusServico, daNFe.Estado_Emissor);

                nfestatusservico4.NFeStatusServico4 nfe_Status = new nfestatusservico4.NFeStatusServico4();
                nfe_Status.Url = doc.Url_WebService;

                var certificado = Funcoes_NFe.Certificado_Digital(daNFe.Empresa);
                nfe_Status.ClientCertificates.Add(certificado);
                //nfe_Status.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36";

                //-- Cria o XMl para envio.
                StringBuilder sb = new StringBuilder();
                sb.Append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?><consStatServ xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=");
                sb.Append('"');
                sb.Append(doc.Versao_Dados);
                sb.Append('"');
                sb.Append("><tpAmb>");
                sb.Append(func.Busca_Propriedade("Ambiente_NFe"));
                sb.Append("</tpAmb><cUF>");
                sb.Append(daNFe.Codigo_Estado_Emissor);
                sb.Append("</cUF><xServ>STATUS</xServ></consStatServ>");

                //-- Verifica status do serviço
                XmlNode     sRetornoXML = nfe_Status.nfeStatusServicoNF(Funcoes_NFe.StringXmlToXMLDocument(sb.ToString()).DocumentElement);
                XmlDocument xml         = Funcoes_NFe.StringXmlToXMLDocument(sRetornoXML.OuterXml);

                if (xml.GetElementsByTagName("cStat")[0].InnerText == "107")
                {
                    bRetorno = true;
                }
            }
            finally { }

            return(bRetorno);
        }
Пример #5
0
        /// <summary>
        /// Captura o retorno do processamento do lote da NF-e
        /// </summary>
        /// <param name="daNFe">Dados_Arquivo_NFe com os parametros da NF-e</param>
        /// <returns>XML com o resultado do processamento</returns>
        public XmlDocument Resultado_Processamento_NFe(Dados_Arquivo_NFe daNFe)
        {
            NFe.Dados_DocumentosNFe doc = new Dados_DocumentosNFe(Tipos_Servicos.NfeRetRecepcao, daNFe.Estado_Emissor);

            var certificado = Funcoes_NFe.Certificado_Digital(daNFe.Empresa);

            System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
            nferetautorizacao4.NFeRetAutorizacao4 nfe = new nferetautorizacao4.NFeRetAutorizacao4();
            nfe.Url = doc.Url_WebService;
            nfe.ClientCertificates.Add(certificado);
            nfe.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12;

            //-- Consulta de dados.
            StringBuilder sb = new StringBuilder();

            sb.Append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?><consReciNFe xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=");
            sb.Append('"');
            sb.Append(doc.Versao_Dados);
            sb.Append('"');
            sb.Append("><tpAmb>");
            sb.Append((int)daNFe.Ambiente);
            sb.Append("</tpAmb><nRec>");
            sb.Append(daNFe.Numero_Recibo);
            sb.Append("</nRec></consReciNFe>");

            //-- Faz a comunicação com o servidor.
            XmlNode sRetorno_XML = nfe.nfeRetAutorizacaoLote(Funcoes_NFe.StringXmlToXMLDocument(sb.ToString()).DocumentElement);

            //-- XML de retorno.
            XmlDocument xml = Funcoes_NFe.StringXmlToXMLDocument(sRetorno_XML.OuterXml);

            //-- Salva resultado do processamento no XML da NF-e.
            this.Salva_XML_Envio_Cliente(daNFe.Arquivo_XML, xml);

            return(xml);
        }
Пример #6
0
        public XmlDocument CartaCorrecao_NFe(Dados_Arquivo_NFe daNFe)
        {
            if (string.IsNullOrEmpty(daNFe.Texto_Carta_Correcao))
            {
                MessageBox.Show("O Texto da carta de correção não foi definido, por favor, edita a NFe e tente novamente.");
                return(null);
            }

            NFe.Dados_DocumentosNFe doc = new Dados_DocumentosNFe(Tipos_Servicos.nfeRecepcaoEvento, daNFe.Estado_Emissor);
            nferecepcaoevento4.NFeRecepcaoEvento4 nfe = new nferecepcaoevento4.NFeRecepcaoEvento4();

            //-- Busca a URL correta para trabalalho de acordo com o Estado e o nome do serviço
            nfe.Url = doc.Url_WebService;

            //-- Encontra o serial number do Certificado e adiciona ao web service.
            System.Security.Cryptography.X509Certificates.X509Certificate2 cert = Funcoes_NFe.Certificado_Digital(daNFe.Empresa);
            nfe.ClientCertificates.Add(cert);

            int    contador = 1;
            string evento   = "110110";
            string _query   = string.Format("select Contador from Notas_Fiscais_Lotes_Contagens where Nota_Fiscal_Lote = {0} and Codigo_Evento = '{1}'"
                                            , daNFe.Cod_Nota_Fiscal_Lote, evento);

            object objContador = SQL.ExecuteScalar(_query);

            if (objContador == null)
            {
                _query = "insert Notas_Fiscais_Lotes_Contagens(Nota_Fiscal_Lote, Codigo_Evento, Contador) VALUES({0}, '{1}', {2})";
                _query = string.Format(_query, daNFe.Cod_Nota_Fiscal_Lote, evento, contador);
            }
            else
            {
                contador = Convert.ToInt32(objContador) + 1;
                _query   = "update Notas_Fiscais_Lotes_Contagens set Contador = {2} where Nota_Fiscal_Lote = {0} and Codigo_Evento = '{1}'";
                _query   = string.Format(_query, daNFe.Cod_Nota_Fiscal_Lote, evento, contador);
            }
            SQL.ExecuteNonQuery(_query);

            StringBuilder sb = new StringBuilder(5000);

            sb.Append("<envEvento versao=\"1.00\" xmlns=\"http://www.portalfiscal.inf.br/nfe\">");
            sb.AppendFormat("<idLote>{0}</idLote>", daNFe.Numero_Lote);
            sb.Append("<evento xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=\"1.00\">");
            sb.AppendFormat("<infEvento Id=\"ID{1}{0}{2}\">", daNFe.Chave_Acesso, evento, contador.ToString().PadLeft(2, '0'));
            sb.Append("<cOrgao>35</cOrgao>");
            sb.AppendFormat("<tpAmb>{0}</tpAmb>", Convert.ToInt32(daNFe.Ambiente));
            sb.AppendFormat("<CNPJ>{0}</CNPJ>", daNFe.CNPJ);
            sb.AppendFormat("<chNFe>{0}</chNFe>", daNFe.Chave_Acesso);
            sb.AppendFormat("<dhEvento>{0:yyyy-MM-ddTHH:mm:sszzz}</dhEvento>", DateTime.Now);
            sb.AppendFormat("<tpEvento>{0}</tpEvento>", evento);
            sb.AppendFormat("<nSeqEvento>{0}</nSeqEvento>", contador);
            sb.Append("<verEvento>1.00</verEvento>");
            sb.Append("<detEvento versao=\"1.00\">");
            sb.Append("<descEvento>Carta de Correcao</descEvento>");

            sb.AppendFormat("<xCorrecao>{0}</xCorrecao>", daNFe.Texto_Carta_Correcao.Replace("\r\n", " "));

            sb.Append("<xCondUso>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.</xCondUso>");
            sb.Append("</detEvento>");
            sb.Append("</infEvento>");
            sb.Append("</evento>");
            sb.Append("</envEvento>");

            //-- Salva XML temporariamente em disco.
            string sFolder_temp = System.Windows.Forms.Application.StartupPath;

            if (!sFolder_temp.EndsWith(@"\"))
            {
                sFolder_temp += @"\";
            }

            sFolder_temp += @"tmp\";

            if (!System.IO.Directory.Exists(sFolder_temp))
            {
                System.IO.Directory.CreateDirectory(sFolder_temp);
            }

            string sFile_tmp = sFolder_temp + daNFe.Chave_Acesso + "-cartacor.xml";

            System.IO.StreamWriter sw = new System.IO.StreamWriter(sFile_tmp);
            sw.Write(sb.ToString());
            sw.Close();
            sw.Dispose();

            //-- Assina arquivo para envio.
            AssinaXML assinar = new AssinaXML();

            assinar.AssinarArquivoXML(sFile_tmp, "infEvento", cert.SerialNumber);

            //-- Limpa stringbuilder e carrega o arquivo assinado.
            System.IO.StreamReader sr = new System.IO.StreamReader(sFile_tmp);
            sb.Remove(0, sb.Length);
            sb.Append(sr.ReadToEnd()); //-- Adiciona o arquivo do inteiro no stringbuilder
            sr.Close();
            sr.Dispose();

            //-- apaga o arquivo criado.
            System.IO.Directory.Delete(sFolder_temp, true);

            //-- Verifica status do serviço
            XmlNode     sRetornoXML = nfe.nfeRecepcaoEvento(Funcoes_NFe.StringXmlToXMLDocument(sb.ToString()).DocumentElement);
            XmlDocument xml         = Funcoes_NFe.StringXmlToXMLDocument(sRetornoXML.OuterXml);

            return(xml);
        }
Пример #7
0
        public XmlDocument Cancelar_NFe(Dados_Arquivo_NFe daNFe)
        {
            NFe.Dados_DocumentosNFe doc = new Dados_DocumentosNFe(Tipos_Servicos.nfeRecepcaoEvento, daNFe.Estado_Emissor);
            nferecepcaoevento4.NFeRecepcaoEvento4 nfe = new nferecepcaoevento4.NFeRecepcaoEvento4();

            //-- Busca a URL correta para trabalalho de acordo com o Estado e o nome do serviço
            nfe.Url = doc.Url_WebService;

            //-- Encontra o serial number do Certificado e adiciona ao web service.
            System.Security.Cryptography.X509Certificates.X509Certificate2 cert = Funcoes_NFe.Certificado_Digital(daNFe.Empresa);
            nfe.ClientCertificates.Add(cert);

            //nfeRecepcaoEvento.nfeCabecMsg cabecMsg  = new nfeRecepcaoEvento.nfeCabecMsg();
            //////-- Gera cabeçalho do cancelamento da NF-e
            ////NFeCancelamento2.nfeCabecMsg cabecMsg = new NFeCancelamento2.nfeCabecMsg();
            //cabecMsg.cUF = daNFe.Codigo_Estado_Emissor.ToString();
            //cabecMsg.versaoDados = doc.Versao_Dados;
            //nfe.nfeCabecMsgValue = cabecMsg;

            StringBuilder sb = new StringBuilder(5000);

            sb.Append("<envEvento xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=\"1.00\">");
            sb.AppendFormat("<idLote>{0}</idLote>", daNFe.Numero_Lote);
            sb.Append("<evento xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=\"1.00\">");
            sb.AppendFormat("<infEvento Id=\"ID110111{0}01\">", daNFe.Chave_Acesso);
            sb.Append("<cOrgao>35</cOrgao>");
            sb.AppendFormat("<tpAmb>{0}</tpAmb>", Convert.ToInt32(daNFe.Ambiente));
            sb.AppendFormat("<CNPJ>{0}</CNPJ>", daNFe.CNPJ);
            sb.AppendFormat("<chNFe>{0}</chNFe>", daNFe.Chave_Acesso);
            sb.AppendFormat("<dhEvento>{0:yyyy-MM-ddTHH:mm:sszzz}</dhEvento>", DateTime.Now);
            sb.Append("<tpEvento>110111</tpEvento>");
            sb.Append("<nSeqEvento>1</nSeqEvento>");
            sb.Append("<verEvento>1.00</verEvento>");
            sb.Append("<detEvento versao=\"1.00\">");
            sb.Append("<descEvento>Cancelamento</descEvento>");
            sb.AppendFormat("<nProt>{0}</nProt>", daNFe.Numero_Autorizacao_Uso);
            sb.Append("<xJust>Compra cancelada pelo cliente</xJust>");
            sb.Append("</detEvento>");
            sb.Append("</infEvento>");
            sb.Append("</evento>");
            sb.Append("</envEvento>");

            //-- Salva XML temporariamente em disco.
            string sFolder_temp = System.Windows.Forms.Application.StartupPath;

            if (!sFolder_temp.EndsWith(@"\"))
            {
                sFolder_temp += @"\";
            }

            sFolder_temp += @"tmp\";

            if (!System.IO.Directory.Exists(sFolder_temp))
            {
                System.IO.Directory.CreateDirectory(sFolder_temp);
            }

            string sFile_tmp = sFolder_temp + daNFe.Chave_Acesso + "-canc.xml";

            System.IO.StreamWriter sw = new System.IO.StreamWriter(sFile_tmp);
            sw.Write(sb.ToString());
            sw.Close();
            sw.Dispose();

            //-- Assina arquivo para envio.
            AssinaXML assinar = new AssinaXML();

            assinar.AssinarArquivoXML(sFile_tmp, "infEvento", cert.SerialNumber);

            //-- Limpa stringbuilder e carrega o arquivo assinado.
            System.IO.StreamReader sr = new System.IO.StreamReader(sFile_tmp);
            sb.Remove(0, sb.Length);
            sb.Append(sr.ReadToEnd()); //-- Adiciona o arquivo do inteiro no stringbuilder
            sr.Close();
            sr.Dispose();

            //-- apaga o arquivo criado.
            System.IO.Directory.Delete(sFolder_temp, true);

            //-- Verifica status do serviço
            XmlNode     sRetornoXML = nfe.nfeRecepcaoEvento(Funcoes_NFe.StringXmlToXMLDocument(sb.ToString()).DocumentElement);
            XmlDocument xml         = Funcoes_NFe.StringXmlToXMLDocument(sRetornoXML.OuterXml);

            return(xml);
        }