Caixa - debito credito
Estou com uma dúvida meu caixa é especifica assim..
D = Débito
C = Crédito
como seria uma função para listar todos os ítens do dia separar o que é dédito e separar o crédito e somar dando um valor final..tipo
10,00 D
20,00 D
30,00 C
60,00 C
O valor seria 60,00 de crédito, más para isto tenho que fazer com qie as letras se trnsformem em operadores aí que tá pegando...alguém tem alguma idéia ?
D = Débito
C = Crédito
como seria uma função para listar todos os ítens do dia separar o que é dédito e separar o crédito e somar dando um valor final..tipo
10,00 D
20,00 D
30,00 C
60,00 C
O valor seria 60,00 de crédito, más para isto tenho que fazer com qie as letras se trnsformem em operadores aí que tá pegando...alguém tem alguma idéia ?
Gigatel
Curtidas 0
Respostas
Eixox
27/12/2005
some todos os débitos e some todos os créditos e subtraia os valores.
Variaveis
Debito = 30,00
Credito = 90,00
resultado = Credito - Débito
resultado = 60,00
Se resultado > 0 then 60,00 Reais de Credito
else XXXX reais de Débito
Não esqueça que na verdade o processo é inverso. O que entra é negativo e o que sai é positivo. Nesse caso Credito = R$ -60,00
Débito = R$ 30,00
Variaveis
Debito = 30,00
Credito = 90,00
resultado = Credito - Débito
resultado = 60,00
Se resultado > 0 then 60,00 Reais de Credito
else XXXX reais de Débito
Não esqueça que na verdade o processo é inverso. O que entra é negativo e o que sai é positivo. Nesse caso Credito = R$ -60,00
Débito = R$ 30,00
GOSTEI 0
Martins
27/12/2005
some todos os débitos e some todos os créditos e subtraia os valores.
Variaveis
Debito = 30,00
Credito = 90,00
resultado = Credito - Débito
resultado = 60,00
Se resultado > 0 then 60,00 Reais de Credito
else XXXX reais de Débito
Não esqueça que na verdade o processo é inverso. O que entra é negativo e o que sai é positivo. Nesse caso Credito = R$ -60,00
Débito = R$ 30,00
Condicionalmente vc vai somar seus créditos (C) e atribuir o valor a uma variável e com os débitos a mesma coisa, depois é só ver Crédito - Débito = Saldo.
Como o colega eixox falou aí do inverso, algo q é muito aplica em contabilidade é q para todo débito tem q aver um crédito e vice versa, digamos q vc vai pagar uma conta de luz, e esse pagamento saira do caixa, então vc crédita o caixa vc vai fazer um retirada do banco para o caixa então vc credita o banco e debita o caixa, acho q é isso, ou me perdi, hehehehe!!!!
GOSTEI 0
Aerreira
27/12/2005
Talvez o que o Gigatel esteja querendo seja mais algo do tipo:
Criar uma query com o seguinte código:
select sum(credito) as TotCred from Tabela where tipo=´C´
- Abrir a query
- armazenar o resultado de TotCred numa variável.
- Fechar a query
Alterar o código da query para:
select sum(debito) as TotDeb from Tabela where tipo=´D´
- Abrir a query
- armazenar o resultado de TotDeb numa variável.
- Fechar a query
Calcular mSaldo := mTotCred - mTotDeb
Mostrar o valor de mSaldo.
Criar uma query com o seguinte código:
select sum(credito) as TotCred from Tabela where tipo=´C´
- Abrir a query
- armazenar o resultado de TotCred numa variável.
- Fechar a query
Alterar o código da query para:
select sum(debito) as TotDeb from Tabela where tipo=´D´
- Abrir a query
- armazenar o resultado de TotDeb numa variável.
- Fechar a query
Calcular mSaldo := mTotCred - mTotDeb
Mostrar o valor de mSaldo.
GOSTEI 0
Martins
27/12/2005
Talvez o que o Gigatel esteja querendo seja mais algo do tipo:
Criar uma query com o seguinte código:
select sum(credito) as TotCred from Tabela where tipo=´C´
- Abrir a query
- armazenar o resultado de TotCred numa variável.
- Fechar a query
Alterar o código da query para:
select sum(debito) as TotDeb from Tabela where tipo=´D´
- Abrir a query
- armazenar o resultado de TotDeb numa variável.
- Fechar a query
Calcular mSaldo := mTotCred - mTotDeb
Mostrar o valor de mSaldo.
Pode ser !!!
Ele pode usar essa query, assim como poderá criar uma SP para isso, dependendo do Banco de Dados q ele usa.
Falow!!
GOSTEI 0
Gigatel
27/12/2005
Talvez o que o Gigatel esteja querendo seja mais algo do tipo:
Criar uma query com o seguinte código:
select sum(credito) as TotCred from Tabela where tipo=´C´
- Abrir a query
- armazenar o resultado de TotCred numa variável.
- Fechar a query
Alterar o código da query para:
select sum(debito) as TotDeb from Tabela where tipo=´D´
- Abrir a query
- armazenar o resultado de TotDeb numa variável.
- Fechar a query
Calcular mSaldo := mTotCred - mTotDeb
Mostrar o valor de mSaldo.
É isto aí mesmo... vou estudar a sua idéia...
GOSTEI 0
Gigatel
27/12/2005
só mais uma dúvida...toda vez vez que entrar no caixa, eu queria que aparecesse somente a movimentação do dia como ficaria esta função ? teria que seria on show, na sql da IBQuery, ou no on create ?
GOSTEI 0
Martins
27/12/2005
só mais uma dúvida...toda vez vez que entrar no caixa, eu queria que aparecesse somente a movimentação do dia como ficaria esta função ? teria que seria on show, na sql da IBQuery, ou no on create ?
Coloca uma instrução no OnShow ou na Abertura da Query do Form com uma instrução SQL checando se a data da movimentação é igual a data atual
GOSTEI 0
Aerreira
27/12/2005
Mas aí começam a surgir outros problemas, por exemplo, você precisa identificar o saldo anterior à data selecionada.
Acho que a mesma rotina poderia ficar no onShow do form e a cada alteração ou inclusão em sua lista de movimentação.
Nessa única rotina, com base na data de movimentação você abre primeiro aquelas queries de debitos e créditos, porém informa:
where TIPO=´C´ and [b:4f3d93c6a5]DATA < DATAMOVTO[/b:4f3d93c6a5]
e armazena com isso os totais de debitos e créditos anteriores (mTotCredAnt e mTotDebAnt) ao dia da movimentação, e calcula o mSaldoAnterior.
Depois executa novamente as mesmas queries modificando o where para:
where TIPO=´C´ and [b:4f3d93c6a5]DATA = DATAMOVTO[/b:4f3d93c6a5]
Assim obterá os totais do dia e conseguentemente o saldo atual, que será:
mSALDO := mSaltoAnterior + mTotCred - mTotDeb
Acho que isso vai resolver seu caso.
Acho que a mesma rotina poderia ficar no onShow do form e a cada alteração ou inclusão em sua lista de movimentação.
Nessa única rotina, com base na data de movimentação você abre primeiro aquelas queries de debitos e créditos, porém informa:
where TIPO=´C´ and [b:4f3d93c6a5]DATA < DATAMOVTO[/b:4f3d93c6a5]
e armazena com isso os totais de debitos e créditos anteriores (mTotCredAnt e mTotDebAnt) ao dia da movimentação, e calcula o mSaldoAnterior.
Depois executa novamente as mesmas queries modificando o where para:
where TIPO=´C´ and [b:4f3d93c6a5]DATA = DATAMOVTO[/b:4f3d93c6a5]
Assim obterá os totais do dia e conseguentemente o saldo atual, que será:
mSALDO := mSaltoAnterior + mTotCred - mTotDeb
Acho que isso vai resolver seu caso.
GOSTEI 0
Gigatel
27/12/2005
Mas aí começam a surgir outros problemas, por exemplo, você precisa identificar o saldo anterior à data selecionada.
Acho que a mesma rotina poderia ficar no onShow do form e a cada alteração ou inclusão em sua lista de movimentação.
Nessa única rotina, com base na data de movimentação você abre primeiro aquelas queries de debitos e créditos, porém informa:
where TIPO=´C´ and [b:0cde9f2ca6]DATA < DATAMOVTO[/b:0cde9f2ca6]
e armazena com isso os totais de debitos e créditos anteriores (mTotCredAnt e mTotDebAnt) ao dia da movimentação, e calcula o mSaldoAnterior.
Depois executa novamente as mesmas queries modificando o where para:
where TIPO=´C´ and [b:0cde9f2ca6]DATA = DATAMOVTO[/b:0cde9f2ca6]
Assim obterá os totais do dia e conseguentemente o saldo atual, que será:
mSALDO := mSaltoAnterior + mTotCred - mTotDeb
Acho que isso vai resolver seu caso.
Más vou prescisar de uma tabela independente ?
GOSTEI 0
Edilcimar
27/12/2005
crie uma tabela com o seguintes campos
datamoimento, crédito, débito e saldo,
aí vc pega o saldo e faz as contas com o crédito ou débito que foi inserido e já calcula o novo saldo, então quando pegar uma data qualquer vc tem todos os créditos, todos os débitos e o saldo de cada operação
datamoimento, crédito, débito e saldo,
aí vc pega o saldo e faz as contas com o crédito ou débito que foi inserido e já calcula o novo saldo, então quando pegar uma data qualquer vc tem todos os créditos, todos os débitos e o saldo de cada operação
GOSTEI 0
Aerreira
27/12/2005
Más vou prescisar de uma tabela independente ?
O correto é NÃO, não precisa de tabela independente pra isso não. Basta criar as queries para localização de saldos anteriores e atuais, sempre varrendo a sua única tabela de movimento.
Porém, se você tiver muitas contas (mas muitas mesmo) e muitos lançamentos (mas muitos mesmo), talvez essa localização de saldos anteriores ao longo do tempo vá se tornando muito lenta, pois terá muitos registros para varrer. Então neste caso uma solução seria o uso de uma tabela de saldos, assim você encontraria os saldos anteriores muito mais rapidamente, mas para isso precisaria de rotinas específicas para atualizar essa tabela de saldos. Nenhum bicho de sete cabeças, mas um pouco mais complicado.
Acredito que no seu caso, não precisa de tabela extra nenhuma. Faça tudo na mesma tabela de movimento mesmo.
Alguém mais teria alguma outra sugestão?
GOSTEI 0
Sergioaugustomatos
27/12/2005
Como o amigo [b:202ca0b58a]aerreira[/b:202ca0b58a] informou, vc pode criar uma tabela de saldos e atualizar esta tabela de saldos em determinados periodos.
por exemplo vc poderia atualizar a tabela de saldos no fechamendo de cada mes e utilizar as queries citadas pelo amigo aerreira, desta forma vc teria um melhor desempenho no calculo do saldo anterior.
espero ter ajudado.
por exemplo vc poderia atualizar a tabela de saldos no fechamendo de cada mes e utilizar as queries citadas pelo amigo aerreira, desta forma vc teria um melhor desempenho no calculo do saldo anterior.
espero ter ajudado.
GOSTEI 0
Fx|hand
27/12/2005
SELECT SUM(valor) AS total, dc as tipo FROM t GROUP BY tipo union SELECT (select sum(valor) as total from t where dc = ´c´) - (select sum(valor) from t where dc = ´d´) as Total, ´SubTotal´ as tipo;
axo q issu resolve !
GOSTEI 0