nfephp-org / sped-da

Classes para geração dos documentos auxiliares usados pelos padrões Sped
Other
139 stars 238 forks source link

DACTe - Campos de PESO #382

Open diniz-victor opened 4 years ago

diniz-victor commented 4 years ago

Problema 1

Descrição Atualmente os valores de PESO BRUTO (KG), PESO BASE CÁLCULO (KG) e PESO AFERIDO (KG) estão sendo somados e sendo exibidos sempre com o mesmo valor. XML DACTe-1 PDF DACTe-2 Código - Dacte.php:1632-1677 Screenshot from 2020-08-10 18-48-45

Ou seja, com base no código acima, o que hoje o código faz é somar todos os pesos que tenha o cUnid == 1(Kg) ou 2(Ton) e exibir o mesmo valor para os 3 pesos (bruto, base cálculo e aferido).

Porém, com base nos documentos oficiais de Leiaute e de DACTe, é possível verificar que para o campo infCarga->infQ->tpMed existem sugestões de valores a serem preenchidos:

Solução O problema é que este campo é livre para preenchimento e não é um enumerador como o cUnid por exemplo. Dito isto, chegamos na seguinte definição para ajuste do código:

Ao invés de somar todos os elementos de infCarga->infQ->qCarga (como é feito atualmente), passamos a nos basear nos valores sugeridos pelo documento oficial do governo, ou seja, quando no campo tpMed vier a descrição "PESO BRUTO", por exemplo, colocamos o valor no campo PESO BRUTO da renderização do PDF, e assim sucessivamente.

Como as alterações que fiz do meu lado são refatorações consideráveis, gostaria de expôr aqui o problema e a solução para ver se faz sentido para a comunidade adotar isso como regra ou se devo manter apenas como ajuste customizado do lado do fork da Arquivei.

Commits

Problema 2

Descrição Em cascata com o problema 1, em caso de assumirmos a solução do problema 1 como correta, o problema 2 é gerado: Pode ser que no xml venha escrito "PESO QUALQUER OUTRA COISA" e, por tanto, não vai dar match com nenhum dos 3 pesos fixos do PDF, o que geraria uma inconsistência de campo em branco (mesmo tendo valor no XML).

Solução Definição da seguinte regra:

Caso após a aplicação da regra da solução do Problema 1 seja aplicada e nenhum dos 3 pesos tenha valor setado, é verificado se existe pelo menos um tpMed que contenha a palavra "PESO" e se sim, o valor será automaticamente atribuído ao campo PESO BRUTO (KG) pelo simples fato de ele ser o primeiro dos 3 campos na ordem de amostragem do PDF (esquerda -> direita)

Commits