[RESOLVIDO] - Como fazer para mostrar o saldo no rodapé

Olá pessoal,

Criei uma tabela no banco de dados para controle financeiro, nessa tabela tenho vários campos entre eles estão.
1- ID
2- Descrição da Despesa
3- Data da Despesa
4- Tipo
5- Valor

Vou me ater aos dois últimos onde são inseridos os seguintes dados:

“tipo” recebe as strings RF, RV, DF, DV, ou seja, receitas e despesas fixas e variáveis.

“valor” recebe os valores dessas receitas e despesas em Real $

Usando o scriptcase 8.1 fiz a quebra pelo campo “tipo” e somei esses valores que a título ilustrativo suponhamos que tenha sido:
soma de RF= 2.280,00 +
soma de RV= 771,00 +
soma de DF= 1.440,00 -
soma de DV= 89,19 -

Criei um campo extra em minha aplicação chamado saldo que deveria exibir no rodapé o seguinte valor: Saldo= 1.521,81 mas não tenho ideia como posso fazer isso, gostaria muito de poder contar com ajuda de vocês.

Ver imagem abaixo:

Na configuração de layout da aplicação Consulta, vai em Cabeçalho e rodapé.
Lá em rodapé, tem algumas variáveis de linha e coluna, utiliza o tipo “campo” e seleciona teu campo.
Lembre-se de marcar para exibir o rodapé.

Olá Ronyan, isso está feito conforme mostra a imagem, quero saber como “transformar” - “juntar” as Strings RF, RV… etc com os valores e efetuar a operação soma subtração apresentando o resultado.
Sei que é alguma coisa relacionado as macros e os eventos mas não sei como montar esse quebra cabeça.
Desde já muito obrigado.

  1. Primeiro
    Na configuração de layout da aplicação Consulta, vai em Cabeçalho e rodapé.
    Lá em rodapé, tem algumas variáveis de linha e coluna, utiliza o tipo “valor”
    Ai coloca: Saldo R$ [glo_Saldo]
    Lembre-se de marcar para exibir o rodapé.

  2. Segundo
    Depois você vai entrar na consulta em Eventos: onFooter

E digitar:
[glo_Saldo]={sum_valor}; // Pode usar o que tiver aqui de variáveis para fazer os cálculos.
[glo_Saldo]=sc_format_num([glo_Saldo], ‘.’, ‘,’, 2, ‘S’, ‘1’, ‘’);

Formatando um valor com 2 casas decimais, prenchendo com zeros.
sc_format_num({meu_valor}, ‘.’, ‘,’, 2, ‘S’, ‘1’, ‘’);
Valor de entrada = .9
Valor de saída = 0,90

Mais detalhes como funciona:
Abre o WebHELP do SC: pressiona CTRL+F e procura: Variáveis de Totalização
http://127.0.0.1:8081/scriptcase/doc/manual_mp/manual_mp.htm

Olá Jailton, agradeço imensamente a disposição para me ajudar tentei esse procedimento mas não funcionou, será que fiz algo errado?

Acontece que o campo “valor” hospeda tanto os créditos quanto os despesas com duas variáveis cada.

Para os créditos tenho as variáveis RF E RV e para os despesas tenho DF e DV como varável, então eu precisaria separar os valores que são “receitas” e “despesas” em blocos para proceder com a operação.

Sim isso que passei foi o exemplo, ai onFooter você prepara elas para aparecer no rodapé do jeito que desejar.
Pode até colocar la rodapé assim:
Despesas R$ [glo_Despesa] / Receitas R$ [glo_Receitas] > Saldo R$ [glo_Saldo] << - Viu você monta de jeito que quiser.

Infelizmente não tive sucesso com as respostas apresentadas, conversando com um amigo que trabalha com PHP mas não conhece de Scriptcase ele me disse que acredita que isso tenha que ser tratado através Array mas não soube me passar por onde eu poderia começar.

