reneumg Posted September 2, 2010 Report Share Posted September 2, 2010 Gostaria se saber se tem uma função do xHarbour ou do FiveWin ou como fazer pra ler e arquivo XML: Ex.: preciso pegar do XML o Numero da NFe, CNPJ, etc... Desde já Agaradeço quem puder ajudar, Reneu. FiveWin for xHarbour 2.7 Editado por - reneumg on 02/09/2010 14:16:58 Quote Link to comment Share on other sites More sharing options...
reneumg Posted September 2, 2010 Author Report Share Posted September 2, 2010 Gostaria se saber se tem uma função do xHarbour ou do FiveWin ou como fazer pra ler e arquivo XML: Ex.: preciso pegar do XML o Numero da NFe, CNPJ, etc... Desde já Agaradeço quem puder ajudar, Reneu. FiveWin for xHarbour 2.7 Editado por - reneumg on 02/09/2010 14:16:58 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 2, 2010 Report Share Posted September 2, 2010 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 Quote Link to comment Share on other sites More sharing options...
reneumg Posted September 2, 2010 Author Report Share Posted September 2, 2010 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 Quote Link to comment Share on other sites More sharing options...
Luisão Posted September 2, 2010 Report Share Posted September 2, 2010 Talvez ajude: http://www.fivewin.com.br/forum/topic.asp?TOPIC_ID=3702 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 Quote Link to comment Share on other sites More sharing options...
Luisão Posted September 2, 2010 Report Share Posted September 2, 2010 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 Quote Link to comment Share on other sites More sharing options...
reneumg Posted September 2, 2010 Author Report Share Posted September 2, 2010 Blz Luizão vou dar uma estudada na classe do xHarbour TXmlDocument() e ver no que dá. Muito obrigado, Té + Reneu. FiveWin for xHarbour 2.7 Quote Link to comment Share on other sites More sharing options...
Ale SB Posted September 2, 2010 Report Share Posted September 2, 2010 Acredito q isso deve ajudar: http://www.pctoledo.com.br/forum/viewtopic.php?f=4&t=9601&p=61166&hilit=Xml_NFe.prg#p61168 @braços Ale aleseribeli@hotmail.com Andradina/SP "Hoje tô igual televisão velha; Eh sem Controle!...O q tem Limite eh MunicÃpio!"id=red> Quote Link to comment Share on other sites More sharing options...
reneumg Posted September 2, 2010 Author Report Share Posted September 2, 2010 Valeu Ale não vi direito mas vou ver com calma mas acho q é por ai que vou conseguir, Abarços., Reneu Catanduva - SP FiveWin for xHarbour 2.7 Quote Link to comment Share on other sites More sharing options...
reneumg Posted September 2, 2010 Author Report Share Posted September 2, 2010 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 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted August 15, 2011 Report Share Posted August 15, 2011 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 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted August 16, 2011 Report Share Posted August 16, 2011 // 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 Quote Link to comment Share on other sites More sharing options...
vagner Posted August 16, 2011 Report Share Posted August 16, 2011 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 id=quote>id=quote>Vagner Wirts "Ele não sabendo que era impossÃvel, foi lá e fez" Quote Link to comment Share on other sites More sharing options...
reneumg Posted August 16, 2011 Author Report Share Posted August 16, 2011 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 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted August 16, 2011 Report Share Posted August 16, 2011 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 Quote Link to comment Share on other sites More sharing options...
jhilbert Posted August 31, 2012 Report Share Posted August 31, 2012 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 Quote Link to comment Share on other sites More sharing options...
vagner Posted August 31, 2012 Report Share Posted August 31, 2012 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 "Ele não sabendo que era impossÃvel, foi lá e fez" Quote Link to comment Share on other sites More sharing options...
jhilbert Posted August 31, 2012 Report Share Posted August 31, 2012 Olá Vagner, Mais uma vez obrigado, vou testar. JHILBERT FWH 8.08/pellesc7/xHarbour/xDev/vLib Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.