Array
(
)

Caixa - debito credito

Gigatel
   - 27 dez 2005

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 ?


Eixox
   - 27 dez 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


Martins
   - 27 dez 2005


Citação:
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!!!!


Aerreira
   - 28 dez 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.


Martins
   - 28 dez 2005


Citação:
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!!


Gigatel
   - 28 dez 2005


Citação:
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...


Gigatel
   - 28 dez 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 ?


Martins
   - 28 dez 2005


Citação:
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


Aerreira
   - 28 dez 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 DATA < DATAMOVTO

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 DATA = DATAMOVTO

Assim obterá os totais do dia e conseguentemente o saldo atual, que será:

mSALDO := mSaltoAnterior + mTotCred - mTotDeb

Acho que isso vai resolver seu caso.


Gigatel
   - 29 dez 2005


Citação:
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 DATA < DATAMOVTO

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 DATA = DATAMOVTO

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 ?


Edilcimar
   - 29 dez 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


Aerreira
   - 29 dez 2005


Citação:
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?


Sergioaugustomatos
   - 02 jan 2006

Como o amigo aerreira 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.


Fx|hand
   - 12 jan 2006

#Código

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 !