akretion / nfelib

nfelib - bindings Python para e ler e gerir XML de NF-e, NFS-e nacional, CT-e, MDF-e, BP-e
MIT License
147 stars 59 forks source link

Missing tags in NFS-e #104

Closed LuccaAug closed 5 months ago

LuccaAug commented 6 months ago

I got the error below when using the lib to parse a NFS-e:

xsdata.exceptions.ParserError: Unknown property {http://www.sped.fazenda.gov.br/nfse}TCInfoTributacao:{http://www.sped.fazenda.gov.br/nfse}tribFed

You can find the tag NFSe/infNFSe/DPS/infDPS/valores/trib/tribFed/ on Leiaute NFS-e - ADN tab in the anexoiv-leiautesrn_adn-snnfse_v1-00-02-producao.xlsx file on the NFS-e docs

rvalyi commented 6 months ago

Ola @LuccaAug realmente tem alguma coisa estranha; no arquivo xlsx que vc menciona existe a tag tribFed. Existe até no arquivo de demo do projeto UNINFE GerarNFSeEnvio2-env-loterps.xml

Porem no esquema da NFSE Nacional 1.0, essa mesma tag dentro da tag trib se chama tribNac: https://github.com/akretion/nfelib/blob/master/nfelib/nfse/schemas/v1_0/tiposComplexos_v1.00.xsd#L1258 (basta ver que a tag anterior se chama tribMun tb e tribNac em vez de tribFed, faz sentido tb)

Inclusive todas tags de impostos federais descritas no arquivo xlsx a gente encontra dentro do tipo complexo: https://github.com/akretion/nfelib/blob/master/nfelib/nfse/schemas/v1_0/tiposComplexos_v1.00.xsd#L1611

Ou dentro da tag filha piscofins de tipo complexo TCTribOutrosPisCofins https://github.com/akretion/nfelib/blob/master/nfelib/nfse/schemas/v1_0/tiposComplexos_v1.00.xsd#L1611

E ai quem ta errado? O arquivo xsd ou o arquivo xslx??

Se vc tiver alguma fonte confiavel dizendo que a tag certa é tribFed, tou OK para a gente fazer um patch do esquema xsd oficial e trocar tribNac por tribFed e gerir os bindings de novo. Mas tem algum motivo para pensar que o certo é tribFed mesmo??

O que vc acha?

LuccaAug commented 6 months ago

Olá Raphael, realmente os arquivos fornecidos pela Receita estão com dados conflitantes, não possuo uma fonte interna ou algo do tipo, o que eu tenho são notas reais, inclusive validadas na consulta pública, que possuem a tag tribFed. Acho que é o correto justamente por obter este erro, segue dois exemplos de tags valores de notas reais que deram esse erro com os valores censurados.

                <valores>
                    <vServPrest>
                        <vServ>XXX</vServ>
                    </vServPrest>
                    <vDescCondIncond>
                        <vDescIncond>XXX</vDescIncond>
                        <vDescCond>XXX</vDescCond>
                    </vDescCondIncond>
                    <trib>
                        <tribMun>
                            <tribISSQN>XXX</tribISSQN>
                            <pAliq>XXX</pAliq>
                            <tpRetISSQN>XXX</tpRetISSQN>
                        </tribMun>
                        <tribFed>
                            <piscofins>
                                <CST>XXX</CST>
                                <vPis>XXX</vPis>
                                <vCofins>XXX</vCofins>
                            </piscofins>
                            <vRetCP>XXX</vRetCP>
                            <vRetIRRF>XXX</vRetIRRF>
                            <vRetCSLL>XXX</vRetCSLL>
                        </tribFed>
                        <totTrib>
                            <indTotTrib>XXX</indTotTrib>
                        </totTrib>
                    </trib>
                </valores>
                <valores>
                    <vServPrest>
                        <vServ>XXX</vServ>
                    </vServPrest>
                    <trib>
                        <tribMun>
                            <tribISSQN>XXX</tribISSQN>
                            <pAliq>XXX</pAliq>
                            <tpRetISSQN>XXX</tpRetISSQN>
                        </tribMun>
                        <tribFed>
                            <vRetCP>XXX</vRetCP>
                        </tribFed>
                        <totTrib>
                            <indTotTrib>XXX</indTotTrib>
                        </totTrib>
                    </trib>
                </valores>

Não acho que seja suficiente para prova, mas para corroborar, ao consultar uma nota ou ver seu PDF, o nome da área que mostra os dados desta tag é Tributação Federal e não Tributação Nacional. Como nos prints abaixo, que são do PDF e do site da consulta pública, respectivamente: Captura de tela de 2024-05-21 10-16-55 image A nota destes prints não possui a tag tribFed, as notas com erro possuem a mesma área, mas para não precisar censurar a imagem já que a intenção é só mostrar o nome da área, tirei o print de outra NFS-e

rvalyi commented 6 months ago

ola @LuccaAug vc consegue testar com esse PR e me falar se ta OK https://github.com/akretion/nfelib/pull/105 ?

Olha, nem me surprende esse pessoal da especificação ter se cagado no xsd. Antes desse padrão nacional, a ABRASF tinha um xsd de referencia e esse proprio arquivo "xsd" tinha uma tag mal fechada e nem podia ser lida como arquivo XML... Isso por anos...

LuccaAug commented 5 months ago

Boa tarde Raphael, funcionou certinho, tudo OK Realmente essas documentações não são das melhores, infelizmente, mas é o que temos.

Perdão a demora e obrigado pela solução