Olá Pessoal,
Tenho uma consulta que é o extrato de conta-corrente da emrpesa:
Essa aplicação inicia por um filtro, onde se escolhe a conta e o período a ser pesquisado.
Tenho uma função, que alimenta uma variável no cabeçalho com o saldo anterioro.
[variavel] = saldoAnterior();
no onGroupByAll eu faço o cálculo da totalização {sum_valor_total} com o saldoAnterior();
A primeira consulta, tudo ocorre perfeitamente.
Se eu utilizo o botão retornar para voltar ao filtro e realizar uma nova consulta, o resultado está vindo acumulado com o resultado da consulta anterior.
Código do Evento onGruopByAll:
[code]$saldo = saldoAnterior();
if($saldo < 0){
{sum_valor_total} = {sum_valor_total} - ($saldo*(-1));
}else{
{sum_valor_total} = {sum_valor_total} + $saldo;
}[/code]
Se esse código for retirado, a variável não acumula o valor, porém vem sem o calculo do saldo anterior.
PS: Acredito que o erro não seja na função de saldo anterior, pois a variável do cabeçalho sempre trás o valor correto, mas de qualquer maneira, segue abaixo o código para análise.
function saldoAnterior();
[code]$where = whereFilter();
// consulta saldos de movimento de debito
$check_sql = “SELECT SUM(cfr.cfr_valor)”
. " FROM tb_contas_financeiro_rateio cfr"
. " INNER JOIN tb_contas_financeiro cfi ON cfi.cfi_id = cfr.cfi_id"
. " WHERE cfi.cfs_id = 2 AND (cfi.cfm_id = 1 OR (cfi.cfm_id = 3 AND cfi.cfm_id_transferencia = 1)) AND (".$where.")";
sc_lookup(rs, $check_sql);
if({rs[0][0]}){
$saldo_negativo = {rs[0][0]};
}else{
$saldo_negativo = 0;
}
// consulta saldos de movimentos de crédito
$check_sql = “SELECT SUM(cfr.cfr_valor)”
. " FROM tb_contas_financeiro_rateio cfr"
. " INNER JOIN tb_contas_financeiro cfi ON cfi.cfi_id = cfr.cfi_id"
. " WHERE cfi.cfs_id = 2 AND (cfi.cfm_id = 2 OR (cfi.cfm_id = 3 AND cfi.cfm_id_transferencia = 1)) AND (".$where.")";
sc_lookup(rs, $check_sql);
if({rs[0][0]}){
$saldo_positivo = {rs[0][0]};
}else{
$saldo_positivo = 0;
}
$saldo = $saldo_positivo - $saldo_negativo;
return $saldo;[/code]