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(); }
public void ImprimirCancelamento(string xmlContent) { base.Imprimir(xmlContent); _CFeCanc = CFeCanc.Load(new MemoryStream(Encoding.UTF8.GetBytes(xmlContent)), Encoding.UTF8); #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((_CFeCanc.InfCFe.Emit.XFant.IsNotNull() ? _CFeCanc.InfCFe.Emit.XFant : _CFeCanc.InfCFe.Emit.XNome).LimitarString(ColunasNormal).RemoveAccent()); if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignLeft(); } _Printer.BoldMode(PrinterModeState.Off); _Printer.WriteLine(_CFeCanc.InfCFe.Emit.XNome.LimitarString(ColunasNormal).RemoveAccent()); _Printer.CondensedMode(PrinterModeState.On); _Printer.WriteLine(GereneHelpers.TextoEsquerda_Direita($"Cnpj: {_CFeCanc.InfCFe.Emit.CNPJ.FormatoCpfCnpj()}", $"I.E.: {_CFeCanc.InfCFe.Emit.IE}", ColunasCondensadas)); _Printer.Write("End.: "); _Printer.WriteLine($"{_CFeCanc.InfCFe.Emit.EnderEmit.XLgr.RemoveAccent()},{_CFeCanc.InfCFe.Emit.EnderEmit.Nro.RemoveAccent()} {_CFeCanc.InfCFe.Emit.EnderEmit.XCpl.RemoveAccent()}"); _Printer.Write("Bairro: "); _Printer.WriteLine($"{_CFeCanc.InfCFe.Emit.EnderEmit.XBairro.RemoveAccent()} - {_CFeCanc.InfCFe.Emit.EnderEmit.XMun.RemoveAccent()} - {_CFeCanc.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. {_CFeCanc.InfCFe.Ide.NCFe:D6}"); _Printer.WriteLine($"CUPOM FISCAL ELETRONICO SAT"); _Printer.WriteLine($"CANCELAMENTO"); _Printer.BoldMode(PrinterModeState.Off); #endregion #region Homologação /* * if (_CFeCanc.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); * _Printer.WriteLine("AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL"); * _Printer.BoldMode(PrinterModeState.Off); * _Printer.CondensedMode(string.Empty.PadLeft(ColunasCondensadas, '-')); * } */ #endregion #region Dados do cupom cancelado _Printer.CondensedMode(string.Empty.PadLeft(ColunasCondensadas, '-')); if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignLeft(); } if (TipoPapel == TipoPapel.Tp80mm) { _Printer.BoldMode("DADOS DO CUPOM FISCAL ELETRONICO CANCELADO"); } else { _Printer.BoldMode("DADOS DO CUPOM FISCAL"); _Printer.BoldMode("ELETRONICO CANCELADO"); } _Printer.CondensedMode(PrinterModeState.On); _Printer.Write("CPF/CNPJ do Consumidor: "); _Printer.WriteLine(_CFeCanc.InfCFe.Dest?.CPF.IsNotNull() == true ? _CFeCanc.InfCFe.Dest.CPF.FormatoCpfCnpj() : _CFeCanc.InfCFe.Dest?.CNPJ.IsNotNull() == true ? _CFeCanc.InfCFe.Dest.CNPJ.FormatoCpfCnpj() : "000.000.000-00"); _Printer.BoldMode(GereneHelpers.TextoEsquerda_Direita("Valor total:", _CFeCanc.InfCFe.Total.VCFe.ToString("C2", Cultura), ColunasCondensadas)); if (TipoPapel == TipoPapel.Tp80mm) { _Printer.NewLine(); } _Printer.CondensedMode(PrinterModeState.Off); if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignCenter(); } _Printer.WriteLine($"SAT No. {_CFeCanc.InfCFe.Ide.NSerieSAT:D9}"); _Printer.WriteLine($"Data e Hora {_CFeCanc.InfCFe.Ide.DEmi:dd/MM/yyyy} {_CFeCanc.InfCFe.Ide.HEmi:HH:mm:ss}"); if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignLeft(); } _Printer.CondensedMode(PrinterModeState.On); #region Chave de Acesso if (TipoPapel == TipoPapel.Tp80mm) { _Printer.NewLine(); } if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignCenter(); } string chave = Regex.Replace(_CFeCanc.InfCFe.ChCanc.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(_CFeCanc.InfCFe.ChCanc.OnlyNumber().Substring(0, 24)); _Printer.Code128(_CFeCanc.InfCFe.ChCanc.OnlyNumber().Substring(24)); _Printer.NewLine(); #endregion _Printer.CondensedMode(PrinterModeState.Off); #region QrCode if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignCenter(); } string _qrCode = $"{_CFeCanc.InfCFe.ChCanc.OnlyNumber()}|" + $"{_CFeCanc.InfCFe.Ide.DhEmissao:yyyyMMddHHmmss}|" + $"{_CFeCanc.InfCFe.Ide.DhEmissao:0.00}|" + $"{(_CFeCanc.InfCFe.Dest?.CNPJ.IsNotNull() == true ? _CFeCanc.InfCFe.Dest.CNPJ : _CFeCanc.InfCFe.Dest.CPF)}|" + $"{_CFeCanc.InfCFe.Ide.AssinaturaQrcode}"; _Printer.QrCode(_qrCode, TipoPapel == TipoPapel.Tp80mm ? QrCodeSize.Size1 : QrCodeSize.Size0); if (TipoPapel == TipoPapel.Tp80mm) { _Printer.NewLine(); } #endregion #endregion #region Dados do cupom cancelado _Printer.CondensedMode(string.Empty.PadLeft(ColunasCondensadas, '-')); if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignLeft(); } if (TipoPapel == TipoPapel.Tp80mm) { _Printer.BoldMode("DADOS DO CUPOM FISCAL ELETRONICO DE CANCELAMENTO"); } else { _Printer.BoldMode("DADOS DO CUPOM FISCAL"); _Printer.BoldMode("ELETRONICO DE CANCELAMENTO"); } if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignCenter(); } _Printer.WriteLine($"SAT No. {_CFeCanc.InfCFe.Ide.NSerieSAT:D9}"); _Printer.WriteLine($"Data e Hora {_CFeCanc.InfCFe.Ide.DEmi:dd/MM/yyyy} {_CFeCanc.InfCFe.Ide.HEmi:HH:mm:ss}"); #region Chave de Acesso if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignCenter(); } _Printer.CondensedMode(PrinterModeState.On); string chave2 = Regex.Replace(_CFeCanc.InfCFe.Id.OnlyNumber(), ".{4}", "$0 "); if (TipoPapel == TipoPapel.Tp80mm) { _Printer.BoldMode(chave2); } else { _Printer.BoldMode(chave2.Substring(0, 24).Trim()); _Printer.BoldMode(chave2.Substring(24).Trim()); } _Printer.Code128(_CFeCanc.InfCFe.Id.OnlyNumber().Substring(0, 24)); _Printer.Code128(_CFeCanc.InfCFe.Id.OnlyNumber().Substring(24)); if (TipoPapel == TipoPapel.Tp80mm) { _Printer.NewLine(); } #endregion _Printer.CondensedMode(PrinterModeState.Off); #region QrCode if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignCenter(); } string _qrCodeCancel = $"{_CFeCanc.InfCFe.Id.OnlyNumber()}|" + $"{_CFeCanc.InfCFe.Ide.DhEmissao:yyyyMMddHHmmss}|" + $"{_CFeCanc.InfCFe.Total.VCFe:0.00}|" + $"{(_CFeCanc.InfCFe.Dest?.CNPJ.IsNotNull() == true ? _CFeCanc.InfCFe.Dest.CNPJ : _CFeCanc.InfCFe.Dest.CPF)}|" + $"{_CFeCanc.InfCFe.Ide.AssinaturaQrcode}"; _Printer.QrCode(_qrCodeCancel, TipoPapel == TipoPapel.Tp80mm ? QrCodeSize.Size1 : QrCodeSize.Size0); _Printer.NewLine(); #endregion #endregion _Printer.CondensedMode(string.Empty.PadLeft(ColunasCondensadas, '-')); #region Desenvolvedor if (Desenvolvedor.IsNotNull()) { if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignRight(); } _Printer.CondensedMode(PrinterModeState.On); _Printer.CondensedMode(Desenvolvedor); _Printer.CondensedMode(PrinterModeState.Off); } #endregion if (CortarPapel) { _Printer.PartialPaperCut(); } _Printer.PrintDocument(); }
public override void Imprimir(string xmlcontent) { base.Imprimir(xmlcontent); bool isOffline = false; //Fora do estado de SP pode haver a impressão de NFCe offline, ou seja, sem a tag NFeProc if (xmlcontent.ToLower().Contains("<nfeproc")) { _NFCe = new NotaFiscal().CarregarDeXmlString(xmlcontent); } else { _NFCe = new NotaFiscal() { NFe = new NFe.Classes.NFe().CarregarDeXmlString(xmlcontent), protNFe = new NFe.Classes.Protocolo.protNFe() }; _NFCe.versao = _NFCe.NFe.infNFe.versao; isOffline = true; } #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(_NFCe.NFe.infNFe.emit.xFant.LimitarString(ColunasNormal).RemoverAcentos()); if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignLeft(); } _Printer.BoldMode(PrinterModeState.Off); _Printer.WriteLine(_NFCe.NFe.infNFe.emit.xNome.LimitarString(ColunasNormal).RemoverAcentos()); _Printer.CondensedMode(PrinterModeState.On); _Printer.WriteLine(GereneHelpers.TextoEsquerda_Direita($"Cnpj: {_NFCe.NFe.infNFe.emit.CNPJ.FormatoCpfCnpj()}", $"I.E.: {_NFCe.NFe.infNFe.emit.IE}", ColunasCondensadas)); _Printer.Write("End.: "); _Printer.WriteLine($"{_NFCe.NFe.infNFe.emit.enderEmit.xLgr.RemoverAcentos()},{_NFCe.NFe.infNFe.emit.enderEmit.nro.RemoverAcentos()} {_NFCe.NFe.infNFe.emit.enderEmit.xCpl.RemoverAcentos()}"); _Printer.Write("Bairro: "); _Printer.WriteLine($"{_NFCe.NFe.infNFe.emit.enderEmit.xBairro.RemoverAcentos()} - {_NFCe.NFe.infNFe.emit.enderEmit.xMun.RemoverAcentos()} - {_NFCe.NFe.infNFe.emit.enderEmit.CEP.FormatoCep()}"); _Printer.CondensedMode(PrinterModeState.Off); _Printer.CondensedMode(string.Empty.PadLeft(ColunasCondensadas, '-')); #endregion #region DANFE e Via if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignCenter(); } _Printer.BoldMode("DANFE NFC-e"); _Printer.CondensedMode(PrinterModeState.On); if (TipoPapel == TipoPapel.Tp80mm) { _Printer.BoldMode("Documento Auxiliar da Nota Fiscal de Consumidor Eletronica"); } else { _Printer.BoldMode("Documento Auxiliar da"); _Printer.BoldMode("Nota Fiscal de Consumidor Eletronica"); } _Printer.CondensedMode(PrinterModeState.Off); #endregion #region Impressão Offline if (isOffline) { _Printer.CondensedMode(string.Empty.PadLeft(ColunasCondensadas, '-')); if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignCenter(); } _Printer.BoldMode("*** DOCUMENTO EMITIDO OFFLINE ***"); } #endregion #region Homologação if (_NFCe.NFe.infNFe.ide.tpAmb == TipoAmbiente.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); } #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); } #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 _NFCe.NFe.infNFe.det) { string codProd = det.prod.cProd; if (UsarBarrasComoCodigo) { codProd = $"{(UsarBarrasComoCodigo && det.prod.cEAN.IsNotNull() ? det.prod.cEAN : det.prod.cProd).PadRight(13)}"; } string textoE; if (ProdutoDuasLinhas) { textoE = $"{ det.nItem:D3} | {codProd}"; } else { textoE = $"{ det.nItem:D3} | {codProd} {det.prod.xProd}"; } string textoR = $"{det.prod.qCom.ToString($"N{CasasDecimaisQuantidade}")} {det.prod.uCom} x {det.prod.vUnCom:N2} = {det.prod.vProd:N2}"; _Printer.WriteLine(GereneHelpers.TextoEsquerda_Direita(textoE, textoR, ColunasCondensadas)); if (ProdutoDuasLinhas) { _Printer.WriteLine(det.prod.xProd.LimitarString(ColunasCondensadas)); } if (det.prod.vOutro.HasValue && det.prod.vOutro.Value > 0) { _Printer.WriteLine(GereneHelpers.TextoEsquerda_Direita("Acrescimos:", det.prod.vOutro.Value.ToString("C2", Cultura), ColunasCondensadas)); } if (det.prod.vDesc.HasValue && det.prod.vDesc.Value > 0) { _Printer.WriteLine(GereneHelpers.TextoEsquerda_Direita("Descontos:", det.prod.vDesc.Value.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:", _NFCe.NFe.infNFe.det.Count.ToString("N0", Cultura), ColunasCondensadas)); _Printer.WriteLine(GereneHelpers.TextoEsquerda_Direita("Subtotal:", _NFCe.NFe.infNFe.total.ICMSTot.vProd.ToString("C2", Cultura), ColunasCondensadas)); if (_NFCe.NFe.infNFe.total.ICMSTot.vOutro > 0) { _Printer.WriteLine(GereneHelpers.TextoEsquerda_Direita("Acrescimos:", _NFCe.NFe.infNFe.total.ICMSTot.vOutro.ToString("C2", Cultura), ColunasCondensadas)); } if (_NFCe.NFe.infNFe.total.ICMSTot.vDesc > 0) { _Printer.WriteLine(GereneHelpers.TextoEsquerda_Direita("Descontos:", _NFCe.NFe.infNFe.total.ICMSTot.vDesc.ToString("C2", Cultura), ColunasCondensadas)); } if (_NFCe.NFe.infNFe.total.ICMSTot.vFrete > 0) { _Printer.WriteLine(GereneHelpers.TextoEsquerda_Direita("Frete:", _NFCe.NFe.infNFe.total.ICMSTot.vFrete.ToString("C2", Cultura), ColunasCondensadas)); } if (_NFCe.NFe.infNFe.total.ICMSTot.vSeg > 0) { _Printer.WriteLine(GereneHelpers.TextoEsquerda_Direita("Seguro:", _NFCe.NFe.infNFe.total.ICMSTot.vSeg.ToString("C2", Cultura), ColunasCondensadas)); } if (_NFCe.NFe.infNFe.total.ICMSTot.vDesc > 0) { _Printer.WriteLine(GereneHelpers.TextoEsquerda_Direita("Descontos:", _NFCe.NFe.infNFe.total.ICMSTot.vDesc.ToString("C2", Cultura), ColunasCondensadas)); } _Printer.CondensedMode(PrinterModeState.Off); _Printer.BoldMode(GereneHelpers.TextoEsquerda_Direita("Valor TOTAL:", _NFCe.NFe.infNFe.total.ICMSTot.vNF.ToString("C2", Cultura), ColunasNormal)); _Printer.BoldMode(PrinterModeState.Off); #endregion #endregion _Printer.NewLine(); #endregion #region Pagamentos if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignLeft(); } bool imprimiutroco = false; foreach (var _pagto in _NFCe.NFe.infNFe.pag) { _Printer.CondensedMode(PrinterModeState.On); foreach (var _detpagto in _pagto.detPag) { _Printer.WriteLine(GereneHelpers.TextoEsquerda_Direita(_detpagto.tPag.Descricao().RemoverAcentos(), _detpagto.vPag.ToString("C2", Cultura), ColunasCondensadas)); } _Printer.CondensedMode(PrinterModeState.Off); if (_pagto.vTroco.HasValue && _pagto.vTroco.Value > 0) { imprimiutroco = true; _Printer.WriteLine(GereneHelpers.TextoEsquerda_Direita("Troco:", _pagto.vTroco.Value.ToString("C2", Cultura), ColunasNormal)); } } if (!imprimiutroco) { _Printer.WriteLine(GereneHelpers.TextoEsquerda_Direita("Troco:", 0.ToString("C2", Cultura), ColunasNormal)); } _Printer.NewLine(); #endregion #region Rodape #region Dados da entrega if (_NFCe.NFe.infNFe.entrega != null && !_NFCe.NFe.infNFe.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($"{_NFCe.NFe.infNFe.entrega.xLgr.RemoverAcentos()}, {_NFCe.NFe.infNFe.entrega.nro.RemoverAcentos()} {_NFCe.NFe.infNFe.entrega.xCpl.RemoverAcentos()}"); _Printer.Write("Bairro: "); _Printer.WriteLine($"{_NFCe.NFe.infNFe.entrega.xBairro.RemoverAcentos()} - {_NFCe.NFe.infNFe.entrega.xMun.RemoverAcentos()}/{_NFCe.NFe.infNFe.entrega.UF}"); _Printer.CondensedMode(PrinterModeState.Off); _Printer.CondensedMode(string.Empty.PadLeft(ColunasCondensadas, '-')); } #endregion #region Observações do Fisco if (_NFCe.NFe.infNFe.infAdic != null && (_NFCe.NFe.infNFe.infAdic.obsFisco.Any() || _NFCe.NFe.infNFe.infAdic.infAdFisco.IsNotNull())) { if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignLeft(); } _Printer.CondensedMode(PrinterModeState.On); _Printer.BoldMode("Observacoes do Fisco"); foreach (var fisco in _NFCe.NFe.infNFe.infAdic.obsFisco) { string texto = $"{fisco.xCampo} - {fisco.xTexto}"; foreach (var txt in texto.WrapText(ColunasCondensadas)) { _Printer.WriteLine(txt.RemoverAcentos()); } } if (_NFCe.NFe.infNFe.infAdic.infAdFisco.IsNotNull()) { _Printer.WriteLine(_NFCe.NFe.infNFe.infAdic.infAdFisco.RemoverAcentos()); } _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 (_NFCe.NFe.infNFe.infAdic != null && _NFCe.NFe.infNFe.infAdic.infCpl.IsNotNull()) { foreach (var txt in _NFCe.NFe.infNFe.infAdic.infCpl.WrapText(ColunasCondensadas)) { _Printer.WriteLine(txt.RemoverAcentos()); } } _Printer.NewLine(); _Printer.CondensedMode(PrinterModeState.Off); #endregion #region Tributos if (ImprimirDeOlhoNoImposto) { 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", _NFCe.NFe.infNFe.total.ICMSTot.vTotTrib.ToString("C2", Cultura), ColunasCondensadas)); _Printer.WriteLine("(Conforme Lei Fed. 12.741/2012)"); _Printer.CondensedMode(PrinterModeState.Off); } #endregion #region Consumidor _Printer.CondensedMode(string.Empty.PadLeft(ColunasCondensadas, '-')); if (_NFCe.NFe.infNFe.dest != null) { if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignLeft(); } _Printer.CondensedMode(PrinterModeState.On); _Printer.Write("CPF/CNPJ do Consumidor: "); _Printer.WriteLine(_NFCe.NFe.infNFe.dest?.CPF.IsNotNull() == true ? _NFCe.NFe.infNFe.dest.CPF.FormatoCpfCnpj() : _NFCe.NFe.infNFe.dest?.CNPJ.IsNotNull() == true ? _NFCe.NFe.infNFe.dest.CNPJ.FormatoCpfCnpj() : "000.000.000-00"); _Printer.Write("Razao Social/Nome: "); _Printer.WriteLine((_NFCe.NFe.infNFe.dest?.xNome ?? "CONSUMIDOR").LimitarString(ColunasCondensadas)); _Printer.CondensedMode(PrinterModeState.Off); } else { if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignLeft(); } _Printer.CondensedMode(PrinterModeState.On); _Printer.BoldMode("CONSUMIDOR NAO IDENTIFICADO"); _Printer.CondensedMode(PrinterModeState.Off); } _Printer.CondensedMode(string.Empty.PadLeft(ColunasCondensadas, '-')); #endregion #region Número e série do documento if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignCenter(); } _Printer.BoldMode(PrinterModeState.On); _Printer.WriteLine($"No.: {_NFCe.NFe.infNFe.ide.nNF:D9} Serie: {_NFCe.NFe.infNFe.ide.serie:D3}"); _Printer.WriteLine($"Emissao: {_NFCe.NFe.infNFe.ide.dhEmi:dd/MM/yyyy HH:mm:ss}"); _Printer.BoldMode(PrinterModeState.Off); _Printer.WriteLine(NomeDaVia); _Printer.CondensedMode(string.Empty.PadLeft(ColunasCondensadas, '-')); #endregion #region Chave de Acesso _Printer.CondensedMode(PrinterModeState.On); if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignCenter(); } _Printer.WriteLine("Consulte pela chave de acesso em:"); _Printer.WriteLine(_NFCe.NFe.infNFeSupl.urlChave); _Printer.WriteLine("Chave de Acesso"); string chave = Regex.Replace(_NFCe.NFe.infNFe.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.CondensedMode(PrinterModeState.Off); #endregion #region QrCode if (_NFCe.NFe.infNFeSupl != null && _NFCe.NFe.infNFeSupl.qrCode.IsNotNull()) { if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignCenter(); } _Printer.CondensedMode(PrinterModeState.On); _Printer.BoldMode("Consulta via leitor de QR Code"); _Printer.CondensedMode(PrinterModeState.Off); if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignCenter(); } _Printer.QrCode(_NFCe.NFe.infNFeSupl.qrCode, QrCodeSize.Size1); _Printer.NewLine(); } #endregion if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignCenter(); } _Printer.CondensedMode(PrinterModeState.On); _Printer.WriteLine("Protocolo de autorizacao"); _Printer.WriteLine($"{_NFCe.protNFe.infProt.nProt} {_NFCe.protNFe.infProt.dhRecbto:@dd/MM/yyyy HH:mm:ss}"); _Printer.CondensedMode(PrinterModeState.Off); #endregion #region Desenvolvedor if (Desenvolvedor.IsNotNull()) { if (TipoPapel == TipoPapel.Tp80mm) { _Printer.AlignRight(); } _Printer.CondensedMode(Desenvolvedor); } #endregion if (CortarPapel) { _Printer.PartialPaperCut(); } _Printer.PrintDocument(); }
public void Imprimir(string xmlcontent) { _NFCe = new NotaFiscal().CarregarDeXmlString(xmlcontent); _Printer = new Printer(NomeImpressora, TipoImpressora); #region Cabeçalho #region Logotipo if (Logotipo != null) { //Impressão do logotipo ainda não implementada } #endregion #region Dados do Emitente _Printer.AlignCenter(); _Printer.BoldMode(PrinterModeState.On); _Printer.Append(_NFCe.NFe.infNFe.emit.xFant.LimitarString(_Printer.ColsNomal).RemoverAcentos()); _Printer.AlignLeft(); _Printer.BoldMode(PrinterModeState.Off); _Printer.Append(_NFCe.NFe.infNFe.emit.xNome.LimitarString(_Printer.ColsNomal).RemoverAcentos()); _Printer.CondensedMode(PrinterModeState.On); _Printer.Append(GereneHelpers.TextoEsquerda_Direita($"Cnpj: {_NFCe.NFe.infNFe.emit.CNPJ.FormatoCpfCnpj()}", $"I.E.: {_NFCe.NFe.infNFe.emit.IE}", _Printer.ColsCondensed)); _Printer.AppendWithoutLf("End.: "); _Printer.Append($"{_NFCe.NFe.infNFe.emit.enderEmit.xLgr.RemoverAcentos()},{_NFCe.NFe.infNFe.emit.enderEmit.nro.RemoverAcentos()} {_NFCe.NFe.infNFe.emit.enderEmit.xCpl.RemoverAcentos()}"); _Printer.AppendWithoutLf("Bairro: "); _Printer.Append($"{_NFCe.NFe.infNFe.emit.enderEmit.xBairro.RemoverAcentos()} - {_NFCe.NFe.infNFe.emit.enderEmit.xMun.RemoverAcentos()} - {_NFCe.NFe.infNFe.emit.enderEmit.CEP.FormatoCep()}"); _Printer.CondensedMode(PrinterModeState.Off); _Printer.Separator(); #endregion #region DANFE e Via _Printer.AlignCenter(); _Printer.BoldMode("DANFE NFC-e"); _Printer.CondensedMode(PrinterModeState.On); _Printer.BoldMode("Documento Auxiliar da Nota Fiscal de Consumidor Eletronica"); _Printer.CondensedMode(PrinterModeState.Off); #endregion #region Homologação if (_NFCe.NFe.infNFe.ide.tpAmb == TipoAmbiente.Homologacao) { _Printer.Separator(); _Printer.AlignCenter(); _Printer.BoldMode(PrinterModeState.On); _Printer.Append("AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL"); _Printer.BoldMode(PrinterModeState.Off); } #endregion #region Documento Cancelado if (DocumentoCancelado) { _Printer.Separator(); _Printer.AlignCenter(); _Printer.BoldMode(PrinterModeState.On); _Printer.Append("*** DOCUMENTO CANCELADO ***"); _Printer.BoldMode(PrinterModeState.Off); } #endregion _Printer.Separator(); #endregion #region Detalhes _Printer.AlignCenter(); _Printer.BoldMode("#|COD|DESC|QTD|UN|VL UN|DESC|VL ITEM"); _Printer.Separator(); #region Produtos _Printer.AlignLeft(); _Printer.CondensedMode(PrinterModeState.On); foreach (var det in _NFCe.NFe.infNFe.det) { string codProd = det.prod.cProd; if (UsarBarrasComoCodigo) { codProd = $"{(UsarBarrasComoCodigo && det.prod.cEAN.IsNotNull() ? det.prod.cEAN : det.prod.cProd).PadRight(13)}"; } string textoE; 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.vProd:N2}"; _Printer.Append(GereneHelpers.TextoEsquerda_Direita(textoE, textoR, _Printer.ColsCondensed)); if (ProdutoDuasLinhas) { _Printer.Append(det.prod.xProd.LimitarString(_Printer.ColsCondensed)); } if (det.prod.vOutro.HasValue && det.prod.vOutro.Value > 0) { _Printer.Append(GereneHelpers.TextoEsquerda_Direita("Acrescimos:", det.prod.vOutro.Value.ToString("C2", _Cultura), _Printer.ColsCondensed)); } if (det.prod.vDesc.HasValue && det.prod.vDesc.Value > 0) { _Printer.Append(GereneHelpers.TextoEsquerda_Direita("Descontos:", det.prod.vDesc.Value.ToString("C2", _Cultura), _Printer.ColsCondensed)); } } _Printer.CondensedMode(PrinterModeState.Off); _Printer.Separator(); #region Totais _Printer.BoldMode(PrinterModeState.On); _Printer.CondensedMode(PrinterModeState.On); _Printer.Append(GereneHelpers.TextoEsquerda_Direita("Qtde. total de itens:", _NFCe.NFe.infNFe.det.Count.ToString("N0", _Cultura), _Printer.ColsCondensed)); _Printer.Append(GereneHelpers.TextoEsquerda_Direita("Subtotal:", _NFCe.NFe.infNFe.total.ICMSTot.vProd.ToString("C2", _Cultura), _Printer.ColsCondensed)); if (_NFCe.NFe.infNFe.total.ICMSTot.vOutro > 0) { _Printer.Append(GereneHelpers.TextoEsquerda_Direita("Acrescimos:", _NFCe.NFe.infNFe.total.ICMSTot.vOutro.ToString("C2", _Cultura), _Printer.ColsCondensed)); } if (_NFCe.NFe.infNFe.total.ICMSTot.vDesc > 0) { _Printer.Append(GereneHelpers.TextoEsquerda_Direita("Descontos:", _NFCe.NFe.infNFe.total.ICMSTot.vDesc.ToString("C2", _Cultura), _Printer.ColsCondensed)); } if (_NFCe.NFe.infNFe.total.ICMSTot.vFrete > 0) { _Printer.Append(GereneHelpers.TextoEsquerda_Direita("Frete:", _NFCe.NFe.infNFe.total.ICMSTot.vFrete.ToString("C2", _Cultura), _Printer.ColsCondensed)); } if (_NFCe.NFe.infNFe.total.ICMSTot.vSeg > 0) { _Printer.Append(GereneHelpers.TextoEsquerda_Direita("Seguro:", _NFCe.NFe.infNFe.total.ICMSTot.vSeg.ToString("C2", _Cultura), _Printer.ColsCondensed)); } if (_NFCe.NFe.infNFe.total.ICMSTot.vDesc > 0) { _Printer.Append(GereneHelpers.TextoEsquerda_Direita("Descontos:", _NFCe.NFe.infNFe.total.ICMSTot.vDesc.ToString("C2", _Cultura), _Printer.ColsCondensed)); } _Printer.CondensedMode(PrinterModeState.Off); _Printer.BoldMode(GereneHelpers.TextoEsquerda_Direita("Valor TOTAL:", _NFCe.NFe.infNFe.total.ICMSTot.vNF.ToString("C2", _Cultura), _Printer.ColsNomal)); _Printer.BoldMode(PrinterModeState.Off); #endregion #endregion _Printer.NewLine(); #endregion #region Pagamentos _Printer.AlignLeft(); bool imprimiutroco = false; foreach (var _pagto in _NFCe.NFe.infNFe.pag) { _Printer.CondensedMode(PrinterModeState.On); foreach (var _detpagto in _pagto.detPag) { _Printer.Append(GereneHelpers.TextoEsquerda_Direita(_detpagto.tPag.Descricao().RemoverAcentos(), _detpagto.vPag.ToString("C2", _Cultura), _Printer.ColsCondensed)); } _Printer.CondensedMode(PrinterModeState.Off); if (_pagto.vTroco.HasValue && _pagto.vTroco.Value > 0) { imprimiutroco = true; _Printer.Append(GereneHelpers.TextoEsquerda_Direita("Troco:", _pagto.vTroco.Value.ToString("C2", _Cultura), _Printer.ColsNomal)); } } if (!imprimiutroco) { _Printer.Append(GereneHelpers.TextoEsquerda_Direita("Troco:", 0.ToString("C2", _Cultura), _Printer.ColsNomal)); } _Printer.NewLine(); #endregion #region Rodape #region Dados da entrega if (_NFCe.NFe.infNFe.entrega != null && !_NFCe.NFe.infNFe.entrega.xLgr.IsNull()) { _Printer.AlignCenter(); _Printer.BoldMode(PrinterModeState.On); _Printer.Append("DADOS PARA ENTREGA"); _Printer.AlignLeft(); _Printer.BoldMode(PrinterModeState.Off); _Printer.CondensedMode(PrinterModeState.On); _Printer.AppendWithoutLf("End.: "); _Printer.Append($"{_NFCe.NFe.infNFe.entrega.xLgr.RemoverAcentos()}, {_NFCe.NFe.infNFe.entrega.nro.RemoverAcentos()} {_NFCe.NFe.infNFe.entrega.xCpl.RemoverAcentos()}"); _Printer.AppendWithoutLf("Bairro: "); _Printer.Append($"{_NFCe.NFe.infNFe.entrega.xBairro.RemoverAcentos()} - {_NFCe.NFe.infNFe.entrega.xMun.RemoverAcentos()}/{_NFCe.NFe.infNFe.entrega.UF}"); _Printer.CondensedMode(PrinterModeState.Off); _Printer.Separator(); } #endregion #region Observações do Fisco if (_NFCe.NFe.infNFe.infAdic.obsFisco.Any() || _NFCe.NFe.infNFe.infAdic.infAdFisco.IsNotNull()) { _Printer.AlignLeft(); _Printer.CondensedMode(PrinterModeState.On); _Printer.BoldMode("Observacoes do Fisco"); foreach (var fisco in _NFCe.NFe.infNFe.infAdic.obsFisco) { string texto = $"{fisco.xCampo} - {fisco.xTexto}"; foreach (var txt in texto.Split(40)) { _Printer.Append(txt.RemoverAcentos()); } } if (_NFCe.NFe.infNFe.infAdic.infAdFisco.IsNotNull()) { _Printer.Append(_NFCe.NFe.infNFe.infAdic.infAdFisco.RemoverAcentos()); } _Printer.NewLine(); _Printer.CondensedMode(PrinterModeState.Off); } #endregion #region Observações do Contribuinte _Printer.AlignLeft(); _Printer.CondensedMode(PrinterModeState.On); _Printer.BoldMode("Observacoes do Contribuinte"); if (_NFCe.NFe.infNFe.infAdic.infCpl.IsNotNull()) { foreach (var txt in _NFCe.NFe.infNFe.infAdic.infCpl.Split(40)) { _Printer.Append(txt.RemoverAcentos()); } } _Printer.NewLine(); _Printer.CondensedMode(PrinterModeState.Off); #endregion #region Tributos _Printer.AlignLeft(); _Printer.BoldMode(PrinterModeState.Off); _Printer.CondensedMode(PrinterModeState.On); _Printer.Append(GereneHelpers.TextoEsquerda_Direita("Valor aproximado dos Tributos deste Cupom", _NFCe.NFe.infNFe.total.ICMSTot.vTotTrib.ToString("C2", _Cultura), _Printer.ColsCondensed)); _Printer.Append("(Conforme Lei Fed. 12.741/2012)"); _Printer.CondensedMode(PrinterModeState.Off); #endregion #region Consumidor _Printer.Separator(); if (_NFCe.NFe.infNFe.dest != null) { _Printer.AlignLeft(); _Printer.CondensedMode(PrinterModeState.On); _Printer.AppendWithoutLf("CPF/CNPJ do Consumidor: "); _Printer.Append(_NFCe.NFe.infNFe.dest?.CPF.IsNotNull() == true ? _NFCe.NFe.infNFe.dest.CPF.FormatoCpfCnpj() : _NFCe.NFe.infNFe.dest?.CNPJ.IsNotNull() == true ? _NFCe.NFe.infNFe.dest.CNPJ.FormatoCpfCnpj() : "000.000.000-00"); _Printer.AppendWithoutLf("Razao Social/Nome: "); _Printer.Append((_NFCe.NFe.infNFe.dest?.xNome ?? "CONSUMIDOR").LimitarString(_Printer.ColsCondensed)); _Printer.CondensedMode(PrinterModeState.Off); } else { _Printer.AlignLeft(); _Printer.CondensedMode(PrinterModeState.On); _Printer.BoldMode("CONSUMIDOR NAO IDENTIFICADO"); _Printer.CondensedMode(PrinterModeState.Off); } _Printer.Separator(); #endregion #region Número e série do documento _Printer.AlignCenter(); _Printer.BoldMode(PrinterModeState.On); _Printer.Append($"No.: {_NFCe.NFe.infNFe.ide.nNF:D9} Serie: {_NFCe.NFe.infNFe.ide.serie:D3}"); _Printer.Append($"Emissão: {_NFCe.NFe.infNFe.ide.dhEmi:dd/MM/yyyy HH:mm:ss}"); _Printer.BoldMode(PrinterModeState.Off); _Printer.Append(NomeDaVia); _Printer.Separator(); #endregion #region Chave de Acesso _Printer.CondensedMode(PrinterModeState.On); _Printer.AlignCenter(); _Printer.Append("Consulte pela chave de acesso em:"); _Printer.Append(_NFCe.NFe.infNFeSupl.urlChave); _Printer.Append("Chave de Acesso"); _Printer.BoldMode(Regex.Replace(_NFCe.NFe.infNFe.Id.OnlyNumber(), ".{4}", "$0 ")); _Printer.CondensedMode(PrinterModeState.Off); #endregion #region QrCode if (_NFCe.NFe.infNFeSupl != null && _NFCe.NFe.infNFeSupl.qrCode.IsNotNull()) { _Printer.AlignCenter(); _Printer.CondensedMode(PrinterModeState.On); _Printer.BoldMode("Consulta via leitor de QR Code"); _Printer.CondensedMode(PrinterModeState.Off); _Printer.AlignCenter(); _Printer.QrCode(_NFCe.NFe.infNFeSupl.qrCode, QrCodeSize.Size1); _Printer.NewLine(); } #endregion _Printer.AlignCenter(); _Printer.CondensedMode(PrinterModeState.On); _Printer.Append("Protocolo de autorizacao"); _Printer.Append($"{_NFCe.protNFe.infProt.nProt} {_NFCe.protNFe.infProt.dhRecbto:@dd/MM/yyyy HH:mm:ss}"); _Printer.CondensedMode(PrinterModeState.Off); #endregion if (CortarPapel) { _Printer.PartialPaperCut(); } _Printer.PrintDocument(); }
public void ImprimirCancelamento(string xmlContent) { _CFeCanc = CFeCanc.Load(new MemoryStream(Encoding.UTF8.GetBytes(xmlContent)), Encoding.UTF8); _Printer = new Printer(NomeImpressora, TipoImpressora); #region Logotipo if (Logotipo != null) { //Impressão do logotipo ainda não implementada } #endregion #region Dados do Emitente _Printer.AlignCenter(); _Printer.BoldMode(PrinterModeState.On); _Printer.Append((_CFeCanc.InfCFe.Emit.XFant.IsNotNull() ? _CFeCanc.InfCFe.Emit.XFant : _CFeCanc.InfCFe.Emit.XNome).LimitarString(_Printer.ColsNomal).RemoveAccent()); _Printer.AlignLeft(); _Printer.BoldMode(PrinterModeState.Off); _Printer.Append(_CFeCanc.InfCFe.Emit.XNome.LimitarString(_Printer.ColsNomal).RemoveAccent()); _Printer.CondensedMode(PrinterModeState.On); _Printer.Append(GereneHelpers.TextoEsquerda_Direita($"Cnpj: {_CFeCanc.InfCFe.Emit.CNPJ.FormatoCpfCnpj()}", $"I.E.: {_CFeCanc.InfCFe.Emit.IE}", _Printer.ColsCondensed)); _Printer.AppendWithoutLf("End.: "); _Printer.Append($"{_CFeCanc.InfCFe.Emit.EnderEmit.XLgr.RemoveAccent()},{_CFeCanc.InfCFe.Emit.EnderEmit.Nro.RemoveAccent()} {_CFeCanc.InfCFe.Emit.EnderEmit.XCpl.RemoveAccent()}"); _Printer.AppendWithoutLf("Bairro: "); _Printer.Append($"{_CFeCanc.InfCFe.Emit.EnderEmit.XBairro.RemoveAccent()} - {_CFeCanc.InfCFe.Emit.EnderEmit.XMun.RemoveAccent()} - {_CFeCanc.InfCFe.Emit.EnderEmit.CEP.FormatoCep()}"); _Printer.CondensedMode(PrinterModeState.Off); _Printer.Separator(); #endregion #region Número do extrato _Printer.AlignCenter(); _Printer.BoldMode(PrinterModeState.On); _Printer.Append($"Extrato No. {_CFeCanc.InfCFe.Ide.NCFe:D6}"); _Printer.Append($"CUPOM FISCAL ELETRONICO SAT"); _Printer.Append($"CANCELAMENTO"); _Printer.BoldMode(PrinterModeState.Off); #endregion #region Homologação /* * if (_CFeCanc.InfCFe.Ide.TpAmb == ACBr.Net.DFe.Core.Common.DFeTipoAmbiente.Homologacao) * { * _Printer.Separator(); * _Printer.AlignCenter(); * _Printer.BoldMode(PrinterModeState.On); * _Printer.Append("AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL"); * _Printer.BoldMode(PrinterModeState.Off); * _Printer.Separator(); * } */ #endregion #region Dados do cupom cancelado _Printer.Separator(); _Printer.AlignLeft(); _Printer.BoldMode("DADOS DO CUPOM FISCAL ELETRONICO CANCELADO"); _Printer.CondensedMode(PrinterModeState.On); _Printer.AppendWithoutLf("CPF/CNPJ do Consumidor: "); _Printer.Append(_CFeCanc.InfCFe.Dest?.CPF.IsNotNull() == true ? _CFeCanc.InfCFe.Dest.CPF.FormatoCpfCnpj() : _CFeCanc.InfCFe.Dest?.CNPJ.IsNotNull() == true ? _CFeCanc.InfCFe.Dest.CNPJ.FormatoCpfCnpj() : "000.000.000-00"); _Printer.BoldMode(GereneHelpers.TextoEsquerda_Direita("Valor total:", _CFeCanc.InfCFe.Total.VCFe.ToString("C2", _Cultura), _Printer.ColsCondensed)); _Printer.NewLine(); _Printer.CondensedMode(PrinterModeState.Off); _Printer.AlignCenter(); _Printer.Append($"SAT No. {_CFeCanc.InfCFe.Ide.NSerieSAT:D9}"); _Printer.Append($"Data e Hora {_CFeCanc.InfCFe.Ide.DEmi:dd/MM/yyyy} {_CFeCanc.InfCFe.Ide.HEmi:HH:mm:ss}"); _Printer.AlignLeft(); _Printer.CondensedMode(PrinterModeState.On); #region Chave de Acesso _Printer.NewLine(); _Printer.AlignCenter(); _Printer.BoldMode(Regex.Replace(_CFeCanc.InfCFe.ChCanc.OnlyNumber(), ".{4}", "$0 ")); _Printer.Code128(_CFeCanc.InfCFe.ChCanc.OnlyNumber().Substring(0, 22)); _Printer.Code128(_CFeCanc.InfCFe.ChCanc.OnlyNumber().Substring(22)); _Printer.NewLine(); #endregion _Printer.CondensedMode(PrinterModeState.Off); #region QrCode _Printer.AlignCenter(); string _qrCode = $"{_CFeCanc.InfCFe.ChCanc.OnlyNumber()}|" + $"{_CFeCanc.InfCFe.Ide.DhEmissao:yyyyMMddHHmmss}|" + $"{_CFeCanc.InfCFe.Ide.DhEmissao:0.00}|" + $"{(_CFeCanc.InfCFe.Dest?.CNPJ.IsNotNull() == true ? _CFeCanc.InfCFe.Dest.CNPJ : _CFeCanc.InfCFe.Dest.CPF)}|" + $"{_CFeCanc.InfCFe.Ide.AssinaturaQrcode}"; _Printer.QrCode(_qrCode, QrCodeSize.Size1); _Printer.NewLine(); #endregion #endregion #region Dados do cupom cancelado _Printer.Separator(); _Printer.AlignLeft(); _Printer.BoldMode("DADOS DO CUPOM FISCAL ELETRONICO DE CANCELAMENTO"); _Printer.AlignCenter(); _Printer.Append($"SAT No. {_CFeCanc.InfCFe.Ide.NSerieSAT:D9}"); _Printer.Append($"Data e Hora {_CFeCanc.InfCFe.Ide.DEmi:dd/MM/yyyy} {_CFeCanc.InfCFe.Ide.HEmi:HH:mm:ss}"); #region Chave de Acesso _Printer.AlignCenter(); _Printer.CondensedMode(PrinterModeState.On); _Printer.BoldMode(Regex.Replace(_CFeCanc.InfCFe.Id.OnlyNumber(), ".{4}", "$0 ")); _Printer.Code128(_CFeCanc.InfCFe.Id.OnlyNumber().Substring(0, 22)); _Printer.Code128(_CFeCanc.InfCFe.Id.OnlyNumber().Substring(22)); _Printer.NewLine(); #endregion _Printer.CondensedMode(PrinterModeState.Off); #region QrCode _Printer.AlignCenter(); string _qrCodeCancel = $"{_CFeCanc.InfCFe.Id.OnlyNumber()}|" + $"{_CFeCanc.InfCFe.Ide.DhEmissao:yyyyMMddHHmmss}|" + $"{_CFeCanc.InfCFe.Total.VCFe:0.00}|" + $"{(_CFeCanc.InfCFe.Dest?.CNPJ.IsNotNull() == true ? _CFeCanc.InfCFe.Dest.CNPJ : _CFeCanc.InfCFe.Dest.CPF)}|" + $"{_CFeCanc.InfCFe.Ide.AssinaturaQrcode}"; _Printer.QrCode(_qrCode, QrCodeSize.Size1); _Printer.NewLine(); #endregion #endregion _Printer.Separator(); #endregion if (CortarPapel) { _Printer.PartialPaperCut(); } _Printer.PrintDocument(); }