27/12/2005

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 ?


Gigatel

Respostas

27/12/2005

Eixox

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


Responder Citar

27/12/2005

Martins

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!!!!


Responder Citar

28/12/2005

Aerreira

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.


Responder Citar

28/12/2005

Martins

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!!


Responder Citar

28/12/2005

Gigatel

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...


Responder Citar

28/12/2005

Gigatel

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 ?


Responder Citar

28/12/2005

Martins

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


Responder Citar

28/12/2005

Aerreira

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.


Responder Citar

29/12/2005

Gigatel

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 ?


Responder Citar

29/12/2005

Edilcimar

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


Responder Citar

29/12/2005

Aerreira

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?


Responder Citar

02/01/2006

Sergioaugustomatos

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.


Responder Citar

12/01/2006

Fx|hand

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 !


Responder Citar