Jump to content
Fivewin Brasil

ref xml


syspel

Recommended Posts

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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


Link to comment
Share on other sites


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


Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.
Link to comment
Share on other sites

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>

Link to comment
Share on other sites


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


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