Como funciona isso de NFE, CTE, MDFE, etc.
Tem lá o endereço da Fazenda pra fazer alguma coisa.
Você envia a mensagem para esse endereço e recebe resposta.
Basicamente é isso que os componentes pra NFE, CTE, MDFE fazem.
Isso costuma ser chamado webservice, soap, etc.
E o XML, o que tem a ver com isso?
A mensagem é formatada como um XML.
Geramente é um XML dentro de outro XML, que pode estar dentro de outro XML, etc. etc. etc.
Não confundir XML com arquivo de extensão XML.
Não vai transmitir nem receber arquivos, vai transmitir uma mensagem e receber outra de volta.
Mas... e os arquivos que os componentes pra NFE costumam usar?
Isso é a forma que encontraram de fazer transferência entre os programas.
Como não dá pra um programa atualizar a variável do outro, isso é feito por arquivos.
E aquela classe SpedSefazClass, o que ela faz?
Ela transmite mensagem e recebe o retorno, exatamente o que o SPED precisa.
Como ela já é em Harbour, o Harbour pode usar direto as variáveis, sem precisar de arquivo nenhum.
E pra usar TXT?
TXT não faz parte do projeto da Fazenda.
Também foi uma forma criada pra transferir informações entre programas diferentes.
Da mesma forma que o XML, trata-se de um arquivo gravado com texto.
Tem que ser formatado, assim como o XML também é formatado, mas cada um usa um formato diferente.
Os arquivos XMLs são apenas pra troca de informações entre programas diferentes.
Até mesmo o envio do XML por email, trata-se de enviar num formato padrão, para que qualquer aplicativo conheça o mesmo formato e consiga ler informações do arquivo.
Basicamente é isso.
O resto, é tudo pra faciltar.
- uma classe pra receber os valores e gerar o XML. tipo nfe:emitente:nome
- uma rotina pra converter txt pra xml
- uma rotina pra ler arquivos xml/txt gerados pelo seu aplicativo
- uma rotina pra salvar retorno em formato xml/txt para o seu aplicativo ler
- formatos diferentes do padrão, por exemplo INI ou outro
etc.
Nota:
Nem sempre o que foi criado pra facilitar vai facilitar.
Algumas vezes, é criado até um formato mais complicado do que o padrão, que só complica.
Formatos "não-padrão" podem deixar seu trabalho como sendo exclusivo daquele produto, não vai poder ser aproveitado pra nenhum outro.