Clipper On Line • Ver Tópico - Começando com HBNFE

Começando com HBNFE

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

Moderador: Moderadores

 

Começando com HBNFE

Mensagempor Claudio Souza » 30 Dez 2014 20:53

Olá Pessoal,

Uso o xhabrour 1.1.0 puro sem libs de terceiro, e queria colocar a HBNFE no meu programa, já baixei a HBNFE, mas não consigo entender seu funcionamento, eu gero TXT para o Emissor Gratuito e Gero também já o XML, mas não vejo como chamar dentro da HBNFE a validação do meu XML pronto, tem como ??? posso repassar a conversão do txt para xml, independente de qualquer coisa. Muito obrigado pela atenção e desculpe o abusa

Claudio
Claudio Souza
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 11
Data de registro: 15 Set 2014 13:27
Cidade/Estado: Feira de Santana
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Começando com HBNFE

Mensagempor Itamar M. Lins Jr. » 03 Jan 2015 20:35

Ola!
É isso que falei p/ o José Quintas, precisamos do feijão com arroz, exemplos.
Infelizmente, para entender o funcionamento é preciso olhar nos fontes.
O José Quintas explica excessivamente, na minha opinião, e não mostra a coisa funcionando.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Começando com HBNFE

Mensagempor athayde » 08 Jan 2015 16:02

Não deve estar atualizado, mas tinha um teste.prg, era fácil de ver como funcionava
como o status (parte retirada do teste.prg
oStatus := hbNFeStatus()
oStatus:ohbNFe := oNfe // Objeto hbNFe
oStatus:tpAmb := '1' // Normal
oStatus:cUF := cUF // UF
aRetorno := oStatus:execute()
oStatus := Nil

IF aRetorno['OK'] == .F.
? aRetorno['MsgErro']
ELSE
? aRetorno['tpAmb']
? aRetorno['verAplic']
? aRetorno['cStat']
? aRetorno['xMotivo']
? aRetorno['cUF']
? aRetorno['dhRecbto']
? aRetorno['tMed']
ENDIF

[]s
Fernando
projeto hbNFe NFe para [x]Harbour venha fazer parte do time http://www.pctoledo.com.br/forum/viewforum.php?f=54
Harbour 3.2 + Hwgui (HBIDE)
athayde
Colaborador

Colaborador
 
Mensagens: 166
Data de registro: 14 Fev 2007 15:54
Curtiu: 0 vez
Mens.Curtidas: 2 vezes

Começando com HBNFE

Mensagempor sygecom » 11 Jan 2015 11:37

Olá Claudio,
Depois das alterações do José não testei mais a HBNFE que está no SVN, mas respondendo sua pergunta SIM, você pode usar a HBNFE para gerar xml, validar,assinar, transmitir e etc...
A classe hbNFeCreatortem o metodo geraXML(), faz a geração do XML,ASSINA E VALIDA se usar a propriedade ::lValida:=.T.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7006
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

Começando com HBNFE

Mensagempor JoséQuintas » 18 Jan 2015 11:47

Simplificando:

Vai validar XML somente enquanto está ajustando sua rotina de geração.
Então valide direto no site do RS online, é só copiar/colar.

Quanto à hbnfe, realmente apesar das explicações parece que não entenderam.
Então vamos simplificar:

Esqueça a hbnfe, use só minha classe e nada mais.

Ela está no ZIP do projeto hbnfe.

Infelizmente, continua acontecendo aqui de escrever o texto'no fórum, e na hora de salvar se perde tudo, dizendo que preciso fazer login de novo.
Mas resumindo é isso acima.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Começando com HBNFE

Mensagempor JoséQuintas » 18 Jan 2015 11:56

Consulta: Como funciona a SEFAZ:

Envia o pedido de consulta
Verifica o retorno.

Como isso é feito na hbnfe original:
Primeiro precisa aprender a configurar a hbnfe.
Salva um arquivo com determinado nome, em determinada pasta que foi configurada de envio.
Depois fica vigiando a pasta configurada de retorno, até aparecer o arquivo de retorno e analisa o arquivo.
Algo como:
hb_MemoWrit( "d:\envio\arquivo.xml", cXml )
DO WHILE .NOT. File( "d:\retorno\arquivoretorno.xml" )
     Inkey(2)
ENDDO
cRetorno := MemoRead( "d:\retorno\arquivoretorno.xml" )


Como isso é feito na classe que fiz:
cRetorno := ConsultaNfe( cChave, cCertificado )


Por isso deixei de atualizar a hbnfe original, porque usar do jeito original só compilca.
E a classe já está pronta é só usar.

A parte modificada ficou no ZIP dentro do projeto, incluindo a classe.

O que comentei no outro post é justamente sobre isso.
Pra continuar alterações, a hbnfe original vai deixar de existir.
E uma coisa na página do projeto é sobre ela ser compatível com ACBR-NFE.
Essa mudança altera até mesmo a definição do projeto.
Por isso aguardei retorno antes de continuar.

Mas como os fontes são extraídos do meu aplicativo, continuo atualizando meu aplicativo.
Algumas rotinas até já funcionam com NFE 3.10.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Começando com HBNFE

Mensagempor oxent_jabah » 19 Jan 2015 14:10

José Quintas,

Você ainda pretende disponibilizar as atualizações, se sim, quando ?
Avatar de usuário

oxent_jabah
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 30
Data de registro: 26 Dez 2008 10:29
Cidade/Estado: Juazeiro do Norte-Ce-Brasil
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Começando com HBNFE

Mensagempor Jairo Maia » 19 Jan 2015 15:23

Olá Pessoal,

Para descontrair: Parece que em se tratando de HBNF-e este assunto é uma Babel.
:))

