Skip to content

Commit

Permalink
Revert "Removidos projetos PdfClown e QuestPdf"
Browse files Browse the repository at this point in the history
This reverts commit 14e0cf3.
  • Loading branch information
Valmir-Cunha committed Jul 4, 2024
1 parent 8ece8f2 commit b9471eb
Show file tree
Hide file tree
Showing 79 changed files with 7,590 additions and 0 deletions.
6 changes: 6 additions & 0 deletions NFe.Danfe.PdfClown/Atributos/AlturaFixaAttribute.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
namespace NFe.Danfe.PdfClown.Atributos
{
internal class AlturaFixaAttribute : Attribute
{
}
}
65 changes: 65 additions & 0 deletions NFe.Danfe.PdfClown/Blocos/BlocoBase.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
using NFe.Danfe.PdfClown.Elementos;
using NFe.Danfe.PdfClown.Enumeracoes;
using NFe.Danfe.PdfClown.Graphics;
using NFe.Danfe.PdfClown.Modelo;

namespace NFe.Danfe.PdfClown.Blocos
{
/// <summary>
/// Define um bloco básico do DANFE.
/// </summary>
internal abstract class BlocoBase : ElementoBase
{
/// <summary>
/// Constante de proporção dos campos para o formato retrato A4, porcentagem dividida pela largura desenhável.
/// </summary>
public const float Proporcao = 100F / 200F;

public DanfeViewModel ViewModel { get; private set; }

public abstract PosicaoBloco Posicao { get; }

/// <summary>
/// Pilha principal.
/// </summary>
public VerticalStack MainVerticalStack { get; private set; }

/// <summary>
/// Quando verdadeiro, o bloco é mostrado apenas na primeira página, caso contário é mostrado em todas elas.
/// </summary>
public virtual Boolean VisivelSomentePrimeiraPagina => true;

public virtual String Cabecalho => null;

public BlocoBase(DanfeViewModel viewModel, Estilo estilo) : base(estilo)
{
MainVerticalStack = new VerticalStack();
ViewModel = viewModel ?? throw new ArgumentNullException(nameof(viewModel));

if (!String.IsNullOrWhiteSpace(Cabecalho))
{
MainVerticalStack.Add(new CabecalhoBloco(estilo, Cabecalho));
}
}

public LinhaCampos AdicionarLinhaCampos()
{
var l = new LinhaCampos(Estilo, Width);
l.Width = Width;
l.Height = Constantes.CampoAltura;
MainVerticalStack.Add(l);
return l;
}

public override void Draw(Gfx gfx)
{
base.Draw(gfx);
MainVerticalStack.SetPosition(X, Y);
MainVerticalStack.Width = Width;
MainVerticalStack.Draw(gfx);
}

public override float Height { get => MainVerticalStack.Height; set => throw new NotSupportedException(); }
public override bool PossuiContono => false;
}
}
59 changes: 59 additions & 0 deletions NFe.Danfe.PdfClown/Blocos/BlocoCalculoImposto.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
using NFe.Danfe.PdfClown.Elementos;
using NFe.Danfe.PdfClown.Enumeracoes;
using NFe.Danfe.PdfClown.Modelo;

namespace NFe.Danfe.PdfClown.Blocos
{
class BlocoCalculoImposto : BlocoBase
{
public BlocoCalculoImposto(DanfeViewModel viewModel, Estilo estilo) : base(viewModel, estilo)
{
var m = ViewModel.CalculoImposto;

var l = AdicionarLinhaCampos()
.ComCampoNumerico("BASE DE CÁLC. DO ICMS", m.BaseCalculoIcms)
.ComCampoNumerico("VALOR DO ICMS", m.ValorIcms)
.ComCampoNumerico("BASE DE CÁLC. ICMS S.T.", m.BaseCalculoIcmsSt)
.ComCampoNumerico("VALOR DO ICMS SUBST.", m.ValorIcmsSt)
.ComCampoNumerico("V. IMP. IMPORTAÇÃO", m.ValorII);

if (ViewModel.ExibirIcmsInterestadual)
{
l.ComCampoNumerico("V. ICMS UF REMET.", m.vICMSUFRemet)
.ComCampoNumerico("VALOR DO FCP", m.vFCPUFDest);
}

if (ViewModel.ExibirPisConfins)
{
l.ComCampoNumerico("VALOR DO PIS", m.ValorPis);
}

l.ComCampoNumerico("V. TOTAL PRODUTOS", m.ValorTotalProdutos)
.ComLargurasIguais();

l = AdicionarLinhaCampos()
.ComCampoNumerico("Valor do Frete", m.ValorFrete)
.ComCampoNumerico("Valor do Seguro", m.ValorSeguro)
.ComCampoNumerico("Desconto", m.Desconto)
.ComCampoNumerico("Outras Despesas", m.OutrasDespesas)
.ComCampoNumerico("Valor Ipi", m.ValorIpi);

if (ViewModel.ExibirIcmsInterestadual)
{
l.ComCampoNumerico("V. ICMS UF DEST.", m.vICMSUFDest)
.ComCampoNumerico("V. TOT. TRIB.", m.ValorAproximadoTributos);
}

if (ViewModel.ExibirPisConfins)
{
l.ComCampoNumerico("VALOR DO COFINS", m.ValorCofins);
}

l.ComCampoNumerico("Valor Total da Nota", m.ValorTotalNota)
.ComLargurasIguais();
}

public override PosicaoBloco Posicao => PosicaoBloco.Topo;
public override string Cabecalho => "Cálculo do Imposto";
}
}
24 changes: 24 additions & 0 deletions NFe.Danfe.PdfClown/Blocos/BlocoCalculoIssqn.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
using NFe.Danfe.PdfClown.Elementos;
using NFe.Danfe.PdfClown.Enumeracoes;
using NFe.Danfe.PdfClown.Modelo;

