Imprimi Página | Fechar janela

Funcoes Advpl

Impresso de: Helpfacil - Portal do conhecimento
Nome do Forum: ADVPL
Descrição do Forum: Dúvidas sobre a programação em ADVPL
URL:http://www.helpfacil.com.br/display_topic_threads.asp?ForumID=1&TopicID=43025
Data da Impressão: terça-feira, 23 de abril de 2024 at 21:55


Topico: Funcoes Advpl

Postado por: WANDERSONW
Assunto: Funcoes Advpl
Data Postagem: terça-feira, 17 de dezembro de 2019 at 09:23

Bom dia Pessoal,

Estou precisando converter uma expressão em excel em funcao advpl, sera que alguém pode me ajudar.


Função Excel
=SE(OU((SOMA(C24:W24))-(TRUNCAR(SOMA(C24:W24)/11;0)*11)=0;(SOMA(C24:W24))-(TRUNCAR(SOMA(C24:W24)/11;0)*11)=1);0;(11-((SOMA(C24:W24))-(TRUNCAR(SOMA(C24:W24)/11;0)*11))))

Esta função é para calculo do digito verificador do banco Sicoob

A valor que a planilha esta gerando na soma do C24:W24 esta idêntica a uma função que fiz para somar os valores. cPriForm quem recebe esta somatório


Agradeço se alguém puder ajudar.



Respostas:

Postado Por: EMERSON.EN
Data Postagem: quarta-feira, 18 de dezembro de 2019 at 13:45

se você passar as informações separadas:

user function SicDV( coop, cliente, numero )
local n, nI, nResultado
local nSoma := 0
local aNumNumero := array(21)
     aFill(aNumNumero, 0)
     // preenche a cooperativa
     nI := 4
     for n := len(coop) to 1 step -1
          aNumNumero[nI] := val(substr(coop,n,1))
          nI--
     next
     // preenche o cliente
     nI := 14
     for n := len(cliente) to 1 step -1
          aNumNumero[nI] := val(substr(cliente,n,1))
          nI--
     next
     // preenche o numero
     nI := 21
     for n := len(numero) to 1 step -1
          aNumNumero[nI] := val(substr(numero,n,1))
          nI--
     next
     // soma os dígitos passados
     aEval(aNumNumero, {|x| nSoma += x})
     // efetua o cálculo para obtenção do dígito verificador
     nResultado := nSoma - (int(nSoma / 11) * 11)
return if(nResultado <= 1, 0, (11 - nResultado))

sintaxe:
u_SicDV(‘3249‘, ‘0000073415‘, ‘1000251‘)



se você passar as informações concatenadas:
user function SicDV2( numero )
local n, nI, nResultado
local nSoma := 0
local aNumNumero := array(21)
     // preenche todos os elementos do array com zeros
     aFill(aNumNumero, 0)
     // preenche o array com o número passado no parâmetro
     nI := 21
     for n := len(numero) to 1 step -1
          aNumNumero[nI] := val(substr(numero,n,1))
          nI--
     next
     // soma os dígitos passados
     aEval(aNumNumero, {|x| nSoma += x})
     // efetua o cálculo para obtenção do dígito verificador
     nResultado := nSoma - (int(nSoma / 11) * 11)
return if(nResultado <= 1, 0, (11 - nResultado))

sintaxe:
u_SicDV2(‘324900000734151000251‘)



Postado Por: WANDERSONW
Data Postagem: quarta-feira, 8 de janeiro de 2020 at 10:18

Bom Dia Emerson.

Muito Obrigado pela ajuda.




Imprimir Página | Fechar Janela