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