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} |
---|
Eventos de chamada do Ponto de Entrada | ExecBlock("FINGPSPRC",.F.,.F.,{cAliasSe2,aGpsIns,aGpsIna,lAchouPai}) |
---|