namespace NFe.Danfe.PdfClown.Blocos
{
internal class BlocoCalculoIssqn : BlocoBase
{
public BlocoCalculoIssqn(DanfeViewModel viewModel, Estilo estilo) : base(viewModel, estilo)
{
var m = viewModel.CalculoIssqn;

AdicionarLinhaCampos()
.ComCampo("INSCRIÇÃO MUNICIPAL", m.InscricaoMunicipal, AlinhamentoHorizontal.Centro)
.ComCampoNumerico("VALOR TOTAL DOS SERVIÇOS", m.ValorTotalServicos)
.ComCampoNumerico("BASE DE CÁLCULO DO ISSQN", m.BaseIssqn)
.ComCampoNumerico("VALOR TOTAL DO ISSQN", m.ValorIssqn)
.ComLargurasIguais();
}

public override PosicaoBloco Posicao => PosicaoBloco.Base;
public override string Cabecalho => "CÁLCULO DO ISSQN";
}
}
38 changes: 38 additions & 0 deletions NFe.Danfe.PdfClown/Blocos/BlocoCanhoto.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
using NFe.Danfe.PdfClown.Elementos;
using NFe.Danfe.PdfClown.Enumeracoes;
using NFe.Danfe.PdfClown.Modelo;
using NFe.Danfe.PdfClown.Tools;

namespace NFe.Danfe.PdfClown.Blocos
{
internal class BlocoCanhoto : BlocoBase
{
public const float TextoRecebimentoAltura = 10;
public const float AlturaLinha2 = 9;

public BlocoCanhoto(DanfeViewModel viewModel, Estilo estilo) : base(viewModel, estilo)
{
var textoRecebimento = new TextoSimples(estilo, viewModel.TextoRecebimento) { Height = TextoRecebimentoAltura, TamanhoFonte = 8 };
var nfe = new NumeroNfSerie(estilo, viewModel.NfNumero.ToString(Formatador.FormatoNumeroNF), viewModel.NfSerie.ToString()) { Height = AlturaLinha2 + TextoRecebimentoAltura, Width = 30 };

var campos = new LinhaCampos(Estilo) { Height = AlturaLinha2 }
.ComCampo("Data de Recebimento", null)
.ComCampo("Identificação e assinatura do recebedor", null)
.ComLarguras(50, 0);

var coluna1 = new VerticalStack();
coluna1.Add(textoRecebimento, campos);

var linha = new FlexibleLine() { Height = coluna1.Height }
.ComElemento(coluna1)
.ComElemento(nfe)
.ComLarguras(0, 16);

MainVerticalStack.Add(linha, new LinhaTracejada(2));

}

public override PosicaoBloco Posicao => PosicaoBloco.Topo;

}
}
54 changes: 54 additions & 0 deletions NFe.Danfe.PdfClown/Blocos/BlocoDadosAdicionais.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
using NFe.Danfe.PdfClown.Elementos;
using NFe.Danfe.PdfClown.Enumeracoes;
using NFe.Danfe.PdfClown.Graphics;
using NFe.Danfe.PdfClown.Modelo;

