private void lblImprimir_Click(object sender, EventArgs e) { VerificaStatusImpressora(); bool isSangria = false; if (_pedido.OperacaoId == 2) { isSangria = true; } if (!ImpressoraBematech.isSangriaAcrescimo(isSangria, _pedido.DataDigitacao, _pedido.ValorPedido, lblObservacao.Text.Trim())) { MessageBox.Show("Houve um erro inesperado ao se comunicar com a IMPRESSOSA BEMATECH, verifique-a por favor!"); } }
static void Main(string[] args) { try { MP2032.ConfiguraModeloImpressora(7); // Bematech MP-4200 TH MP2032.IniciaPorta("USB"); bool isSangria = true; decimal valor = 10.50m; if (!ImpressoraBematech.isSangriaAcrescimo(isSangria, DateTime.Now, valor, "Mercado")) { return; } GeraXml.AmbienteNFCe = "1"; CertificadoDigital.getInstance.Seleciona_Certificado(); (new EmitenteDao()).SelecionaEmitente(); var control = (new ControleFiscalDao()).getControle(); if (control != null) { ControleFiscal.GetInstance.TokenHomologacao = control.TokenHomologacao; ControleFiscal.GetInstance.TokenProducao = control.TokenProducao; ControleFiscal.GetInstance.CaminhoXmlAutorizado = control.CaminhoXmlAutorizado; ControleFiscal.GetInstance.CaminhoXmlCancelado = control.CaminhoXmlCancelado; ControleFiscal.GetInstance.CaminhoXmlInutilizado = control.CaminhoXmlInutilizado; control = null; } var dataInicial = new DateTime(2018, 10, 03); var dataFinal = new DateTime(2018, 10, 03); var pedidos = (new PedidoDao()).GetPedidosDoCaixa(dataInicial, dataFinal); foreach (var pedido in pedidos) { pedido.DataDigitacao = DateTime.Now; pedido.NFiscal = (new ControleFiscalDao()).GetUltimoNumeroNFiscalGerado() + 1; pedido.Cliente = (new ClienteDao()).GetClienteConsumidorNaoIdentificado(); pedido.Operacao = (new OperacaoDao()).GetOperacaoPorPedido(pedido.NumDoc); pedido.Pagamentos = (new TipoPagamentoDao()).GetPagametosDoPedido(pedido.NumDoc); pedido.ItensDoPedido = (new PedidoItemDao()).GetItensDoPedido(pedido.NumDoc); pedido.ItensDoPedido.ForEach(pedidoItem => { pedidoItem.Produto = (new ProdutoDao().GetProduto(pedidoItem.ProdutoId)); pedidoItem.Produto.GrupoFiscal = (new ProdutoGrupoFiscalDao()).GetGrupoFiscalPorProduto(pedidoItem.ProdutoId); }); var geraXml = new GeraXml(); //Gerando XML var xml = geraXml.GeraXmlNFCe(pedido); var GravaXml = File.CreateText(@"C:\Users\Succo\Desktop\xmlGerado.xml"); GravaXml.Write(xml.InnerXml); GravaXml.Close(); //Assinando XML var xmlAssinado = (new AssinaXml()).AssinaXML(xml.InnerXml, "infNFe", CertificadoDigital.getInstance.oCertificado); var GravaXmlAssinado = File.CreateText(@"C:\Users\Succo\Desktop\xmlAssinado.xml"); GravaXmlAssinado.Write(xmlAssinado.InnerXml); GravaXmlAssinado.Close(); //Validando XML try { // Validando o XML var retValidar = (new ValidaXml()).Valida(xmlAssinado, "NFe"); //Inserindo a URL QRCode no xml já assinado xmlAssinado.LoadXml(xmlAssinado.InnerXml.Replace("</infNFe>", "</infNFe><infNFeSupl><qrCode><![CDATA[" + geraXml.GetUrlQRCode(xmlAssinado, pedido) + "]]></qrCode><urlChave>http://www4.fazenda.rj.gov.br/consultaNFCe/QRCode</urlChave></infNFeSupl>")); } catch (Exception ex) { Console.WriteLine("** Erro ao validar **"); Console.WriteLine(ex.Message); } var GravaXmlAssinadoComQrCode = File.CreateText(@"C:\Users\Succo\Desktop\xmlAssinadoComQrCode.xml"); GravaXmlAssinadoComQrCode.Write(xmlAssinado.InnerXml); GravaXmlAssinadoComQrCode.Close(); var retornoDaTransmicao = (new TransmiteXml()).XML_NFCe4(xmlAssinado, pedido.NFiscal.ToString(), CertificadoDigital.getInstance.oCertificado); if (retornoDaTransmicao.Substring(0, 4) != "Erro") { var xmlRetorno = new XmlDocument(); xmlRetorno.LoadXml(retornoDaTransmicao); var GravaXmlTransmitido = File.CreateText(@"C:\Users\Succo\Desktop\xmlTransmitido.xml"); GravaXmlTransmitido.Write(xmlRetorno.InnerXml); GravaXmlTransmitido.Close(); // Lote processado if (xmlRetorno.GetElementsByTagName("cStat")[0].InnerText == "104") { // Autorizado if (xmlRetorno.GetElementsByTagName("cStat")[1].InnerText == "100") { 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> var nPosI = retornoDaTransmicao.IndexOf("<protNFe"); var nPosF = retornoDaTransmicao.Length - (nPosI + 13); var strProc = retornoDaTransmicao.Substring(nPosI, nPosF); // XML pronto para salvar var strXmlProcNfe = @"<?xml version=""1.0"" encoding=""utf-8"" ?><nfeProc xmlns=""http://www.portalfiscal.inf.br/nfe"" versao=""4.00"">" + xmlAssinado.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 (!string.IsNullOrEmpty(ControleFiscal.GetInstance.CaminhoXmlAutorizado)) { //Salvando o arquivo XML na pasta var 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(); } } } } else { Console.WriteLine("Erro no lote"); } } } } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { Console.ReadKey(); } }
private void lblSalvar_Click(object sender, EventArgs e) { if (txtValor.Text == "0,00") { MessageBox.Show("Informe o valor do Lançamento.", "Mensagem - Erro", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } var db = new Database("stringConexao"); try { db.BeginTransaction(); var operacaoId = 0; foreach (Control control in panelOperacao.Controls) { if (control is RadioButton radio) { if (radio.Checked == true) { operacaoId = Convert.ToInt32(radio.Tag); } } } Pedido = new Pedido() { DataDigitacao = DateTime.Now, ValorPedido = Convert.ToDecimal(txtValor.Text), StatusPedido = "F", UsuarioId = Usuario.getInstance.codUser, OperacaoId = operacaoId }; Pedido.NumDoc = Convert.ToInt32(db.Insert(Pedido)); db.Insert("Movdb_Pagamento_Rel", new { numdoc = Pedido.NumDoc, pagamento_id = 1, valor = Convert.ToDecimal(txtValor.Text), observacao = txtObservacao.Text }); db.CompleteTransaction(); if (ckImprimir.Checked) { VerificaStatusImpressora(); bool isSangria = false; if (operacaoId == 2) { isSangria = true; } if (!ImpressoraBematech.isSangriaAcrescimo(isSangria, Pedido.DataDigitacao, Pedido.ValorPedido, txtObservacao.Text.Trim())) { MessageBox.Show("Houve um erro inesperado ao se comunicar com a IMPRESSOSA BEMATECH, verifique-a por favor!"); } } } catch (Exception ex) { db.AbortTransaction(); MessageBox.Show("Houve um erro inesperado ao finalizar o Lançamento, tente novamente!" + Environment.NewLine + ex.Message); } Close(); }