none
Problemas com schemas na nota fiscal eletrônica

    Question

  • Boa tarde pessoal.

     

    Estamos desenvolvendo (ou pelo menos tentando desenvolver) uma solução para a Nota Fiscal Eletrônica.

    Para quem não conhece o projeto tecnicamente, basicamente deve-se gerar as notas fiscais em XML e serem validadas em webservices.

    Vamos ao problema:

    São vários schemas xml, cada um p/ uma fase da geração da nota, que a secretaria da fazenda disponibilizou para geração das notas eletrônicas, mas ao tentar importar esses schemas para um datatset ( myDataSet.ReadXmlSchema("leiauteNFe_v1.10.xsd") ), não é gerada toda a estrutura do .xsd em meu dataset. Essa estrutura é bem complexa mas em sua raiz existem 2 nós. Um contém os dados da nota e outro os dados de assinatura. A importação do schema gera no meu dataset apenas a estrutura do nó de assinatura.

    Alguém saberia porque eu não consigo importar toda a estrutura de um schema?

     

     

    Quem precisar os schemas estão em http://www.nfe.fazenda.gov.br/portal/schemas.aspx#  arquivo Schemas XML NF-e - Pacote de Liberação No. 5 (23/04/07) (ZIP).

     

     

    Desde já agradeço qualquer ajuda.

    Abraços,

     

    Gustavo Barusco

    gustavo@consinco.com.br

     

    Monday, March 17, 2008 8:46 PM

All replies

  • Só complementando com um detalhe.

    Para o xml principal ele tem como base um schema (nfe_v1.10.xsd) que faz referência a outro schema (leiauteNFe_v1.10.xsd) que por sua vez esse tbem faz ref. a mais outro schema (tiposBasico_v1.02.xsd).

    Então ao tentar ler um schema de nfe_v1.10.xsd p/ um data set é onde ocorre o problema.

     

    Abraços,

     

    Gustavo Barusco

    gustavo@consinco.com.br

    Wednesday, March 19, 2008 7:03 PM
  • Olá pessoal, também estou com a mesma duvida.

    Estou desenvolvendo Vb.Net com framework 2.0.

     

    Saturday, March 22, 2008 8:32 PM
  • Ola!

    Estou começando agora a desenvolver (tentando) essa NFe e estou me deparando na mesma situação estou lendo o arquivo do schema e não consigo visualizar os campos que sçao especificos para a nota fiscal e seus itens, estou usando o layout "leiauteNFe_v1.12.xsd"

     

    Estou lendo o arquivo e mandando para meu dataset, mas não tenho os campos da nota, já conseguiram passar desta

    fase?

     

    dataset.ReadXmlSchema("leiauteNFe_v1.12.xsd") 

     

    Agradeço desde já.

    Abraço

     

    Wednesday, April 02, 2008 6:07 PM
  • Olá pessoal.

     

    Creio que não será possível fazer da maneira que estamos tentando. Fiz umas pesquisas e li que não é possível gerar a estrutura no dataset pois o schema leiauteNFe_v1.12.xsd faz referência a outro schemas (um deles é o tipo_básico_.xsd). Pelo que pude entender o ReadXmlSchema só consegue gerar se todas estruturas estiverem definidas em um único schema.

    Eu acho que a saída é gerar um unico schema copiando os elementos, tipos e grupos de todos os .xsd para ele, e assim, tentar gerar o dataset partindo apenas de 1 xsd.

    Vou fazer uns testes e depois coloco aqui os resultados.

     

    Abraços a todos.

    Thursday, April 03, 2008 12:19 AM
  • Gustavo,

    Pelas minhas tentativas realmente não gera a estrutura correta gerando pelo leiauteNfe_v1.12.xsd mas pelo que me parece eu acho que agora deu certo, gerei um dataset pelo arquivo nfe_v1.12.xsd, pois se notar dentro deste tem um include q chama novamente o  leiauteNFe_v1.12.xsd e que vai chamar o tipo_basico, so tive um problema dava mensgem com variaveis do tipo token que tive q alterar tudo para string, mas tenho todos os campos necessarios pelo q vi.

    Se puder faça este teste ai, mas vamos passando as informações que vamos encontrando.

     

    Abraço

     

    Thursday, April 03, 2008 11:43 AM
  • Outra dúvida, não estou conseguindo manter a estrutura na hora de gerar o xml da nota com os dados

    Segue exemplo abaixo:

    Estrutura correta, veja que <enderEmit> está dentro de <emit>

    - <emit>
         <CNPJ></CNPJ>
         <xNome></xNome>
         <xFant></xFant>
       - <enderEmit>
            <xLgr></xLgr>
            <nro></nro>
            <xBairro></xBairro>
         </enderEmit>
         <IE></IE>
      </emit>

     

    Estrutura errada, um abaixo de outro

    - <emit>
        <CNPJ></CNPJ>
        <xNome></xNome>
        <xFant></xFant> 
        <IE></IE> 
      </emit>

    - <enderEmit>
           <xLgr></xLgr>
           <nro></nro>
           <xBairro></xBairro> 
      </enderEmit>

     

    O que posso estar fazendo de errado?


     

    Thursday, April 03, 2008 6:45 PM
  • Não sei se é correta a forma em que estou gerando o xml, mas fiz totalmente manual e depois comparo com o layout fornecido.

    Sunday, April 06, 2008 7:24 PM
  • Pessoal estou brincando com NF-e, e o processo discutido acima, fiz da seguinte forma.

     

    Criei uma solução contendo um Web Site.

    No Web Site criei uma pasta chamada Schemas, e nesta pasta coloquei os seguintes arquivos:

    nfe_v1.10.xsd

    leiauteNFe_v1.10.xsd

    tiposBasico_v1.02.xsd

    xmldsig-core-schema_v1.01.xsd

     

    Porque coloquei os 4 arquivos? Porque eles têm relação, ou seja, um depende do outro.

     

    Entrei em cada arquivo (.XSD) e substitui token por string.

     

    Na página Default.aspx coloque um botão e adicionei o seguinte código:

     

    Code Snippet

    DataSet dtsDanfe = new DataSet();

    dtsDanfe.ReadXmlSchema(Server.MapPath("Schemas/nfe_v1.10.xsd"));

    dtsDanfe.EnforceConstraints = false;

    XmlDataDocument xmlDoc = new XmlDataDocument(dtsDanfe);

    xmlDoc.Load(Server.MapPath("nfe.xml"));

    DataTableCollection dtbDataTables = dtsDanfe.Tables;

     

     

    Observem que peguei o DataSet e importei o schema. Em seguida desabilitei o validador, senão podem ocorrer erros dizendo que existem alguns campos que não podem ser nulos (se o seu xml estiver ok, pode colocar como true). Por fim, criei o documento e adicionei a minha NF-e.

     

    Até aqui tudo bem, agora chegou a parte de pegar as tabelas e relacionálas, porém estou pensando sériamente em não utilizar DataSet, e partir direto para o Linq to XML. Fiz alguns teste e achei mais rápido e fácil.

     

    []´s

     

    Drausio Henrique Chiarotti

     

    Friday, October 31, 2008 6:16 PM
  • Amigo, estou com o mesmo problema acima.. consegui alimntar todos os dados... mas ao gerar o xml ele no segue a sequencia...  da tag IE

    vc coseguiuresolver ???
    Marcos P. Gomes
    Tuesday, May 05, 2009 8:35 PM
  • Olá Drausio,

    Implementei a leitura do schema e do xml da nota como você explicou e a conexão funcionou corretamente. Porém alguns relacionamentos são "perdidos" quando adiciono os campos no relatório.
    Por exemplo, faço um agrupamento por NFe_Id, e incluo no cabeçalho os campos dest.xNome e enderDest.xLgr, e os dados são exibidos corretamente (o endereço acompanha o respectivo destinatário sem problemas de relacionamento). Quando adiciono na área de detalhes algum dos campos da tabela det ou de outra relacionada a ela (como prod), ocorre um erro do tipo "The link order requires Many to One query configuration, wich is not supported". Se removo o campo enderDest.xLgr, o relatório volta a funcionar, exibindo os detalhes corretamente.

    Isso ocorre com outras tabelas, também. Se coloco um campo de uma tabela principal e outro de uma tabela relacionada à ela, os detalhes do item deixam de ser exibidos a menos que eu remova o outro campo da segunda tabela.

    Ainda sou iniciante em Crystal, e não sei se eu teria que fazer o relacionamento por uma fórmula, ou relacionar externamente os dados, como você mencionou.

    Supondo que dê certo, eu gostaria de ao menos entender porquê num primeiro momento o relacionamento é feito e quando adiciono campos de outras tabelas (também relacionadas à do agrupamento principal) ele deixa de ser feito.

    Desde já agradeço.

    Graziella

    Desenvolvedora .net
    Friday, August 07, 2009 2:10 PM
  • Se está com problemas apenas no include e import por que não gera um 3º .xsd totalmente consolidado e disponibiliza para sua aplicação poder talvez usar o codeDom e gerar vários objetos de validação dinâmicas para cada Tipo do schema ?

    http://msdn.microsoft.com/en-us/library/ms256237(VS.100).aspx

    Sim digo objeto, pois nem será preciso obrigatóriamente se preocupar em estabelecer classes e compilar pois a estrutura vem do .xsd

    Uma possibilidade bacana para istio seria percorrer o xsd e iniciar uma nova classe assim  que encontrar um atributo "name" iniciado por "T" nos seus elementos ... penso seriamente em fazer isto, pois poderá mandar o governo o PL00Xx.zip que for as validações se atualizam assim que eu substituir o arquivo do diretório contanto que não mude a o nome do tipo de validação.

    Um exemplo foram as mudanças recentes de mais enum na validação de código de países ... um componente dinâmico herdaria esta atualização e serviria inclusive para fazer um scan da base inteira para não ficar rezando para o parser do WS aceitar o nosso XML.
    VB Classic
    Sunday, September 06, 2009 2:14 PM
  • Boa noite estou precisando ler o xml da Nota e passar para um banco . tem algo que ja tenha criado desse tipo para q possa me ajudar ?
    Wednesday, June 16, 2010 2:14 AM
  • Se você quiser pode gerar as classes através do comando XSD.exe

    xsd.exe /language:CS /c nfe_v2.00.xsd leiauteCancNFe_v2.00.xsd tiposBasico_v1.03.xsd xmldsig-core-schema_v1.01.xsd

    Ele vai gerar um arquivo.cs com as classes definidas nos schemas

    Friday, April 20, 2012 7:35 AM