Jump to content
Fivewin Brasil

Como Ler um XML <<Resolvido!!!>>


reneumg

Recommended Posts

Uma forma simples, é clickar nele, que o INTERNET EXPLORER o abrirá automaticamente.

No mercado, tem editores de .XML, veja no superdownloads.

João Santos - São Paulo.

kmt_karinha@pop.com.br

joao@pleno.com.br

Fone: (11) 3106-2832 / 8243-5632

FWH 2.7 - xHARBOUR WorkShop.Exe

dentinho.jpg?rnd=0.830315402649066

Link to comment
Share on other sites

O meu amigo João isso eu sei, acho que não foi claro. quero fazer isso via sistema,quero pegar os campos do arquivo XML e jogar em variaveis do sistema e trabalhar com ela, assim como faz alguns sistema de contabilidade, buscam os dados da nfe pra gerar um livro fiscal por exemplo.

Blz.

Reneu

FiveWin for Harbour 2.7

Link to comment
Share on other sites

Caramba, o tópico que postei é de 2005...

Bom, procure pela classe do xHarbour TXmlDocument() não sei se vai dar certo...

Luis Fernando Jr. (Luisão)

Leme/SP

--

FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY + [Ghost/Java]Script

E-Mail: juninho.luisao@gmail.com

MSN: juninho_luisao@hotmail.com

Skype: luis.fernando.jr

Link to comment
Share on other sites

Valeu Deu certo o o teste que fiz ai..

Function RetornaConteudoXml()

LOCAL hFile, cXml, cFileName:="Arqxml.xml"

LOCAL xmlDoc, xmlIter , xmlNode, cNode, cAttrib, cValue, oCampo, oConteudo

if !file(cFileName)

msginfo( "Arquivo não Encontrado !!!","Atenção") // nome do campo

cFileName := cGetFile( "XML File (*.Xml)|*.Xml|","Selecione arquivo XML da NFe ",curdir())

If !file(cFileName)

Return nil

End

end

cNode := NIL

cAttrib := NIL

cValue := NIL

hFile := FOpen( cFileName )

xmlDoc := TXmlDocument():New( hFile )

IF xmlDoc:nStatus != HBXML_STATUS_OK

Msginfo("erro ao ler XML ")

RETURN

ENDIF

xmlIter := TXmlIterator():New( xmlDoc:oRoot )

xmlNode := xmlIter:Find()

DO WHILE xmlNode != NIL

if !empty(xmlNode:cData)

if subs(xmlNode:cData,1,1) # "<"

oCampo :=xmlNode:cName

oConteudo:=xmlNode:cData

end

else

oCampo :=xmlNode:cName

end

msginfo( "Campo: "+oCampo+CRLF+;

"Conteudo: "+oConteudo,"Teste")

xmlNode := xmlIter:Next() // joga pro proximo campo

ENDDO

return nil

**************************

Valeu João, Luizão e Ale.

Abarços,

Reneu...

Catanduva - SP

FiveWin for Harbour 2.7

Link to comment
Share on other sites

  • 11 months later...

citação:

Valeu Deu certo o o teste que fiz ai..

Function RetornaConteudoXml()

LOCAL hFile, cXml, cFileName:="Arqxml.xml"

LOCAL xmlDoc, xmlIter , xmlNode, cNode, cAttrib, cValue, oCampo, oConteudo

if !file(cFileName)

msginfo( "Arquivo não Encontrado !!!","Atenção") // nome do campo

cFileName := cGetFile( "XML File (*.Xml)|*.Xml|","Selecione arquivo XML da NFe ",curdir())

If !file(cFileName)

Return nil

End

end

cNode := NIL

cAttrib := NIL

cValue := NIL

hFile := FOpen( cFileName )

xmlDoc := TXmlDocument():New( hFile )

IF xmlDoc:nStatus != HBXML_STATUS_OK

Msginfo("erro ao ler XML ")

RETURN

ENDIF

xmlIter := TXmlIterator():New( xmlDoc:oRoot )

xmlNode := xmlIter:Find()

DO WHILE xmlNode != NIL

if !empty(xmlNode:cData)

if subs(xmlNode:cData,1,1) # "<"

oCampo :=xmlNode:cName

oConteudo:=xmlNode:cData

end

else

oCampo :=xmlNode:cName

end

msginfo( "Campo: "+oCampo+CRLF+;

"Conteudo: "+oConteudo,"Teste")

