syspel Posted July 30, 2015 Report Share Posted July 30, 2015 boa tarde pessoal eu tenho uma funcao feita pelo gilmer que le o xml para para o dbf acontece o seguinte qundo eu leio o xml de uma chave de uma nota com 4 item 3 item e isento ,branco e o 4 item tem alicota de 18% ai ele traz repetidademete 18% outro e desconto ele mostra certo e na hora gravar,grva doubrado ja verifique a funcao e nao achei o erro alguem se abalita a olhar o funcao falar com o gilmer nem pensar, ele e dificiu de lidar carlos obrigado syspel fhw14,12 xharbour 1.2.3 dbf sql tem louco para todos os tipos de louco Quote Link to comment Share on other sites More sharing options...
Eroni Posted July 31, 2015 Report Share Posted July 31, 2015 Bom dia Amigo, qual o nome desta função? Ela está em alguma classe específica da NFe? Estou para iniciar a implementação da leitura do xml para dar entrada na NF de fornecedor e tenho interesse também, posso ajudar neste caso. Abraços. Quote Link to comment Share on other sites More sharing options...
gilmer Posted July 31, 2015 Report Share Posted July 31, 2015 Como sou uma pessoa difícil de lidar poste o fonte assim todos os usuários podem ter e ajudar kapiaba 1 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted July 31, 2015 Report Share Posted July 31, 2015 Alguém que escreve isso aqui: "tem louco para todos os tipos de louco" não pode ser normal. E o Gilmer só não é PIOR, por que é um só. kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk, zueira, Gilmer. abs. Quote Link to comment Share on other sites More sharing options...
syspel Posted July 31, 2015 Author Report Share Posted July 31, 2015 vc nao deveria de falar nada pois vc fez e arruma dos bugs Quote Link to comment Share on other sites More sharing options...
gilmer Posted August 3, 2015 Report Share Posted August 3, 2015 nossa! sem resposta kkkkkkkk kapiaba 1 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted August 3, 2015 Report Share Posted August 3, 2015 Com autorização do Autor(Gilmer) estou postando o fonte, para que o Ailton da Syspel, vá se explicando o que é que não está funcionando, quais as TAGS que não funcionam, inclusive mostrando imagens, para os demais ajudarem. abs. ****************************************************************************** * chixml.prg * * * * le um arquivo xml e grava dentro de um arquivo dbf * * * * * * Feito pelo gilmer * * * * Ailton, informe qual e a versãao do seu FiveWin e quais as TAGS que não * * Estão funcionando. João Santos - São Paulo. * ****************************************************************************** #Include "FiveWin.ch" #include "hbxml.ch" Function Main() Local aCampos,cChaveAcesso:="",cXml,f,nPos Local nPos1,nPos2,nPos3,nPos4,nPos5,nPos6,nPos7,nPos8,nPos9,nPos10 Local nPos11,nPos12,nPos13,nPos14,nPos15,nPos16,nPos17,nPos18,nPos19 Local nPos20,nPos21,nPos22,nPos23,nPos24,nPos25,nPos26,nPos27,nPos28 Local nPos29,nPos30,nPos31,nPos32,nPos33,nPos34,nPos35,nPos36 Local nsegprod1:=0, nsegprod2:=0, nsegprod3:=0, nsegprod4:=0, nsegprod5:=0, ; nsegprod6:=0 Local nsegprod7:=0, nsegprod8:=0, nsegprod9:=0, nsegprod10:=0, nsegprod11:=0, ; nsegprod12:=0 Local nsegprod13:=0, nsegprod14:=0,nsegprod15,nsegprod16,nsegprod17 Local nITemNfe // Pegar o arquivo .xml da nfe sem estar assinada cXml := cGetFile( "XML File (*.Xml)|*.Xml|", ; "Selecione arquivo XML da NFe sem estar assinada", ; curdir() ) aCampos:=CarregaXml(cXml,@cChaveAcesso) delete file "nfe1.dbf" delete file "nfe2.dbf" if ! file("nfe1.dbf") crianfe() endif select 1 use nfe1 go top select 2 use nfe2 go top Declare Abacax1[50] Declare Abacax2[50] For x=1 to 50 abacax1[x]:=" " abacax2[x]:=" " next // Posicao do array // quando nao existe a tag dentro do xml e ele da erro // preciso de achar a alicota de icms e ele traz zero neste caso 99 e isenta // ele mente // tente gravar de dentro de um dbf,mas na hora de pegar os produtos ai pegar // os produtos sao todos com a mesma cprod isto e um saco // // esta funcao e palhativa // // preciso de achar um outro jeito preferia gravar os produtos dentro do // velho dbf // onde esta barra barra nao existe a tag a da erro nPos1:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/emit/cnpj") // nao precisa colocar a tag inteira, só uma parte já resolve if npos1=0 nPos1:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/emit/cpf") // nao precisa colocar a tag inteira, só uma parte já resolve endif nPos2:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/emit/xnome") // nao precisa colocar a tag inteira, só uma parte já resolve nPos3:=PegaPosicao(aCampos, "/nfeproc/nfe/infnfe/emit/enderemit/xlgr") // nao precisa colocar a tag inteira, só uma parte já resolve nPos4:=PegaPosicao(aCampos, "/nfeproc/nfe/infnfe/emit/enderemit/nro") // nao precisa colocar a tag inteira, só uma parte já resolve nPos5:=PegaPosicao(aCampos, "/nfeproc/nfe/infnfe/emit/enderemit/xbairro") // nao precisa colocar a tag inteira, só uma parte já resolve nPos6:=PegaPosicao(aCampos, "/nfeproc/nfe/infnfe/emit/enderemit/uf") // nao precisa colocar a tag inteira, só uma parte já resolve nPos7:=PegaPosicao(aCampos, "/nfeproc/nfe/infnfe/emit/enderemit/xmun") // nao precisa colocar a tag inteira, só uma parte já resolve nPos8:=PegaPosicao(aCampos, "/nfeproc/nfe/infnfe/emit/enderemit/uf") // nao precisa colocar a tag inteira, só uma parte já resolve nPos9:=PegaPosicao(aCampos, "/nfeproc/nfe/infnfe/emit/enderemit/cep") // nao precisa colocar a tag inteira, só uma parte já resolve nPos10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/emit/enderemit/fone") // nao precisa colocar a tag inteira, só uma parte já resolve nPos11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/emit/ie") // nao precisa colocar a tag inteira, só uma parte já resolve nPos12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/ide/nnf") // nao precisa colocar a tag inteira, só uma parte já resolve if PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/ide/demi")!=0 nPos13:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/ide/demi") // nao precisa colocar a tag inteira, só uma parte já resolve elseif PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/ide/demi")!=0 nPos13:=PegaPosicao(aCampos,"/nfe/infnfe/ide/demi") // nao precisa colocar a tag inteira, só uma parte já resolve elseif PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/ide/dhemi")!=0 nPos13:=PegaPosicao(aCampos,"/nfe/infnfe/ide/dhemi") // nao precisa colocar a tag inteira, só uma parte já resolve endif nPos14:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vbc") // nao precisa colocar a tag inteira, só uma parte já resolve nPos15:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vicms") // nao precisa colocar a tag inteira, só uma parte já resolve nPos16:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vbcst") // nao precisa colocar a tag inteira, só uma parte já resolve nPos17:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vst") // nao precisa colocar a tag inteira, só uma parte já resolve nPos18:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vipi") // nao precisa colocar a tag inteira, só uma parte já resolve nPos19:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vnf") // nao precisa colocar a tag inteira, só uma parte já resolve nPos20:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vfrete") // nao precisa colocar a tag inteira, só uma parte já resolve nPos21:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vseg") // nao precisa colocar a tag inteira, só uma parte já resolve nPos22:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/voutro") // nao precisa colocar a tag inteira, só uma parte já resolve if PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/ide/serie")!=0 // nao precisa colocar a tag inteira, só uma parte já resolve nPos23:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/ide/serie") // nao precisa colocar a tag inteira, só uma parte já resolve else nPos23:=PegaPosicao(aCampos,"/nfe/infnfe/ide/serie") // nao precisa colocar a tag inteira, só uma parte já resolve endif nPos24:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/transp/modfrete") // nao precisa colocar a tag inteira, só uma parte já resolve if PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vdesc")!=0 nPos38:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vdesc") // nao precisa colocar a tag inteira, só uma parte já resolve endif // transporte nPos25:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/transp/transporta/cnpj") nPos26:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/transp/transporta/xnome") nPos27:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/transp/transporta/ie") nPos28:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/transp/transporta/xender") nPos29:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/transp/transporta/xmun") nPos30:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/transp/transporta/uf") nPos31:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/transp/veictransp/placa") nPos32:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/transp/veictransp/uf") nPos33:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/transp/vol/qvol") nPos34:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/transp/vol/esp") nPos35:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/transp/vol/pesol") nPos36:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/transp/vol/pesob") nPos37:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/dest/cpf") // nao precisa colocar a tag inteira, só uma parte já resolve // vou mostrar para vc como pesquisar o segundo elemento // lembrando que precisa pega a posiço do primeiro/anteior e pesquisar a partir dele if npos1=0 abacax1[1]:=" " else abacax1[1]:=acampos[npos1,2] endif if npos2=0 abacax1[2]:=" " else abacax1[2]:=acampos[npos2,2] endif if npos3=0 abacax1[3]:=" " else abacax1[3]:=acampos[npos3,2] endif if npos4=0 abacax1[4]:=" " else abacax1[4]:=acampos[npos4,2] endif if npos5=0 abacax1[5]:=" " else abacax1[5]:=acampos[npos5,2] endif if npos6=0 abacax1[6]:=" " else abacax1[6]:=acampos[npos6,2] endif if npos7=0 abacax1[7]:=" " else abacax1[7]:=acampos[npos7,2] endif if npos8=0 abacax1[8]:=" " else abacax1[8]:=acampos[npos8,2] endif if npos9=0 abacax1[9]:=" " else abacax1[9]:=acampos[npos9,2] endif if npos10=0 abacax1[10]:=" " else abacax1[10]:=acampos[npos10,2] endif if npos11=0 abacax1[11]:=" " else abacax1[11]:=acampos[npos11,2] endif if npos12=0 abacax1[12]:=" " else abacax1[12]:=acampos[npos12,2] endif if npos13=0 abacax1[13]:=" " else abacax1[13]:=acampos[npos13,2] endif if npos14=0 abacax1[14]:=" " else abacax1[14]:=acampos[npos14,2] endif if npos15=0 abacax1[15]:=" " else abacax1[15]:=acampos[npos15,2] endif if npos16=0 abacax1[16]:=" " else abacax1[16]:=acampos[npos16,2] endif if npos17=0 abacax1[17]:=" " else abacax1[17]:=acampos[npos17,2] endif if npos18=0 abacax1[18]:=" " else abacax1[18]:=acampos[npos18,2] endif if npos19=0 abacax1[19]:=" " else abacax1[19]:=acampos[npos19,2] endif if npos20=0 abacax1[20]:=" " else abacax1[20]:=acampos[npos20,2] endif if npos21=0 abacax1[21]:=" " else abacax1[21]:=acampos[npos21,2] endif if npos22=0 abacax1[22]:=" " else abacax1[22]:=acampos[npos22,2] endif if npos23=0 abacax1[23]:=" " else abacax1[23]:=acampos[npos23,2] endif if npos24=0 abacax1[24]:=" " else abacax1[24]:=acampos[npos24,2] endif if npos25=0 abacax1[25]:=" " else abacax1[25]:=acampos[npos25,2] endif if npos26=0 abacax1[26]:=" " else abacax1[26]:=acampos[npos26,2] endif if npos27=0 abacax1[27]:=" " else abacax1[27]:=acampos[npos27,2] endif if npos28=0 abacax1[28]:=" " else abacax1[28]:=acampos[npos28,2] endif if npos29=0 abacax1[29]:=" " else abacax1[29]:=acampos[npos29,2] endif if npos30=0 abacax1[30]:=" " else abacax1[30]:=acampos[npos30,2] endif if npos31=0 abacax1[31]:=" " else abacax1[31]:=acampos[npos31,2] endif if npos32=0 abacax1[32]:=" " else abacax1[32]:=acampos[npos32,2] endif if npos33=0 abacax1[33]:=" " else abacax1[33]:=acampos[npos33,2] endif if npos34=0 abacax1[34]:=" " else abacax1[34]:=acampos[npos34,2] endif if npos35=0 abacax1[35]:=" " else abacax1[35]:=acampos[npos35,2] endif if npos36=0 abacax1[36]:=" " else abacax1[36]:=acampos[npos36,2] endif if npos38=0 abacax1[38]:=" " else abacax1[38]:=acampos[npos38,2] endif select nfe1 append blank if ! neterr() replace nfe1->f_cnpj with upper(tiraacento(abacax1[1])) replace nfe1->f_nome with upper(tiraacento(abacax1[2])) replace nfe1->f_end with upper(tiraacento(abacax1[3])) replace nfe1->f_no with upper(tiraacento(abacax1[4])) replace nfe1->f_bairro with upper(tiraacento(abacax1[5])) replace nfe1->f_cid with upper(tiraacento(abacax1[7])) replace nfe1->f_muni with upper(tiraacento(abacax1[7])) replace nfe1->f_estado with upper(tiraacento(abacax1[8])) replace nfe1->f_cep with abacax1[9] replace nfe1->f_tele with abacax1[10] replace nfe1->f_inscrica with abacax1[11] replace nfe1->numero with abacax1[12] replace nfe1->dt_emiss with abacax1[13] replace nfe1->bse_calc with abacax1[14] replace nfe1->icms with abacax1[15] replace nfe1->bse_icmst with abacax1[16] replace nfe1->icmssubt with abacax1[17] replace nfe1->ipi with abacax1[18] replace nfe1->vlr_cont with abacax1[19] replace nfe1->frete with abacax1[20] replace nfe1->seguro with abacax1[21] replace nfe1->outrasdesp with abacax1[22] replace nfe1->serie with abacax1[23] replace nfe1->modfrete with abacax1[24] replace nfe1->cnpj_t with abacax1[25] replace nfe1->razao_t with abacax1[26] replace nfe1->ie_t with abacax1[27] replace nfe1->ender_t with abacax1[28] replace nfe1->munic_t with abacax1[29] replace nfe1->ufp_t with abacax1[30] replace nfe1->placa_t with abacax1[31] replace nfe1->ufe_t with abacax1[32] replace nfe1->qtda with abacax1[33] replace nfe1->volume with abacax1[34] replace nfe1->pesol with abacax1[35] replace nfe1->pesob with abacax1[36] replace nfe1->desc with abacax1[38] commit // Unlock //?? endif nSegProd1:=-1 nItemNfe:=1 While nSegProd1#0 nsegprod1:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/prod/cprod",nsegprod1+1) nsegprod2:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/prod/xprod",nsegprod2+1) nsegprod3:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/prod/ncm",nsegprod3+1) nsegprod4:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/prod/cfop",nsegprod4+1) if PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/prod/utrib",nsegprod5+1)!=0 nsegprod5:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/prod/utrib",nsegprod5+1) else nsegprod5:=PegaPosicao(aCampos,"/nfe/infnfe/det/prod/ucom",nsegprod5+1) endif nsegprod6:=PegaPosicao(aCampos, "/nfeproc/nfe/infnfe/det/prod/qtrib",nsegprod6+1) nsegprod7:=PegaPosicao(aCampos, "/nfeproc/nfe/infnfe/det/prod/vuntrib",nsegprod7+1) nsegprod8:=PegaPosicao(aCampos, "/nfeproc/nfe/infnfe/det/prod/vprod",nsegprod8+1) nsegprod9:=PegaPosicao(aCampos, "/nfeproc/nfe/infnfe/total/icmstot/vicms",nsegprod9+1) nsegprod10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms00/picms",nsegprod10+1) nsegprod11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms00/vbc",nsegprod11+1) nsegprod12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms00/pmvast",nsegprod12+1) nsegprod13:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms00/picmsst",nsegprod13+1) nsegprod14:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/ipi/ipitrib/pipi",nsegprod14+1) // nsegprod15:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms00/cst",nsegprod15+1) nsegprod10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms10/picms",nsegprod10+1) nsegprod11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms10/vbc",nsegprod11+1) nsegprod12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms10/pmvast",nsegprod12+1) nsegprod13:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms10/picmsst",nsegprod13+1) nsegprod14:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/ipi/ipitrib/pipi",nsegprod14+1) // nsegprod15:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms10/cst",nsegprod15+1) nsegprod10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms20/picms",nsegprod10+1) nsegprod11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms20/vbc",nsegprod11+1) nsegprod12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms20/pmvast",nsegprod12+1) nsegprod13:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms20/picmsst",nsegprod13+1) nsegprod14:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/ipi/ipitrib/pipi",nsegprod14+1) // nsegprod15:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms20/cst",nsegprod15+1) nsegprod10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms40/picms",nsegprod10+1) nsegprod11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms40/vbc",nsegprod11+1) nsegprod12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms40/pmvast",nsegprod12+1) nsegprod13:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms40/picmsst",nsegprod13+1) nsegprod14:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/ipi/ipitrib/pipi",nsegprod14+1) // nsegprod15:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms40/cst",nsegprod15+1) nsegprod10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms60/picms",nsegprod10+1) nsegprod11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms60/vbc",nsegprod11+1) nsegprod12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms60/pmvast",nsegprod12+1) nsegprod13:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms60/picmsst",nsegprod13+1) nsegprod14:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/ipi/ipitrib/pipi",nsegprod14+1) // nsegprod15:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms60/cst",nsegprod15+1) nsegprod10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms70/picms",nsegprod10+1) nsegprod11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms70/vbc",nsegprod11+1) nsegprod12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms70/pmvast",nsegprod12+1) nsegprod13:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms70/picmsst",nsegprod13+1) nsegprod14:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/ipi/ipitrib/pipi",nsegprod14+1) // nsegprod15:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms70/cst",nsegprod15+1) nsegprod10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms100/picms",nsegprod10+1) nsegprod11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms100/vbc",nsegprod11+1) nsegprod12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms100/pmvast",nsegprod12+1) nsegprod13:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms100/picmsst",nsegprod13+1) nsegprod14:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/ipi/ipitrib/pipi",nsegprod14+1) // nsegprod15:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms100/cst",nsegprod15+1) nsegprod10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms110/picms",nsegprod10+1) nsegprod11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms110/vbc",nsegprod11+1) nsegprod12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms110/pmvast",nsegprod12+1) nsegprod13:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms110/picmsst",nsegprod13+1) nsegprod14:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/ipi/ipitrib/pipi",nsegprod14+1) // nsegprod15:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms110/cst",nsegprod15+1) nsegprod10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms120/picms",nsegprod10+1) nsegprod11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms120/vbc",nsegprod11+1) nsegprod12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms120/pmvast",nsegprod12+1) nsegprod13:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms120/picmsst",nsegprod13+1) nsegprod14:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/ipi/ipitrib/pipi",nsegprod14+1) // nsegprod15:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms120/cst",nsegprod15+1) nsegprod10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms170/picms",nsegprod10+1) nsegprod11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms170/vbc",nsegprod11+1) nsegprod12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms170/pmvast",nsegprod12+1) nsegprod13:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms170/picmsst",nsegprod13+1) nsegprod14:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/ipi/ipitrib/pipi",nsegprod14+1) // nsegprod15:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms170/cst",nsegprod15+1) nsegprod10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms200/picms",nsegprod10+1) nsegprod11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms200/vbc",nsegprod11+1) nsegprod12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms200/pmvast",nsegprod12+1) nsegprod13:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms200/picmsst",nsegprod13+1) nsegprod14:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/ipi/ipitrib/pipi",nsegprod14+1) // nsegprod15:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms200/cst",nsegprod15+1) nsegprod10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms210/picms",nsegprod10+1) nsegprod11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms210/vbc",nsegprod11+1) nsegprod12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms210/pmvast",nsegprod12+1) nsegprod13:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms210/picmsst",nsegprod13+1) nsegprod14:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/ipi/ipitrib/pipi",nsegprod14+1) // nsegprod15:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms210/cst",nsegprod15+1) nsegprod10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms220/picms",nsegprod10+1) nsegprod11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms220/vbc",nsegprod11+1) nsegprod12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms220/pmvast",nsegprod12+1) nsegprod13:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms220/picmsst",nsegprod13+1) nsegprod14:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/ipi/ipitrib/pipi",nsegprod14+1) // nsegprod15:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms220/cst",nsegprod15+1) nsegprod10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms270/picms",nsegprod10+1) nsegprod11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms270/vbc",nsegprod11+1) nsegprod12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms270/pmvast",nsegprod12+1) nsegprod13:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms270/picmsst",nsegprod13+1) nsegprod14:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/ipi/ipitrib/pipi",nsegprod14+1) // nsegprod15:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms270/cst",nsegprod15+1) // nsegprod17:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/prod/vdesc",nsegprod17+1) if nsegprod1=0 abacax2[1]:=" " else abacax2[1]:=acampos[nsegprod1,2] endif if nsegprod2=0 abacax2[2]:=" " else abacax2[2]:=acampos[nsegprod2,2] endif if nsegprod3=0 abacax2[3]:=" " else abacax2[3]:=acampos[nsegprod3,2] endif if nsegprod4=0 abacax2[4]:=" " //cfop endif if ! nsegprod4=0 abacax2[4]:=acampos[nsegprod4,2] if abacax2[4]="5405" abacax2[4]="5403" else abacax2[4]:=acampos[nsegprod4,2] endif endif if nsegprod5=0 abacax2[5]:="UN" endif if ! nsegprod5=0 abacax2[5]:=upper(tiraacento(acampos[nsegprod5,2])) if substr(abacax2[5],1,1)="P" abacax2[5]="PC" endif endif if nsegprod6=0 abacax2[6]:=" " else abacax2[6]:=acampos[nsegprod6,2] endif if nsegprod7=0 abacax2[7]:=" " else abacax2[7]:=acampos[nsegprod7,2] endif if nsegprod8=0 abacax2[8]:=" " else abacax2[8]:=acampos[nsegprod8,2] endif if nsegprod9=0 abacax2[9]:=" " else abacax2[9]:=acampos[nsegprod9,2] endif if nsegprod10=0 .or. acampos[nsegprod10,2]="0.00" abacax2[10]:="99" else abacax2[10]:=acampos[nsegprod10,2] endif if nsegprod11=0 abacax2[11]:=" " else abacax2[11]:=acampos[nsegprod11,2] endif if nsegprod12=0 abacax2[12]:=" " //cst else abacax2[12]:=acampos[nsegprod12,2] endif if nsegprod13=0 abacax2[13]:=" " else abacax2[13]:=acampos[nsegprod13,2] endif if nsegprod14=0 abacax2[14]:=" " else abacax2[14]:=acampos[nsegprod14,2] endif if nsegprod5=0 abacax2[5]:="UN" endif if ! nsegprod5=0 abacax2[5]:=upper(tiraacento(acampos[nsegprod5,2])) if substr(abacax2[5],1,1)="P" abacax2[5]="PC" endif endif // if nsegprod17=0 // abacax2[17]:=" " // else // abacax2[17]:=acampos[nsegprod17,2] // endif If nSegProd1!=0 // aqui mostra como esta pegando corretamente // "Item da Nota",nItemNfe,acampos[nsegprod1,2], aCampos[nsegprod2,2] nItemNfe++ select nfe2 append blank if ! neterr() replace nfe2->numero with abacax1[12] replace nfe2->prod with abacax2[1] replace nfe2->pdesc with upper(tiraacento(abacax2[2])) replace nfe2->nbm with abacax2[3] replace nfe2->cfop with abacax2[4] replace nfe2->unid with upper(tiraacento(abacax2[5])) replace nfe2->qtde with abacax2[6] replace nfe2->vl_int with abacax2[7] replace nfe2->vl_tot with abacax2[8] endif if abacax2[10] <> " " aa=" " cc=" " bb=0 aa = abacax2[11] cc = abacax2[10] bb= val(aa) * val(cc) / 100 replace nfe2->vl_icms with str(bb,10,2) replace nfe2->peicms with abacax2[10] //acampos[nsegprod9,2] endif replace nfe2->aicms with abacax2[10] replace nfe2->peicms with abacax2[10] //acampos[nsegprod9,2] if val(abacax2[11])=0 replace nfe2->vl_base with abacax2[8] else replace nfe2->vl_base with abacax2[11] endif replace nfe2->aipi with abacax2[14] replace nfe2->cst with abacax2[15] replace nfe2->tdesc with abacax2[17] jj=" " jj=abacax2[12] if len(jj) > 5 replace nfe2->aliqiva with " " else replace nfe2->aliqiva with abacax2[12] endif ee=" " ee=abacax2[13] if len(ee) > 5 replace nfe2->aliqsubt with " " else replace nfe2->aliqsubt with abacax2[13] endif commit // Unlock //?? Endif SysRefresh() Enddo close databases return nil Function PegaPosicao(aCampos,cTag,nPosInicial) Local nPos:=0,nPos1,f Default nPosInicial:=1 nPosInicial:=If(nPosInicial=0,1,nPosInicial) cTag:=Upper(cTag) If Upper("/nfeproc/") $ Upper(cTag) cTag:=StrTran(cTag,"/NFEPROC","") Endif nPosInicial:=Ascan(aCampos,{|aCampos| cTag $ StrTran(aCampos[1],"/NFEPROC","") },nPosInicial) If nPosInicial!=0 For f:=nPosInicial to Len(aCampos) nPos1:= Rat("/",cTag) If Substr( StrTran(aCampos[f,1],"/NFEPROC",""),nPos1+1) $ Substr(cTag,nPos1+1) .and. cTag $ StrTran(aCampos[f,1],"/NFEPROC","") nPos:=f Exit Endif Next f Endif Return(nPos) Function CarregaXml(cXmlFile,cChaveAcesso) Local oXmlNode,nPos,cAtributos:="",oXmlDoc Local aFieldsValue:={} cChaveAcesso:="" cXmlFile:=MemoRead(cXmlFile) oXmldoc:=TXmlDocument():New(cXmlFile,HBXML_STYLE_NOESCAPE ) oxmlNode := oXmlDoc:oRoot:oChild While oXmlNode != NIL if oXmlNode:cName!=Nil If Upper(oXmlNode:cName)=="INFNFE".and.Empty(cChaveAcesso) cChaveAcesso:=ValtoPrg(oXmlNode:aAttributes) nPos:=At("NFe",cChaveAcesso) cChaveAcesso:=Substr(cChaveAcesso,nPos+3,44) Endif If !Empty(oXmlNode:cData) Aadd(aFieldsValue,{Upper(Alltrim(oxmlNode:Path())),Alltrim(oXmlNode:cData),cAtributos}) else If Upper(oXmlNode:cName)=="DET" cAtributos:=ValtoPrg(ValtoPrg(oXmlNode:aAttributes)) ElseIf Upper(oXmlNode:cName)=="TOTAL" cAtributos:="" Endif Endif Endif oXmlNode:=oXmlNode:NextInTree() SysRefresh() Enddo Return(aFieldsValue) function crianfe BRQ45:="NFE1.DBF" DbCreate("&brq45",{ { "F_CNPJ" ,"C", 14, 0 },; { "F_NOME" ,"C", 40, 0 },; { "F_INSCRICA" ,"C", 18, 0 },; { "F_ESTADO" ,"C", 2, 0 },; { "F_NO" ,"C", 5, 0 },; { "F_END" ,"C", 40, 0 },; { "F_CID" ,"C", 30, 0 },; { "F_MUNI" ,"C", 30, 0 },; { "F_TELE" ,"C", 15, 0 },; { "F_CEP" ,"C", 8, 0 },; { "F_BAIRRO" ,"C", 30, 0 },; { "F_COMPLE" ,"C", 20, 0 },; { "DT_EMISS" ,"C", 20, 0 },; { "SERIE" ,"C", 3, 0 },; { "MODFRETE" ,"C", 1, 0 },; { "VLR_CONT" ,"C", 12, 0 },; { "BSE_CALC" ,"C", 12, 0 },; { "ICMS" ,"C", 12, 0 },; { "BSE_ICMST" ,"C", 12, 0 },; { "ICMSSUBT" ,"C", 12, 0 },; { "FRETE" ,"C", 12, 0 },; { "SEGURO" ,"C", 12, 0 },; { "OUTRASDESP" ,"C", 12, 0 },; { "IPI" ,"C", 12, 0 },; { "CFOP" ,"C", 04, 0 },; { "PEICMS" ,"C", 6, 0 },; { "RAZAO_T" ,"C", 50, 0 },; { "ENDER_T" ,"C", 50, 0 },; { "MUNIC_T" ,"C", 30, 0 },; { "PLACA_T" ,"C", 10, 0 },; { "UFP_T" ,"C", 2, 0 },; { "CNPJ_T" ,"C", 14, 0 },; { "UFE_T" ,"C", 2, 0 },; { "VOLUME" ,"C", 20, 0 },; { "PESOB" ,"C", 12, 0 },; { "PESOL" ,"C", 12, 0 },; { "NUMERO" ,"C", 10, 0 },; { "QTDA " ,"C", 10, 0 },; { "DESC " ,"C", 10, 0 },; { "VL_ICMS" ,"C", 10, 0 },; { "AICMS " ,"C", 6, 0 },; { "AIPI " ,"C", 6, 0 },; { "IE_T" ,"C", 18, 0 }}) BRQ46:="NFE2.DBF" DbCreate("&brq46",{ { "NUMERO" ,"C", 10, 0 },; { "PROD" ,"C", 13, 0 },; { "PDESC" ,"C", 30, 0 },; { "NBM" ,"C", 10, 0 },; { "CFOP" ,"C", 04, 0 },; { "UNID" ,"C", 04, 0 },; { "QTDE" ,"C", 12, 0 },; { "VL_INT" ,"C", 12, 0 },; { "VL_TOT" ,"C", 12, 0 },; { "VL_BASE" ,"C", 12, 0 },; { "VL_ICMS" ,"C", 12, 0 },; { "AICMS " ,"C", 6, 0 },; { "AIPI " ,"C", 6, 0 },; { "PEICMS" ,"C", 6, 0 },; { "ALIQIVA" ,"C", 6, 0 },; { "ALIQSUBT" ,"C", 6, 0 },; { "TDESC" ,"C", 10, 0 },; { "CST" ,"C", 10, 0 }}) close databases RETURN .T. FUNCTION TiraAcento(cText) // tira acentuacao cText := StrTran(cText,"\","/") cText := StrTran(cText,"Ã","A") cText := StrTran(cText,"Â","A") cText := StrTran(cText,"Á","A") cText := StrTran(cText,"Ä","A") cText := StrTran(cText,"À","A") cText := StrTran(cText,"ã","a") cText := StrTran(cText,"â","a") cText := StrTran(cText,"á","a") cText := StrTran(cText,"ä","a") cText := StrTran(cText,"à","a") cText := StrTran(cText,"É","E") cText := StrTran(cText,"Ê","E") cText := StrTran(cText,"Ë","E") cText := StrTran(cText,"È","E") cText := StrTran(cText,"é","e") cText := StrTran(cText,"ê","e") cText := StrTran(cText,"ë","e") cText := StrTran(cText,"è","e") cText := StrTran(cText,"Í","I") cText := StrTran(cText,"Î","I") cText := StrTran(cText,"Ï","I") cText := StrTran(cText,"Ì","I") cText := StrTran(cText,"í","i") cText := StrTran(cText,"î","i") cText := StrTran(cText,"ï","i") cText := StrTran(cText,"ì","i") cText := StrTran(cText,"Ó","O") cText := StrTran(cText,"Õ","O") cText := StrTran(cText,"Ô","O") cText := StrTran(cText,"ó","o") cText := StrTran(cText,"Ö","O") cText := StrTran(cText,"Ò","O") cText := StrTran(cText,"õ","o") cText := StrTran(cText,"ô","o") cText := StrTran(cText,"ó","o") cText := StrTran(cText,"ö","o") cText := StrTran(cText,"ò","o") cText := StrTran(cText,"Û","U") cText := StrTran(cText,"Ú","U") cText := StrTran(cText,"Ü","U") cText := StrTran(cText,"Ù","U") cText := StrTran(cText,"û","u") cText := StrTran(cText,"ú","u") cText := StrTran(cText,"ü","u") cText := StrTran(cText,"ù","u") cText := StrTran(cText,"Ç","C") cText := StrTran(cText,"ç","c") cText := StrTran(cText,"£","E") cText := StrTran(cText,"&","E") cText := StrTran(cText,"<",".") cText := StrTran(cText,">",".") cText := StrTran(cText,"ª","a") cText := StrTran(cText,"º","o") cText := StrTran(cText,"´"," ") cText := StrTran(cText,"²","2") cText := StrTran(cText,"³"," ") cText := StrTran(cText,"¹","1") arINICIO:=32 arFIM :=136 xRetText:="" For IcText=1 to len(cText) LetracText:=subs(cText,IcText,1) if asc(LetracText)<arINICIO .or. asc(LetracText)>arFIM LetracText:=" " end xRetText+=LetracText next RETURN(xRetText) // FIM DO PROGRAMA Quote Link to comment Share on other sites More sharing options...
kapiaba Posted August 3, 2015 Report Share Posted August 3, 2015 ****************************************************************************** * chixml.prg * * * * le um arquivo xml e grava dentro de um arquivo dbf * * * * * * Feito pelo gilmer * * * * Ailton, compile e responda as perguntas. * * Modificado por: Joao Santos - Sao Paulo. * ****************************************************************************** #Include "FiveWin.ch" #include "hbxml.ch" Function Main() Local aCampos,cChaveAcesso:="",cXml,f,nPos Local nPos1,nPos2,nPos3,nPos4,nPos5,nPos6,nPos7,nPos8,nPos9,nPos10 Local nPos11,nPos12,nPos13,nPos14,nPos15,nPos16,nPos17,nPos18,nPos19 Local nPos20,nPos21,nPos22,nPos23,nPos24,nPos25,nPos26,nPos27,nPos28 Local nPos29,nPos30,nPos31,nPos32,nPos33,nPos34,nPos35,nPos36 Local nsegprod1:=0, nsegprod2:=0, nsegprod3:=0, nsegprod4:=0, nsegprod5:=0, ; nsegprod6:=0 Local nsegprod7:=0, nsegprod8:=0, nsegprod9:=0, nsegprod10:=0, nsegprod11:=0, ; nsegprod12:=0 Local nsegprod13:=0, nsegprod14:=0,nsegprod15,nsegprod16,nsegprod17 Local nITemNfe // Pegar o arquivo .xml da nfe sem estar assinada cXml := cGetFile( "XML File (*.Xml)|*.Xml|", ; "Selecione arquivo XML da NFe sem estar assinada", ; curdir() ) aCampos:=CarregaXml(cXml,@cChaveAcesso) delete file "nfe1.dbf" delete file "nfe2.dbf" if ! file("nfe1.dbf") crianfe() endif select 1 use nfe1 go top select 2 use nfe2 go top Declare Abacax1[50] Declare Abacax2[50] For x=1 to 50 abacax1[x]:=" " abacax2[x]:=" " next // Posicao do array // quando nao existe a tag dentro do xml e ele da erro // preciso de achar a alicota de icms e ele traz zero neste caso 99 e isenta // ele mente // tente gravar de dentro de um dbf,mas na hora de pegar os produtos ai pegar // os produtos sao todos com a mesma cprod isto e um saco // // esta funcao e palhativa // // preciso de achar um outro jeito preferia gravar os produtos dentro do // velho dbf // onde esta barra barra nao existe a tag a da erro nPos1:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/emit/cnpj") // nao precisa colocar a tag inteira, só uma parte já resolve if npos1=0 nPos1:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/emit/cpf") // nao precisa colocar a tag inteira, só uma parte já resolve endif nPos2:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/emit/xnome") // nao precisa colocar a tag inteira, só uma parte já resolve nPos3:=PegaPosicao(aCampos, "/nfeproc/nfe/infnfe/emit/enderemit/xlgr") // nao precisa colocar a tag inteira, só uma parte já resolve nPos4:=PegaPosicao(aCampos, "/nfeproc/nfe/infnfe/emit/enderemit/nro") // nao precisa colocar a tag inteira, só uma parte já resolve nPos5:=PegaPosicao(aCampos, "/nfeproc/nfe/infnfe/emit/enderemit/xbairro") // nao precisa colocar a tag inteira, só uma parte já resolve nPos6:=PegaPosicao(aCampos, "/nfeproc/nfe/infnfe/emit/enderemit/uf") // nao precisa colocar a tag inteira, só uma parte já resolve nPos7:=PegaPosicao(aCampos, "/nfeproc/nfe/infnfe/emit/enderemit/xmun") // nao precisa colocar a tag inteira, só uma parte já resolve nPos8:=PegaPosicao(aCampos, "/nfeproc/nfe/infnfe/emit/enderemit/uf") // nao precisa colocar a tag inteira, só uma parte já resolve nPos9:=PegaPosicao(aCampos, "/nfeproc/nfe/infnfe/emit/enderemit/cep") // nao precisa colocar a tag inteira, só uma parte já resolve nPos10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/emit/enderemit/fone") // nao precisa colocar a tag inteira, só uma parte já resolve nPos11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/emit/ie") // nao precisa colocar a tag inteira, só uma parte já resolve nPos12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/ide/nnf") // nao precisa colocar a tag inteira, só uma parte já resolve if PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/ide/demi")!=0 nPos13:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/ide/demi") // nao precisa colocar a tag inteira, só uma parte já resolve elseif PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/ide/demi")!=0 nPos13:=PegaPosicao(aCampos,"/nfe/infnfe/ide/demi") // nao precisa colocar a tag inteira, só uma parte já resolve elseif PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/ide/dhemi")!=0 nPos13:=PegaPosicao(aCampos,"/nfe/infnfe/ide/dhemi") // nao precisa colocar a tag inteira, só uma parte já resolve endif nPos14:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vbc") // nao precisa colocar a tag inteira, só uma parte já resolve nPos15:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vicms") // nao precisa colocar a tag inteira, só uma parte já resolve nPos16:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vbcst") // nao precisa colocar a tag inteira, só uma parte já resolve nPos17:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vst") // nao precisa colocar a tag inteira, só uma parte já resolve nPos18:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vipi") // nao precisa colocar a tag inteira, só uma parte já resolve nPos19:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vnf") // nao precisa colocar a tag inteira, só uma parte já resolve nPos20:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vfrete") // nao precisa colocar a tag inteira, só uma parte já resolve nPos21:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vseg") // nao precisa colocar a tag inteira, só uma parte já resolve nPos22:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/voutro") // nao precisa colocar a tag inteira, só uma parte já resolve if PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/ide/serie")!=0 // nao precisa colocar a tag inteira, só uma parte já resolve nPos23:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/ide/serie") // nao precisa colocar a tag inteira, só uma parte já resolve else nPos23:=PegaPosicao(aCampos,"/nfe/infnfe/ide/serie") // nao precisa colocar a tag inteira, só uma parte já resolve endif nPos24:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/transp/modfrete") // nao precisa colocar a tag inteira, só uma parte já resolve if PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vdesc")!=0 nPos38:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vdesc") // nao precisa colocar a tag inteira, só uma parte já resolve endif // transporte nPos25:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/transp/transporta/cnpj") nPos26:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/transp/transporta/xnome") nPos27:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/transp/transporta/ie") nPos28:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/transp/transporta/xender") nPos29:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/transp/transporta/xmun") nPos30:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/transp/transporta/uf") nPos31:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/transp/veictransp/placa") nPos32:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/transp/veictransp/uf") nPos33:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/transp/vol/qvol") nPos34:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/transp/vol/esp") nPos35:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/transp/vol/pesol") nPos36:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/transp/vol/pesob") nPos37:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/dest/cpf") // nao precisa colocar a tag inteira, só uma parte já resolve // vou mostrar para vc como pesquisar o segundo elemento // lembrando que precisa pega a posiço do primeiro/anteior e pesquisar a partir dele if npos1=0 abacax1[1]:=" " else abacax1[1]:=acampos[npos1,2] endif if npos2=0 abacax1[2]:=" " else abacax1[2]:=acampos[npos2,2] endif if npos3=0 abacax1[3]:=" " else abacax1[3]:=acampos[npos3,2] endif if npos4=0 abacax1[4]:=" " else abacax1[4]:=acampos[npos4,2] endif if npos5=0 abacax1[5]:=" " else abacax1[5]:=acampos[npos5,2] endif if npos6=0 abacax1[6]:=" " else abacax1[6]:=acampos[npos6,2] endif if npos7=0 abacax1[7]:=" " else abacax1[7]:=acampos[npos7,2] endif if npos8=0 abacax1[8]:=" " else abacax1[8]:=acampos[npos8,2] endif if npos9=0 abacax1[9]:=" " else abacax1[9]:=acampos[npos9,2] endif if npos10=0 abacax1[10]:=" " else abacax1[10]:=acampos[npos10,2] endif if npos11=0 abacax1[11]:=" " else abacax1[11]:=acampos[npos11,2] endif if npos12=0 abacax1[12]:=" " else abacax1[12]:=acampos[npos12,2] endif if npos13=0 abacax1[13]:=" " else abacax1[13]:=acampos[npos13,2] endif if npos14=0 abacax1[14]:=" " else abacax1[14]:=acampos[npos14,2] endif if npos15=0 abacax1[15]:=" " else abacax1[15]:=acampos[npos15,2] endif if npos16=0 abacax1[16]:=" " else abacax1[16]:=acampos[npos16,2] endif if npos17=0 abacax1[17]:=" " else abacax1[17]:=acampos[npos17,2] endif if npos18=0 abacax1[18]:=" " else abacax1[18]:=acampos[npos18,2] endif if npos19=0 abacax1[19]:=" " else abacax1[19]:=acampos[npos19,2] endif if npos20=0 abacax1[20]:=" " else abacax1[20]:=acampos[npos20,2] endif if npos21=0 abacax1[21]:=" " else abacax1[21]:=acampos[npos21,2] endif if npos22=0 abacax1[22]:=" " else abacax1[22]:=acampos[npos22,2] endif if npos23=0 abacax1[23]:=" " else abacax1[23]:=acampos[npos23,2] endif if npos24=0 abacax1[24]:=" " else abacax1[24]:=acampos[npos24,2] endif if npos25=0 abacax1[25]:=" " else abacax1[25]:=acampos[npos25,2] endif if npos26=0 abacax1[26]:=" " else abacax1[26]:=acampos[npos26,2] endif if npos27=0 abacax1[27]:=" " else abacax1[27]:=acampos[npos27,2] endif if npos28=0 abacax1[28]:=" " else abacax1[28]:=acampos[npos28,2] endif if npos29=0 abacax1[29]:=" " else abacax1[29]:=acampos[npos29,2] endif if npos30=0 abacax1[30]:=" " else abacax1[30]:=acampos[npos30,2] endif if npos31=0 abacax1[31]:=" " else abacax1[31]:=acampos[npos31,2] endif if npos32=0 abacax1[32]:=" " else abacax1[32]:=acampos[npos32,2] endif if npos33=0 abacax1[33]:=" " else abacax1[33]:=acampos[npos33,2] endif if npos34=0 abacax1[34]:=" " else abacax1[34]:=acampos[npos34,2] endif if npos35=0 abacax1[35]:=" " else abacax1[35]:=acampos[npos35,2] endif if npos36=0 abacax1[36]:=" " else abacax1[36]:=acampos[npos36,2] endif if npos38=0 abacax1[38]:=" " else abacax1[38]:=acampos[npos38,2] endif select nfe1 append blank if ! neterr() replace nfe1->f_cnpj with upper(tiraacento(abacax1[1])) replace nfe1->f_nome with upper(tiraacento(abacax1[2])) replace nfe1->f_end with upper(tiraacento(abacax1[3])) replace nfe1->f_no with upper(tiraacento(abacax1[4])) replace nfe1->f_bairro with upper(tiraacento(abacax1[5])) replace nfe1->f_cid with upper(tiraacento(abacax1[7])) replace nfe1->f_muni with upper(tiraacento(abacax1[7])) replace nfe1->f_estado with upper(tiraacento(abacax1[8])) replace nfe1->f_cep with abacax1[9] replace nfe1->f_tele with abacax1[10] replace nfe1->f_inscrica with abacax1[11] replace nfe1->numero with abacax1[12] replace nfe1->dt_emiss with abacax1[13] replace nfe1->bse_calc with abacax1[14] replace nfe1->icms with abacax1[15] replace nfe1->bse_icmst with abacax1[16] replace nfe1->icmssubt with abacax1[17] replace nfe1->ipi with abacax1[18] replace nfe1->vlr_cont with abacax1[19] replace nfe1->frete with abacax1[20] replace nfe1->seguro with abacax1[21] replace nfe1->outrasdesp with abacax1[22] replace nfe1->serie with abacax1[23] replace nfe1->modfrete with abacax1[24] replace nfe1->cnpj_t with abacax1[25] replace nfe1->razao_t with abacax1[26] replace nfe1->ie_t with abacax1[27] replace nfe1->ender_t with abacax1[28] replace nfe1->munic_t with abacax1[29] replace nfe1->ufp_t with abacax1[30] replace nfe1->placa_t with abacax1[31] replace nfe1->ufe_t with abacax1[32] replace nfe1->qtda with abacax1[33] replace nfe1->volume with abacax1[34] replace nfe1->pesol with abacax1[35] replace nfe1->pesob with abacax1[36] replace nfe1->desc with abacax1[38] commit Unlock //?? endif ? [O que esta errado Ailton?] Browse() nSegProd1:=-1 nItemNfe:=1 While nSegProd1#0 nsegprod1:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/prod/cprod",nsegprod1+1) nsegprod2:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/prod/xprod",nsegprod2+1) nsegprod3:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/prod/ncm",nsegprod3+1) nsegprod4:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/prod/cfop",nsegprod4+1) if PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/prod/utrib",nsegprod5+1)!=0 nsegprod5:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/prod/utrib",nsegprod5+1) else nsegprod5:=PegaPosicao(aCampos,"/nfe/infnfe/det/prod/ucom",nsegprod5+1) endif nsegprod6:=PegaPosicao(aCampos, "/nfeproc/nfe/infnfe/det/prod/qtrib",nsegprod6+1) nsegprod7:=PegaPosicao(aCampos, "/nfeproc/nfe/infnfe/det/prod/vuntrib",nsegprod7+1) nsegprod8:=PegaPosicao(aCampos, "/nfeproc/nfe/infnfe/det/prod/vprod",nsegprod8+1) nsegprod9:=PegaPosicao(aCampos, "/nfeproc/nfe/infnfe/total/icmstot/vicms",nsegprod9+1) nsegprod10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms00/picms",nsegprod10+1) nsegprod11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms00/vbc",nsegprod11+1) nsegprod12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms00/pmvast",nsegprod12+1) nsegprod13:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms00/picmsst",nsegprod13+1) nsegprod14:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/ipi/ipitrib/pipi",nsegprod14+1) // nsegprod15:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms00/cst",nsegprod15+1) nsegprod10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms10/picms",nsegprod10+1) nsegprod11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms10/vbc",nsegprod11+1) nsegprod12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms10/pmvast",nsegprod12+1) nsegprod13:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms10/picmsst",nsegprod13+1) nsegprod14:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/ipi/ipitrib/pipi",nsegprod14+1) // nsegprod15:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms10/cst",nsegprod15+1) nsegprod10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms20/picms",nsegprod10+1) nsegprod11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms20/vbc",nsegprod11+1) nsegprod12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms20/pmvast",nsegprod12+1) nsegprod13:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms20/picmsst",nsegprod13+1) nsegprod14:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/ipi/ipitrib/pipi",nsegprod14+1) // nsegprod15:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms20/cst",nsegprod15+1) nsegprod10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms40/picms",nsegprod10+1) nsegprod11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms40/vbc",nsegprod11+1) nsegprod12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms40/pmvast",nsegprod12+1) nsegprod13:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms40/picmsst",nsegprod13+1) nsegprod14:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/ipi/ipitrib/pipi",nsegprod14+1) // nsegprod15:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms40/cst",nsegprod15+1) nsegprod10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms60/picms",nsegprod10+1) nsegprod11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms60/vbc",nsegprod11+1) nsegprod12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms60/pmvast",nsegprod12+1) nsegprod13:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms60/picmsst",nsegprod13+1) nsegprod14:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/ipi/ipitrib/pipi",nsegprod14+1) // nsegprod15:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms60/cst",nsegprod15+1) nsegprod10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms70/picms",nsegprod10+1) nsegprod11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms70/vbc",nsegprod11+1) nsegprod12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms70/pmvast",nsegprod12+1) nsegprod13:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms70/picmsst",nsegprod13+1) nsegprod14:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/ipi/ipitrib/pipi",nsegprod14+1) // nsegprod15:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms70/cst",nsegprod15+1) nsegprod10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms100/picms",nsegprod10+1) nsegprod11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms100/vbc",nsegprod11+1) nsegprod12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms100/pmvast",nsegprod12+1) nsegprod13:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms100/picmsst",nsegprod13+1) nsegprod14:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/ipi/ipitrib/pipi",nsegprod14+1) // nsegprod15:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms100/cst",nsegprod15+1) nsegprod10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms110/picms",nsegprod10+1) nsegprod11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms110/vbc",nsegprod11+1) nsegprod12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms110/pmvast",nsegprod12+1) nsegprod13:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms110/picmsst",nsegprod13+1) nsegprod14:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/ipi/ipitrib/pipi",nsegprod14+1) // nsegprod15:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms110/cst",nsegprod15+1) nsegprod10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms120/picms",nsegprod10+1) nsegprod11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms120/vbc",nsegprod11+1) nsegprod12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms120/pmvast",nsegprod12+1) nsegprod13:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms120/picmsst",nsegprod13+1) nsegprod14:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/ipi/ipitrib/pipi",nsegprod14+1) // nsegprod15:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms120/cst",nsegprod15+1) nsegprod10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms170/picms",nsegprod10+1) nsegprod11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms170/vbc",nsegprod11+1) nsegprod12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms170/pmvast",nsegprod12+1) nsegprod13:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms170/picmsst",nsegprod13+1) nsegprod14:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/ipi/ipitrib/pipi",nsegprod14+1) // nsegprod15:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms170/cst",nsegprod15+1) nsegprod10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms200/picms",nsegprod10+1) nsegprod11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms200/vbc",nsegprod11+1) nsegprod12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms200/pmvast",nsegprod12+1) nsegprod13:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms200/picmsst",nsegprod13+1) nsegprod14:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/ipi/ipitrib/pipi",nsegprod14+1) // nsegprod15:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms200/cst",nsegprod15+1) nsegprod10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms210/picms",nsegprod10+1) nsegprod11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms210/vbc",nsegprod11+1) nsegprod12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms210/pmvast",nsegprod12+1) nsegprod13:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms210/picmsst",nsegprod13+1) nsegprod14:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/ipi/ipitrib/pipi",nsegprod14+1) // nsegprod15:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms210/cst",nsegprod15+1) nsegprod10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms220/picms",nsegprod10+1) nsegprod11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms220/vbc",nsegprod11+1) nsegprod12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms220/pmvast",nsegprod12+1) nsegprod13:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms220/picmsst",nsegprod13+1) nsegprod14:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/ipi/ipitrib/pipi",nsegprod14+1) // nsegprod15:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms220/cst",nsegprod15+1) nsegprod10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms270/picms",nsegprod10+1) nsegprod11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms270/vbc",nsegprod11+1) nsegprod12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms270/pmvast",nsegprod12+1) nsegprod13:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms270/picmsst",nsegprod13+1) nsegprod14:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/ipi/ipitrib/pipi",nsegprod14+1) // nsegprod15:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms270/cst",nsegprod15+1) // nsegprod17:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/prod/vdesc",nsegprod17+1) if nsegprod1=0 abacax2[1]:=" " else abacax2[1]:=acampos[nsegprod1,2] endif if nsegprod2=0 abacax2[2]:=" " else abacax2[2]:=acampos[nsegprod2,2] endif if nsegprod3=0 abacax2[3]:=" " else abacax2[3]:=acampos[nsegprod3,2] endif if nsegprod4=0 abacax2[4]:=" " //cfop endif if ! nsegprod4=0 abacax2[4]:=acampos[nsegprod4,2] if abacax2[4]="5405" abacax2[4]="5403" else abacax2[4]:=acampos[nsegprod4,2] endif endif if nsegprod5=0 abacax2[5]:="UN" endif if ! nsegprod5=0 abacax2[5]:=upper(tiraacento(acampos[nsegprod5,2])) if substr(abacax2[5],1,1)="P" abacax2[5]="PC" endif endif if nsegprod6=0 abacax2[6]:=" " else abacax2[6]:=acampos[nsegprod6,2] endif if nsegprod7=0 abacax2[7]:=" " else abacax2[7]:=acampos[nsegprod7,2] endif if nsegprod8=0 abacax2[8]:=" " else abacax2[8]:=acampos[nsegprod8,2] endif if nsegprod9=0 abacax2[9]:=" " else abacax2[9]:=acampos[nsegprod9,2] endif if nsegprod10=0 .or. acampos[nsegprod10,2]="0.00" abacax2[10]:="99" else abacax2[10]:=acampos[nsegprod10,2] endif if nsegprod11=0 abacax2[11]:=" " else abacax2[11]:=acampos[nsegprod11,2] endif if nsegprod12=0 abacax2[12]:=" " //cst else abacax2[12]:=acampos[nsegprod12,2] endif if nsegprod13=0 abacax2[13]:=" " else abacax2[13]:=acampos[nsegprod13,2] endif if nsegprod14=0 abacax2[14]:=" " else abacax2[14]:=acampos[nsegprod14,2] endif if nsegprod5=0 abacax2[5]:="UN" endif if ! nsegprod5=0 abacax2[5]:=upper(tiraacento(acampos[nsegprod5,2])) if substr(abacax2[5],1,1)="P" abacax2[5]="PC" endif endif // if nsegprod17=0 // abacax2[17]:=" " // else // abacax2[17]:=acampos[nsegprod17,2] // endif If nSegProd1!=0 // aqui mostra como esta pegando corretamente // "Item da Nota",nItemNfe,acampos[nsegprod1,2], aCampos[nsegprod2,2] nItemNfe++ select nfe2 append blank if ! neterr() replace nfe2->numero with abacax1[12] replace nfe2->prod with abacax2[1] replace nfe2->pdesc with upper(tiraacento(abacax2[2])) replace nfe2->nbm with abacax2[3] replace nfe2->cfop with abacax2[4] replace nfe2->unid with upper(tiraacento(abacax2[5])) replace nfe2->qtde with abacax2[6] replace nfe2->vl_int with abacax2[7] replace nfe2->vl_tot with abacax2[8] endif if abacax2[10] <> " " aa=" " cc=" " bb=0 aa = abacax2[11] cc = abacax2[10] bb= val(aa) * val(cc) / 100 replace nfe2->vl_icms with str(bb,10,2) replace nfe2->peicms with abacax2[10] //acampos[nsegprod9,2] endif replace nfe2->aicms with abacax2[10] replace nfe2->peicms with abacax2[10] //acampos[nsegprod9,2] if val(abacax2[11])=0 replace nfe2->vl_base with abacax2[8] else replace nfe2->vl_base with abacax2[11] endif replace nfe2->aipi with abacax2[14] replace nfe2->cst with abacax2[15] replace nfe2->tdesc with abacax2[17] jj=" " jj=abacax2[12] if len(jj) > 5 replace nfe2->aliqiva with " " else replace nfe2->aliqiva with abacax2[12] endif ee=" " ee=abacax2[13] if len(ee) > 5 replace nfe2->aliqsubt with " " else replace nfe2->aliqsubt with abacax2[13] endif commit Unlock //?? Endif SysRefresh() Enddo ? [O que esta errado 2, Ailton?] Browse() close databases return nil Function PegaPosicao(aCampos,cTag,nPosInicial) Local nPos:=0,nPos1,f Default nPosInicial:=1 nPosInicial:=If(nPosInicial=0,1,nPosInicial) cTag:=Upper(cTag) If Upper("/nfeproc/") $ Upper(cTag) cTag:=StrTran(cTag,"/NFEPROC","") Endif nPosInicial:=Ascan(aCampos,{|aCampos| cTag $ StrTran(aCampos[1],"/NFEPROC","") },nPosInicial) If nPosInicial!=0 For f:=nPosInicial to Len(aCampos) nPos1:= Rat("/",cTag) If Substr( StrTran(aCampos[f,1],"/NFEPROC",""),nPos1+1) $ Substr(cTag,nPos1+1) .and. cTag $ StrTran(aCampos[f,1],"/NFEPROC","") nPos:=f Exit Endif Next f Endif Return(nPos) Function CarregaXml(cXmlFile,cChaveAcesso) Local oXmlNode,nPos,cAtributos:="",oXmlDoc Local aFieldsValue:={} cChaveAcesso:="" cXmlFile:=MemoRead(cXmlFile) oXmldoc:=TXmlDocument():New(cXmlFile,HBXML_STYLE_NOESCAPE ) oxmlNode := oXmlDoc:oRoot:oChild While oXmlNode != NIL if oXmlNode:cName!=Nil If Upper(oXmlNode:cName)=="INFNFE".and.Empty(cChaveAcesso) cChaveAcesso:=ValtoPrg(oXmlNode:aAttributes) nPos:=At("NFe",cChaveAcesso) cChaveAcesso:=Substr(cChaveAcesso,nPos+3,44) Endif If !Empty(oXmlNode:cData) Aadd(aFieldsValue,{Upper(Alltrim(oxmlNode:Path())),Alltrim(oXmlNode:cData),cAtributos}) else If Upper(oXmlNode:cName)=="DET" cAtributos:=ValtoPrg(ValtoPrg(oXmlNode:aAttributes)) ElseIf Upper(oXmlNode:cName)=="TOTAL" cAtributos:="" Endif Endif Endif oXmlNode:=oXmlNode:NextInTree() SysRefresh() Enddo Return(aFieldsValue) function crianfe BRQ45:="NFE1.DBF" DbCreate("&brq45",{ { "F_CNPJ" ,"C", 14, 0 },; { "F_NOME" ,"C", 40, 0 },; { "F_INSCRICA" ,"C", 18, 0 },; { "F_ESTADO" ,"C", 2, 0 },; { "F_NO" ,"C", 5, 0 },; { "F_END" ,"C", 40, 0 },; { "F_CID" ,"C", 30, 0 },; { "F_MUNI" ,"C", 30, 0 },; { "F_TELE" ,"C", 15, 0 },; { "F_CEP" ,"C", 8, 0 },; { "F_BAIRRO" ,"C", 30, 0 },; { "F_COMPLE" ,"C", 20, 0 },; { "DT_EMISS" ,"C", 20, 0 },; { "SERIE" ,"C", 3, 0 },; { "MODFRETE" ,"C", 1, 0 },; { "VLR_CONT" ,"C", 12, 0 },; { "BSE_CALC" ,"C", 12, 0 },; { "ICMS" ,"C", 12, 0 },; { "BSE_ICMST" ,"C", 12, 0 },; { "ICMSSUBT" ,"C", 12, 0 },; { "FRETE" ,"C", 12, 0 },; { "SEGURO" ,"C", 12, 0 },; { "OUTRASDESP" ,"C", 12, 0 },; { "IPI" ,"C", 12, 0 },; { "CFOP" ,"C", 04, 0 },; { "PEICMS" ,"C", 6, 0 },; { "RAZAO_T" ,"C", 50, 0 },; { "ENDER_T" ,"C", 50, 0 },; { "MUNIC_T" ,"C", 30, 0 },; { "PLACA_T" ,"C", 10, 0 },; { "UFP_T" ,"C", 2, 0 },; { "CNPJ_T" ,"C", 14, 0 },; { "UFE_T" ,"C", 2, 0 },; { "VOLUME" ,"C", 20, 0 },; { "PESOB" ,"C", 12, 0 },; { "PESOL" ,"C", 12, 0 },; { "NUMERO" ,"C", 10, 0 },; { "QTDA " ,"C", 10, 0 },; { "DESC " ,"C", 10, 0 },; { "VL_ICMS" ,"C", 10, 0 },; { "AICMS " ,"C", 6, 0 },; { "AIPI " ,"C", 6, 0 },; { "IE_T" ,"C", 18, 0 }}) BRQ46:="NFE2.DBF" DbCreate("&brq46",{ { "NUMERO" ,"C", 10, 0 },; { "PROD" ,"C", 13, 0 },; { "PDESC" ,"C", 30, 0 },; { "NBM" ,"C", 10, 0 },; { "CFOP" ,"C", 04, 0 },; { "UNID" ,"C", 04, 0 },; { "QTDE" ,"C", 12, 0 },; { "VL_INT" ,"C", 12, 0 },; { "VL_TOT" ,"C", 12, 0 },; { "VL_BASE" ,"C", 12, 0 },; { "VL_ICMS" ,"C", 12, 0 },; { "AICMS " ,"C", 6, 0 },; { "AIPI " ,"C", 6, 0 },; { "PEICMS" ,"C", 6, 0 },; { "ALIQIVA" ,"C", 6, 0 },; { "ALIQSUBT" ,"C", 6, 0 },; { "TDESC" ,"C", 10, 0 },; { "CST" ,"C", 10, 0 }}) close databases RETURN .T. FUNCTION TiraAcento(cText) // tira acentuacao cText := StrTran(cText,"\","/") cText := StrTran(cText,"Ã","A") cText := StrTran(cText,"Â","A") cText := StrTran(cText,"Á","A") cText := StrTran(cText,"Ä","A") cText := StrTran(cText,"À","A") cText := StrTran(cText,"ã","a") cText := StrTran(cText,"â","a") cText := StrTran(cText,"á","a") cText := StrTran(cText,"ä","a") cText := StrTran(cText,"à","a") cText := StrTran(cText,"É","E") cText := StrTran(cText,"Ê","E") cText := StrTran(cText,"Ë","E") cText := StrTran(cText,"È","E") cText := StrTran(cText,"é","e") cText := StrTran(cText,"ê","e") cText := StrTran(cText,"ë","e") cText := StrTran(cText,"è","e") cText := StrTran(cText,"Í","I") cText := StrTran(cText,"Î","I") cText := StrTran(cText,"Ï","I") cText := StrTran(cText,"Ì","I") cText := StrTran(cText,"í","i") cText := StrTran(cText,"î","i") cText := StrTran(cText,"ï","i") cText := StrTran(cText,"ì","i") cText := StrTran(cText,"Ó","O") cText := StrTran(cText,"Õ","O") cText := StrTran(cText,"Ô","O") cText := StrTran(cText,"ó","o") cText := StrTran(cText,"Ö","O") cText := StrTran(cText,"Ò","O") cText := StrTran(cText,"õ","o") cText := StrTran(cText,"ô","o") cText := StrTran(cText,"ó","o") cText := StrTran(cText,"ö","o") cText := StrTran(cText,"ò","o") cText := StrTran(cText,"Û","U") cText := StrTran(cText,"Ú","U") cText := StrTran(cText,"Ü","U") cText := StrTran(cText,"Ù","U") cText := StrTran(cText,"û","u") cText := StrTran(cText,"ú","u") cText := StrTran(cText,"ü","u") cText := StrTran(cText,"ù","u") cText := StrTran(cText,"Ç","C") cText := StrTran(cText,"ç","c") cText := StrTran(cText,"£","E") cText := StrTran(cText,"&","E") cText := StrTran(cText,"<",".") cText := StrTran(cText,">",".") cText := StrTran(cText,"ª","a") cText := StrTran(cText,"º","o") cText := StrTran(cText,"´"," ") cText := StrTran(cText,"²","2") cText := StrTran(cText,"³"," ") cText := StrTran(cText,"¹","1") arINICIO:=32 arFIM :=136 xRetText:="" For IcText=1 to len(cText) LetracText:=subs(cText,IcText,1) if asc(LetracText)<arINICIO .or. asc(LetracText)>arFIM LetracText:=" " end xRetText+=LetracText next RETURN(xRetText) // FIM DO PROGRAMA Quote Link to comment Share on other sites More sharing options...
syspel Posted August 4, 2015 Author Report Share Posted August 4, 2015 bom dia desde ja obrigado este endereco dentro do xml pega informacao que nao tem nada a haver picms,vbc,tdesc,aipi,cst quando existe uma nota com os items no 20 item de 18%,e os demais em branco,ou zeras ele pega tudo zerados ou tudo 18% icms dentro do xml nao existe a vbc ele nao retorna zero aqueles xml da cola cola esta com exmplos fhw14.04 xh 123 ,dbf,sql carlos syspel Quote Link to comment Share on other sites More sharing options...
kapiaba Posted August 4, 2015 Report Share Posted August 4, 2015 Primeiro, baixe o XML NOTEPAD da Microsoft, para você ver as TAGS do arquivo XML e poder domina-las via programação. http://fivewin.com.br/index.php?/topic/23814-xml-notepad-2007/ Quote Link to comment Share on other sites More sharing options...
kapiaba Posted August 4, 2015 Report Share Posted August 4, 2015 este endereco dentro do xml pega informacao que nao tem nada a haver <CNPJ>02699907000116</CNPJ> <xNome>EMPORIO DA LUZ LUSTRES LTDA. ME</xNome> <xFant>EMPORIO DA LUZ</xFant> <enderEmit> <xLgr>RUA LUIS DE ANDRADE</xLgr> <nro>49</nro> <xBairro>VILA PEREIRA BARRETO</xBairro> <cMun>3550308</cMun> <xMun>SAO PAULO</xMun> <UF>SP</UF> <CEP>02920000</CEP> <cPais>1058</cPais> <xPais>BRASIL</xPais> <fone>1139780984</fone> </enderEmit> Você se refere a TAG </enderEmit> ?? Seja claro ao explicar. De o máximo de riqueza nos detalhes. Vamos por partes. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted August 4, 2015 Report Share Posted August 4, 2015 VBC, você se refere a esta TAG? <total> <ICMSTot> <vBC>0.00</vBC> <vICMS>0.00</vICMS> <vBCST>12394.44</vBCST> <vST>670.84</vST> <vProd>8667.44</vProd> <vFrete>0.00</vFrete> <vSeg>0.00</vSeg> <vDesc>0.00</vDesc> <vII>0.00</vII> <vIPI>0.00</vIPI> <vPIS>0.00</vPIS> <vCOFINS>0.00</vCOFINS> <vOutro>0.00</vOutro> <vNF>9338.28</vNF> </ICMSTot> </total> Quote Link to comment Share on other sites More sharing options...
kapiaba Posted August 4, 2015 Report Share Posted August 4, 2015 // VBC - siga a logica, se e que eu entendi. // nPos14:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vbc") if npos14=0 abacax1[14]:=" " else abacax1[14]:=acampos[npos14,2] // VBC endif ? abacax1[14], acampos[npos14,2] IF acampos[npos14,2] == 0.00 replace nfe1->bse_calc with 0.00 ] // VBC? ELSE // maior que 0.00 replace nfe1->bse_calc with abacax1[14] // VBC? ENDIF Quote Link to comment Share on other sites More sharing options...
kapiaba Posted August 7, 2015 Report Share Posted August 7, 2015 Amarrando os tópicos, o autor do tópico duplicou. http://fivewin.com.br/index.php?/topic/24166-ref-xml/ 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.