JoséQuintas escreveu:Ela está no ZIP do projeto hbnfe.
Para baixar o projeto veja este post: hbNFe como baixar
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

Começando com HBNFE

Mensagempor Itamar M. Lins Jr. » 19 Jan 2015 17:09

Como eu disse, é muita explicação sem necessidade.
Eu uso o ACBRNFeMonitor.
Crio a NFE assim.
...
cArq := CriaArqImpressao('entnfe.txt')
?? 'NFe.CriarEnviarNFe("[Identificacao]'
? 'NaturezaOperacao='+cNatureza
? 'Modelo=55'
? 'Serie=1'
? 'Codigo='     + ltrim(str(sa->numero,9))
? 'Numero='     + ltrim(str(sa->numero,9))
? 'Serie=1'
? 'Emissao='    + hb_dtoc(sa->emissao, 'DD/MM/YYYY')
? 'Saida='      + hb_dtoc(sa->emissao, 'DD/MM/YYYY')
? 'Tipo='       + cTipoES //0-Entrada 1-saida
? 'Finalidade=' + cFinalidade //NF-e normal = 1, NF-e complementar = 2, NF-e de ajuste = 3
? 'FormaPag='   + str(cFormPgto-1,1) //1' //0-avista 1-a prazo 2-outros
...

E por ai vai... cadê um exemplo igual a esse ?

Isso já cria e envia a NFe p/ SEFAZ o ACBRNFeMonitor pega o texto de nome "entnfe.txt" valida e envia, depois um outro comando imprime.
Ficar explicando como validar como criar XML etc... isso é para quem vai mexer no código do HBNFE, não vejo necessidade de ficar explicando isso no forum, escreve um "how to" manual p/ desenvolvedores e outro p/ os simples usuários mortais.

Veja que estamos criando um texto não um XML o ACBRNFeMonitor pega esse texto e cria o XML,PDF etc... o que precisar.
O José Quintas entrou no projeto, adicionou umas coisas, foi modificando e explicando cada coisa que estava fazendo... chegou a conclusão que não precisaria mais do código do hbnfe que a classe dele fazia tudo, desistiu zipou tudo agora complicou mais ainda, qual usar o arquivo ZIP dele ou a HBNFE ?

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Começando com HBNFE

Mensagempor Claudio Souza » 29 Jan 2015 22:46

Obrigado, Fernando, Jose Quintasn Sygecom,

eu tenho pronto pro ACBR e pro Emissor Gratuito, mas não desisto facil, queria colocar essa HBNFE para funcionar no meu programa, depois faço um passo a passo para os posteriores, consegui gerar a LIB gerei com nome NFE.LIB, consegui selecionar o Certificado CAPICON, mas quando tento fazer validação ele dá esse erro abaixo, vou postar uma rotina que converte secamente um TXT compativel com emissor gratuito para XML, mas ná hora de validar dá o erro abaixo, abaixo do erro está o teste.ini uso o xharbour 1.2.1 windows8.1 64, xharbour puro sem lib gráfica por enquanto, como faço para postar a conversão do txt para xml ? em um post aqui mesmo ou criando um tópico ?

TOLEAUTOX:NEW : 96 in Module: W32OLE.PRG
XHB_CREATEOBJECT : 27 in Module: W32OLE.PRG
HBNFEVALIDA:EXECUTE : 75 in Module: hbNFeValida.prg
GERA_TXT_XML : 5,511 in Module: IVENT.PRG
GERANFE : 5,087 in Module: IVENT.PRG
MENU1 : 465 in Module: IVENT.PRG
PRINCIPAL : 352 in Module: IVENT.PRG
MAIN : 324 in Module: IVENT.PRG