xmlNode := xmlIter:Next() // joga pro proximo campo

ENDDO

return nil

**************************

Valeu João, Luizão e Ale.

Abarços,

Reneu...

Catanduva - SP

FiveWin for Harbour 2.7


id=quote>id=quote>

Reneu...

Você Conseguiu guardar o arquivo como PDF??

João Santos - São Paulo.

kmt_karinha@pop.com.br

joao@pleno.com.br

Fone: (11) 3106-2832 / 8243-5632 - TIM

FWH 2.7 - xHARBOUR WorkShop.Exe

dentinho.jpg?rnd=0.830315402649066

Link to comment
Share on other sites

// Gelera, com esta funcção, eu consigo LER um XML, como faço para gravar para um *.TXT ?


#include "FiveWin.ch"

#include "fileio.ch"

#include "hbxml.ch"

FUNCTION LerXml()

LOCAL hFile, cXml, cFileName:="NFE510.XML"

LOCAL xmlDoc, xmlIter , xmlNode, cNode, cAttrib, cValue, oCampo, oConteudo

if !file(cFileName)

msginfo( "Arquivo não Encontrado !!!","Atenção") // nome do campo

cFileName := cGetFile( "XML File (*.Xml)|*.Xml|","Selecione arquivo XML da NFe ",curdir())

If !file(cFileName)

Return nil

End

end

cNode := NIL

cAttrib := NIL

cValue := NIL

hFile := FOpen( cFileName )

xmlDoc := TXmlDocument():New( hFile )

IF xmlDoc:nStatus != HBXML_STATUS_OK

Msginfo("erro ao ler XML ")

RETURN

ENDIF

xmlIter := TXmlIterator():New( xmlDoc:oRoot )

xmlNode := xmlIter:Find()

DO WHILE xmlNode != NIL

if !empty(xmlNode:cData)

if subs(xmlNode:cData,1,1) # "<"

oCampo :=xmlNode:cName

oConteudo:=xmlNode:cData

end

else

oCampo := xmlNode:cName

end

msginfo( "Campo: "+oCampo+CRLF+;

"Conteudo: "+oConteudo,"Teste")

xmlNode := xmlIter:Next() // joga pro proximo campo

ENDDO

return nil

id=code>id=code>

João Santos - São Paulo.

kmt_karinha@pop.com.br

joao@pleno.com.br

Fone: (11) 3106-2832 / 8243-5632 - TIM

FWH 2.7 - xHARBOUR WorkShop.Exe

dentinho.jpg?rnd=0.830315402649066

Link to comment
Share on other sites

citação:

// Gelera, com esta funcção, eu consigo LER um XML, como faço para gravar para um *.TXT ?


#include "FiveWin.ch"

#include "fileio.ch"

#include "hbxml.ch"

FUNCTION LerXml()

LOCAL hFile, cXml, cFileName:="NFE510.XML"

LOCAL xmlDoc, xmlIter , xmlNode, cNode, cAttrib, cValue, oCampo, oConteudo

cMemo := ""

id=red>

if !file(cFileName)

msginfo( "Arquivo não Encontrado !!!","Atenção") // nome do campo

cFileName := cGetFile( "XML File (*.Xml)|*.Xml|","Selecione arquivo XML da NFe ",curdir())

If !file(cFileName)

Return nil

End

end

cNode := NIL

cAttrib := NIL

cValue := NIL

hFile := FOpen( cFileName )

xmlDoc := TXmlDocument():New( hFile )

IF xmlDoc:nStatus != HBXML_STATUS_OK

Msginfo("erro ao ler XML ")

RETURN

ENDIF

xmlIter := TXmlIterator():New( xmlDoc:oRoot )

xmlNode := xmlIter:Find()

DO WHILE xmlNode != NIL

if !empty(xmlNode:cData)

if subs(xmlNode:cData,1,1) # "<"

oCampo :=xmlNode:cName

oConteudo:=xmlNode:cData

end

else

oCampo := xmlNode:cName

end

msginfo( "Campo: "+oCampo+CRLF+;

"Conteudo: "+oConteudo,"Teste")

xmlNode := xmlIter:Next() // joga pro proximo campo

cMemo += "Campo: "+oCampo+CRLF+;

"Conteudo: "+oConteudo

id=red>

ENDDO

MemoWrite("SeuArquivoTxt.Txt",cMemo)

id=red>

return nil

id=code>id=code>

