Ir para conteúdo
  • Cadastre-se

  • Este tópico foi criado há 305 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Consultores
Postado

Olá pessoal!

Foram enviados ao SVN ajustes que adicionam uma nova funcionalidade ao componente ACBrNFe: a leitura e geração de arquivos JSON a partir dos dados de uma NFe, bem como a leitura de arquivos JSON contendo os dados de eventos.

O JSON (JavaScript Object Notation) é um formato leve de troca de dados, bastante utilizado em APIs modernas pela sua simplicidade de leitura e facilidade de integração com diferentes linguagens e plataformas. A adição dessa funcionalidade no componente traz diversas vantagens, como maior flexibilidade para importar e exportar informações fiscais em um formato amplamente aceito, integração facilitada com sistemas externos (web, mobile ou nuvem) e apoio em testes e automações sem a necessidade de manipular apenas XML

Essa nova funcionalidade está disponível por meio dos seguintes métodos:

  • ACBrNFe.NotasFiscais.LoadFromJSON: Procedure que recebe como parâmetro um arquivo JSON contendo os dados que compõem a NFe/NFCe, ou o caminho para esse arquivo.
  • ACBrNFe.NotasFiscais.GerarJSON: Function que retorna uma string em formato JSON com os dados de uma NFe/NFCe.
  • ACBrNFe.EventoNFe.LerFromJSON: Procedure que recebe como parâmetro um arquivo JSON contendo os dados que compõem o evento, ou o caminho para esse arquivo.

Visando trazer maior familiaridade para os desenvolvedores que utilizarem essas rotinas, os arquivos JSON gerados e lidos por elas foram construídos seguindo a mesma nomenclatura e estrutura do leiaute oficial da NFe e dos eventos. Dessa forma, quem já está habituado a trabalhar com os XMLs da NFe perceberá que a adaptação para o JSON é simples e direta.

Tomemos este XML de uma NFCe gerado com dados fictícios, por exemplo:

<NFe xmlns="http://www.portalfiscal.inf.br/nfe">
  <infNFe Id="NFe35240892390477000149650010000000011919433382" versao="4">
    <ide>
      <cUF>35</cUF>
      <cNF>91943338</cNF>
      <natOp>VENDA</natOp>
      <indPag>0</indPag>
      <mod>65</mod>
      <serie>1</serie>
      <nNF>1</nNF>
      <dhEmi>2024-08-14T16:54:00.000Z</dhEmi>
      <tpNF>1</tpNF>
      <idDest>1</idDest>
      <cMunFG>3505203</cMunFG>
      <tpImp>4</tpImp>
      <tpEmis>1</tpEmis>
      <cDV>2</cDV>
      <tpAmb>2</tpAmb>
      <finNFe>1</finNFe>
      <indFinal>1</indFinal>
      <indPres>1</indPres>
      <procEmi>0</procEmi>
      <verProc>ACBr-Monitor</verProc>
    </ide>
    <emit>
      <CNPJ>92390477000149</CNPJ>
      <xNome>RAZAO SOCIAL</xNome>
      <xFant>FANTASIA</xFant>
      <IE>449301071500</IE>
      <CRT>3</CRT>
      <enderEmit>
        <xLgr>LOGRADOURO</xLgr>
        <nro>1</nro>
        <xCpl>COMPLEMENTO</xCpl>
        <xBairro>BAIRRO</xBairro>
        <cMun>3505203</cMun>
        <xMun>BARIRI</xMun>
        <UF>SP</UF>
        <CEP>12345678</CEP>
        <cPais>1058</cPais>
        <xPais>BRASIL</xPais>
        <fone>11111111</fone>
      </enderEmit>
    </emit>
    <det nItem="1">
      <prod>
        <cProd>123456</cProd>
        <cEAN>7896523206646</cEAN>
        <cBarra>ABC123456</cBarra>
        <xProd>NOTA FISCAL EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL</xProd>
        <NCM>94051010</NCM>
        <CEST>1111111</CEST>
        <CFOP>5101</CFOP>
        <uCom>UN</uCom>
        <qCom>1</qCom>
        <vUnCom>100</vUnCom>
        <vProd>100</vProd>
        <cEANTrib>7896523206646</cEANTrib>
        <cBarraTrib>ABC123456</cBarraTrib>
        <uTrib>UN</uTrib>
        <qTrib>1</qTrib>
        <vUnTrib>100</vUnTrib>
        <vFrete>0</vFrete>
        <vSeg>0</vSeg>
        <vDesc>0</vDesc>
        <vOutro>0</vOutro>
        <indTot>1</indTot>
      </prod>
      <imposto>
        <vTotTrib>0</vTotTrib>
        <ICMS>
          <ICMS00>
            <orig>0</orig>
            <CST>00</CST>
            <modBC>3</modBC>
            <vBC>100</vBC>
            <pICMS>18</pICMS>
            <vICMS>1800</vICMS>
          </ICMS00>
        </ICMS>
        <IPI>
          <IPITrib>
            <CST>00</CST>
            <vBC>0</vBC>
            <pIPI>0</pIPI>
            <vIPI>0</vIPI>
          </IPITrib>
        </IPI>
        <PIS>
          <PISOutr>
            <CST>99</CST>
          </PISOutr>
        </PIS>
        <COFINS>
          <COFINSOutr>
            <CST>99</CST>
          </COFINSOutr>
        </COFINS>
      </imposto>
    </det>
    <total>
      <ICMSTot>
        <vBC>100</vBC>
        <vICMS>1800</vICMS>
        <vProd>100</vProd>
        <vNF>100</vNF>
        <vTotTrib>0</vTotTrib>
      </ICMSTot>
    </total>
    <transp>
      <modFrete>9</modFrete>
    </transp>
    <pag>
      <detPag>
        <tPag>01</tPag>
        <vPag>100</vPag>
      </detPag>
    </pag>
    <infAdic>
      <obsCont>
        <xCampo>ObsCont</xCampo>
        <xTexto>Texto</xTexto>
      </obsCont>
      <obsFisco>
        <xCampo>ObsFisco</xCampo>
        <xTexto>Texto</xTexto>
      </obsFisco>
    </infAdic>
  </infNFe>
  <infNFeSupl>
    <qrCode>https://www.homologacao.nfce.fazenda.sp.gov.br/qrcode?p=|2|2|1|EA3AA74775103726161ECA855F5C17EDC996517A</qrCode>
    <urlChave>https://www.homologacao.nfce.fazenda.sp.gov.br/consulta</urlChave>
  </infNFeSupl>
</NFe>

Seu JSON equivalente seria:

{
  "NFe": {
    "infNFe": {
      "Id": "NFe35240892390477000149650010000000011919433382",
      "versao": "4",
      "ide": {
        "cUF": 35,
        "cNF": 91943338,
        "natOp": "VENDA",
        "mod": 65,
        "serie": 1,
        "nNF": 1,
        "dhEmi": "2024-08-14T16:54:00.000Z",
        "tpNF": "1",
        "idDest": "1",
        "cMunFG": 3505203,
        "tpImp": "4",
        "tpEmis": "1",
        "cDV": 2,
        "tpAmb": "2",
        "finNFe": "1",
        "indFinal": "1",
        "indPres": "1",
        "procEmi": "0",
        "verProc": "ACBr-Monitor"
      },
      "emit": {
        "CNPJ": "92390477000149",
        "xNome": "RAZAO SOCIAL",
        "xFant": "FANTASIA",
        "IE": "449301071500",
        "CRT": "3",
        "enderEmit": {
          "xLgr": "LOGRADOURO",
          "nro": "1",
          "xCpl": "COMPLEMENTO",
          "xBairro": "BAIRRO",
          "cMun": 3505203,
          "xMun": "BARIRI",
          "UF": "SP",
          "CEP": 12345678,
          "cPais": 1058,
          "xPais": "BRASIL",
          "fone": "11111111"
        }
      },
      "det": [
        {
          "nItem": 1,
          "prod": {
            "cProd": "123456",
            "cEAN": "7896523206646",
            "cBarra": "ABC123456",
            "xProd": "NOTA FISCAL EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL",
            "NCM": "94051010",
            "CEST": "1111111",
            "CFOP": "5101",
            "uCom": "UN",
            "qCom": 1,
            "vUnCom": 100,
            "vProd": 100,
            "cEANTrib": "7896523206646",
            "cBarraTrib": "ABC123456",
            "uTrib": "UN",
            "qTrib": 1,
            "vUnTrib": 100,
            "indTot": "1"
          },
          "imposto": {
            "vTotTrib": 0,
            "ICMS": {
              "ICMS00": {
                "orig": "0",
                "CST": "00",
                "modBC": "3",
                "vBC": 100,
                "pICMS": 18,
                "vICMS": 1800
              }
            },
            "IPI": {
              "IPITrib": {
                "CST": "00",
                "vBC": 0,
                "pIPI": 0,
                "vIPI": 0
              }
            },
            "PIS": {
              "PISOutr": {
                "CST": "99"
              }
            },
            "COFINS": {
              "COFINSOutr": {
                "CST": "99"
              }
            }
          }
        }
      ],
      "total": {
        "ICMSTot": {
          "vBC": 100,
          "vICMS": 1800,
          "vProd": 100,
          "vNF": 100,
          "vTotTrib": 0
        }
      },
      "transp": {
        "modFrete": "9"
      },
      "pag": {
        "detPag": [
          {
            "tPag": "01",
            "vPag": 100
          }
        ]
      },
      "infAdic": {
        "obsCont": [
          {
            "xCampo": "ObsCont",
            "xTexto": "Texto"
          }
        ],
        "obsFisco": [
          {
            "xCampo": "ObsFisco",
            "xTexto": "Texto"
          }
        ]
      }
    },
    "infNFeSupl": {
      "qrCode": "https://www.homologacao.nfce.fazenda.sp.gov.br/qrcode?p=|2|2|1|EA3AA74775103726161ECA855F5C17EDC996517A",
      "urlChave": "https://www.homologacao.nfce.fazenda.sp.gov.br/consulta"
    }
  }
}

Observem que os nomes das chaves correspondem exatamente ao nome das tags e os níveis das tags foram representados de maneira semelhante no JSON.

É a mesma coisa para os eventos, vejam um exemplo de JSON de um evento de cancelamento:

{
  "envEvento": {
    "idLote": "123456789012345",
    "evento": [
      {
        "versao": "1.00",
        "infEvento": {
          "cOrgao": "35",
          "tpAmb": "2",
          "CNPJ": "11111111000111",
          "chNFe": "35240111111111000111550010000001231000001234",
          "dhEvento": "2024-07-29T10:00:00-03:00",
          "tpEvento": "110111",
          "nSeqEvento": "1",
          "versaoEvento": "1.00",
          "detEvento": {
            "versao": "1.00",
            "descEvento": "Cancelamento",
            "nProt": "135240000000123",
            "xJust": "A operacao foi cancelada por motivos comerciais."
          }
        }
      }
    ]
  }
}

Se compararmos, essa estrutura é semelhante ao leiaute apresentado no MOC e ao XML de envio gerado.

Vale reforçar que, apesar da nova funcionalidade, o XML é o documento fiscal eletrônico oficial e deve ser armazenado para fins fiscais.

Contamos com a colaboração de todos para testar as rotinas e reportar quaisquer problemas encontrados. Sua participação é essencial para aprimorarmos as soluções para toda a comunidade.

Até a próxima pessoal.

  • Curtir 17
  • Obrigado 1
Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

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 !!

×
×
  • 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...