namespace NFe.Danfe.PdfClown.Blocos
{
internal class BlocoDadosAdicionais : BlocoBase
{
public const float AlturaMinima = 25;
private CampoMultilinha _cInfComplementares;
private FlexibleLine _Linha;
private Campo _cReservadoFisco;
public const float InfComplementaresLarguraPorcentagem = 75;

public BlocoDadosAdicionais(DanfeViewModel viewModel, Estilo estilo) : base(viewModel, estilo)
{
_cInfComplementares = new CampoMultilinha("Informações Complementares", ViewModel.TextoAdicional(), estilo);
_cReservadoFisco = new CampoMultilinha("Reservado ao fisco", ViewModel.TextoAdicionalFisco(), estilo);

_Linha = new FlexibleLine() { Height = _cInfComplementares.Height }
.ComElemento(_cInfComplementares)
.ComElemento(_cReservadoFisco)
.ComLarguras(InfComplementaresLarguraPorcentagem, 0);

MainVerticalStack.Add(_Linha);
}

public override float Width
{
get => base.Width;
set
{
base.Width = value;
// Força o ajuste da altura do InfComplementares
if (_cInfComplementares != null && _Linha != null)
{
_Linha.Width = value;
_Linha.Posicionar();
_cInfComplementares.Height = AlturaMinima;
_Linha.Height = _cInfComplementares.Height;
}
}
}

public override void Draw(Gfx gfx)
{
base.Draw(gfx);
}

public override PosicaoBloco Posicao => PosicaoBloco.Base;
public override string Cabecalho => "Dados adicionais";
}
}
39 changes: 39 additions & 0 deletions NFe.Danfe.PdfClown/Blocos/BlocoDestinatarioRemetente.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
using NFe.Danfe.PdfClown.Elementos;
using NFe.Danfe.PdfClown.Enumeracoes;
using NFe.Danfe.PdfClown.Modelo;
using NFe.Danfe.PdfClown.Tools;

namespace NFe.Danfe.PdfClown.Blocos
{
internal class BlocoDestinatarioRemetente : BlocoBase
{
public BlocoDestinatarioRemetente(DanfeViewModel viewModel, Estilo estilo) : base(viewModel, estilo)
{
var destinatario = viewModel.Destinatario;

AdicionarLinhaCampos()
.ComCampo(Strings.RazaoSocial, destinatario.RazaoSocial)
.ComCampo(Strings.CnpjCpf, Formatador.FormatarCpfCnpj(destinatario.CnpjCpf), AlinhamentoHorizontal.Centro)
.ComCampo("Data de Emissão", viewModel.DataHoraEmissao.Formatar(), AlinhamentoHorizontal.Centro)
.ComLarguras(0, 45F * Proporcao, 30F * Proporcao);

AdicionarLinhaCampos()
.ComCampo(Strings.Endereco, destinatario.EnderecoLinha1)
.ComCampo(Strings.BairroDistrito, destinatario.EnderecoBairro)
.ComCampo(Strings.Cep, Formatador.FormatarCEP(destinatario.EnderecoCep), AlinhamentoHorizontal.Centro)
.ComCampo("Data Entrada / Saída", ViewModel.DataSaidaEntrada.Formatar(), AlinhamentoHorizontal.Centro)
.ComLarguras(0, 45F * Proporcao, 25F * Proporcao, 30F * Proporcao);

AdicionarLinhaCampos()
.ComCampo(Strings.Municipio, destinatario.Municipio)
.ComCampo(Strings.FoneFax, Formatador.FormatarTelefone(destinatario.Telefone), AlinhamentoHorizontal.Centro)
.ComCampo(Strings.UF, destinatario.EnderecoUf, AlinhamentoHorizontal.Centro)
.ComCampo(Strings.InscricaoEstadual, destinatario.Ie, AlinhamentoHorizontal.Centro)
.ComCampo("Hora Entrada / Saída", ViewModel.HoraSaidaEntrada.Formatar(), AlinhamentoHorizontal.Centro)
.ComLarguras(0, 35F * Proporcao, 7F * Proporcao, 40F * Proporcao, 30F * Proporcao);
}

public override string Cabecalho => "Destinatário / Remetente";
public override PosicaoBloco Posicao => PosicaoBloco.Topo;
}
}
42 changes: 42 additions & 0 deletions NFe.Danfe.PdfClown/Blocos/BlocoDuplicataFatura.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
using NFe.Danfe.PdfClown.Elementos;
using NFe.Danfe.PdfClown.Enumeracoes;
using NFe.Danfe.PdfClown.Modelo;

namespace NFe.Danfe.PdfClown.Blocos
{
internal class BlocoDuplicataFatura : BlocoBase
{

public BlocoDuplicataFatura(DanfeViewModel viewModel, Estilo estilo) : base(viewModel, estilo)
{
var de = viewModel.Duplicatas.Select(x => new Duplicata(estilo, x)).ToList();
var eh = de.First().Height;

int numeroElementosLinha = ViewModel.Orientacao == Orientacao.Paisagem ? 7 : 6;

int i = 0;

while (i < de.Count)
{
FlexibleLine fl = new FlexibleLine(Width, eh);

int i2;
for (i2 = 0; i2 < numeroElementosLinha && i < de.Count; i2++, i++)
{
fl.ComElemento(de[i]);
}

for (; i2 < numeroElementosLinha; i2++)
fl.ComElemento(new ElementoVazio());


fl.ComLargurasIguais();
MainVerticalStack.Add(fl);
}

}

public override string Cabecalho => "Fatura / Duplicata";
public override PosicaoBloco Posicao => PosicaoBloco.Topo;
}
}
Loading

0 comments on commit b9471eb

Please sign in to comment.