/// <inheritdoc /> public ConsultaSessaoResposta(string retorno, Encoding encoding) : base(retorno, encoding) { // ReSharper disable once SwitchStatementMissingSomeCases switch (CodigoDeRetorno) { case 6000: if (RetornoLst.Count < 6) { return; } using (var stream = new MemoryStream(Convert.FromBase64String(RetornoLst[6]))) Venda = CFe.Load(stream, encoding); QRCode = $"{RetornoLst[8].OnlyNumbers()}|{RetornoLst[7]}|{RetornoLst[9]}|{RetornoLst[10]}|{RetornoLst[11]}"; break; case 7000: if (RetornoLst.Count < 6) { return; } using (var stream = new MemoryStream(Convert.FromBase64String(RetornoLst[6]))) Cancelamento = CFeCanc.Load(stream, encoding); QRCode = $"{RetornoLst[8].OnlyNumbers()}|{RetornoLst[7]}|{RetornoLst[9]}|{RetornoLst[10]}|{RetornoLst[11]}"; break; } }
public TesteResponse(string retorno, Encoding encoding) : base(retorno, encoding) { VendaTeste = new CFe(); if (CodigoDeRetorno != 9000) { return; } if (RetornoLst.Count < 5) { return; } using var stream = new MemoryStream(Convert.FromBase64String(RetornoLst[5])); VendaTeste = CFe.Load(stream, encoding); }
private void carregarXMLToolStripMenuItem_Click(object sender, EventArgs e) { logger.Info("Carregar XML CFe."); var file = Helpers.OpenFiles(@"CFe Xml | *.xml"); if (file.IsEmpty()) { logger.Info("Carregar XML CFe Cancelado."); return; } cfeAtual = CFe.Load(file); wbrXmlGerado.LoadXml(cfeAtual.GetXml()); tbcXml.SelectedTab = tpgXmlGerado; logger.Info("XML CFe carregado com sucesso."); }
public override void Imprimir(string xmlcontent) { base.Imprimir(xmlcontent); _CFe = CFe.Load(new MemoryStream(Encoding.UTF8.GetBytes(xmlcontent)), Encoding.UTF8); #region Cabeçalho #region Logotipo if (Logotipo != null) { if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignCenter(); } _Printer.Image(Logotipo); } #endregion #region Dados do Emitente if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignCenter(); } _Printer.BoldMode(PrinterModeState.On); _Printer.WriteLine(_CFe.InfCFe.Emit.XFant.LimitarString(ColunasNormal).RemoveAccent()); if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignLeft(); } _Printer.BoldMode(PrinterModeState.Off); _Printer.WriteLine(_CFe.InfCFe.Emit.XNome.LimitarString(ColunasNormal).RemoveAccent()); _Printer.CondensedMode(PrinterModeState.On); _Printer.WriteLine(GereneHelpers.TextoEsquerda_Direita($"Cnpj: {_CFe.InfCFe.Emit.CNPJ.FormatoCpfCnpj()}", $"I.E.: {_CFe.InfCFe.Emit.IE}", ColunasCondensadas)); _Printer.Write("End.: "); _Printer.WriteLine($"{_CFe.InfCFe.Emit.EnderEmit.XLgr.RemoveAccent()},{_CFe.InfCFe.Emit.EnderEmit.Nro.RemoveAccent()} {_CFe.InfCFe.Emit.EnderEmit.XCpl.RemoveAccent()}"); _Printer.Write("Bairro: "); _Printer.WriteLine($"{_CFe.InfCFe.Emit.EnderEmit.XBairro.RemoveAccent()} - {_CFe.InfCFe.Emit.EnderEmit.XMun.RemoveAccent()} - {_CFe.InfCFe.Emit.EnderEmit.CEP.FormatoCep()}"); _Printer.CondensedMode(PrinterModeState.Off); _Printer.CondensedMode(string.Empty.PadLeft(ColunasCondensadas, '-')); #endregion #region Número do extrato if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignCenter(); } _Printer.BoldMode(PrinterModeState.On); _Printer.WriteLine($"Extrato No. {_CFe.InfCFe.Ide.NCFe:D6}"); _Printer.WriteLine($"CUPOM FISCAL ELETRONICO SAT"); #endregion #region Homologação if (_CFe.InfCFe.Ide.TpAmb == ACBr.Net.DFe.Core.Common.DFeTipoAmbiente.Homologacao) { _Printer.CondensedMode(string.Empty.PadLeft(ColunasCondensadas, '-')); if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignCenter(); } _Printer.BoldMode(PrinterModeState.On); if (TipoPapel == TipoPapel.Tp80mm) { _Printer.WriteLine("AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL"); } else { _Printer.WriteLine("AMBIENTE DE HOMOLOGACAO"); _Printer.WriteLine("SEM VALOR FISCAL"); } _Printer.BoldMode(PrinterModeState.Off); _Printer.CondensedMode(string.Empty.PadLeft(ColunasCondensadas, '-')); } #endregion #region Documento Cancelado if (DocumentoCancelado) { _Printer.CondensedMode(string.Empty.PadLeft(ColunasCondensadas, '-')); if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignCenter(); } _Printer.BoldMode(PrinterModeState.On); _Printer.WriteLine("*** DOCUMENTO CANCELADO ***"); _Printer.BoldMode(PrinterModeState.Off); _Printer.CondensedMode(string.Empty.PadLeft(ColunasCondensadas, '-')); } #endregion #region Consumidor if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignLeft(); } _Printer.CondensedMode(PrinterModeState.On); _Printer.Write("CPF/CNPJ do Consumidor: "); _Printer.WriteLine(_CFe.InfCFe.Dest?.CPF.IsNotNull() == true ? _CFe.InfCFe.Dest.CPF.FormatoCpfCnpj() : _CFe.InfCFe.Dest?.CNPJ.IsNotNull() == true ? _CFe.InfCFe.Dest.CNPJ.FormatoCpfCnpj() : "000.000.000-00"); _Printer.Write("Razao Social/Nome: "); _Printer.WriteLine((_CFe.InfCFe.Dest?.Nome ?? "CONSUMIDOR").LimitarString(ColunasCondensadas)); _Printer.CondensedMode(PrinterModeState.Off); #endregion _Printer.CondensedMode(string.Empty.PadLeft(ColunasCondensadas, '-')); #endregion #region Detalhes if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignCenter(); } if (TipoPapel == TipoPapel.Tp80mm) { _Printer.BoldMode("#|COD|DESC|QTD|UN|VL UN|DESC|VL ITEM"); } else { _Printer.BoldMode("COD|DESC|QTD|UN|VL UN|DESC|VL ITEM"); } _Printer.CondensedMode(string.Empty.PadLeft(ColunasCondensadas, '-')); #region Produtos if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignLeft(); } _Printer.CondensedMode(PrinterModeState.On); foreach (var det in _CFe.InfCFe.Det) { string textoE = string.Empty; string codProd = det.Prod.CProd; if (UsarBarrasComoCodigo) { codProd = $"{(UsarBarrasComoCodigo && det.Prod.CEAN.IsNotNull() ? det.Prod.CEAN : det.Prod.CProd).PadRight(13)}"; } if (ProdutoDuasLinhas) { textoE = $"{ det.NItem:D3} | {codProd}"; } else { textoE = $"{ det.NItem:D3} | {codProd} {det.Prod.XProd}"; } string textoR = $"{det.Prod.QCom:N3} {det.Prod.UCom} x {det.Prod.VUnCom:N2} = {det.Prod.VItem:N2}"; _Printer.WriteLine(GereneHelpers.TextoEsquerda_Direita(textoE, textoR, ColunasCondensadas)); if (ProdutoDuasLinhas) { _Printer.WriteLine(det.Prod.XProd.LimitarString(ColunasCondensadas)); } if (det.Prod.VOutro > 0) { _Printer.WriteLine(GereneHelpers.TextoEsquerda_Direita("Acrescimos:", det.Prod.VDesc.ToString("C2", Cultura), ColunasCondensadas)); } if (det.Prod.VDesc > 0) { _Printer.WriteLine(GereneHelpers.TextoEsquerda_Direita("Descontos:", det.Prod.VDesc.ToString("C2", Cultura), ColunasCondensadas)); } } _Printer.CondensedMode(PrinterModeState.Off); _Printer.CondensedMode(string.Empty.PadLeft(ColunasCondensadas, '-')); #region Totais _Printer.BoldMode(PrinterModeState.On); _Printer.CondensedMode(PrinterModeState.On); _Printer.WriteLine(GereneHelpers.TextoEsquerda_Direita("Qtde. total de itens:", _CFe.InfCFe.Det.Count.ToString("N0", Cultura), ColunasCondensadas)); _Printer.WriteLine(GereneHelpers.TextoEsquerda_Direita("Subtotal:", _CFe.InfCFe.Total.ICMSTot.VProd.ToString("C2", Cultura), ColunasCondensadas)); if (_CFe.InfCFe.Total.ICMSTot.VOutro > 0) { _Printer.WriteLine(GereneHelpers.TextoEsquerda_Direita("Acrescimos:", _CFe.InfCFe.Total.ICMSTot.VOutro.ToString("C2", Cultura), ColunasCondensadas)); } if (_CFe.InfCFe.Total.ICMSTot.VDesc > 0) { _Printer.WriteLine(GereneHelpers.TextoEsquerda_Direita("Descontos:", _CFe.InfCFe.Total.ICMSTot.VDesc.ToString("C2", Cultura), ColunasCondensadas)); } _Printer.CondensedMode(PrinterModeState.Off); _Printer.BoldMode(GereneHelpers.TextoEsquerda_Direita("Valor TOTAL:", _CFe.InfCFe.Total.VCFe.ToString("C2", Cultura), ColunasNormal)); _Printer.BoldMode(PrinterModeState.Off); #endregion #endregion _Printer.NewLine(); #endregion #region Pagamentos if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignLeft(); } _Printer.CondensedMode(PrinterModeState.On); foreach (var _pagto in _CFe.InfCFe.Pagto.Pagamentos) { _Printer.WriteLine(GereneHelpers.TextoEsquerda_Direita(_pagto.CMp.GetDescription().RemoveAccent(), _pagto.VMp.ToString("C2", Cultura), ColunasCondensadas)); } _Printer.CondensedMode(PrinterModeState.Off); _Printer.WriteLine(GereneHelpers.TextoEsquerda_Direita("Troco:", _CFe.InfCFe.Pagto.VTroco.ToString("C2", Cultura), ColunasNormal)); _Printer.NewLine(); #endregion #region Rodape #region Dados da entrega if (_CFe.InfCFe.Entrega != null && !_CFe.InfCFe.Entrega.XLgr.IsNull()) { if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignCenter(); } _Printer.BoldMode(PrinterModeState.On); _Printer.WriteLine("DADOS PARA ENTREGA"); if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignLeft(); } _Printer.BoldMode(PrinterModeState.Off); _Printer.CondensedMode(PrinterModeState.On); _Printer.Write("End.: "); _Printer.WriteLine($"{_CFe.InfCFe.Entrega.XLgr.RemoveAccent()}, {_CFe.InfCFe.Entrega.Nro.RemoveAccent()} {_CFe.InfCFe.Entrega.XCpl.RemoveAccent()}"); _Printer.Write("Bairro: "); _Printer.WriteLine($"{_CFe.InfCFe.Entrega.XBairro.RemoveAccent()} - {_CFe.InfCFe.Entrega.XMun.RemoveAccent()}/{_CFe.InfCFe.Entrega.UF}"); _Printer.CondensedMode(PrinterModeState.Off); _Printer.CondensedMode(string.Empty.PadLeft(ColunasCondensadas, '-')); } #endregion #region Observações do Fisco if (_CFe.InfCFe.InfAdic.ObsFisco.Any()) { if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignLeft(); } _Printer.CondensedMode(PrinterModeState.On); _Printer.BoldMode("Observacoes do Fisco"); foreach (var fisco in _CFe.InfCFe.InfAdic.ObsFisco) { string texto = $"{fisco.XCampo} - {fisco.XTexto}"; foreach (var txt in texto.Split(40)) { _Printer.WriteLine(txt.RemoveAccent()); } } _Printer.NewLine(); _Printer.CondensedMode(PrinterModeState.Off); } #endregion #region Observações do Contribuinte if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignLeft(); } _Printer.CondensedMode(PrinterModeState.On); _Printer.BoldMode("Observacoes do Contribuinte"); if (!_CFe.InfCFe.InfAdic.InfCpl.IsNull()) { foreach (var txt in _CFe.InfCFe.InfAdic.InfCpl.Split(40)) { _Printer.WriteLine(txt.RemoveAccent()); } } _Printer.NewLine(); _Printer.CondensedMode(PrinterModeState.Off); #endregion #region Tributos if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignLeft(); } _Printer.BoldMode(PrinterModeState.Off); _Printer.CondensedMode(PrinterModeState.On); _Printer.WriteLine(GereneHelpers.TextoEsquerda_Direita("Valor aproximado dos Tributos deste Cupom", _CFe.InfCFe.Total.VCFeLei12741.ToString("C2", Cultura), ColunasCondensadas)); _Printer.WriteLine("(Conforme Lei Fed. 12.741/2012)"); _Printer.CondensedMode(PrinterModeState.Off); _Printer.CondensedMode(string.Empty.PadLeft(ColunasCondensadas, '-')); #endregion #region Número do extrato if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignCenter(); } _Printer.WriteLine($"SAT No. {_CFe.InfCFe.Ide.NSerieSAT:D9}"); _Printer.CondensedMode(PrinterModeState.On); _Printer.WriteLine($"Data e Hora {_CFe.InfCFe.Ide.DEmi:dd/MM/yyyy} {_CFe.InfCFe.Ide.HEmi:HH:mm:ss}"); _Printer.CondensedMode(PrinterModeState.Off); #endregion #region Chave de Acesso if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignCenter(); } _Printer.CondensedMode(PrinterModeState.On); string chave = Regex.Replace(_CFe.InfCFe.Id.OnlyNumber(), ".{4}", "$0 "); if (TipoPapel == TipoPapel.Tp80mm) { _Printer.BoldMode(chave); } else { _Printer.BoldMode(chave.Substring(0, 24).Trim()); _Printer.BoldMode(chave.Substring(24).Trim()); } _Printer.Code128(_CFe.InfCFe.Id.OnlyNumber().Substring(0, 22)); _Printer.Code128(_CFe.InfCFe.Id.OnlyNumber().Substring(22)); if (TipoPapel == TipoPapel.Tp80mm) { _Printer.NewLine(); } _Printer.CondensedMode(PrinterModeState.Off); #endregion #region QrCode if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignCenter(); } string _qrCode = $"{_CFe.InfCFe.Id.OnlyNumber()}|" + $"{_CFe.InfCFe.Ide.DhEmissao:yyyyMMddHHmmss}|" + $"{_CFe.InfCFe.Total.VCFe:0.00}|" + $"{(_CFe.InfCFe.Dest?.CNPJ.IsNotNull() == true ? _CFe.InfCFe.Dest.CNPJ : _CFe.InfCFe.Dest.CPF)}|" + $"{_CFe.InfCFe.Ide.AssinaturaQrcode}"; if (TipoPapel == TipoPapel.Tp80mm) { _Printer.QrCode(_qrCode, QrCodeSize.Size1); } else { _Printer.QrCode(_qrCode, QrCodeSize.Size0); } if (TipoPapel == TipoPapel.Tp80mm) { _Printer.NewLine(); } #endregion if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignCenter(); } _Printer.CondensedMode(PrinterModeState.On); if (TipoPapel == TipoPapel.Tp80mm) { _Printer.WriteLine("Consulte o QR Code pelo aplicativo \"De olho na nota\""); _Printer.WriteLine("disponível na AppStore (Apple) e PlayStore (Android)"); } else { _Printer.WriteLine("Consulte o QR Code pelo aplicativo"); _Printer.WriteLine("\"De olho na nota\" disponível na"); _Printer.WriteLine("AppStore (Apple) e PlayStore (Android)"); } _Printer.CondensedMode(PrinterModeState.Off); #endregion if (CortarPapel) { _Printer.PartialPaperCut(); } _Printer.PrintDocument(); }
/// <summary> /// Inicializa uma nova instancia da classe <see cref="VendaResponse" />. /// </summary> public VendaResponse(string retorno, Encoding encoding) : base(retorno, encoding) { if (CodigoDeRetorno != 6000 || RetornoLst.Count < 6) { return; } using (var stream = new MemoryStream(Convert.FromBase64String(RetornoLst[6]))) Venda = CFe.Load(stream, encoding); if (RetornoLst.Count > 8) { ChaveConsulta = RetornoLst[8]; } #region Comments //O QRCode é montado a partir dos valores retornados pelo SAT //Posições dos campos de retorno //numeroSessao, EEEEE, CCCC, mensagem, cod, mensagemSEFAZ, base64, timeStamp, chaveConsulta, valorTotalCFe, CPFCNPJValue, assinaturaQRCOD //Cadeia para o QRCode //chaveConsulta|timeStamp|valorTotal|CPFCNPJValue|assinaturaQRCODE #endregion Comments QRCode = $"{RetornoLst[8].OnlyNumbers()}|{RetornoLst[7]}|{RetornoLst[9]}|{RetornoLst[10]}|{RetornoLst[11]}"; }