-
Notifications
You must be signed in to change notification settings - Fork 480
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Reincluído projeto do PdfClown na solução
- Loading branch information
1 parent
b495c32
commit 9d14772
Showing
65 changed files
with
5,674 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
namespace NFe.Danfe.PdfClown.Atributos | ||
{ | ||
internal class AlturaFixaAttribute : Attribute | ||
{ | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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"; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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"; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | ||
|
||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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"; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | ||
} | ||
} |
Oops, something went wrong.