private void SalvarArquivoXML_Pasta(string caminho, string arquivoXML) { StreamWriter Grava; try { /* * case 1: * caminhoXML = @"Impetus\Comercial\Retorno\Saidas\" + DateTime.Now.Year + @"\" + DateTime.Now.Month + @"\" + lstPedido[item].chave + "-procNfe.xml"; * break; * case 2: * caminhoXML = @"Concursar\Retorno\Gravados\" + DateTime.Now.Year + @"\" + DateTime.Now.Month + @"\" + lstPedido[item].chave + "-procNfe.xml"; * break; * case 3: * caminhoXML = @"Nahgash\Retorno\Gravados\" + lstPedido[item].chave + "-procNfe.xml"; * break; */ // Gravando o arquivo xml na pasta de Saidas Grava = File.CreateText(caminho); Grava.Write(arquivoXML); Grava.Close(); } catch (Exception) { throw; } }
private void CmdCancela_Click(object sender, EventArgs e) { if ((DateTime.Now - p.datadigitacao).TotalHours > 24) { MessageBox.Show("Prazo de Cancelamento Superior ao Previsto na Legislação.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (p.conddoc == "C") { MessageBox.Show("NF-e já cancelada.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (cboMotivo.Text.Trim().Length < 15) { MessageBox.Show("Minimo de 15 caracteres!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } this.Cursor = Cursors.WaitCursor; StreamWriter Grava; GerarXML geraxml = new GerarXML(); AssinarXML assinar = new AssinarXML(); ValidarXML validar = new ValidarXML(); TransmitirXML transmitir = new TransmitirXML(); XMLDao xmldao = new XMLDao(); string retValidar = string.Empty; string xMotivo = cboMotivo.Text; string retTransmitir = string.Empty; txtResultado.Text = string.Empty; try { //Gerando xml xmlCanc = geraxml.CancelamentoNFe(p, xMotivo); //Assinando xml xmlCanc_Assinado = assinar.AssinaXML(xmlCanc.InnerXml, "infEvento", Certificado.getInstance.oCertificado); } catch (Exception ex) { Log_Exception.Monta_ArquivoLog(ex); MessageBox.Show("Erro ao assinar: " + ex.Message, "Mensagem", MessageBoxButtons.OK); this.Cursor = Cursors.Default; return; } try { //Validando o xml assinado retValidar = validar.Valida(xmlCanc_Assinado, "Canc"); } catch (Exception ex) { Log_Exception.Monta_ArquivoLog(ex); MessageBox.Show("Erro ao Validar: " + ex.Message, "Mensagem", MessageBoxButtons.OK); this.Cursor = Cursors.Default; return; } if (retValidar == string.Empty) { try { //Recebendo xml de retorno da transmissão retTransmitir = transmitir.XML_CancelamentoNFCe4(xmlCanc_Assinado, p.nfiscal, Certificado.getInstance.oCertificado); if (retTransmitir.Substring(0, 4) != "Erro") { XmlDocument xmlRetorno = new XmlDocument(); xmlRetorno.LoadXml(retTransmitir); //Lote processado if (xmlRetorno.GetElementsByTagName("cStat")[0].InnerText == "128") { //Evento registrado e vinculado a NFC-e if (xmlRetorno.GetElementsByTagName("cStat")[1].InnerText == "135") { try { p.xml.numdoc = p.numdoc; p.xml.data = DateTime.Now; p.xml.arquivoXML = xmlRetorno.InnerXml; p.xml.Modelo = p.modelo; p.xml.statNFCe = "135"; if (!string.IsNullOrEmpty(Controle.getInstance.caminho_XMLCancelado)) { //Salva o arquivo XML na pasta Grava = File.CreateText(Controle.getInstance.caminho_XMLCancelado + @"\110111-" + p.chave + "-1-procEventoNfe.xml"); Grava.Write(p.xml.arquivoXML); Grava.Close(); } //Salva arquivo XML no Banco SQL (NFe) if (xmldao.Grava_XML(p.xml)) { //Atualizando o status do pedido para cancelada (135) (new PedidoDao()).Update_StatNFCe_CondDoc(p.numdoc, p.xml.statNFCe); var db = new Database("stringConexao"); try { db.BeginTransaction(); foreach (PedidoItem pItem in p.lstPedidoItem) { db.Update("UPDATE produto " + "SET Estoque = Estoque + " + pItem.qtditens * 1 + ",ValorVnd = ValorVnd + " + (pItem.valitens * -1).ToString().Replace(",", ".") + " WHERE CodPro = " + pItem.codpro); } //Boleta cancelada db.Update("UPDATE Boleta set condicao = 2 where numdoc = " + p.numdoc); db.CompleteTransaction(); } catch (Exception) { db.AbortTransaction(); MessageBox.Show("Houve um erro inesperado ao atualizar o estoque e cancelar as boletas, informe imediatamente ao administrador do sistema!", "Mensagem de erro", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } txtResultado.AppendText("Pedido cancelado com sucesso!"); txtResultado.ForeColor = Color.Green; } else { txtResultado.AppendText("Pedido cancelado com sucesso, porém houve um erro ao salvar o arquivo XML no banco de dados, informe ao administrador do sistema!"); txtResultado.ForeColor = Color.Green; } } catch (Exception ex) { Log_Exception.Monta_ArquivoLog(ex); txtResultado.AppendText("Pedido cancelado com sucesso, porém houve um erro inesperado, informe ao administrador do sistema!"); txtResultado.ForeColor = Color.Green; } } else { txtResultado.AppendText("Erro ao cancelar (002): " + xmlRetorno.GetElementsByTagName("xMotivo")[1].InnerText + Environment.NewLine); txtResultado.ForeColor = Color.Maroon; this.Cursor = Cursors.Default; return; } } else { txtResultado.AppendText("Erro ao cancelar (001): " + xmlRetorno.GetElementsByTagName("xMotivo")[0].InnerText + Environment.NewLine); txtResultado.ForeColor = Color.Maroon; this.Cursor = Cursors.Default; return; } } else { txtResultado.AppendText("Erro ao transmitir (001): " + retTransmitir + Environment.NewLine); txtResultado.ForeColor = Color.Maroon; this.Cursor = Cursors.Default; return; } } catch (Exception ex) { Log_Exception.Monta_ArquivoLog(ex); MessageBox.Show("Erro ao Transmitir XML: " + ex.Message, "Mensagem", MessageBoxButtons.OK); this.Cursor = Cursors.Default; return; } } else { txtResultado.AppendText("Erro na validação do XML: " + retValidar + Environment.NewLine); txtResultado.ForeColor = Color.Maroon; this.Cursor = Cursors.Default; return; } this.Cursor = Cursors.Default; }
// ======================================================================== private bool Gera_NFCe() { var xmlNFCe = new XmlDocument(); var xmlNFCeAssinado = new XmlDocument(); var gerarXml = new GeraXml(); var assinarXml = new AssinaXml(); var validarXml = new ValidaXml(); var transmitirXml = new TransmiteXml(); //Email email = new Email(); var xmlDao = new XmlDao(); StreamWriter Grava; string retValidar; string strProc; string strXmlProcNfe; string retTransmitir; string cStatus_LoteProcessado; string cStatus_Autorizado; int nPosI; int nPosF; try { retTransmitir = string.Empty; retValidar = string.Empty; cStatus_LoteProcessado = string.Empty; cStatus_Autorizado = string.Empty; _pedido.NFiscal = ((new ControleFiscalDao()).GetUltimoNumeroNFiscalGerado() + 1); try { // Gerando o XML xmlNFCe = (gerarXml.GeraXmlNFCe(_pedido)); //MensagemSistema("Arquivo Gerado ...", Color.OliveDrab); // Assinando o XML xmlNFCeAssinado = assinarXml.AssinaXML(xmlNFCe.InnerXml, "infNFe", CertificadoDigital.getInstance.oCertificado); } catch (Exception ex) { //Log_Exception.Monta_ArquivoLog(ex); //MensagemSistema("** Erro ao ASSINAR XML NFC-e, tente novamente **", Color.Brown); MessageBox.Show("Erro ao tentar gerar e assinar o xml da NFC-e" + Environment.NewLine + "Erro: " + ex.Message, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } //MensagemSistema("Arquivo Assinado ...", Color.OliveDrab); if (GeraXml.AmbienteNFCe == "2") { //Salvando o arquivo XML na pasta Grava = File.CreateText(@"C:\Users\Comercial\Desktop\ASSINADO.xml"); Grava.Write(xmlNFCeAssinado.InnerXml); Grava.Close(); } try { // Validando o XML retValidar = validarXml.Valida(xmlNFCeAssinado, "NFe"); urlQRCode = gerarXml.GetUrlQRCode(xmlNFCeAssinado, _pedido); //Inserindo a URL QRCode no xml já assinado xmlNFCeAssinado.LoadXml(xmlNFCeAssinado.InnerXml.Replace("</infNFe>", "</infNFe><infNFeSupl><qrCode><![CDATA[" + urlQRCode + "]]></qrCode><urlChave>http://www4.fazenda.rj.gov.br/consultaNFCe/QRCode</urlChave></infNFeSupl>")); } catch (Exception ex) { //Log_Exception.Monta_ArquivoLog(ex); //MensagemSistema("** Erro ao VALIDAR XML NFC-e **", Color.Brown); MessageBox.Show("Erro ao tentar validar o xml da NFC-e " + Environment.NewLine + "Erro: " + ex.Message, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } if (retValidar == string.Empty) { try { //MensagemSistema("Enviando a NFC-e", Color.OliveDrab); // Recebendo o XML de retorno da transmissão retTransmitir = transmitirXml.XML_NFCe4(xmlNFCeAssinado, _pedido.NFiscal.ToString(), CertificadoDigital.getInstance.oCertificado); if (retTransmitir.Substring(0, 4) != "Erro") { XmlDocument xmlRetorno = new XmlDocument(); xmlRetorno.LoadXml(retTransmitir); // Lote processado if (xmlRetorno.GetElementsByTagName("cStat")[0].InnerText == "104") { // Autorizado if (xmlRetorno.GetElementsByTagName("cStat")[1].InnerText == "100") { try { //MensagemSistema("Autorizado o uso da NFC-e", Color.OliveDrab); _pedido.Chave = xmlRetorno.GetElementsByTagName("chNFe")[0].InnerText; _pedido.Protocolo = xmlRetorno.GetElementsByTagName("nProt")[0].InnerText; // Separar somente o conteúdo a partir da tag <protNFe> até </protNFe> nPosI = retTransmitir.IndexOf("<protNFe"); nPosF = retTransmitir.Length - (nPosI + 13); strProc = retTransmitir.Substring(nPosI, nPosF); // XML pronto para salvar strXmlProcNfe = @"<?xml version=""1.0"" encoding=""utf-8"" ?><nfeProc xmlns=""http://www.portalfiscal.inf.br/nfe"" versao=""4.00"">" + xmlNFCeAssinado.InnerXml + strProc + "</nfeProc>"; _pedido.Xml = new Xml() { NumDoc = _pedido.NumDoc, ArquivoXml = strXmlProcNfe, Data = DateTime.Now, Modelo = _pedido.ModeloNFiscal, StatNFCe = "100" }; using (var db = new Database("stringConexao")) { db.BeginTransaction(); try { db.Update("Update Controle Set NFiscal=" + _pedido.NFiscal + " Where ChvControle = 1"); db.Update("Update Movdb Set data_nfiscal = '" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "', NFiscal= " + _pedido.NFiscal + ", Chave='" + _pedido.Chave + "' ,Protocolo='" + _pedido.Protocolo + "', status_nfce = '" + _pedido.Xml.StatNFCe + "' Where NumDoc = " + _pedido.NumDoc); db.CompleteTransaction(); } catch (Exception) { db.AbortTransaction(); } } if (GeraXml.AmbienteNFCe == "2") { //Salvando o arquivo XML na pasta Grava = File.CreateText(@"C:\Users\Comercial\Desktop\EMITIDO.xml"); Grava.Write(_pedido.Xml.ArquivoXml); Grava.Close(); } if (GeraXml.AmbienteNFCe == "1") { if (!string.IsNullOrEmpty(ControleFiscal.GetInstance.CaminhoXmlAutorizado)) { //Salvando o arquivo XML na pasta Grava = File.CreateText(ControleFiscal.GetInstance.CaminhoXmlAutorizado.Remove(ControleFiscal.GetInstance.CaminhoXmlAutorizado.Length - 1) + DateTime.Now.Month + @"\" + _pedido.Chave + "-procNfe.xml"); Grava.Write(_pedido.Xml.ArquivoXml); Grava.Close(); } } //Salva arquivo XML no Banco SQL (NFe) if (xmlDao.GravaXml(_pedido.Xml)) { } } catch (Exception ex) { MessageBox.Show("NOTA EMITIDA, porém houve um erro ao inesperado ao salvar as informações no banco de dados " + Environment.NewLine + "Erro: " + ex.Message, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } } else { MessageBox.Show("O xml não pôde ser Autorizado! " + Environment.NewLine + "Motivo: " + xmlRetorno.GetElementsByTagName("xMotivo")[1].InnerText, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } } else { //MensagemSistema("Erro ao Transmitir(003) XML NFC-e para SEFAZ", Color.Brown); MessageBox.Show("Erro no arquivo xml: " + Environment.NewLine + "Erro: " + xmlRetorno.GetElementsByTagName("xMotivo")[0].InnerText, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } } else { //MensagemSistema("Erro ao Transmitir(002) XML NFC-e para SEFAZ", Color.Brown); MessageBox.Show("Erro ao tentar transmitir o xml da NFC-e, tente novamente " + Environment.NewLine + "Erro: " + retTransmitir, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } } catch (Exception ex) { //Log_Exception.Monta_ArquivoLog(ex); //MensagemSistema("Erro ao Transmitir(001) XML NFC-e para SEFAZ", Color.Brown); MessageBox.Show("Erro: " + ex.Message, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } } else { //MensagemSistema("Erro ao validar XML NFC-e", Color.Brown); MessageBox.Show("Erro XML Shema: " + retValidar, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } } catch (Exception ex) { //Log_Exception.Monta_ArquivoLog(ex); //MensagemSistema("Ocorreu um erro inesperado, informe ao administrador do sistema!", Color.Brown); MessageBox.Show("Erro : " + ex.Message, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } return(true); }
private void cmdInutilizar_Click(object sender, EventArgs e) { Cursor = Cursors.WaitCursor; string retValidar = string.Empty; string retTransmitir = string.Empty; txtResultado.Text = string.Empty; GerarXML geraxml = new GerarXML(); TransmitirXML transmitir = new TransmitirXML(); ValidarXML validarXml = new ValidarXML(); AssinarXML assinar = new AssinarXML(); StreamWriter Grava; try { //Gerando xml xmlInut = geraxml.InutilizacaoNFe(Convert.ToInt32(txtNFInicial.Text), Convert.ToInt32(txtNFInicial.Text), p.serienfiscal, "Erro interno do sistema", p.modelo); //Assinando xml xmlInut_Assinado = assinar.AssinaXML(xmlInut.InnerXml, "infInut", Certificado.getInstance.oCertificado); } catch (Exception ex) { Log_Exception.Monta_ArquivoLog(ex); txtResultado.AppendText("Erro ao assinar XML: " + ex.Message + Environment.NewLine); txtResultado.ForeColor = Color.Maroon; this.Cursor = Cursors.Default; return; } try { // Validando o XML retValidar = validarXml.Valida(xmlInut_Assinado, "Inut"); } catch (Exception ex) { Log_Exception.Monta_ArquivoLog(ex); txtResultado.AppendText("Erro ao validar XML: " + ex.Message + Environment.NewLine); txtResultado.ForeColor = Color.Maroon; this.Cursor = Cursors.Default; return; } if (retValidar == string.Empty) { try { //Recebendo xml de retorno da transmissão retTransmitir = transmitir.XML_InutilizacaoNFCe4(xmlInut_Assinado, Certificado.getInstance.oCertificado); if (retTransmitir.Substring(0, 4) != "Erro") { XmlDocument retxml = new XmlDocument(); retxml.LoadXml(retTransmitir); //Lote Processado if (retxml.GetElementsByTagName("cStat")[0].InnerText == "102") { try { XMLDao xmlDao = new XMLDao(); p.xml.numdoc = p.numdoc; p.xml.data = DateTime.Now; p.xml.arquivoXML = retxml.InnerXml; p.xml.Modelo = p.modelo; p.xml.statNFCe = "102"; if (!string.IsNullOrEmpty(Controle.getInstance.caminho_XMLInutilizado)) { //Salvando o arquivo XML na pasta selecionada no FORM Parametros > aba Arquivos Grava = File.CreateText(Controle.getInstance.caminho_XMLInutilizado + @"\NOTA " + p.nfiscal + " - INUTILIZADA.xml"); Grava.Write(p.xml.arquivoXML); Grava.Close(); } //Atualizando o status do pedido para inutilizada (new PedidoDao()).Update_StatNFCe_CondDoc(p.numdoc, "102"); using (var db = new Database("stringConexao")) { try { db.BeginTransaction(); foreach (PedidoItem pItem in p.lstPedidoItem) { db.Update("UPDATE produto " + "SET Estoque = Estoque + " + pItem.qtditens * 1 + ",ValorVnd = ValorVnd + " + (pItem.valitens * -1).ToString().Replace(",", ".") + " WHERE CodPro = " + pItem.codpro); } //Boleta cancelada db.Update("UPDATE Boleta set condicao = 2 where numdoc = " + p.numdoc); db.CompleteTransaction(); } catch (Exception) { db.AbortTransaction(); MessageBox.Show("Houve um erro inesperado ao atualizar o estoque e cancelar as boletas, informe imediatamente ao administrador do sistema!", "Mensagem de erro", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } txtResultado.AppendText("Nota Fiscal inutilizada com sucesso!"); txtResultado.ForeColor = Color.Green; } catch (Exception ex) { Log_Exception.Monta_ArquivoLog(ex); txtResultado.AppendText("Nota Fiscal inutilizada com sucesso, porém houve um erro inesperado, informe ao administrador do sistema!"); txtResultado.ForeColor = Color.Maroon; } } else { txtResultado.AppendText("Erro ao transmitir XML (002): " + retxml.GetElementsByTagName("xMotivo")[0].InnerText + Environment.NewLine); txtResultado.ForeColor = Color.Maroon; } } else { txtResultado.AppendText("Erro ao transmitir XML (001): " + retTransmitir + Environment.NewLine); txtResultado.ForeColor = Color.Maroon; } } catch (Exception ex) { Log_Exception.Monta_ArquivoLog(ex); txtResultado.AppendText("Erro ao finalizar XML: " + ex.Message + Environment.NewLine); txtResultado.ForeColor = Color.Maroon; } } this.Cursor = Cursors.Default; }
private void Gerando_NFCe() { PedidoDao pdDao = new PedidoDao(); XMLDao xmlDao = new XMLDao(); StreamWriter Grava; string retValidar; string strProc; string strXmlProcNfe; int nPosI; int nPosF; string cStatus_LoteProcessado; string cStatus_Autorizado; //TxtResultado.Text = string.Empty; //txtDadosXML.Text = string.Empty; try { retTransmitir = string.Empty; retValidar = string.Empty; cStatus_LoteProcessado = string.Empty; cStatus_Autorizado = string.Empty; try { // Gerando o XML xmlNFe = (gerarXml.NFe(pedido)); MensagemSistema("Arquivo Gerado", Color.Green); txtChave.Text = gerarXml.strChave; // Assinando o XML xmlNFe_Assinado = assinarXml.AssinaXML(xmlNFe.InnerXml, "infNFe", Certificado.getInstance.oCertificado); } catch (Exception ex) { Log_Exception.Monta_ArquivoLog(ex); MensagemSistema("** Erro ao ASSINAR **" + Environment.NewLine + "Erro: " + ex.Message, Color.Maroon); return; } MensagemSistema("Arquivo Assinado", Color.Green); try { // Validando o XML retValidar = validarXml.Valida(xmlNFe_Assinado, "NFe"); } catch (Exception ex) { Log_Exception.Monta_ArquivoLog(ex); MensagemSistema("** Erro ao VALIDAR **" + Environment.NewLine + "Erro: " + ex.Message, Color.Maroon); return; } //Inserindo a URL QRCode no xml já assinado xmlNFe_Assinado.LoadXml(xmlNFe_Assinado.InnerXml.Replace("</infNFe>", "</infNFe><infNFeSupl><qrCode><![CDATA[" + gerarXml.Gera_Url_QRCode(xmlNFe_Assinado, pedido) + "]]></qrCode></infNFeSupl>")); //========================================================================== string caminho = @"C:\Documents and Settings\Renan\Desktop\XmlAssinado.xml"; Grava = File.CreateText(caminho); Grava.Write(xmlNFe_Assinado.InnerXml); Grava.Close(); //========================================================================== if (retValidar == string.Empty) { try { MensagemSistema("Enviando a NFC-e", Color.Black); // Recebendo o XML de retorno da transmissão retTransmitir = transmitirXml.XML_NFCe(xmlNFe_Assinado, pedido.nfiscal, Certificado.getInstance.oCertificado); if (retTransmitir.Substring(0, 4) != "Erro") { XmlDocument xmlRetorno = new XmlDocument(); xmlRetorno.LoadXml(retTransmitir); // Lote processado if (xmlRetorno.GetElementsByTagName("cStat")[0].InnerText == "104") { // Autorizado if (xmlRetorno.GetElementsByTagName("cStat")[1].InnerText == "100") { try { MensagemSistema("Autorizado o uso da NFC-e", Color.Green); pedido.chave = xmlRetorno.GetElementsByTagName("chNFe")[0].InnerText; pedido.protocolo = xmlRetorno.GetElementsByTagName("nProt")[0].InnerText; txtProtocolo.Text = pedido.protocolo; txtData.Text = DateTime.Now.ToString(); // Separar somente o conteúdo a partir da tag <protNFe> até </protNFe> nPosI = retTransmitir.IndexOf("<protNFe"); nPosF = retTransmitir.Length - (nPosI + 13); strProc = retTransmitir.Substring(nPosI, nPosF); // XML pronto para salvar strXmlProcNfe = @"<?xml version=""1.0"" encoding=""utf-8"" ?><nfeProc xmlns=""http://www.portalfiscal.inf.br/nfe"" versao=""3.10"">" + xmlNFe_Assinado.InnerXml + strProc + "</nfeProc>"; pedido.xml = new XML(); pedido.xml.numdoc = pedido.numdoc; pedido.xml.arquivoXML = strXmlProcNfe; pedido.xml.data = DateTime.Now; pedido.xml.Modelo = pedido.modelo; if (GerarXML.str_Ambiente == "1") { //SalvarArquivoXML_Pasta(i); } //SalvarArquivoXML_Pasta(@"C:\Documents and Settings\Renan\Desktop\NFCE EMITIDA.xml", pedido.xml.arquivoXML); //========================================================================== caminho = @"C:\Documents and Settings\Renan\Desktop\NFCE EMITIDA.xml"; Grava = File.CreateText(caminho); Grava.Write(strXmlProcNfe); Grava.Close(); //========================================================================== // Salvando o xml no Banco de Dados if (xmlDao.Grava_XML(pedido.xml)) { // Atualizando o pedido com Chave e Protocolo if (pdDao.Update_ChaveProtocolo(pedido.numdoc, pedido.chave, pedido.protocolo)) { //Atualizando a data do pedido pdDao.Update_DataNFiscal(pedido.numdoc, DateTime.Now); } } else { } } catch (Exception ex) { Log_Exception.Monta_ArquivoLog(ex); MensagemSistema("** NOTA EMITIDA **, mas houve um erro inesperado ao salvar (005)" + Environment.NewLine + "Erro: " + ex.Message, Color.Maroon); return; } } else { MensagemSistema("Erro ao Transmitir (004)" + Environment.NewLine + "Erro: " + xmlRetorno.GetElementsByTagName("xMotivo")[1].InnerText, Color.Maroon); return; } } else { MensagemSistema("Erro ao Transmitir (003)" + Environment.NewLine + "Erro: " + xmlRetorno.GetElementsByTagName("xMotivo")[0].InnerText, Color.Maroon); return; } } else { MensagemSistema("Erro ao Transmitir (002)" + Environment.NewLine + "Erro: " + retTransmitir, Color.Maroon); return; } } catch (Exception ex) { Log_Exception.Monta_ArquivoLog(ex); MensagemSistema("Erro ao Transmitir (001)" + Environment.NewLine + "Erro: " + ex.Message, Color.Maroon); return; } } else { MensagemSistema("Erro no XML" + Environment.NewLine + "XML Shema: " + retValidar, Color.Maroon); return; } } catch (Exception ex) { Log_Exception.Monta_ArquivoLog(ex); MensagemSistema("Ocorreu um erro inesperado, informe ao administrador do sistema!" + Environment.NewLine + ex.Message, Color.Maroon); return; } }
// ======================================================================== private bool Gera_NFCe(Pedido pedido) { var msg = new StringBuilder(); XmlDocument xmlNFe = new XmlDocument(); XmlDocument xmlNFe_Assinado = new XmlDocument(); GerarXML gerarXml = new GerarXML(); AssinarXML assinarXml = new AssinarXML(); ValidarXML validarXml = new ValidarXML(); TransmitirXML transmitirXml = new TransmitirXML(); Email email = new Email(); XMLDao xmlDao = new XMLDao(); StreamWriter Grava; string retValidar; string strProc; string strXmlProcNfe; string retTransmitir; string cStatus_LoteProcessado; string cStatus_Autorizado; int nPosI; int nPosF; try { retTransmitir = string.Empty; retValidar = string.Empty; cStatus_LoteProcessado = string.Empty; cStatus_Autorizado = string.Empty; try { // Gerando o XML xmlNFe = (gerarXml.NFe(pedido)); //MensagemSistema("Arquivo Gerado ...", Color.OliveDrab); // Assinando o XML xmlNFe_Assinado = assinarXml.AssinaXML(xmlNFe.InnerXml, "infNFe", Certificado.getInstance.oCertificado); } catch (Exception ex) { MessageBox.Show("** Erro ao ASSINAR XML NFC-e, tente novamente **" + Environment.NewLine + ex.Message, "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } try { // Validando o XML retValidar = validarXml.Valida(xmlNFe_Assinado, "NFe"); //Inserindo a URL QRCode no xml já assinado xmlNFe_Assinado.LoadXml(xmlNFe_Assinado.InnerXml.Replace("</infNFe>", "</infNFe><infNFeSupl><qrCode><![CDATA[" + gerarXml.Gera_Url_QRCode(xmlNFe_Assinado, pedido) + "]]></qrCode><urlChave>http://www4.fazenda.rj.gov.br/consultaNFCe/QRCode</urlChave></infNFeSupl>")); } catch (Exception ex) { //Log_Exception.Monta_ArquivoLog(ex); MessageBox.Show("** Erro ao VALIDAR XML NFC-e **" + Environment.NewLine + ex.Message, "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } if (retValidar == string.Empty) { try { //MensagemSistema("Enviando a NFC-e", Color.OliveDrab); // Recebendo o XML de retorno da transmissão retTransmitir = transmitirXml.XML_NFCe4(xmlNFe_Assinado, pedido.nfiscal, Certificado.getInstance.oCertificado); if (retTransmitir.Substring(0, 4) != "Erro") { XmlDocument xmlRetorno = new XmlDocument(); xmlRetorno.LoadXml(retTransmitir); // Lote processado if (xmlRetorno.GetElementsByTagName("cStat")[0].InnerText == "104") { // Autorizado if (xmlRetorno.GetElementsByTagName("cStat")[1].InnerText == "100") { try { //MensagemSistema("Autorizado o uso da NFC-e", Color.OliveDrab); pedido.chave = xmlRetorno.GetElementsByTagName("chNFe")[0].InnerText; pedido.protocolo = xmlRetorno.GetElementsByTagName("nProt")[0].InnerText; // Separar somente o conteúdo a partir da tag <protNFe> até </protNFe> nPosI = retTransmitir.IndexOf("<protNFe"); nPosF = retTransmitir.Length - (nPosI + 13); strProc = retTransmitir.Substring(nPosI, nPosF); // XML pronto para salvar strXmlProcNfe = @"<?xml version=""1.0"" encoding=""utf-8"" ?><nfeProc xmlns=""http://www.portalfiscal.inf.br/nfe"" versao=""4.0"">" + xmlNFe_Assinado.InnerXml + strProc + "</nfeProc>"; pedido.xml = new XML { numdoc = pedido.numdoc, arquivoXML = strXmlProcNfe, data = DateTime.Now, Modelo = pedido.modelo, statNFCe = "100" }; //Salva arquivo XML no Banco SQL (NFe) if (xmlDao.Grava_XML(pedido.xml)) { // Atualizando o pedido com a Chave, Protocolo, e statNFCe if ((new PedidoDao()).Update_ChaveProtocolo_condDoc_StatNFCe(pedido.numdoc, pedido.chave, pedido.protocolo, pedido.xml.statNFCe)) { if (GerarXML.str_Ambiente == "1") { if (!string.IsNullOrEmpty(Controle.getInstance.caminho_XMLAutorizado)) { //Salvando o arquivo XML na pasta Grava = File.CreateText(Controle.getInstance.caminho_XMLAutorizado.Remove(Controle.getInstance.caminho_XMLAutorizado.Length - 1) + DateTime.Now.Month + @"\" + pedido.chave + "-procNfe.xml"); Grava.Write(pedido.xml.arquivoXML); Grava.Close(); } } } } } catch (Exception ex) { MessageBox.Show("** NOTA EMITIDA **, mas houve um erro inesperado" + Environment.NewLine + ex.Message, "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } } else { //MessageBox.Show("Erro ao Transmitir(004) XML NFC-e" + Environment.NewLine + xmlRetorno.GetElementsByTagName("xMotivo")[1].InnerText, "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Error); msg.Append("** NOTA EMITIDA **, mas houve um erro inesperado"); msg.Append(Environment.NewLine); msg.Append(xmlRetorno.GetElementsByTagName("xMotivo")[1].InnerText); txtErro.Visible = true; btnEmitir.Visible = true; txtErro.Text = msg.ToString(); msg.Clear(); return(false); } } else { //MessageBox.Show("Erro ao Transmitir(003) XML NFC-e" + Environment.NewLine + xmlRetorno.GetElementsByTagName("xMotivo")[0].InnerText, "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Error); msg.Append("** Erro ao Transmitir(003) XML NFC-e**"); msg.Append(Environment.NewLine); msg.Append(xmlRetorno.GetElementsByTagName("xMotivo")[0].InnerText); txtErro.Visible = true; btnEmitir.Visible = true; txtErro.Text = msg.ToString(); msg.Clear(); return(false); } } else { //MessageBox.Show("Erro ao Transmitir(002) XML NFC-e" + Environment.NewLine + retTransmitir, "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Error); msg.Append("** Erro ao Transmitir(002) XML NFC-e **"); msg.Append(Environment.NewLine); msg.Append(retTransmitir); txtErro.Visible = true; btnEmitir.Visible = true; txtErro.Text = msg.ToString(); msg.Clear(); return(false); } } catch (Exception ex) { MessageBox.Show("Erro ao Transmitir(001) XML NFC-e" + Environment.NewLine + ex.Message, "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } } else { MessageBox.Show("Erro ao validar XML NFC-e" + Environment.NewLine + retValidar, "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } } catch (Exception ex) { Log_Exception.Monta_ArquivoLog(ex); MessageBox.Show("Ocorreu um erro inesperado, informe ao administrador do sistema!" + Environment.NewLine + ex.Message, "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } return(true); }