João Santos - São Paulo.

kmt_karinha@pop.com.br

joao@pleno.com.br

Fone: (11) 3106-2832 / 8243-5632 - TIM

FWH 2.7 - xHARBOUR WorkShop.Exe

dentinho.jpg?rnd=0.830315402649066


id=quote>id=quote>

Vagner Wirts

bgprofilea.jpg

"Ele não sabendo que era impossível, foi lá e fez"

Link to comment
Share on other sites

O João ontem eu não abri o fórum, desculpa não ter respondido antes, mas essa função eu usei pra pegar uns campos da nfe e salvar em dbf.

pra jogar em PDF uma impressora virtual nao faria isso Ex.:DoPdf, ou Primo PDF

Abraços...

Reneu M. Garcia

FiveWim for xHarbour 2.7

Reneu M. Garcia - Catanduva - SP

Link to comment
Share on other sites

citação:

O João ontem eu não abri o fórum, desculpa não ter respondido antes, mas essa função eu usei pra pegar uns campos da nfe e salvar em dbf.

pra jogar em PDF uma impressora virtual nao faria isso Ex.:DoPdf, ou Primo PDF

Abraços...

Reneu M. Garcia

FiveWim for xHarbour 2.7

Reneu M. Garcia - Catanduva - SP


id=quote>id=quote>

Olá Reneu, isto eu já faço, quero gerar direto...

Obg.

Abs

João Santos - São Paulo.

kmt_karinha@pop.com.br

joao@pleno.com.br

Fone: (11) 3106-2832 / 8243-5632 - TIM

FWH 2.7 - xHARBOUR WorkShop.Exe

dentinho.jpg?rnd=0.830315402649066

Link to comment
Share on other sites

  • 1 year later...

citação:

Olá pessoal,

Essa função tá lendo o XML blz! Só que tem os campos como o

Se alguém puder ajudar!!

Abraços a todos

JHILBERT

FWH 8.08/pellesc7/xHarbour/xDev/vLib


id=quote>id=quote>

Olá Jeorge,


/*********************************************************

* Função : PegaArquivoXml() - Funcao para Pegar o Arquivo e transformar

* Data : 14/03/2012 - 15:14:32 Por : Vagner

* Revisado em : 16/03/2012 - 10:22:05 Por : Vagner

* Parâmetros :

* lXml - Se vai pegar os dados direto do XML ou pelo site (Default - Site .F.)

**********************************************************/

Static Func PegaArquivoXml()

Local cArqu:= ""

Local cDire := GetPvProfString("Diretórios","NotaFiscalEntrada","",oSistema:cDiretPadra+oSistema:cArquiConfi)

cArqu := cGetFile32("Arquivos De Notas Fiscais XML | *.xml","Escolha o Arquivo !",,cDire)

If Empty(cArqu)

Retu({.F.,1})

Endif

If cDire != Left(cArqu,Rat("\",cArqu))

cDire := Left(cArqu,Rat("\",cArqu))

WritePProString("Diretórios","NotaFiscalEntrada",cDire,oSistema:cDiretPadra+oSistema:cArquiConfi)

Endif

(cCabecaPreNota)->(DbZap())

(cItensPreNota)->(DbZap())

(cDuplicataPreNota)->(DbZap())

cTextN := ""

cTexto := MemoRead(cArqu)

nSpace := 0

nConta := 1

cTexto := StrTran(cTexto,Chr(10),"")

cTexto := StrTran(cTexto,Chr(13),"")

cTexto := StrTran(cTexto,Chr( 9),"")

cTexto := StrTran(cTexto,"Ç","C")

cTexto := StrTran(cTexto,"Ã","A")

Do Whil .T.

nPos1 := At("<",cTexto)

nPos2 := At(">",cTexto)

cTex1 := Left(cTexto,nPos2)

If nPos2 == Len(cTexto) .or. nPos2 == Len(cTexto)-1 .or. Empty(cTexto) .or. nPos1 == 0

Exit

Endif

lFaz := .F.

cText2 := StrTran(cTexto,cTex1,"")

If Right(cTex1,1) == ">"

nPos2 := At(">",cText2)

If Right(Left(cText2,nPos2),Len(cTex1)+1) == Stuff(cTex1,2,0,"/")

nPos2 := At(Stuff(cTex1,2,0,"/"),cTexto)+Len(Stuff(cTex1,2,0,"/"))-1

cTex1 := Left(cTexto,nPos2)

lFaz := .F.

Else

lFaz := .T.

Endif

Endif

If Left(cTex1,2) == ""

nSpace --

lFaz := .F.

Endif

cTexto := SubStr(cTexto,Len(cTex1)+1)

cTextN += Iif(nSpace >0 ,Repl(Chr(9),nSpace),"")+cTex1+CRLF

cTex3 := SubStr(cTex1,2,Len(cTex1)-1)

If lFaz

If Left(cTex1,2) != "" .and. Right(cTex1,2) != "/>"

nSpace ++

Endif

Endif

Enddo

//Tranformou, agora preciso pegar os dados

//Não havia necessidade de transformar mas....

cTexto := cTextN

nPos := At('Id="NFe',cTexto)

cNumer := SubStr(cTexto,nPos+7,44)

oNumer :Refresh()

aTexto := PegaParteTexto(cTexto,"",,.F.,.T.)

cTex1 := aTexto[1]

cCgc_Forne := PegaParteTexto(cTex1,"")

If Empty(cCgc_Forne)

cCgc_Forne := PegaParteTexto(cTex1,"")

Endif

cI_E_Forne := PegaParteTexto(cTex1,"")

cNom_Forne := PegaParteTexto(cTex1,"")

cFan_Forne := PegaParteTexto(cTex1,"")

cLog := PegaParteTexto(cTex1,"")

nAt := At(" ",cLog)

cLog_Forne := ""

If nAt > 0

cLog1 := Left(cLog,nAt)

cLog := AllTrim(StrTran(cLog,cLog1,""))

cLog_Forne := Alltrim(cLog1)

Endif

cEnd_Forne := cLog

cNum_Forne := PegaParteTexto(cTex1,"")

cClp_Forne := PegaParteTexto(cTex1,"")

cBai_Forne := PegaParteTexto(cTex1,"")

cCod_Munic := Right(PegaParteTexto(cTex1,""),5)

cCod_Estad := Left(PegaParteTexto(cTex1,""),2)

cMun_Forne := PegaParteTexto(cTex1,"")

cEst_Forne := PegaParteTexto(cTex1,"")

cCep_Forne := PegaParteTexto(cTex1,"")

cPai_Forne := PegaParteTexto(cTex1,"")

cPai_Nome_ := PegaParteTexto(cTex1,"")

cDDD_Forne := Left(PegaParteTexto(cTex1,""),2)

cFon_Forne := Right(PegaParteTexto(cTex1,""),8)

cTexto := SubStr(cTexto,1,aTexto[2])+SubStr(cTexto,aTexto[3])

aTexto := PegaParteTexto(cTexto,"",,.F.,.T.)

cTex1 := aTexto[1]

cCgc_Desti := PegaParteTexto(cTex1,"")

aTexto := PegaParteTexto(cTexto,"",,.F.,.T.)

cTex1 := aTexto[1]

cNro_NtFis := StrZero(Val(PegaParteTexto(cTex1,"")),10)

dDat_NtFis := StoD(StrTran(PegaParteTexto(cTex1,""),"-",""))

cTexto := SubStr(cTexto,1,aTexto[2])+SubStr(cTexto,aTexto[3])

aTexto := PegaParteTexto(cTexto,"

cTex1 := aTexto[1]

cCha_Acess := PegaParteTexto(cTex1,"")

cNro_Proto := PegaParteTexto(cTex1,"")

cSta_Proto := PegaParteTexto(cTex1,"")+"-"+PegaParteTexto(cTex1,"")

cTexto := SubStr(cTexto,1,aTexto[2])+SubStr(cTexto,aTexto[3])

aTexto := PegaParteTexto(cTexto,"",,.F.,.T.)

cTex1 := aTexto[1]

nBSI_NtFis := Val(PegaParteTexto(cTex1,""))

nIcm_NtFis := Val(PegaParteTexto(cTex1,""))

nBSU_NtFis := Val(PegaParteTexto(cTex1,""))

nVSU_NtFis := Val(PegaParteTexto(cTex1,""))

nTot_Produ := Val(PegaParteTexto(cTex1,""))

nTot_Frete := Val(PegaParteTexto(cTex1,""))

nTot_Segur := Val(PegaParteTexto(cTex1,""))

nTot_Desco := Val(PegaParteTexto(cTex1,""))

nTot_I_I__ := Val(PegaParteTexto(cTex1,""))

nTot_I_P_I := Val(PegaParteTexto(cTex1,""))

nTot_P_i_s := Val(PegaParteTexto(cTex1,""))

nTot_Cofin := Val(PegaParteTexto(cTex1,""))

nTot_Outro := Val(PegaParteTexto(cTex1,""))

nTot_NtFis := Val(PegaParteTexto(cTex1,""))

cTexto := SubStr(cTexto,1,aTexto[2])+SubStr(cTexto,aTexto[3])

aTexto := PegaParteTexto(cTexto,"",,.F.,.T.)

cTex1 := aTexto[1]

nPes_Bruto := Val(PegaParteTexto(cTex1,""))

nPes_Liqui := Val(PegaParteTexto(cTex1,""))

nQtd_Volum := Val(PegaParteTexto(cTex1,""))

cTexto := SubStr(cTexto,1,aTexto[2])+SubStr(cTexto,aTexto[3])

//Gravar dados da Pre-Nota (Cabecalho da Nota)

(cCabecaPreNota)->(DbAppend())

(cCabecaPreNota)->Cha_Acess := cNumer

(cCabecaPreNota)->Cgc_Forne := cCgc_Forne

(cCabecaPreNota)->I_E_Forne := cI_E_Forne

(cCabecaPreNota)->Nom_Forne := cNom_Forne

(cCabecaPreNota)->Fan_Forne := cFan_Forne

(cCabecaPreNota)->Log_Forne := cLog_Forne

(cCabecaPreNota)->End_Forne := cEnd_Forne

(cCabecaPreNota)->Num_Forne := cNum_Forne

(cCabecaPreNota)->Clp_Forne := cClp_Forne

(cCabecaPreNota)->Bai_Forne := cBai_Forne

(cCabecaPreNota)->Cod_Munic := cCod_Munic

(cCabecaPreNota)->Cod_Estad := cCod_Estad

(cCabecaPreNota)->Mun_Forne := cMun_Forne

(cCabecaPreNota)->Est_Forne := cEst_Forne

(cCabecaPreNota)->Cep_Forne := cCep_Forne

(cCabecaPreNota)->Pai_Forne := cPai_Forne

(cCabecaPreNota)->Pai_Nome_ := cPai_Nome_

(cCabecaPreNota)->DDD_Forne := cDDD_Forne

(cCabecaPreNota)->Fon_Forne := cFon_Forne

(cCabecaPreNota)->Cgc_Desti := cCgc_Desti

(cCabecaPreNota)->Num_Empre := cNum_Empre := RetornaDados("Empresas",AllTrim(SoNumeros((cCabecaPreNota)->Cgc_Desti)),"Cod_Empr",,,,2 )

(cCabecaPreNota)->Cod_Forne := cCod_Forne := RetornaDados("Forneced",AllTrim(SoNumeros((cCabecaPreNota)->Cgc_Forne)),"Cod_Forn",,,,2 )

(cCabecaPreNota)->Tip_Nota_ := "N"

(cCabecaPreNota)->Nro_NtFis := cNro_NtFis

(cCabecaPreNota)->Dat_NtFis := dDat_NtFis

(cCabecaPreNota)->Cha_Acess := cCha_Acess

(cCabecaPreNota)->Nro_Proto := cNro_Proto

(cCabecaPreNota)->Sta_Proto := cSta_Proto

(cCabecaPreNota)->BSI_NtFis := nBSI_NtFis

(cCabecaPreNota)->Icm_NtFis := nIcm_NtFis

(cCabecaPreNota)->BSU_NtFis := nBSU_NtFis

(cCabecaPreNota)->VSU_NtFis := nVSU_NtFis

(cCabecaPreNota)->Tot_Produ := nTot_Produ

(cCabecaPreNota)->Tot_Frete := nTot_Frete

(cCabecaPreNota)->Tot_Segur := nTot_Segur

(cCabecaPreNota)->Tot_Desco := nTot_Desco

(cCabecaPreNota)->Tot_I_I__ := nTot_I_I__

(cCabecaPreNota)->Tot_I_P_I := nTot_I_P_I

(cCabecaPreNota)->Tot_P_i_s := nTot_P_i_s

(cCabecaPreNota)->Tot_Cofin := nTot_Cofin

(cCabecaPreNota)->Tot_Outro := nTot_Outro

(cCabecaPreNota)->Tot_NtFis := nTot_NtFis

(cCabecaPreNota)->Pes_Bruto := nPes_Bruto

(cCabecaPreNota)->Pes_Liqui := nPes_Liqui

(cCabecaPreNota)->Qtd_Volum := nQtd_Volum

//Itens da Nota

nQtd := 0

Do Whil .T.

aTexto := PegaParteTexto(cTexto,'',"",.F.,.T.)

cTex1 := aTexto[1]

If Empty(cTex1) ; Exit ; Endif

cCod_PrFor := PegaParteTexto(cTex1,"" )

cDes_PrFor := PegaParteTexto(cTex1,"" )

cCod_N_C_M := PegaParteTexto(cTex1,"" )

cCod_CFOP_ := PegaParteTexto(cTex1,"" )

cUni_Produ := PegaParteTexto(cTex1,"" )

nQtd_Produ := Val(PegaParteTexto(cTex1,"" ))

cUni_Produ := PegaParteTexto(cTex1,"" )

nTot_Produ := Val(PegaParteTexto(cTex1,"" ))

nVlr_Produ := Val(PegaParteTexto(cTex1,"" ))

nQtd_Tribu := Val(PegaParteTexto(cTex1,"" ))

nVlr_Tribu := Val(PegaParteTexto(cTex1,"" ))

nVlr_Frete := Val(PegaParteTexto(cTex1,"" ))

nVlr_Segur := Val(PegaParteTexto(cTex1,"" ))

nVlr_Desco := Val(PegaParteTexto(cTex1,"" ))

nInd_Produ := Val(PegaParteTexto(cTex1,"" ))

//Impostos

cOri_Produ := PegaParteTexto(cTex1,"" )

cCst_IcmsP := PegaParteTexto(cTex1,"" )

cMod_BaseC := PegaParteTexto(cTex1,"" )

nVlr_BaseC := Val(PegaParteTexto(cTex1,"" ))

nPer_BaseC := Val(PegaParteTexto(cTex1,"" ))

nVlr_ICMSP := Val(PegaParteTexto(cTex1,"" ))

cCst_IPI_P := PegaParteTexto(cTex1,"" )

nVlr_BaseI := Val(PegaParteTexto(cTex1,"" ))

nPer_BaseI := Val(PegaParteTexto(cTex1,"" ))

nVlr_IPI_P := Val(PegaParteTexto(cTex1,"" ))

cCst_CSOSN := PegaParteTexto(cTex1,"" )

nPer_Credi := Val(PegaParteTexto(cTex1,"" ))

nVlr_Credi := Val(PegaParteTexto(cTex1,""))

cCst_CBST_ := PegaParteTexto(cTex1,"" )

nPer_CBST_ := Val(PegaParteTexto(cTex1,"" ))

nBsc_CBST_ := Val(PegaParteTexto(cTex1,"" ))

nAli_CBST_ := Val(PegaParteTexto(cTex1,"" ))

nVlr_CBST_ := Val(PegaParteTexto(cTex1,"" ))

//Gravar Dados Pré-Nota - (Itens da Nota)

(cItensPreNota)->(DbAppend())

(cItensPreNota)->Cod_Forne := cCod_Forne

(cItensPreNota)->Cgc_Forne := cCgc_Forne

(cItensPreNota)->Nro_NtFis := cNro_NtFis

(cItensPreNota)->Dat_NtFis := dDat_NtFis

(cItensPreNota)->Cod_PrFor := cCod_PrFor

(cItensPreNota)->Des_PrFor := cDes_PrFor

(cItensPreNota)->Cod_N_C_M := cCod_N_C_M

(cItensPreNota)->Cod_CFOP_ := cCod_CFOP_

(cItensPreNota)->Uni_Produ := cUni_Produ

(cItensPreNota)->Qtd_Produ := nQtd_Produ

(cItensPreNota)->Uni_Produ := cUni_Produ

(cItensPreNota)->Tot_Produ := nTot_Produ

(cItensPreNota)->Vlr_Produ := nVlr_Produ

(cItensPreNota)->Qtd_Tribu := nQtd_Tribu

(cItensPreNota)->Vlr_Tribu := nVlr_Tribu

(cItensPreNota)->Vlr_Frete := nVlr_Frete

(cItensPreNota)->Vlr_Segur := nVlr_Segur

(cItensPreNota)->Vlr_Desco := nVlr_Desco

(cItensPreNota)->Ind_Produ := nInd_Produ

//Impostos

(cItensPreNota)->Ori_Produ := cOri_Produ

(cItensPreNota)->Cst_IcmsP := cCst_IcmsP

(cItensPreNota)->Mod_BaseC := cMod_BaseC

(cItensPreNota)->Vlr_BaseC := nVlr_BaseC

(cItensPreNota)->Per_BaseC := nPer_BaseC

(cItensPreNota)->Vlr_ICMSP := nVlr_ICMSP

(cItensPreNota)->Cst_IPI_P := cCst_IPI_P

(cItensPreNota)->Vlr_BaseI := nVlr_BaseI

(cItensPreNota)->Per_BaseI := nPer_BaseI

(cItensPreNota)->Vlr_IPI_P := nVlr_IPI_P

(cItensPreNota)->Cst_CSOSN := cCst_CSOSN

(cItensPreNota)->Per_Credi := nPer_Credi

(cItensPreNota)->Vlr_Credi := nVlr_Credi

(cItensPreNota)->Cst_CBST_ := cCst_CBST_

(cItensPreNota)->Per_CBST_ := nPer_CBST_

(cItensPreNota)->Bsc_CBST_ := nBsc_CBST_

(cItensPreNota)->Ali_CBST_ := nAli_CBST_

(cItensPreNota)->Vlr_CBST_ := nVlr_CBST_

cTexto := SubStr(cTexto,1,aTexto[2])+SubStr(cTexto,aTexto[3])

Enddo

//Cobrança

aTexto := PegaParteTexto(cTexto,"",,.F.,.T.)

cTex1 := aTexto[1]

Do Whil .T.

aText2 := PegaParteTexto(cTex1,"",,.F.,.T.)

cTex2 := aText2[1]

If Empty(cTex2) ; Exit ; Endif

cNro_Dupli := PegaParteTexto(cTex2,"")

dDat_Dupli := StoD(StrTran(PegaParteTexto(cTex2,""),"-",""))

nVlr_Dupli := Val(PegaParteTexto(cTex2,""))

//Gravar dados da Pre-Nota (Duplicatas)

(cDuplicataPreNota)->(DbAppend())

(cDuplicataPreNota)->Cgc_Forne := cCgc_Forne

(cDuplicataPreNota)->Nro_NtFis := cNro_NtFis

(cDuplicataPreNota)->Nro_Dupli := cNro_Dupli

(cDuplicataPreNota)->Dat_Dupli := dDat_Dupli

(cDuplicataPreNota)->Vlr_Dupli := nVlr_Dupli

cTex1 := SubStr(cTex1,1,aText2[2])+SubStr(cTex1,aText2[3])

Enddo

cTexto := SubStr(cTexto,1,aTexto[2])+SubStr(cTexto,aTexto[3])

Retu({.T.,0})

/*********************************************************

* Função : PegaParteTexto() - Funcao para Pegar partes de um texto

* Data : 14/03/2012 - 10:28:12 Por : Vagner

* Revisado em : 14/03/2012 - 11:42:15 Por : Vagner

* Parâmetros :

* cTexto - Texto para a Leitura

* cStri1 - String Inicial para pegar

* cStri2 - String Final para Pegar

* lDesca - Se descarta as String do Texto para retornar (Default .T.)

* lArray - Se Irá Retornar um array contendo as posições (Default .F.)

* Retorno :

* cRetor - Texto para Retornar

**********************************************************/

Func PegaParteTexto(cTexto,cStri1,cStri2,lDesca,lArray)

Local nPos1 := 0,nPos2 := 0

Local cRetor := ""

Default cStri2 := Stuff(cStri1,2,0,"/")

Default lDesca := .T.

Default lArray := .F.

If cStri1 $ cTexto

nPos1 := At(cStri1,cTexto)+Iif(lDesca,Len(cStri1),-1)

nPos2 := At(cStri2,cTexto)+Iif(lDesca,0,Len(cStri2))

If nPos1 == 0 ; cReto := ""

ElseIf nPos2 == 0 ; cReto := SubStr(cTexto,nPos1)

Else ; cRetor := SubStr(cTexto,nPos1,nPos2-nPos1)

Endif

Endif

If lArray ; cRetor := {cRetor,nPos1,nPos2} ; Endif

Retu(cRetor)

id=code>id=code>

Vagner Wirts

bgprofilea.jpg

"Ele não sabendo que era impossível, foi lá e fez"

Link to comment
Share on other sites

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...