Ir para conteúdo
Fórum Script Brasil

Carlos Moretto

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre Carlos Moretto

Carlos Moretto's Achievements

0

Reputação

  1. Fala galera! Estou com um desafio a algum tempo e ainda não encontrei uma solução que funcione. Fiz um select para gerar um fluxo de caixa projetado com base em data, saldo inicial, despesas e receitas. A parte de alto soma para fazer o saldo já está concluída, fiz com CTE. O objetivo do relatório de fluxo de caixa e projetar quanto vou precisar aportar (entrada de dinheiro no fluxo) em um determinado dia. A entrada seria para o caixa nunca ficar negativo ou ter um valor mínimo (valor parametrizado). A ideia é que seja possível visualizar o valor exato do aporte necessário diariamente. Exemplo -Na parte verde são as informações que já consegui trazer com o SELECT -Na parte azul é o que preciso calcular. Observando o dia 21/9/2023 se nota que o valor necessário para manter o caixa zerado (mínimo) é de 22.951,42 e não de 25.000 (conforme o resultado do dia), sendo assim não é simplesmente olhar se o resultado for negativo e apresentar o valor exato. Segue o SELECT usado: with empresa_centro as ({{#4484}}), saldo_inicial as ( select sum(financial_transactions.amount) as saldo_inicial_contas from financial_transactions join deposit_accounts on (deposit_accounts.id=financial_transactions.deposit_account_id and financial_transactions.parent_id is null) join entities on (entities.id= deposit_accounts.entity_id) where occurred_at <= current_date-1 [[ and {{filtro_empresa}} ]] ), transacoes as ( select financial_accounts.due_date as data_vencimento, sum(case when financial_accounts.type = 'ReceivableAccount' then financial_accounts.amount else 0 end) as receita, sum(case when financial_accounts.type <> 'ReceivableAccount' then -financial_accounts.amount else 0 end) as despesa, sum(case when financial_accounts.type = 'ReceivableAccount' then financial_accounts.amount else -financial_accounts.amount end) as resultado from financial_accounts inner join entities on (entities.id=financial_accounts.entity_id) inner join empresa_centro on (empresa_centro.empresa_id=entities.id) where true and {{filtro_empresa}} and (case when financial_accounts.type = 'ReceivableAccount' then financial_accounts.sale_account_id is not null else true end) and financial_accounts.due_date between current_date and (date_trunc('month', current_date) + interval '1 month') - interval '1 day' group by financial_accounts.due_date) select transacoes.data_vencimento, transacoes.receita, transacoes.despesa, transacoes.resultado, (CASE WHEN ROW_NUMBER() OVER (ORDER BY transacoes.data_vencimento asc) = 1 THEN (select saldo_inicial_contas from saldo_inicial) ELSE null END) as saldo_inicial, (select saldo_inicial_contas from saldo_inicial) + sum(transacoes.resultado) over (order by transacoes.data_vencimento asc) as saldo_acumulado from transacoes order by transacoes.data_vencimento asc Estou usando o metabase para isso e não é possível usar variáveis, function, procedures e triggers. O que é uma pena. Tenho apenas usuário de leitura no banco é isso não vai mudar conforme o compliance do meu cliente. Alguém consegue me dar uma luz? Agradeço desde já
×
×
  • Criar Novo...