× Linguagem de Programação ADVPL

Perguntas Aglutinar itens de lotes diferentes no XML

Mais
8 anos 2 meses atrás #30142 por Bebeto
Olá pessoal!!!

Alguém conseguiu essa função para aglutinar os itens na SD2 ?

Em que rotina deve ser implementada, pelo NFESEFAZ ou em alguma rotina na gravação da SD2 ?

Se alguém tiver a função e puder compartilhar, agradeço.

Abraço!

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 3 semanas atrás #30398 por icaroq
Vitor, pode disponibilizar o fonte de aglutinação dos itens e impostos?

Por favor Acessar ou Registrar para participar da conversa.

Mais
7 anos 3 meses atrás #31715 por marcelocosta_1979
Bom dia,,

Estou com essa necessidade aqui também, se puder disponibilizar o fonte para que eu possa dar uma olhada agradeço.

Por favor Acessar ou Registrar para participar da conversa.

Mais
7 anos 3 meses atrás #31716 por admin
Brother veja se ajuda, peguei em outro forum:

1) Criar o vetor
Local aProdAgrup := {}, logo abaixo da criação do vetor Aprod e substituir em todas as chamadas o Aprod pelo AprodAgrup.
2) Acima do For nX := 1 To Len(aProdAgrup) chamar a função com a seguinte sintaxe:

u_fAgrupaItens(aProd,aProdAgrup,aICMS,aICMSAgrup,aIPI,aIPIAgrup,aPIS,aPISAgrup,aCOFINS,aCOFINSAgrup,cTipo)

Pronto !!!

*************************
User Function fAgrupaItens(aProd,aProdAgrup,aICMS,aICMSAgrup,aIPI,aIPIAgrup,aPIS,aPISAgrup,aCOFINS,aCOFINSAgrup,cTipo)
*************************
Local nQuant:=nTotal:=nQuant:=nValFre:=nSeguro:=nDesconto:=nBCICMS:=0

Local nVTICMS:=nQTICMS:=nBCIPI:=0 // Base Calculo IPI [6]
Local nVTIPI,nQTIPI:=0 // QTrib IPI [7]

Local nBCPIS:=0 // Base Calculo PIS [2]
Local nVTPIS:=0 // Vl Trib PIS [4]
Local nQTPIS:=0 // QTrib PIS [5]

Local nBCCOFINS:=0 // Base Calculo COFINS [2]
Local nVTCOFINS:=0 // Vl Trib COFINS [4]
Local nQTCOFINS:=0 // QTrib COFINS [5]

Local wX:=1


// ordem produto+Unid Med + Preco + CFOP

if cTipo="1" // nf saida
ASort(aProd,,,{|a,b| substr(a[2],1,4)+a[20]+str(a[21],15,2)+a[22] < substr(b[2],1,4)+b[20]+str(b[21],15,2)+b[22] })
endif

do while wX <= Len(aProd)
nQuant+=aProd[wX][9]
nTotal+=aProd[wX][10]
nQuant2+=aProd[wX][12]
nValFre+=aProd[wX][13]
nSeguro+=aProd[wX][14]
nDesconto+=aProd[wX][15]

if len(aICMS[1]) > 0
nBCICMS+=aICMS[aProd[wX][1]][5] // aProd[wX][1] = Item correspondente no aProd
nVTICMS+=aICMS[aProd[wX][1]][7]
nQTICMS+=aICMS[aProd[wX][1]][9]
endif
// 1 2 3 4 5 6 7 8 9 10
// ATail(aIPI) := {"","",0,"999",CD2->CD2_CST,CD2->CD2_BC,CD2->CD2_QTRIB,CD2->CD2_PAUTA,CD2->CD2_ALIQ,CD2->CD2_VLTRIB,CD2->CD2_MODBC,CD2->CD2_PREDBC}

// cString += '<vBC>' +ConvType(aIPIAgrup[06],15,2)+'</vBC>' // CD2->CD2_BC,
// cString += '<aliquota>'+ConvType(aIPIAgrup[09],5,2)+'</aliquota>' // CD2->CD2_ALIQ,
// cString += '<vlTrib>'+ConvType(aIPIAgrup[08],15,4)+'</vlTrib>' // CD2->CD2_PAUTA,
// cString += '<qTrib>'+ConvType(aIPIAgrup[07],16,4)+'</qTrib>' // CD2->CD2_QTRIB,
// cString += '<valor>'+ConvType(aIPIAgrup[10],15,2)+'</valor>' // CD2->CD2_VLTRIB,


