DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Fórum DevMedia


Autor
Mensagem
Sidney Abreu
 

País: Brasil
Estado: CE
Cidade: Fortaleza
Mensagens: 49
 Postado em: 25/1/2012 9:49:57 AM

Galera estou criando uma procedure para somar o total do caixa por forma de pagamento

ex: Forma de Pagamento | Credito | Debito
Dinheiro 100,00 20,00
Cheque a Vista 0,00 0,00
Cartão 200,00 0,00


A procedure que esta abaixo está calculando corretamente, o problema é que só aparece a primeira forma de pagamento

#Código

CREATE PROCEDURE sp_caixa_total (
datamov date)
returns (
FormaPgto varchar(45),
TotalCredito numeric(18,2),
TotalDebito numeric(18,2))
as
declare variable credito numeric(18,2);
declare variable debito numeric(18,2);
declare variable Forma varchar(45);
BEGIN
for
select
vw_caixa.fpgto_descricao
from
vw_caixa
where
cast(vw_caixa.data_cad as date) = :DataMov
into :FormaPgto
do
FOR
select
/*(+) ||*/ vw_caixa.fpgto_descricao ,
coalesce(sum(vw_caixa.cx_valor_pago),0)
from
vw_caixa
where
vw_caixa.cx_operacao = (+) CREDITO and
cast(vw_caixa.data_cad as date) = :DataMov
group by vw_caixa.fpgto_descricao

INTO :Forma,
:TotalCredito
DO
/* BEGIN
SUSPEND;
END */
for
select
/*(--) ||*/ vw_caixa.fpgto_descricao ,
coalesce(sum(vw_caixa.cx_valor_pago),0)
from
vw_caixa
where
vw_caixa.cx_operacao = (--) DEBITO and
cast(vw_caixa.data_cad as date) = :DataMov
group by vw_caixa.fpgto_descricao
INTO :Forma,
:TotalDebito
DO
credito = 0;
debito = 0;
BEGIN

if (Forma = :FormaPgto) then
credito = :TotalCredito;
else
debito = TotalDebito;

SUSPEND;
END
END
Emerson
 
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 921
 Postado em: 25/1/2012 3:20:42 PM
nem é preciso criar uma stored procedure.

creio que uma instrução simples resolva seu problema:

select
○ fpgto_descricao tipopagto,
○ sum(case when cx_operacao = CREDITO then vw_caixa.cx_valor_pago else 0 end) credito,
○ sum(case when cx_operacao = DEBITO then vw_caixa.cx_valor_pago else 0 end) debito
from
○ vw_caixa
where
○ cast(data_cad as date) = :DataMov
group by
○ fpgto_descricao



 
Emerson
 
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 921
 Postado em: 25/1/2012 3:21:33 PM
nem é preciso criar uma stored procedure.

creio que uma instrução simples resolva o seu problema:

select
fpgto_descricao tipopagto,
sum(case when cx_operacao = CREDITO then vw_caixa.cx_valor_pago else 0 end) credito,
sum(case when cx_operacao = DEBITO then vw_caixa.cx_valor_pago else 0 end) debito
from
vw_caixa
where
cast(data_cad as date) = :DataMov
group by
fpgto_descricao

 
Sidney Abreu
 

País: Brasil
Estado: CE
Cidade: Fortaleza
Mensagens: 49
 Postado em: 26/1/2012 12:29:49 AM
Show de bola, valeu amigo

 
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03