Também tentei resolver direto no SQL mas não obtive sucesso… o SQL usado foi:

SELECT valor, IF(tipo = 'DF',valor, valor*-1) AS SALDO,valor FROM tabela_receitas_despesas ORDER BY tipo DESC

Infelizmente o código SQL não funcionou adequadamente e também não sei como inserir ‘DF’ e ‘DV’ no mesmo SQL

noelreis faça o seguinte, no onScriptInit faça os cálculos de despesa, receita e saldo por query com sc_lookup
armazene o resultado nas variáveis como o Jailton citou e no rodapé exiba tipo valor com aquela frase junto com as variáveis.
lembrando que no onScriptInit você pode recuperar o where com a macro sc_where_current

Exemplo:

////////////
onScriptInit

//receita
$sqlR = "select sum(Valor) from despesas where Tipo like ‘R%’ "
sc_lookup(lookupR,$sqlR);
[glo_Receita] = (empty({lookupR})) ? 0 : {lookupR[0][0];

//despesa
$sqlD = "select sum(Valor) from despesas where Tipo like ‘D%’ "
sc_lookup(lookupD,$sqlD);
[glo_Despesa] = (empty({lookupD})) ? 0 : {lookupD[0][0];

[gloSaldo] = [glo_Receita] - [glo_Despesa];

////////////
Vá em aplicação variáveis globais
marque essas 3 acima como saída e configuração opcional

////////////
Layout -> Cabeçalho e Rodapé

Exibir Rodapé = Sim

campo1 || Valor || Receitas R$ [glo_Receitas] - Despesas R$ [glo_Despesa] = Saldo R$ [glo_Saldo]

A informação de Rodrigo Padovezzi junto com a informação de Jailton me pareceram coerentes, mas após as configurações com os nomes das tabelas, tenho como retorno o seguinte erro:

Parse error: syntax error, unexpected ‘$nm_select’ (T_VARIABLE) in C:\Program Files\NetMake\v81\wwwroot\scriptcase\app\meuprojeto\grid_receitas_despesas\grid_receitas_despesas_grid.class.php on line 409

Tentei manter o Modo Debug ligado para ver se descobria alguma coisa, mas o erro não permite chegar mo Debug.

O meu exemplo está faltando ; nas querys. Segue corrigido

$sqlR = "select sum(Valor) from despesas where Tipo like ‘R%’ ";
sc_lookup(lookupR,$sqlR);
[glo_Receita] = (empty({lookupR})) ? 0 : {lookupR[0][0];

//despesa
$sqlD = "select sum(Valor) from despesas where Tipo like ‘D%’ ";
sc_lookup(lookupD,$sqlD);
[glo_Despesa] = (empty({lookupD})) ? 0 : {lookupD[0][0];

[tt]Rodrigo Padovezzi[/tt], muito obrigado, espero poder contar sempre com sua ajuda e ajuda dos demais membros, de forma análoga espero poder corresponder à ajuda que tenho obtido aqui no fórum.

Apenas para compor vou repetir o código inserindo as " }" que foram esquecidas e uma pequena alteração que fiz no rodapé.

[code]//com o fechamento da “}” e alterações na variável “saldo”
$sqlR = "select sum(valor) from tabela_receitas_despesas where Tipo like ‘R%’ ";
sc_lookup(lookupR,$sqlR);
[glo_Receita] = (empty({lookupR})) ? 0 : {lookupR[0][0]}; // corrigido de: {lookupD[0][0];

//despesa
$sqlD = "select sum(valor) from tabela_receitas_despesas where Tipo like ‘D%’ ";
sc_lookup(lookupD,$sqlD);
[glo_Despesa] = (empty({lookupD})) ? 0 : {lookupD[0][0]}; //corrigido de: {lookupD[0][0];

{saldo} = [glo_Receita] - [glo_Despesa]; //modificado de: [gloSaldo] = [glo_Receita] - [glo_Despesa];
[/code]

No rodapé selecionei “campo” e trouxe o campo criado que chamei de “saldo

Verdade, havia esquecido rsrs.

Legal que ajudou!

Estamos aqui para isso!

Galera mais um pedido de clemência, me desculpem, é falta de raciocínio lógico mesmo, mas como faço para esse código obedecer as condições do filtro?

Meu filtro tem dois campos “dt_recdec” e “unidade” onde dt_recdec é a data de lançamento e unidade é a loja que cadastrou.

Já tentei inserir o código nos eventos do filtro mas não funcionou, também fiz tentativas na cláusula WHERE adicionando o que encontra-se em negrito.
Para um filtro com apenas uma data funciona normalmente, mas se usar um filtro do tipo especial ex: “ultimo mes” não funciona.

$sqlR = “select sum(valor) from tabela_receitas_despesas WHERE tipo like ‘R%’ AND dt_recdec=’{dt_recdec}’”;
$sqlD = “select sum(valor) from tabela_receitas_despesas WHERE tipo like ‘D%’ AND dt_recdec=’{dt_recdec}’”;

Teste com sc_where_current http://www.scriptcase.com.br/docs/pt_br/v81/macros-scriptcase/macros-scriptcase#sc_where_current

no onScriptInit
$sqlR = "select sum(valor) from tabela_receitas_despesas “.{sc_where_current}.” and tipo like ‘R%’ ";

RESOLVIDO!.. Muito obrigado mesmo, de coração.

Para que ninguém passe pelo “perrengue” que eu passei vai mais uma dica: Quando eu rodava minha aplicação o valor exibido como saldo dava uma diferença de R$ 0,01 (um centavo), parece pouco, mas não era aceitável.

Então o que eu fiz para arrumar essa situação:
1- no SQL da aplicação transformei o campo “valor” em ROUND(valor,2) ver código abaixo.

SELECT  id, ROUND(valor,2), quantidade FROM tabela_xxx

Na sequencia precisei arrumar alguns pequenos detalhes no Scriptcase tipo posicionamentos campos, casas decimais etc.

Por fim as informações contidas no evento OnScriptIni receberam um upgrade com a função ROUND() conforme mostrado abaixo:

$sqlR = "select sum(ROUND (valor ,2)) from tabela_receitas_despesas".{sc_where_current}." and tipo like 'R%' ";
sc_lookup(lookupR,$sqlR);
[glo_Receita] = (empty({lookupR})) ? 0 : {lookupR[0][0]};

//despesa
$sqlD = "select sum(ROUND (valor ,2)) from tabela_receitas_despesas".{sc_where_current}." and tipo like 'D%' ";
sc_lookup(lookupD,$sqlD);
[glo_Despesa] = (empty({lookupD})) ? 0 : {lookupD[0][0]};
//marcar as globais como saida

//[glo_saldo] = [glo_Receita] - [glo_Despesa];
{saldo} = [glo_Receita] - [glo_Despesa];

Sei que o tópico ficou muito extenso, mas não poderia me furtar de registrar essa informação.

boa noite todos.

sei não tem muito a ver com o topico mas, vamos lá, atualizei o meu sc ja fazia um ano não atualizava, na minha consulta eu uso a opção “Exibir Número da Linha” a cor de fundo era amarela escuro e resto das colunas em amarelo claro, agora que atualizei na consulta o fundo contagem registro fica fundo branco. ja procurei aonde altera cor de fundo desta função e sem chance nada. cor fundo dos campos é facil mas este esta me deixando fora de serio. obrigado a todos.

Olá Marcio, devido ao tamanho desse tópico talvez fosse interessante você abrir outro, assim o pessoal vai poder te ajudar melhor.
Creio que o problema que você descreve tem a ver com o template da versão antiga que não existe mais na nova versão ou então o template que é apresentado na versão antiga tenha sido criado por você e não carregou na atualização.