fix(danfe): não quebrar valores longos no meio dos dígitos na tabela de produtos - #1713
Open
ccaiolopes wants to merge 1 commit into
Open
Conversation
…de produtos Na tabela "DADOS DOS PRODUTOS / SERVIÇOS", um valor mais largo que a célula cai em TextBlock.BreakLongText, que corta caractere a caractere. Um total como "1.991.010,06" é impresso como "1.991.010,0" numa linha e "6" na seguinte — o número que o leitor enxerga deixa de ser o número do documento. O quadro "Cálculo do imposto" já resolve isso encolhendo a fonte do campo (Campo.DesenharConteudo); a tabela de produtos não tinha tratamento equivalente. As colunas numéricas passam a ser declaradas com ComColunaDeValor, e uma célula dessas colunas cujo conteúdo é indivisível (sem espaços) e mais largo que o espaço disponível é impressa em fonte reduzida, em uma única linha. O piso de 4 pontos preserva o comportamento anterior nos casos extremos, e colunas de texto continuam quebrando por palavra como antes.
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Descrição
Na tabela "DADOS DOS PRODUTOS / SERVIÇOS", um valor mais largo que a célula em que é impresso cai em
TextBlock.BreakLongText, que quebra a string caractere a caractere. Como os valores são formatados sem espaços, um total de sete ou mais dígitos é partido no meio dos dígitos.O quadro "Cálculo do imposto" já trata esse caso encolhendo a fonte do campo (
Campo.DesenharConteudo, com piso emEstilo.FonteTamanhoMinimo). A tabela de produtos não tinha tratamento equivalente.Comportamento atual
Com
vProd=1991010.06numa NF-e retrato, a colunaVALOR TOTALimprime:O número que aparece no impresso deixa de ser o número do documento — e a linha inteira ganha altura dupla.
Comportamento esperado
O valor cabe em uma única linha, como já acontece no quadro "Cálculo do imposto" da mesma nota.
A mudança
TabelaColunaganhaAjustarFonteParaCaber(padrãofalse— nenhuma coluna existente muda de comportamento sem pedir).TabelaganhaComColunaDeValor(...)e o método privadoFonteDaCelula(...): numa coluna de valor, uma célula cujo conteúdo é indivisível (nenhum espaço) e mais largo que o espaço disponível é impressa com o corpo da fonte reduzido o suficiente para caber em uma linha. Há um piso de 4 pontos: abaixo dele o comportamento anterior (quebra) é preservado, para não imprimir algo ilegível.TabelaProdutosServicosdeclara as colunas numéricas (QUANTI.,VALOR UNIT.,VALOR TOTAL,B CÁLC ICMS,VALOR ICMS,VALOR IPI,ALIQ. ICMS,ALIQ. IPI) comComColunaDeValor, nas duas orientações.Colunas de texto —
DESCRIÇÃO DO PRODUTO / SERVIÇO, por exemplo — continuam quebrando por palavra exatamente como antes.Como reproduzir
Gerar o DANFE de um
nfeProccom um item cujovProd/vUnComtenha sete ou mais dígitos na parte inteira (ex.:1991010.06) e observar a colunaVALOR TOTAL.Testes
dotnet build NFe.Danfe.PdfClown/NFe.Danfe.PdfClown.csproj -c Release— compila nos dois alvos (netstandard2.0enet6.0) sem novos avisos nos arquivos alterados.Conferência do impresso, com uma NF-e sintética de um item de
1.991.010,06, extraindo o texto do PDF gerado: antes da mudança a colunaVALOR TOTALproduzia dois desenhos de texto (1.991.010,0e6); depois, um só (1.991.010,06). Os demais campos do impresso ficam idênticos.