[RESOLVIDO] Calcular campos antes de SALVAR

Olá,

Tenho um formulário de múltiplo registros aonde cada linha tem o campo VALORPIS(numerico).
O meu problema é o seguinte tenho um valor que é passado via link ex: 10.000,00

oq eu precisaria seria o seguinte quando o usuário entrar no formulario ele vai preencher os campos VALORPIS porém quando ele for clicar em enviar selecionados o mesmo deve fazer uma validação se a soma de todos os campos VALORPIS é igual a 10.000,00 caso for maior oi menor aparecer uma msg para o suário.

Já tentei no onValidate e onBeforeUpdateAll porém não teve o resultado esperado.

no meu onValidate está:
[valorPisCorrecao] = [valorPisCorrecao]+{VALORPIS};

no onBeforeUpdateAll:
if ([valorPisCorrecao] < [valorTotalPis] || [valorPisCorrecao] > [valorTotalPis])
{
sc_error_message(“A soma dos valores informados para o Pis tem de ser igual a [valorTotalPis]”);
}
[valorPisCorrecao] = 0;

Olá,

Dessa forma não vai funcionar mesmo, pois o campo {VALORPIS} só vai conter o conteúdo do registro corrente. Pra funcionar, tens que fazer um SELECT SUM(valorpis) no evento OnAfterInsert (ou no OnBeforeUpdate, depende do teu caso) e guardar essa soma em uma variável. Daí você faz o teu IF, que aliás, pode ficar melhor, fazendo assim:

if ([valorPisCorrecao] <> [valorTotalPis])
{
sc_error_message(“A soma dos valores informados para o Pis tem de ser igual a [valorTotalPis]”);
}

Espero que te ajude.

Olá Kleyber,

Cara obrigado pela dica, resolveu meu problema.

Fiz da seguinte forma:

no onAfterUpdateAll:
$sT209 = “SELECT
SUM(T209_Valor_Pis_Correcao),
SUM(T209_Valor_Cofins_Correcao)
FROM T209
where
T209_Data = ‘[Data_Filtro]’”;
sc_lookup(T209,$sT209);
if(!empty({T209})){
$valorPis = {T209[0][0]};
$valorCofins = {T209[0][1]};
}

if($valorPis <> [valorTotalPis])
{
sc_exec_sql(“UPDATE T209
SET T209_Valor_Pis_Correcao = 0
WHERE T209_Data = ‘[Data_Filtro]’”);
sc_error_message(“A soma dos valores informados para o Pis tem de ser igual a [valorTotalPis]”);
}

Obrigado.