Ir para conteúdo
  • Cadastre-se

Recommended Posts

Postado (editado)

Ajustes de leiaute e correção de dados no motor FPDF do DAMDFE


Contexto
O motor FPDF de impressão do DAMDFE (TACBrMDFeDAMDFeFPDF) ainda está em ajuste de leiaute (como já indicado no changelog do componente). Ao usar esse motor em produção, foram identificadas divergências em relação ao leiaute oficial e também bugs de dados incorretos sendo impressos. Este PR corrige ambos, comparando cada campo com o Manual de Orientação do Contribuinte (MOC) — Anexo II: Manual de Especificações Técnicas do DAMDFE, versão 3.00b.

Testado com um MDF-e real (modal Rodoviário, emissão normal) e, para os demais modais/contingência, com cópias do mesmo XML alterando manualmente <modal>, <tpEmis> e o bloco de dados do modal (<aereo>/<aquav>/<ferrov>).

Resumo

  • 3 bugs de dados corrigidos (Vale-Pedágio, RNTRC do cabeçalho, quebra de linha nas Observações) — o layout estava usando a fonte errada ou a configuração errada do componente TextBox, não um problema visual.
  • 2 bugs de "sempre vazio" corrigidos nos modais Aéreo/Aquaviário/Ferroviário (condição de guarda usando um campo que só existe no modal Rodoviário).
  • Dados fictícios/hardcoded substituídos por dados reais do XML nos modais Aquaviário e Ferroviário (Embarcação, Terminal de Carregamento/Descarregamento, Composição do trem, tabela de vagões).
  • Campo novo: "Valor Total da Carga" foi cogitado e revertido — não faz parte do leiaute oficial do Anexo II.
  • Feature nova: rodapé com a mensagem do sistema (MensagemRodape/Sistema), espelhando o que a DANFE FPDF (ACBrNFeDANFeFPDF.pas, TBlocoRodape) já tem — no MDF-e a propriedade já existia e já era preenchida, mas nenhuma band nunca desenhava esse valor na página.
  • Regra nova: "Informações da Composição da Carga" agora só é adicionada quando Ide.tpEmis <> teNormal (emissão em contingência), conforme os mockups do Anexo II.
  • Linhas separadoras abaixo dos títulos de coluna, presentes nos mockups do manual e ausentes na implementação atual.
  • Bug de leiaute — logomarca sobrepondo o título. A logo era desenhada em Image(x, y, 40, 30, ...) com y = -20, ou seja, com a borda inferior em y = +10 — 10mm além do limite inferior do band do cabeçalho (fixo em y = 0), invadindo visualmente a área do título "DAMDFE..." desenhado no band seguinte. Corrigido deslocando a logo (e o placeholder de "sem logo") 10mm para cima.

 

@Daniel Simões de Almeida acredito que as alterações e a adaptação dos modelos de impressão para fpdf seja útil para retirar dependência de projetos externos como fastreport/fortesreport e necessário para utilizar com API.

 

ACBrMDFeDAMDFeFPDF.pas

Editado por Leonardo Gregianin
  • Curtir 1
  • Consultores
Postado

Bom dia

Obrigado pela contribuição ! @Leonardo Gregianin

logo validaremos ela no SVN

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Postado (editado)

Impressão de eventos do MDF-e no motor FPDF + ajustes de layout no DAMDFe

Motivação
O motor FPDF do DAMDFe (TACBrMDFeDAMDFeFPDF) ainda não tinha ImprimirEVENTO/ImprimirEVENTOPDF implementados — qualquer chamada caía no ErroAbstract da classe base (TACBrMDFeDAMDFeClass).

Arquivo alterado: Fontes/ACBrDFe/ACBrMDFe/DAMDFE/FPDF/ACBrMDFeDAMDFeFPDF.pas

1. Impressão de eventos do MDF-e (FPDF)
Implementados em TACBrMDFeDAMDFeFPDF:

  • ImprimirEVENTO — segue o padrão já usado no restante do arquivo para a FPDF.
  • ImprimirEVENTOPDF (arquivo e stream) — gera o PDF do evento para cada item de EventoMDFe.Evento, seguindo o mesmo padrão de ImprimirDAMDFePDF.
  • Nova classe TMDFeDAMDFeEventoFPDF, genérica para qualquer tipo de evento (TpcnTpEvento). Blocos comuns: cabeçalho (descrição do evento + aviso sem valor fiscal), identificação do MDF-e (modelo/série/número/data emissão/chave + código de barras), dados do evento (órgão/ambiente/data, tipo/descrição/sequencial/versão, status/protocolo/data de registro).

Blocos condicionais, usando campos que já existiam em TDetEvento mas sem nenhuma representação gráfica:

Evento Bloco específico Campos
Cancelamento (110111) Justificativa xJust
Encerramento (110112) / Encerramento Fisco (310112) Dados do encerramento dtEnc, cUF, cMun, indEncPorTerceiro
Inclusão de Condutor (110114) Condutor incluído xNome, CPF

Os demais tipos (Inclusão de DF-e, Pagamento da Operação, Registro de Passagem BR-Id, Confirmação/Alteração de Pagamento do Serviço) imprimem apenas o cabeçalho comum — sem layout no MOC nem mockup de referência (mesmo critério já usado hoje pela FPDF do DANFE/NFe).

2. Ajustes de layout no cabeçalho (TBlocoDadosMDFe.OnDraw)
Alinhamento: logomarca, nome do emitente e QR-Code agora começam na mesma altura (antes a logo começava 12mm acima e o QR-Code 8mm abaixo do nome).
Tamanho da logomarca: reduzido de 40x30mm para 24x18mm (mantendo proporção 4:3) — no tamanho anterior, alinhar o topo da logo com o nome fazia a base invadir o título "DAMDFE - Documento Auxiliar...".

Esse .pas anexo já tem toda a alteração do DAMDFe e dos eventos.

 

ACBrMDFeDAMDFeFPDF.pas

Editado por Leonardo Gregianin

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...