hbNFe dúvidas

Projeto hbNFe (Nota Fiscal Eletronica/Danfe) para [x]Harbour

Moderador: Moderadores

pauloa1
Usuário Nível 3
Usuário Nível 3
Mensagens: 227
Registrado em: 25 Jun 2008 14:57
Localização: Augusto Pestana-RS

hbNFe dúvidas

Mensagem por pauloa1 »

Olá!

Informei as classes para gerar o xml e validar.

Ao executar da a mensagem de 'Problema ao validar EAN'
linha 1309 do HBNFECreator.prg
aRetorno['MsgErro'] := 'Problema ao validar EAN'

o cEAN deixei em branco .

Código: Selecionar todos

            oNF:AddItem()
            WITH OBJECT oNF:Item[oNF:nItens]    // INICIO PRODUTOS
                 :cProd  := VAL(PRODUTO->CODPDT) //1
                 :cEAN   := ''
                 :xProd  := retiraacento(PRODUTO->NOME)+" "+retiraacento(produto->nomeadic) //'PRODUTO 1'
                 :NCM    := PRODUTO->NCM_SH //'28467328'
                 :CFOP   := IFISCAL->CFOP //'5102'
                 :uCom   := PRODUTO->UNIDADE //'PC'
                 :qCom   := IFISCAL->QTIDADE //4.00
                 :vUnCom := IFISCAL->VR_UNI //10.00
                 :vProd  := IFISCAL->VR_TOTAL //40.00
                 :vDesc  := IFISCAL->VR_DES //10.00
                 :indTot := 1 //0
Oque estou fazendo de errado?

Paulo
andersoncamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 103
Registrado em: 22 Ago 2004 11:54

hbNFe dúvidas

Mensagem por andersoncamilo »

Paulo

Bom dia

Coloca o conteúdo dessa variavel como Nil, e testa, acredito que vai dar certo.

Anderson Camilo
Imatech
Usuário Nível 3
Usuário Nível 3
Mensagens: 350
Registrado em: 24 Ago 2010 23:48
Localização: Goiânia-GO

hbNFe dúvidas

Mensagem por Imatech »

Trata-se de informação obrigatória na NFe e deve ser informada quando existir...

Código: Selecionar todos


      oNF:AddItem()

      WITH OBJECT oNF:Item[oNF:nItens]  // INICIO PRODUTOS
        :cProd := VAL(PRODUTO->CODPDT) //1
        IF !( EMPTY( PRODUTO->EAN ) )
          :cEAN := PRODUTO->EAN
        ENDIF
        :xProd := retiraacento(PRODUTO->NOME)+" "+retiraacento(produto->nomeadic) //'PRODUTO 1'
        :NCM  := PRODUTO->NCM_SH //'28467328'
        :CFOP := IFISCAL->CFOP //'5102'
        :uCom := PRODUTO->UNIDADE //'PC'
        :qCom := IFISCAL->QTIDADE //4.00
        :vUnCom := IFISCAL->VR_UNI //10.00
        :vProd := IFISCAL->VR_TOTAL //40.00
        :vDesc := IFISCAL->VR_DES //10.00
        :indTot := 1 //0

M., Ronaldo

by: IMATECH

IMATION TECNOLOGIA
pauloa1
Usuário Nível 3
Usuário Nível 3
Mensagens: 227
Registrado em: 25 Jun 2008 14:57
Localização: Augusto Pestana-RS

hbNFe dúvidas

Mensagem por pauloa1 »

Fiz de tudo e não adianta.

Unica forma foi comentar algumas linhas e deixa só adicionar a tag vazia.

Código: Selecionar todos

        * TRY
                 *    IF ::oFuncoes:validaEan(:cEAN)[1] = .T.
                        ::incluiTag('cEAN'     ,:cEAN)   //<cEAN />
                 *    ELSE
                 *       aRetorno['OK'] := .F.
                 *       aRetorno['MsgErro'] := 'Problema ao validar EAN ' + ::oFuncoes:validaEan(:cEAN)[2]
                 *    ENDIF
                 * CATCH
                 *    aRetorno['OK'] := .F.
                 *    aRetorno['MsgErro'] := 'Problema ao validar EAN'
                 * END
                 * IF aRetorno['OK'] = .F.
                 *    RETURN(aRetorno)
                 * ENDIF

Pra que servem os arquivos da pasta \HBNFE\fontes_cod_barra do SVN?

preciso adicionar algum arquivo no meu sistema? não seria isso o problema da cEAN ?


Leonardo!

Tem um erro na linha 1518 do HBNFECreator.prg

IF :CST $ '40,41,50'
// ::incluiTaincluiTagGrupo('/ICMS40') //errado
::incluiTagGrupo('/ICMS40') // correto
ELSE
::incluiTagGrupo('/ICMS'+:CST)
ENDIF

