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