PERGUNTAS E RESPOSTAS
 
Bem Vindo, Visitante  Todos os Fórums
  ADVPL
Enviar para a impressoraImprimir  Enviar e-mail para um amigoEnviar Para um Amigo
Precisa estar Logado

Subject Assunto:
Funcoes Advpl
Versão:
12.1.25
Plataforma:
Microsoft
Complemento:
DB:
SQL Server
Complemento:
LinkedIn
Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário WANDERSONW WANDERSONW em 17/12/2019, 09:23 h
Local: SP  Registro: 01/07/2015  Postagens: 21
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.

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário EMERSON.EN EMERSON.EN em 18/12/2019, 13:45 h
Local: SP  Registro: 20/08/2010  Postagens: 502
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‘)

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário WANDERSONW WANDERSONW em 08/01/2020, 10:18 h
Local: SP  Registro: 01/07/2015  Postagens: 21
Bom Dia Emerson.

Muito Obrigado pela ajuda.

Para postar no Fórum você precisa efetuar o seu login ou se registrar

 Mudar para Fórum

 

 

 
 
   
Pagina Principal Shopping PROTHEUS Tire suas duvidas Vagas Microsiga em todo Brasil Aprofunde seus conhecimentos Noticias Online Fale Conosco Pagina Principal