############################## Video Screen Dump ##############################

+--------------------------------------------------------------------------------+
| Placa e Estado Veiculo [ ] [ ] |
| <E>ntrada ou <S>aida [S] |
| 0 - Simples | 1 - Normal | [0] |
| I.E. do Substituto Tributario [ ] |
| Natureza da Operacao [VENDA FORA DO ESTADO ] |
| CFOP (codigo fiscal de Operacoes [6102 ] |
| Data da Nota Fiscal [29/01/2015] Data Saida [29/01/2015] |
| Aliquota Icms [ 0.00] Aliquota Ipi [ 0.00] |
| Aliquota Pis [ 0.00] |
| Aliquota Cofins [ 0.00] |
| Quanto porcento [ 0.00 %] |
|ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿|
|³ Quantidade volumes [ 2] ³|
|ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ|
|Error TOleAutoX/65535 : TOLEAUTOX:NEW Arguments: ( [ 1] = Type: C Val: MSXML2.D|
|OMDocument.5.0 [ 2] = Type: U [ 3] = Type: O Val: { TOLEAUTOX Object }) |
| |
|Error at ...: TOLEAUTOX:NEW(96) in Module: W32OLE.PRG |
|Called from : XHB_CREATEOBJECT(27) in Module: W32OLE.PRG |
|Called from : HBNFEVALIDA:EXECUTE(75) in Module: hbNFeValida.prg |
|Called from : GERA_TXT_XML(5511) in Module: IVENT.PRG |
|Called from : GERANFE(5087) in Module: IVENT.PRG |
|Called from : MENU1(465) in Module: IVENT.PRG |
|Called from : PRINCIPAL(352) in Module: IVENT.PRG |
|Called from : MAIN(324) in Module: IVENT.PRG |
+--------------------------------------------------------------------------------+
Claudio Souza
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 11
Data de registro: 15 Set 2014 13:27
Cidade/Estado: Feira de Santana
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Começando com HBNFE

Mensagempor Claudio Souza » 29 Jan 2015 22:51

COLOCANDO teste.ini

[Principais]
cPastaSchemas=Schemas
cSerialCert=637FD80438F88D11
cUFWS=29
tpAmb=1
versaoDados=2.00
cUF=29
cMun=291080
tpImp=1
versaoSistema=2.00

cCertPFX=certificado_maxi.pfx
cCertFilePub=pubkey_maxi.pem
cCertFileKey=privkey_maxi.pem
cCertPass=

[Envio]
cXMLFileAssinado=\cred\NFE\NF_00001.XML
idLote=2
tpEmis=1

[Retorno]
nRecibo=351000053163933

[Consulta]
cChaveNFe=35110713514106000155550010000000341000000344

[Cadastro]

[Assinatura]
cXMLFileSemAssinatura=\cred\NFE\NF_00001_ASS.XML

[Cancelamento]
cChaveNfeCanc=\cred\NFE\NF_00001.XML
xJustificativa=teste 123456 bla bla

[Danfe]
cXMLFileDanfe=\cred\NFE\NF_00001.XML

[CCe]

[IniToXML]

[Email]
Claudio Souza
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 11
Data de registro: 15 Set 2014 13:27
Cidade/Estado: Feira de Santana
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Começando com HBNFE

Mensagempor filizola » 12 Out 2016 15:32

Boa tarde, não existe um "como usar" do projeto hbnfe ?

assim como o acbr ?
"Um passo a frente, e já não estará mais no mesmo lugar..."
Avatar de usuário

filizola
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 412
Data de registro: 19 Ago 2003 20:10
Cidade/Estado: Belo Horizonte/MG
Curtiu: 5 vezes
Mens.Curtidas: 6 vezes

Começando com HBNFE

Mensagempor JoséQuintas » 12 Out 2016 20:40

A coisa ficou tão simples, que o pessoal ainda não acostumou.
Agora está um pouco mais simples que no ano passado.

É XML. Não adianta vir com TXT que não aceita, é XML, manual do governo.

olhando na classe

   METHOD NFeLoteEnvia( cXml, cLote, cUF, cCertificado, cAmbiente, cIndSinc )


Qual o manual para isso?

Em cXml colocar o XML
em cLote colocar o número do lote
em cUF colocar a UF
em cCertificado colocar o certificado
em cAmbiente colocar o ambiente
cIndSinc deixa pra lá, não é toda UF que aceita, mais fácil tratar tudo igual e não usar

Como usar: ué é colocar isso ai.

E o que mais?

Novamente olhando a classe:
   VAR    cXmlDados      INIT ""                      /* usado pra criar/complementar XML do documento */
   VAR    cXmlRetorno    INIT "Erro Desconhecido"     /* Retorno do webservice e/ou rotina */
   VAR    cXmlRecibo     INIT ""                      /* XML recibo (obtido no envio do lote) */
   VAR    cXmlProtocolo  INIT ""                      /* XML protocolo (obtido no consulta recibo e/ou envio de outros docs) */
   VAR    cXmlAutorizado INIT ""                      /* XML autorizado, caso tudo ocorra sem problemas */
   VAR    cStatus        INIT ""                      /* Status obtido da resposta final da Fazenda */
   VAR    cRecibo        INIT ""                      /* Número do recibo */
   VAR    cMotivo        INIT ""                      /* Motivo constante no Recibo */


Então como fica:
Considerando tudo certo logo de primeira
   AssinaXml( @cXml, "nomecertificado" )
   oSefaz := SefazClass():New()
   oSefaz:NfeLoteEnvia( cXml, "1", "SP", "nomecertificado", "1" )
   hb_MemoWrit( "xmlautorizado.xml", oSefaz:cXmlAutorizado )


Se precisar acompanhar, quiser ver arquivos intermediários, ou tirar mais proveito:

IF oSefaz:cStatus != "100"
   ? "Nota não foi autorizada, verifique XMLs intermediários"
   hb_MemoWrit( "XmlDados.xml", oSefaz:cXmlDados )
   hb_MemoWrit( "xmlRecibo.xml", oSefaz:cXmlRecibo )
   hb_MemoWrit(  "xmlprotocolo.xml", oSefaz:cXmlProtocolo )
ENDIF


No ano passado, isso não era tão automático, mas era parecido.

Por falar nisso, já que está tudo automático, está na hora de assinar automático também.

Para as demais operações é exatamente a mesma coisa.
É olhar o nome e os parâmetros, e usar.

O que confundiu muito foi: NÃO EXISTE ARQUIVO, NÃO PRECISA DE ARQUIVO, Cada um grava o que quiser/precisar.

O que é transmitido: é um texto que vai em formato XML - TEXTO, não arquivo

O que é recebido: é um texto que volta em formato XML - TEXTO, não arquivo

O que precisa configurar: Se não tem arquivo, não tem diretório, é tudo passado por parâmetro... vai configurar o que?

O que precisa instalar pra usar a classe:
O mesmo que o ACBR usa: CAPICOM, MSXML5 e Certificado

CAPICOM é da Microsoft, só baixar da Microsoft
MSXML5 é da Microsoft, mas... justo essa versão que é a única que trata assinatura, não vém no Windows.
Certificado - além de ser usado pra assinar, também é usado na comunicação. Não adianta tentar sem certificado que não dá.

Porque fora da hbnfe.
A primeira coisa na hbnfe é configurar muita coisa
Apagar hbnfe e substituir, apagaria coisas úteis a serem aproveitadas
Deixar junto, muitos fontes não utilizados que complicariam entender tudo
Se apagar complica, deixar junto complica, só restou a opção de fazer separado.

A classe segue o governo.
O governo quer um XML, você vai gerar o XML do jeito que o governo quer, do jeito que o governo colocou no manual.
Fez pra trabalhar com a classe, fez pra trabalhar com o governo, e fez pra trabalhar com qualquer componente pra nota fiscal eletrônica.
Qualquer coisa diferente disso, é ficar preso a algum componente, com o risco de ficar na mão.

A classe é apenas um serviço de correio, entrega na Fazenda e pega a resposta.

TXT era coisa do emissor do governo, que não existe mais, apenas um formato pra não ter que aprender XML.
Já são OITO ANOS de xml. Ele veio pra ficar, se não aprendeu, está na hora de aprender, é mais fácil do que parece.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Começando com HBNFE

Mensagempor JoséQuintas » 12 Out 2016 20:59

Manual pra tudo, parece não ter sentido.

   METHOD CTeLoteEnvia( cXml, cLote, cUF, cCertificado, cAmbiente )
   METHOD CTeConsultaRecibo( cRecibo, cUF, cCertificado, cAmbiente )
   METHOD CTeGeraAutorizado( cXmlAssinado, cXmlProtocolo )
   METHOD CTeStatusServico( cUF, cCertificado, cAmbiente )
   METHOD CTeConsultaProtocolo( cChave, cCertificado, cAmbiente )
   METHOD CTeEventoCarta( cChave, nSequencia, aAlteracoes, cCertificado, cAmbiente )

   METHOD MDFeLoteEnvia( cXml, cLote, cUF, cCertificado, cAmbiente )
   METHOD MDFeConsultaRecibo( cRecibo, cUF, cCertificado, cAmbiente )
   METHOD MDFeGeraAutorizado( cXmlAssinado, cXmlProtocolo )
   METHOD MDFeStatusServico( cUF, cCertificado, cAmbiente )
   METHOD MDFeConsultaProtocolo( cChave, cCertificado, cAmbiente )
   METHOD MDFeDistribuicaoDFe( cCnpj, cUltNSU, cNSU, cUF, cCertificado, cAmbiente )

   METHOD NFeInutiliza( cAno, cCnpj, cMod, cSerie, cNumIni, cNumFim, cJustificativa, cUF, cCertificado, cAmbiente )
   METHOD NFeLoteEnvia( cXml, cLote, cUF, cCertificado, cAmbiente, cIndSinc )
   METHOD NFeConsultaRecibo( cRecibo, cUF, cCertificado, cAmbiente )
   METHOD NFeGeraAutorizado( cXmlAssinado, cXmlProtocolo )
   METHOD NFeStatusServico( cUF, cCertificado, cAmbiente )
   METHOD NFeConsultaProtocolo( cChave, cCertificado, cAmbiente )
   METHOD NFeEventoEnvia( cChave, cXml, cCertificado, cAmbiente )
   METHOD NFeGeraEventoAutorizado( cXmlAssinado, cXmlProtocolo )
   METHOD NFeEventoCarta( cChave, nSequencia, cTexto, cCertificado, cAmbiente )
   METHOD NFeEventoCancela( cChave, nSequencia, nProt, xJust, cCertificado, cAmbiente )
   METHOD NFeEventoNaoRealizada( cChave, nSequencia, xJust, cCertificado, cAmbiente )
   METHOD NFeConsultaCadastro( cCnpj, cUF, cCertificado, cAmbiente )
   METHOD NFeConsultaDest( cCnpj, cUltNsu, cIndNFe, cIndEmi, cUf, cCertificado, cAmbiente )
   METHOD NFeDistribuicaoDFe( cCnpj, cUltNSU, cNSU, cUF, cCertificado, cAmbiente )


   METHOD NFeInutiliza( cAno, cCnpj, cMod, cSerie, cNumIni, cNumFim, cJustificativa, cUF, cCertificado, cAmbiente )


O que é tudo isso?
Vamos ver o que diz o manual da Fazenda, pra inutilização.

manualsefaz.png


Porque destaquei a coluna tamanho, e o local que indica 15-255

Isso significa que a justificativa precisa ter de 15 a 255 caracteres, não pode ser menos nem mais que isso.
Não é a classe que impede isso, é a Fazenda.
Não precisa manual da classe pra isso, a classe apenas envia, precisa olhar o manual da Fazenda.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Começando com HBNFE

Mensagempor JoséQuintas » 12 Out 2016 21:17

Aproveitando.... Repare que até parece a estrutura de um DBF, junto com a forma de preencher.

Tipo: ( N ) Numérico, ( C ) Caractere
Ocorrência: 1-1, significa que tem que existir pelo menos 1 desse, é obrigatório. 0-1 significa que é opcional, não precisa ter.
Tamanho: 1-2V2, significa de 1 a 2 inteiros, a virgula, e 2 decimais

Modelo: N, 1-1, 2, modelo do documento ( 55 ou 65) -> é obrigatório, precisa ter 2 dígitos, vai ser preenchido com 55 ou 65. Como na classe esta cMod, começando com "C", significa que vai receber como caractere.

Se facilitar, depois altero pra receber como numérico igual ao manual.
Se for o caso de deixar compatível, pra não atrapalhar quem já usa a classe e deixar igual ao manual, tá fácil alterar na classe:

// se deixar caractere
cMod := iif( ValType( cMod ) == "N", StrZero( cMod, 2 ), cMod )
// se alterar pra numérico
nMod := iif( ValType( nMod ) == "C", Val( nMod ), nMod )


Isso é dentro da classe. Caso eu altere isso, não vai fazer diferença pra quem já estiver usando, porque vai aceitar como numérico ou caractere.

Nota: isso mostra como seria pra montar o XML. No caso desse método específico, basta informar os parâmetros, então é usada apenas uma parte do que está descrito no manual, mas pelo nome utilizado, está fácil de relacionar os campos da classe com os campos do manual.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Próximo



Retornar para Projeto hbNFe

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 3 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro