Pra quem ainda não resolveu NFE/CTE/MDFE

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Pra quem ainda não resolveu NFE/CTE/MDFE

Mensagem por JoséQuintas »

Ao postar notei um erro, esta linha:

Código: Selecionar todos

IF ( nPos := AScan( aSoapList, { | oElement | oElement[ 1 ] == ::cUF .AND. oElement[ 2 ] == nWsServico } ) ) != 0
não é ==, e sim $, porque não se trata de uma UF, e sim uma lista de UFs.

Nota:
Esta alteração salvei hoje no git, e como uso SPaulo, acabou não me afetando, a não ser quando fosse consultar nota de alguma UF da lista que iria falhar.
O post acabou me ajudando a corrigir um erro antes que acontecesse....

Como sempre digo: "enxergar o que está na frente do nariz", vi que estava errado quando postei... rs
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Pra quem ainda não resolveu NFE/CTE/MDFE

Mensagem por JoséQuintas »

Código: Selecionar todos

   IF ( nPos := AScan( aSoapList, { | oElement | ::cUF $ oElement[ 1 ] .AND. oElement[ 2 ] == nWsServico } ) ) != 0
      ::cProjeto     := aSoapList[ nPos, 3 ]
      ::cSoapAction  := aSoapList[ nPos, 4 ]
      ::cSoapService := aSoapList[ nPos, 5 ]
   ELSEIF ( nPos := AScan( aSoapList, { | oElement | oElement[ 1 ] == "**" .AND. oElement[ 2 ] == nWsServico } ) ) != 0
      ::cProjeto     := aSoapList[ nPos, 3 ]
      ::cSoapAction  := aSoapList[ nPos, 4 ]
      ::cSoapService := aSoapList[ nPos, 5 ]
   ENDIF
Até daria pra reduzir pra uma única comparação, desde que eu não erre a ordem da lista.
Mais seguro deixar assim mesmo.

Mas confirmando o que realmente AScan() faz nesse caso, poderia ser:

Código: Selecionar todos

AScan( ... ( ::cUF $ oElement[ 1 ] .OR. oEleent[ 1 ] == "**" ) .AND. oElement[ 2 ] == nWsServico }
Pegaria o primeiro (ou último) que atenda a condição, seja especifico ou geral.
Reduz fonte, mas pode facilitar erro, se errar na ordem do array.

Nota: novamente enxerguei o que estava na frente do nariz, precisou inverter a ordem na comparação "$".
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Pra quem ainda não resolveu NFE/CTE/MDFE

Mensagem por JoséQuintas »

Parece piada mas é sério... acabei de corrigir.

https://github.com/JoseQuintas/sefazcla ... 2758f0b98c
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Pra quem ainda não resolveu NFE/CTE/MDFE

Mensagem por JoséQuintas »

Então podemos retomar o assunto em um tópico q já existe sobre isto pq o deste tópico acredito q ficou ok.
Na prática, acho que no subtópico acabou ficando meio escondido, e não chama a atenção sobre postagens novas.

A classe.....
Não tem nada diferente, pra ficar tópico em separado.
O que vai acabar sendo falado sobre ela: endereço da Fazenda, serviço da Fazenda, montagem de XML, instalação de certificado.
À primeira vista, isso é assunto comum pra todos que emitem NFE/CTE/MDFE.

Às vezes penso que um tópico "NFE/CTE/MDFE e relacionados" seria mais interessante.
Tudo bem que legislação causa mudanças, mas de uns tempos pra cá, estamos tratando mais de detalhes técnicos do que de legislação.
Está ficando sem lugar certo, pra tratar do mesmo assunto.
E mesmo usando soluções diferentes, acaba tudo sendo sobre o mesmo assunto, e o mesmo tipo de problema.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Pra quem ainda não resolveu NFE/CTE/MDFE

Mensagem por JoséQuintas »

Só pra finalizar:

Ao mostrar como a classe funciona, estou mostrando como a FAZENDA funciona.
É pegar um texto, enviar e pegar resposta.
O resto, é escolher strings de acordo com o que quiser fazer.
Somar strings, escolher strings, é algo comum pra todo mundo.

A partir do momento que começarem a entender isso, vai começar a facilitar tudo.
Não é nada do outro mundo, é tudo coisa básica.

Quais os únicos pontos chave:

- Assinar XML
- Comunicação SOAP

A necessidade de alguma coisa extra em Clipper, por exemplo, é porque no Clipper não dá nem pra assinar, e nem pra fazer comunicação SOAP.
Nas outras linguagens de programação, se elas tem assinatura e SOAP, não precisa de mais nada.
A partir daí, vai de cada um, pode usar um componente pronto pra facilitar o trabalho, mas não porque é obrigado a usar.

Em 2008 eu não estava entendendo nada de NFE, meu cliente foi o primeiro da lista, pensei até em desistir de programação...
Fui enxergando o que estava na frente do nariz, e acabei aprendendo um pouquinho.... rs
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder