Jump to content
Fivewin Brasil

ref chave da nota fiscal


syspel

Recommended Posts

ola pessoal

eu tenho uma classe do gilmer que busca a chave da nota fiscal eletronica da sefaz do xml

ate algums dias atras estava funciononado normal agora da este erro

pplication
===========
Path and name: C:\fatto\Fiscal.exe (32 bits)
Size: 6,791,168 bytes
Time from start: 0 hours 3 mins 6 secs
Error occurred at: 10/03/2014, 16:39:48
Error description: Error BASE/1004 Class: 'NIL' has no exported method: INNERHTML
Args:
[ 1] = U

Stack Calls
===========
Called from: => INNERHTML(0)
Called from: voconsefaz.prg => TVOCONSULTASEFAZ:TOTALDUPLICATAS(356)
Called from: voconsefaz.prg => TVOCONSULTASEFAZ:DOWNLOADHTML2XML(101)
Called from: sefaz3.prg => NFESSS(96)
Called from: sefaz3.prg => (b)SEFAZ102(63)
Called from: btnbmp.prg => TBTNBMP:CLICK(464)
Called from: btnbmp.prg => TBTNBMP:LBUTTONUP(660)
Called from: => TWINDOW:HANDLEEVENT(0)
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT(1469)
Called from: btnbmp.prg => TBTNBMP:HANDLEEVENT(1417)
Called from: window.prg => _FWH(3353)
Called from: => DIALOGBOXINDIRECT(0)
Called from: dialog.prg => TDIALOG:ACTIVATE(253)
Called from: sefaz3.prg => SEFAZ102(77)
Called from: fiscal.prg => (b)BUILDMENU(495)
Called from: .\source\classes\MENU.PRG => TMENU:COMMAND(437)
Called from: window.prg => TWINDOW:COMMAND(1017)
Called from: => TWINDOW:HANDLEEVENT(0)
Called from: window.prg => _FWH(3353)
Called from: => WINRUN(0)
Called from: window.prg => TWINDOW:ACTIVATE(966)
Called from: fiscal.prg => FISCAL(203)

alguem sabe

deste ja obrigado

Carlos

FWH XHARBOUR 1.21 DBF

Link to comment
Share on other sites

Olô Gilmer,

Você fez as modificações da classe Tvoconsultasefaz, para nova mudança do html? Se não, e se não vai mais dar suporte, poderia autorizar ao ecmsoft publicar as modificaçãos que ele fez para a classe continuar funcionando?

Aguardamos seu posicionamento, porque, no meu caso isto se tornou uma necessidade premente, visto que facilita em muito a vida dos clientes .

Grato pela atenção.

Link to comment
Share on other sites

irei pôr o codigo onde foi alterado:

em primeiro lugar faça uma copia do seu PRG

depois alterar as ID (subistituir)

ContentPlaceHolder1_tcnConsultaCompleta_tpnNFe <PARA> tabelaSuperior

ContentPlaceHolder1_tcnConsultaCompleta_tpnTotais <PARA> Totais



Depois subistituir o codigo:

for f:=1 to nTotalProd

oItem := TVoNFeProd()

WITH OBJECT oItem

----

---

--

POR ESTE:

cHtmlProd := Alltrim(::cBoDyHtml)

nLinhaLidas := LinhaLidas("prod-serv-descricao", cHtmlProd)

nLinhaTam := Len(cHtmlProd)

nSizeCont := nLinhaTam-nLinhaLidas

cHtmlProd := Right(cHtmlProd, nSizeCont)

Do While .t.

nLinhaLidas := LinhaLidas("prod-serv-descricao", cHtmlProd)

If nLinhaLidas > 0

oItem := TVoNFeProd()

WITH OBJECT oItem

:cProd := CapProd("Código do Produto</LABEL><SPAN class=linha>", cHtmlProd)

:cEAN := CapProd("Código EAN Comercial</LABEL><SPAN class=linha>", cHtmlProd)

:xProd := CapProd("prod-serv-descricao><SPAN class=multiline>", cHtmlProd)

:NCM := CapProd("Código NCM</LABEL><SPAN class=linha>", cHtmlProd)

:CFOP := CapProd("CFOP</LABEL><SPAN class=linha>", cHtmlProd)

:uCom := CapProd("Unidade Comercial</LABEL><SPAN class=linha>", cHtmlProd)

:qCom := CapProd("Quantidade Comercial</LABEL><SPAN class=linha>", cHtmlProd)

:vUnCom := CapProd("Valor unitário de comercialização</LABEL><SPAN class=linha>", cHtmlProd)

:vProd := CapProd("prod-serv-vb><SPAN>", cHtmlProd)

:cEANTrib := CapProd("Código EAN Tributável</LABEL><SPAN class=linha>", cHtmlProd)


:uTrib := CapProd("Unidade Tributável</LABEL><SPAN class=linha>", cHtmlProd)

:qTrib := CapProd("Quantidade Tributável</LABEL><SPAN class=linha>", cHtmlProd)

:vUnTrib := CapProd("Valor unitário de tributação</LABEL><SPAN class=linha>", cHtmlProd)

---

---

---

// VEJA QUE ESTA INCOMPLETO FALTAS ALGUNS DADOS DO ITENS, vc pode configurar o restante com o arquivo LOG.TXT

..

END

::oNFe:AddItem( oItem )

nLinhaLidas := LinhaLidas("Modalidade Definição da BC ICMS NORMAL</LABEL><SPAN class=linha>", cHtmlProd)

nLinhaTam := Len(cHtmlProd)

nSizeCont := nLinhaTam-nLinhaLidas

cHtmlProd := Right(cHtmlProd, nSizeCont)

Else

Exit

Endif

Enddo


ADD AS FUNCOES:

//------------------------------------------------------

Static Function CapProd(cCont, cHtmlProd)

Local nPosIni := At(cCont, cHtmlProd), nPosFim:=0, x1:=0, cRet

nPosIni := nPosIni+Len(cCont)


Do while .t.

x1++

If Substr(cHtmlProd, nPosIni+x1, 1) == "<"

nPosFim := nPosIni+x1

nPosFim := nPosFim - nPosIni

exit

Endif

Enddo


If nPosIni==0 .or. nPosFim==0

Return nil

Endif


Return Subs(cHtmlProd, nPosIni, nPosFim)

//------------------------------------------------------

Static Function LinhaLidas(cCont, cHtmlProd)


If At(cCont, cHtmlProd) = 0

nRet:=0

Else

nRet := At(cCont, cHtmlProd)+Len(cCont)

Endif


Return nRet

//-----------------------------


COLOCAR a variavel lDebug para TRUE para abilitar o log.txt

para que vc possa continuar o desenvolvimento do itens do produto, pois estou com pouco tempo...


Data lDebug INIT .t.


qualquer duvida.

Link to comment
Share on other sites

Sistem,,

Testei as substituições que vc postou, beleza, leu o xml e mostra a nota, mas ela vem sem alguns dados, por exemplo: ao nº da nota, a data de emissão...

Descobri també que se ao inves de tabelaSuperior, usar NFE, dar o mesmo resultado.

Vamos ver aonde consigo chegar.

Grato pela atenção.

Link to comment
Share on other sites

			::oNFe:SetValue("ide"   , 'serie'   , ::GetInfHtml("N",,"Série",, ::oIE:document:getElementById("NFe"):InnerHTML) )
			::oNFe:SetValue("ide"   , 'nNF'     , ::GetInfHtml("N",,"Número",,::oIE:document:getElementById("NFe"):InnerHTML) )
			::oNFe:SetValue("ide"   , 'dEmi'    , ::GetInfHtml("D",,"Data de emissão",, ::oIE:document:getElementById("NFe"):InnerHTML) )
..
...
....
...

                        cHtmlProd := Alltrim(::cBoDyHtml)
                        cHtmlProdDup := Alltrim(::cBoDyHtml)
                        nLinhaLidas := LinhaLidas("prod-serv-descricao", cHtmlProd)
                        nLinhaTam := Len(cHtmlProd)
                        nSizeCont := nLinhaTam-nLinhaLidas
                        cHtmlProd := Right(cHtmlProd, nSizeCont)
                        Do While .t.
                           nLinhaLidas := LinhaLidas("prod-serv-descricao", cHtmlProd)
                           If nLinhaLidas > 0
                              oItem := TVoNFeProd()
                              WITH OBJECT oItem
                                   :cProd    := CapProd("Código do Produto</LABEL><SPAN class=linha>", cHtmlProd)
                                   :cEAN     := CapProd("Código EAN Comercial</LABEL><SPAN class=linha>", cHtmlProd)
                                   :xProd    := CapProd("prod-serv-descricao><SPAN class=multiline>", cHtmlProd)
                                   :NCM      := CapProd("Código NCM</LABEL><SPAN class=linha>", cHtmlProd)
                                   :CFOP     := CapProd("CFOP</LABEL><SPAN class=linha>", cHtmlProd)
                                   :uCom     := CapProd("Unidade Comercial</LABEL><SPAN class=linha>", cHtmlProd)
                                   :qCom     := CapProd("Quantidade Comercial</LABEL><SPAN class=linha>", cHtmlProd)
                                   :vUnCom   := CapProd("Valor unitário de comercialização</LABEL><SPAN class=linha>", cHtmlProd)
                                   :vProd    := CapProd("prod-serv-vb><SPAN>", cHtmlProd)
                                   :cEANTrib := CapProd("Código EAN Tributável</LABEL><SPAN class=linha>", cHtmlProd)
//                                   :EXTIPI   := CapProd("Código EX da TIPI</LABEL><SPAN class=linha>")
//                                   :genero   := CapProd("Gênero</LABEL><SPAN class=linha>")
//                                   :vOutro   := CapProd("Outras Despesas Acessórias</LABEL><SPAN class=linha>")

                                   :uTrib    := CapProd("Unidade Tributável</LABEL><SPAN class=linha>", cHtmlProd)
                                   :qTrib    := CapProd("Quantidade Tributável</LABEL><SPAN class=linha>", cHtmlProd)
                                   :vUnTrib  := CapProd("Valor unitário de tributação</LABEL><SPAN class=linha>", cHtmlProd)
                                   :vFrete   := CapProd("Valor Total do Frete</LABEL><SPAN class=linha>", cHtmlProd)
                                   :vSeg     := CapProd("Valor do Seguro</LABEL><SPAN class=linha>", cHtmlProd)
                                   :vDesc    := CapProd("Valor do Desconto</LABEL><SPAN class=linha>", cHtmlProd)
                                   :indTot   := Left(CapProd("Indicador de Composição do Valor Total da NF-e </LABEL><SPAN class=linha>", cHtmlProd),1)