Quando for possível seria bom acertar e adicionar no SVN.




Paulo
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

hbNFe dúvidas

Mensagem por sygecom »

Olá Paulo,
pauloa1 escreveu: Unica forma foi comentar algumas linhas e deixa só adicionar a tag vazia.
Eu não uso EAN por que só trabalho com industria, mas vamos esperar para mais alguém que trabalhe com EAN para ver se tem o mesmo problema, para tentarmos arrumar na HBNFE.
Pra que servem os arquivos da pasta \HBNFE\fontes_cod_barra do SVN?
Serve apenas para impressão do DANFE em PDF, não interfere com qualquer outro passo da NFE, nem na DANFE em FASTREPORT.
preciso adicionar algum arquivo no meu sistema? não seria isso o problema da cEAN ?
Se for usar a DANFE em PDF sim precisa, mas apenas para o uso da DANFE. E não é esse o problema do cEAN.
Tem um erro na linha 1518 do HBNFECreator.prg
Fiz o ajuste no SVN, muito obrigado pela dica. Abraços
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
andersoncamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 103
Registrado em: 22 Ago 2004 11:54

hbNFe dúvidas

Mensagem por andersoncamilo »

Boa tarde a todos

Fiz duas modificações no HbNFeCreator.PRG, para corrigir esse problema do EAN.

1 - Na linha 1076 o valor era aRetorno[ 'OK' ] := .F. // Errado
mudei para aRetorno[ 'OK' ] := .T. // Correto

2 - Comentei as linhas 1308 e 1309
1308 // aRetorno['OK'] := .F.
1309 // aRetorno['MsgErro'] := 'Problema ao validar EAN'

inclui na linha 1310,
::incluiTag('cEAN' ,'') //<cEAN />


Leonardo se puder comitar, agradeço.

Obrigado

Anderson Camilo
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

hbNFe dúvidas

Mensagem por sygecom »

Olá Anderson.
1- Se eu mudar a linha 1076 para .T. ele tem vários RETURN antes do final que dão problema e deve retornar .F.
Veja que lá pela linha 1937 ele muda para:
aRetorno[ 'OK' ] := .T.
Acho que devemos manter assim. De uma revisada.
2- Ok, alterado.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
andersoncamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 103
Registrado em: 22 Ago 2004 11:54

hbNFe dúvidas

Mensagem por andersoncamilo »

Leonardo

Se não mudar para .T. ele vai continuar dando o erro no EAN, a qualquer momento que ele encontrar algum erro ele vai mudar o valor para .F., então acredito que não vai dar nenhum efeito colateral.

Nas linhas 1313 e 1338 tem esse teste abaixo:
IF aRetorno['OK'] = .F.
RETURN(aRetorno)
ENDIF

Se não mudar na 1076 ele sempre vai ser .F., e onde provoca o erro, outra alternativa seria mudar o valor para .T. em outro lugar, ou mudar os locais destes dois testes.


Eu gerei um arquivo xml e funcionou certinho.


Anderson Camilo
pauloa1
Usuário Nível 3
Usuário Nível 3
Mensagens: 227
Registrado em: 25 Jun 2008 14:57
Localização: Augusto Pestana-RS

hbNFe dúvidas

Mensagem por pauloa1 »

Estou achando estranho algumas coisas.

gerei o xml + assinar+envio.

deu mensagem "lote recebido com sucesso"

Fui consultar a nfe e a mesma não consta no sefaz.

Consultei ela pelo acbr e realmente não consta.

Fui enviar ela pelo acbr e deu um erro "Nota(s) não confirmadas:
7327->Rejeicao: Valor do Produto difere do produto Valor Unitario de Tributacao e Quantidade Tributavel"

Não estou me referindo ao erro em si, mas o motivo do HBNFE não ter me informado esse erro em vez de ter dado a mensagem de "Lote Recebido".


A forma como estou fazendo:

Informo os dados no oNF:

Depois coloquei assim:

Código: Selecionar todos

	

   *********/// gerar  validar e assinar xml
         aRetorno := oNF:geraXML()
         oNF := Nil
         IF aRetorno[ 'OK' ] = .F.
            MSG(aRetorno[ 'MsgErro' ])
          * ELSE
          * MSG('Gerou XML')
         ENDIF


       ******/// Enviar xml assinado 
        oEnviaNFe := hbNFeRecepcaoLote()
        oEnviaNFe:ohbNFe := oNfe // Objeto hbNFe
        oEnviaNFe:idLote := '2' //idLote
        oEnviaNFe:aXMLDados := {mFILE_XML}  //{ cXMLFileAssinado }
        oEnviaNFe:lAguardaRetorno := .T.
        aRetorno := oEnviaNFe:execute()
        oEnviaNFe := Nil

        IF aRetorno['OK'] == .F.
           MSG(aRetorno['MsgErro'])
          ELSE
         *  MSG( aRetorno['versao']  )
         *  MSG( aRetorno['tpAmb']   )
         *  MSG( aRetorno['verAplic'])
         *  MSG( aRetorno['cStat']   )   // deu 103
         *  MSG( aRetorno['xMotivo'] ) // lote recebido com sucesso 
          * MSG( aRetorno['cUF']     )
          * MSG( aRetorno['dhRecbto'])
          *  MSG( aRetorno['nRec']    )
          * MSG( aRetorno['tMed']    )
        ENDIF
      *****************************************************************
     //Pega retorno se deu erro ou não
       oRetornoNFe := hbNFeRetornoRecepcao()
        oRetornoNFe:ohbNFe := oNfe // Objeto hbNFe
        oRetornoNFe:nRec := aRetorno['nRec'] //nRecibo
        aRetorno := oRetornoNFe:execute()
        oRetornoNFe := Nil

        IF aRetorno['OK'] == .F.
             msg( aRetorno['MsgErro']  )
	  ELSE
         //retornou aqui 
            msg( aRetorno['tpAmb']     )
            msg( aRetorno['verAplic']  )
            msg( aRetorno['nRec']      )
            msg( aRetorno['cStat']     )
            msg( aRetorno['xMotivo']   )
            msg( aRetorno['cUF']       )
            msg( aRetorno['cMsg']      )
            msg( aRetorno['xMsg']      )
            FOR nI = 1 TO aRetorno['nNFs']
              msg( aRetorno['NF'+STRZERO(nI,2)+'_tpAmb']     )
              msg( aRetorno['NF'+STRZERO(nI,2)+'_verAplic']  )
              msg( aRetorno['NF'+STRZERO(nI,2)+'_chNFe']     )
              msg( aRetorno['NF'+STRZERO(nI,2)+'_dhRecbto']  )
              msg( aRetorno['NF'+STRZERO(nI,2)+'_nProt']     )
              msg( aRetorno['NF'+STRZERO(nI,2)+'_digVal']    )
              msg( aRetorno['NF'+STRZERO(nI,2)+'_cStat']     )
              msg( aRetorno['NF'+STRZERO(nI,2)+'_xMotivo']   )
              msg( aRetorno['NF'+STRZERO(nI,2)+'_protNFe']   )
           NEXT
        ENDIF

      ****/// consultar nfe se consta no sefaz
		  
//montar chave

mFILE_XML=LEFT(PERS->CIDNFE,2)+substr(strzero(year(NFISCAL->EMISSAO),4),3,4)+strzero(month(NFISCAL->EMISSAO),2);
      +Tiraponto(PERS->CGCMF)+"55001"+strsimb(NFISCAL->NUMERO,9)+"1"+strsimb(NFISCAL->NUMERO,8) 
mDVNFE=MODULO11_NFE(mFILE_XML)
mFILE_XM=ALLTRIM(PERS->NFE_PNFE)+"\\"+mFILE_XML+ALLTRIM(STR(mDVNFE))+'-nfe.xml'

        oConsulta := hbNFeConsulta()
        oConsulta:ohbNFe := oNfe // Objeto hbNFe
       oConsulta:cNFeFile := mFILE_XM  
       aRetorno := oConsulta:execute()
        oConsulta := Nil

        IF aRetorno['OK'] == .F.
             msg(aRetorno['MsgErro'] )  //aqui ta retornando que nota não consta no sefaz.
          ELSE
         *  msg( aRetorno['tpAmb']     )
         *  msg( aRetorno['verAplic']  )
         *  msg( aRetorno['dhRecbto']  )
         *  msg('nprod '+ aRetorno['nProt']     )
         *  msg( aRetorno['digVal']    )
         *  msg( aRetorno['cStat']     )
           msg( aRetorno['xMotivo']   )
         *  msg( aRetorno['protNFe']   )
       ENDIF
	***** se ok gravar retornos e gerar danfe	  
Paulo
Anexos
43120705686058000154550010000073331000073335-nfe.xml
arquivo xml gerado
(5.84 KiB) Baixado 145 vezes
pauloa1
Usuário Nível 3
Usuário Nível 3
Mensagens: 227
Registrado em: 25 Jun 2008 14:57
Localização: Augusto Pestana-RS

hbNFe dúvidas

Mensagem por pauloa1 »

Coloquei a nota de referencia e não adicionou no xml.

Código: Selecionar todos

WITH OBJECT oNF:Ide:NFref:refNFP
            :cUF    := left(vcodmun,2)
             :AAMM   := substr(dtos(NFISCAL->EMISSAO),3,2)+substr(dtos(NFISCAL->EMISSAO),5,2)
             :CNPJ   := PERS->CGCMF
             :CPF    := xCNPJ
             :IE     := alltrim(xIEPROD) 
             :mod    := '04'
             :serie  := '0'
             :nNF    := strsimb(NFISCAL->Nbloco,9) //bloco produtor rural
            // :refCTe := Nil
         END WITH
