public override void Dispose() { base.Dispose(); if (_NFCe != null) { _NFCe = null; } }
public void Dispose() { if (_NFCe != null) { _NFCe = null; } if (_Printer != null) { _Printer.Clear(); _Printer = null; } }
private Document TurnIntoDFeDocument(loteDistDFeInt[] loteDistDFeInt) { var docToReturn = new Document(); if (loteDistDFeInt != null) { for (int i = 0; i < loteDistDFeInt.Length; i++) { var documentNsu = loteDistDFeInt[i].NSU; var xmlInBytes = loteDistDFeInt[i].XmlNfe; string content = Compressao.Unzip(xmlInBytes); if (content.StartsWith("<resNFe")) { var resNFeContent = FuncoesXml.XmlStringParaClasse <NFe.Classes.Servicos.DistribuicaoDFe.Schemas.resNFe>(content); docToReturn.AccessKey = resNFeContent.chNFe; docToReturn.Amount = resNFeContent.vNF; docToReturn.IssuerName = resNFeContent.xNome; docToReturn.IssuerCnpj = resNFeContent.CNPJ.ToString(); } if (CheckIfIsNfeProc(content)) { var procNFeContent = new NFe.Classes.nfeProc().CarregarDeXmlString(content); if (procNFeContent != null) { docToReturn.AccessKey = procNFeContent.protNFe.infProt.chNFe; docToReturn.Amount = procNFeContent.NFe.infNFe.total.ICMSTot.vNF; docToReturn.IssuerName = procNFeContent.NFe.infNFe.emit.xNome; docToReturn.IssuerCnpj = procNFeContent.NFe.infNFe.emit.CNPJ; } } } } return(docToReturn); }
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 NFCePrinter() { _NFCe = new NotaFiscal(); NomeDaVia = "Via do Consumidor"; }
public NFCePrinter() : base() { _NFCe = new NotaFiscal(); }
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(); }