if len(aIPI[1]) > 0
nBCIPI +=aIPI[aProd[wX][1]][6]
nVTIPI +=aIPI[aProd[wX][1]][10]
nQTIPI +=aIPI[aProd[wX][1]][7]
endif
if len(aPIS[1]) > 0
nBCPIS +=aPIS[aProd[wX][1]][2]
nVTPIS +=aPIS[aProd[wX][1]][4]
nQTPIS +=aPIS[aProd[wX][1]][5]
endif
if len(aCOFINS[1]) > 0
nBCCOFINS +=aCOFINS[aProd[wX][1]][2]
nVTCOFINS +=aCOFINS[aProd[wX][1]][4]
nQTCOFINS +=aCOFINS[aProd[wX][1]][5]
endif

// aProd[wX][19] == aProd[wX+1][19] .and.; B1_GRUPO,,alguns produtos estão em branco no arquivo,,então não pode participar


if (cTipo="1".and.aProd[wX][23]="PA" .and.wX < Len(aProd).and.;
subs(aProd[wX][2],1,4) == subs(aProd[wX+1][2],1,4).and.;
aProd[wX][20] == aProd[wX+1][20] .and.;
aProd[wX][21] == aProd[wX+1][21] .and.;
aProd[wX][22] == aProd[wX+1][22])
wX++
loop
endif

aadd(aProdAgrup,{Len(aProdAgrup)+1,iif(cTipo="1".and. SM0->M0_CODIGO="01",subs(aProd[wX][2],1,4),aProd[wX][2]),;
aProd[wX][3],aProd[wX][4],aProd[wX][5],aProd[wX][6],aProd[wX][7],;
aProd[wX][8],nQuant,nTotal,aProd[wX][11],nQuant2,nValFre,nSeguro,nDesconto,;
aProd[wX][16],aProd[wX][17],aProd[wX][18]})

if len(aICMS[1]) > 0
aadd(aICMSAgrup,{aICMS[wX][1],aICMS[wX][2],aICMS[wX][3],aICMS[wX][4],nBCICMS,aICMS[wX][6],nVTICMS,;
aICMS[wX][8],nQTICMS,aICMS[wX][10]})
else
aadd(aICMSAgrup,{})
endif

if len(aIPI[1]) > 0
aadd(aIPIAgrup,{aIPI[wX][1],aIPI[wX][2],aIPI[wX][3],aIPI[wX][4],aIPI[wX][5],nBCIPI,nQTIPI,;
aIPI[wX][8],aIPI[wX][9],nVTIPI,aIPI[wX][11],aIPI[wX][12]})
else
aadd(aIPIAgrup,{})
endif

if len(aPIS[1]) > 0
aadd(aPISAgrup,{aPIS[wX][1],nBCPIS,aPIS[wX][3],nVTPIS,nQTPIS,aPIS[wX][6]})
else
aadd(aPISAgrup,{})
endif

if len(aCOFINS[1]) > 0
aadd(aCOFINSAgrup,{aCOFINS[wX][1],nBCCOFINS,aCOFINS[wX][3],nVTCOFINS,nQTCOFINS,aCOFINS[wX][6]})
else
aadd(aCOFINSAgrup,{})
endif

nQuant:=0 ; nTotal:=0 ; nQuant2:=0 ; nValFre:=0 ; nSeguro:=0 ; nDesconto:=0
nBCICMS:=0 ; nVTICMS:=0 ; nQTICMS:=0
nBCIPI:=0 ; nVTIPI:=0 ; nQTIPI:=0
nBCPIS:=0 ; nVTPIS:=0 ; nQTPIS:=0
nBCCOFINS:=0 ; nVTCOFINS:=0 ; nQTCOFINS:=0

wX++
enddo

Por favor Acessar ou Registrar para participar da conversa.

Mais
4 anos 9 meses atrás #32740 por Julieta
Vitor, você conseguiu resolver isso? estou precisando disso tbm

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.111 segundos
Joomla templates by a4joomla