Paulo
Editado pela última vez por Pablo César em 26 Mar 2013 09:21, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
pauloa1
Usuário Nível 3
Usuário Nível 3
Mensagens: 227
Registrado em: 25 Jun 2008 14:57
Localização: Augusto Pestana-RS

hbNFe dúvidas

Mensagem por pauloa1 »

Fui tentar gerar usando o arquivo INI do acbr.

e da esse erro:

Error BASE/1132 Erro de limite: acesso de array
Called from HBNFEINITOXML.PRG->HBNFEINITOXML:CRIANFE(229)
Called from HBNFEINITOXML.PRG->HBNFEINITOXML:EXECUTE(109)
Called from SCCNFE.PRG->NFE_CRIANFE(637)
Called from SCC161.PRG->CNOTA(399)
Called from SCC161.PRG->NOTANOVA(172)
Called from SCC161.PRG->SCC161(24)
Called from SCCN.PRG->(b)PRINCIPAL(318)
Called from COMPATIB.PRG->KEYPRESS(174)
Called from COMPATIB.PRG->(b)CONFIGURA_SCC(53)
Called from ->INKEY(0)
Called from SCCN.PRG->PRINCIPAL(605)

HwGUI 2.17 xHarbour build 1.2.1 Intl. (SimpLex) (Rev. 9612)
Date:11/08/2012
Time:09:13:56


Bom, acho que para o meu caso o HBNFE ainda não está 100%, mas para aqueles que funciona, recomendo.

Como o tempo é curto demais, vou retornar ao uso do ACBR.

Paulo
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

hbNFe dúvidas

Mensagem por sygecom »

Olá Paulo,
Eu uso exclusivamente gerando os arquivos INI no formato do ACBR e funciona 100%.
Tem erros que são por falta de atenção ou por falta de teste, como não tem um manual especifico para a HBNFE o entendimento de como funciona é necessário. No seu caso faltou carregar os dados do certificado, mesmo assim fiz uma alteração na HBNFE para dar um aviso sobre isso.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
pauloa1
Usuário Nível 3
Usuário Nível 3
Mensagens: 227
Registrado em: 25 Jun 2008 14:57
Localização: Augusto Pestana-RS

hbNFe dúvidas

Mensagem por pauloa1 »

Depois da última atualização ta dando essa mensagem, caso gerar nfe com a tag nfp

exemplo no arquivo ini
[NFRef001]
Tipo=NFP
cUF=43
AAMM=1207
IE=1631026744
CNPJ=05686058000154
CPF=08318889894
Modelo=04
Serie=0
nNF=000123456


'000123456' viola a restrição pattern de '[1-9]{1}[0-9]{0,8}'.
Falha da análise do elemento '{http://www.portalfiscal.inf.br/nfe}nNF' com valor '000123456'.

Pelo acbr está passando, usando o mesmo arquivo ini.

Paulo
andersoncamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 103
Registrado em: 22 Ago 2004 11:54

hbNFe dúvidas

Mensagem por andersoncamilo »

Paulo

Bom dia

No HBNFE não tem tratamento dos dados que vem do arquivo INI, então conforme o manual da nfe o conteúdo do campo nNF tem que ter somente os números válidos não podendo ter zeros a esquerda e outro detalhe o tamanho desse campo é 6 caracteres, eu também tenho um programa que ainda utiliza o ACBRNFEMONITOR, e quando comecei a utilizar o hbnfe passei fazer os tratamentos de alguns campos no momento de criar o arquivo INI, que na verdade eu acho que seja a forma mais correta, porque assim os dados ficam gravados como realmente devem ser.

Qualquer dúvida é so chamar.

Um abraço

Andeson Camilo
Devair
Usuário Nível 1
Usuário Nível 1
Mensagens: 15
Registrado em: 22 Ago 2012 15:17
Localização: tanabi,sp

hbNFe dúvidas

Mensagem por Devair »

Conheci a HBNfe, e resolvi fazer uns testes.

Mais to com problema pra assinar o XML.
A função hbNFeAssina faz a assinatura no XML, mais qdo se faz a validação do XML, no aplicativo da SEFAZ, diz que ta com erro. Percebi, analizando a função, que ela pega o cabeçalho do XML " <?xml version="1.0" encoding="UTF-8"?>" , uma parte e após assinar ela coloca novamente a parte que falta no xml, isto que causa o erro, pois após a assinatura não se pode acrescentar nada.

Creio estar fazendo algo errado, ou não entendendo como funciona, uso xHarbour.

Se alguem puder me dar uma dica, agradeço.
Responder