Árvore de páginas

Descrição

Criado ponto de entrada FINGPSPRC - Processamento da Guia da Previdência Social - GPS, que grupa a GPS por algum campo determinado.

Observações

No exemplo abaixo, irá agrupar pelo código da natureza (E2_NATUREZ).

Exemplos

#Include 'protheus.ch'

#define GPS_COD 1
#define GPS_LOJA 2
#define GPS_VALOR 4
#define GPS_ACHOU 5
#define GPS_CNPJ 6

User Function FINGPSPRC()

Local cAliasSe2 := paramixb[1]
Local aGpsIns := paramixb[2]
Local aGpsIna := paramixb[3]
Local lAchouPai := paramixb[4]

If (cAliasSe2)->E2_TIPO $ MVINSS+"/"+"INA" .Or.;
((cAliasSe2)->E2_FORNECE >= mv_par07 .And. (cAliasSe2)->E2_FORNECE <= mv_par08)
If !((cAliasSe2)->E2_TIPO $ MVPAGANT+"/INA")
// Nao achou o fornecedor, adiciona novo item no array
nX := Ascan( aGpsIns, { |e| e[1]+e[6]+e[7] == SA2->A2_COD + SA2->A2_CGC + (cAliasSe2)->E2_NATUREZ } )
If nX == 0
aadd(aGpsIns,{ SA2->A2_COD,;
SA2->A2_LOJA,;
SA2->A2_NOME,;
xMoeda(If( ! (cAliasSE2)->E2_TIPO $ MVINSS+"/"+"INA", (cAliasSe2)->E2_INSS, (cAliasSe2)->E2_VALOR),(cAliasSE2)->E2_MOEDA,1),;
lAchouPai,;
SA2->A2_CGC,;
(cAliasSe2)->E2_NATUREZ })
Else
// Senao soma o valor do INSS do fornecedor
aGpsIns[nX][GPS_VALOR] += xMoeda(If( ! (cAliasSE2)->E2_TIPO $ MVINSS+"/"+"INA", (cAliasSe2)->E2_INSS, (cAliasSe2)->E2_VALOR),(cAliasSE2)->E2_MOEDA,1)
EndIf
Else
nX := Ascan( aGpsIna, { |e| e[1]+e[6]+e[7] == SA2->A2_COD + SA2->A2_CGC + (cAliasSe2)->E2_NATUREZ } )
If nX == 0
aadd(aGpsIna,{ SA2->A2_COD,;
SA2->A2_LOJA,;
SA2->A2_NOME,;
xMoeda(If( ! (cAliasSE2)->E2_TIPO $ MVINSS+"/"+"INA", (cAliasSe2)->E2_INSS, (cAliasSe2)->E2_VALOR),(cAliasSE2)->E2_MOEDA,1),;
lAchouPai,;
SA2->A2_CGC,;
(cAliasSe2)->E2_NATUREZ })
Else
// Senao soma o valor do INSS do fornecedor
aGpsIna[nX][GPS_VALOR] += xMoeda(If( ! (cAliasSE2)->E2_TIPO $ MVINSS+"/"+"INA", (cAliasSe2)->E2_INSS, (cAliasSe2)->E2_VALOR),(cAliasSE2)->E2_MOEDA,1)
EndIf
EndIf
Endif

Return {aGpsIns, aGpsIna}

Idioma

Português(Brasil)

Versões

Microsiga_Protheus11 e Microsiga_Protheus12

Sistemas Operacionais Suportados

Todos

Compatível com as Bases de Dados

Todas

Parâmetros

cAliasSe2,aGpsIns,aGpsIna,lAchouPai

Retorno

Return {aGpsIns, aGpsIna}

Eventos de chamada do Ponto de Entrada

ExecBlock("FINGPSPRC",.F.,.F.,{cAliasSe2,aGpsIns,aGpsIna,lAchouPai})

Programa Fonte

FINRGPS.PRW

  • Sem rótulos