//                                 :csosn       :=
//                                 :pCredSN     :=
//                                 :vCredICMSSN :=

//                                 :cST_IPI  :=
//                                 :vBcIPI   :=
//                                 :pIPI     :=
//                                 :vIPI     :=

                                   :orig     := Left(CapProd("Origem da Mercadoria</LABEL><SPAN class=linha>", cHtmlProd),1)
                                   :cCST     := Left(CapProd("Tributação do ICMS</LABEL><SPAN class=multiline>", cHtmlProd),2)
                                   :ModBC    := Left(CapProd("Modalidade Definição da BC ICMS NORMAL</LABEL><SPAN class=linha>", cHtmlProd),1)
                                   :vBC      := CapProd("Base de Cálculo do ICMS Normal</LABEL><SPAN class=linha>", cHtmlProd)
                                   :pIcms    := CapProd("Alíquota do ICMS Normal</LABEL><SPAN class=linha>", cHtmlProd)
                                   :vIcms    := CapProd("Valor do ICMS Normal</LABEL><SPAN class=linha>", cHtmlProd)

                                   :CST_Pis    := Left(CapProd("CST</LABEL><SPAN class=multiline>", cHtmlProd),2)
                                   :vBC_Pis    := CapProd("Base de Cálculo</LABEL><SPAN class=linha>", cHtmlProd)
                                   :pPIS       := CapProd("Alíquota</LABEL><SPAN class=linha>", cHtmlProd)
                                   :vPIS       := CapProd("Valor</LABEL><SPAN class=linha>", cHtmlProd)

                                    nLinhaLidas:=LinhaLidas("COFINS</LEGEND>", cHtmlProd);  nLinhaTam:=Len(cHtmlProd); nSizeCont:=nLinhaTam-nLinhaLidas; cHtmlProd:=Right(cHtmlProd, nSizeCont)

                                   :CST_Cofins := Left(CapProd("CST</LABEL><SPAN class=multiline>", cHtmlProd), 2)
                                   :vBC_Cofins := CapProd("Base de Cálculo</LABEL><SPAN class=linha>", cHtmlProd)
                                   :pCofins    := CapProd("Alíquota</LABEL><SPAN class=linha>", cHtmlProd)
                                   :vCofins    := CapProd("Valor</LABEL><SPAN class=linha>", cHtmlProd)
                              END
                              ::oNFe:AddItem( oItem )
                              nLinhaLidas := LinhaLidas("COFINS</LEGEND>", cHtmlProd); nLinhaTam:=Len(cHtmlProd); nSizeCont:=nLinhaTam-nLinhaLidas; cHtmlProd := Right(cHtmlProd, nSizeCont)
                           Else
                              Exit
                           Endif
                        Enddo
			cHtml:=::cBodyDuplicatas

                        nLinhaLidas := LinhaLidas("Duplicatas", cHtmlProdDup); nLinhaTam:=Len(cHtmlProdDup); nSizeCont:=nLinhaTam-nLinhaLidas; cHtmlProdDup := Right(cHtmlProdDup, nSizeCont)
                        cHtmlProdDup := Left(cHtmlProdDup, LinhaLidas("id=Inf", cHtmlProdDup))
			Do While .t.
			   nLinhaLidas := LinhaLidas("linha>", cHtmlProdDup)
                           If nLinhaLidas > 0
                              oItem := TVoNFeDupl()
                              WITH OBJECT oItem
                               :nDup := CapProd("linha>", cHtmlProdDup)
                                nLinhaLidas := LinhaLidas("</SPAN>", cHtmlProdDup)
                                cHtmlProdDup := Right(cHtmlProdDup, nLinhaLidas)
                               :dVenc := CapProd("linha>", cHtmlProdDup)
                                nLinhaLidas := LinhaLidas("</SPAN>", cHtmlProdDup)
                                cHtmlProdDup := Right(cHtmlProdDup, nLinhaLidas)
                               :vDup := CapProd("linha>", cHtmlProdDup)
//                             nLinhaLidas := LinhaLidas("</SPAN>", cHtmlProdDup)
//                             cHtmlProdDup := Right(cHtmlProdDup, nLinhaLidas+len("</SPAN>"))
                              END
                              ::oNFe:AddItem( oItem )
                           Else
                            Exit
                           Endif
                        Enddo

adicionado as duplicatas

falta alguns campo do itens do produto se alguem tiver uma chave que tenha esses dados seria bom (linhas comentadas) chave que tenha 2 ou mais duplicatas seria bom

Link to comment
Share on other sites

  • 2 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...