Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

elizacoelho

Sp

Recommended Posts

Olá pessoas bom dia para todos!

Tenho esta sp abaixo que está me retornando o valor 0,00 mas eu queria que no final ela imprima o valor q corresponda a soma de todos os totais alguém poderia me dar uma luz? A linha em negrito é que corresponde a isto.

Muito Obrigada

 

 

 

CREATE           PROCEDURE dbo.sp_Consulta_Estorno
              ( @DtInicial  varchar(20)
              , @DtFinal    varchar(20)
              , @IdUsuario  int)
WITH RECOMPILE
AS

SET NOCOUNT ON
DECLARE @Impressao TABLE
     ( Sequencia  INT IDENTITY (1, 1) NOT NULL
     , Etiqueta      CHAR(36))
Declare @Total decimal(14,2)

INSERT @Impressao VALUES ('            PREMIUM 2007')
INSERT @Impressao VALUES (REPLICATE(' ',36))
INSERT @Impressao VALUES (' *****   CONSULTA DE EVENTOS  ***** ')
INSERT @Impressao VALUES (' *******   ESTORNO  ******* ')
INSERT @Impressao VALUES (REPLICATE(' ',36))

INSERT @Impressao VALUES ('-------  Periodo Fechamento  -------')
INSERT @Impressao VALUES (REPLICATE(' ',36))
INSERT @Impressao VALUES ('Período de:')
INSERT @Impressao VALUES (dbo.fn_FormatarData(@DtInicial) + ' a ' + dbo.fn_FormatarData(@DtFinal) + '.' )
INSERT @Impressao VALUES (REPLICATE(' ',36))

DECLARE @IdUnidade  	AS INT
DECLARE @IdMalharia  	AS INT
   SET @IdMalharia = 1

 DECLARE Und_Malharia CURSOR FOR

  SELECT id_unidade
    FROM Unidades UND (NOLOCK)
--    WHERE id_unidade = 11
 --    AND id_unidade >= 2

OPEN Und_Malharia
FETCH NEXT 
     FROM Und_Malharia INTO 
   @IdUnidade  	

WHILE @@FETCH_STATUS = 0
BEGIN

-- Tratamento p/ Gravação
DECLARE @TotBxGravame 	 DECIMAL(14,2)

SELECT @TotBxGravame = ISNULL(SUM(TAM.vlr_titulo),0)  
  FROM Gravame GVM (NOLOCK)
  JOIN Titulos_areceber_malharia TAM
    ON GVM.id_titulo_areceber = TAM.id_titulo_areceber
 WHERE GVM.id_unidade_bx  = @IdUnidade
   AND GVM.id_malharia_bx = @IdMalharia
   AND GVM.dt_baixa   	 >= @DtInicial
   AND GVM.dt_baixa      <= @DtFinal 
   AND NOT EXISTS (SELECT * FROM Acordos_Itens_Gravames AIG
			   WHERE AIG.id_gravame = GVM.id_gravame)

SELECT @TotBxGravame = @TotBxGravame + ISNULL(SUM(TAM.vlr_titulo),0)
  FROM Gravame_Cantina GVM (NOLOCK)
  JOIN Titulos_areceber_cantina TAM
    ON GVM.id_titulo_areceber = TAM.id_titulo_areceber
 WHERE GVM.id_unidade_bx  = @IdUnidade
   AND GVM.id_cantina_bx = @IdMalharia
   AND GVM.dt_baixa   	 >= @DtInicial
   AND GVM.dt_baixa      <= @DtFinal 
   AND NOT EXISTS (SELECT * FROM Acordos_Itens_Gravames AIG
			   WHERE AIG.id_gravame = GVM.id_gravame)

-- Estorno de Venda
DECLARE @TotEstorno  DECIMAL(14,2)

 SELECT @TotEstorno = SUM(ISNULL(vlr_titulos-vlr_real,0))
--	        @TotTitulosResg = SUM(ISNULL(vlr_titulos,0))  
   FROM Estornos_Malharia EM (NOLOCK)
  WHERE EM.id_unidade	=  @IdUnidade AND
	EM.id_malharia	=  @IdMalharia AND
	EM.dt_estorno	>= @DtInicial AND
	EM.dt_estorno	<= @DtFinal 

-- Resgates
DECLARE @TotTitulosResg DECIMAL(14,2)

SELECT @TotTitulosResg = SUM(ISNULL(vlr_titulos,0))  
  FROM Estornos_Malharia EM (NOLOCK)
 WHERE 
	EM.id_unidade	=  @IdUnidade
 AND	EM.id_malharia	=  @IdMalharia
 AND	EM.dt_estorno	>= @DtInicial
 AND	EM.dt_estorno	<= @DtFinal 
 AND NOT EXISTS (SELECT * FROM Estornos_Itens_Malharia EIM
			 WHERE EIM.id_estorno = EM.id_estorno)

--  Acordos
DECLARE @TotAcordos 	 DECIMAL(14,2)

SELECT @TotAcordos = SUM(ISNULL(TAM.vlr_titulo,0))
  FROM Acordos ACD (NOLOCK)
  JOIN Acordos_Itens_Titulos AIT
    ON ACD.id_acordo = AIT.id_acordo
  JOIN Titulos_areceber_malharia TAM
    ON AIT.id_titulo_areceber = TAM.id_titulo_areceber
 WHERE ACD.id_unidade	 = @IdUnidade 
   AND ACD.id_malharia	 = @IdMalharia
   AND ACD.dt_acordo	>= @DtInicial
   AND ACD.dt_acordO	<= @DtFinal 

IF ISNULL(@TotBxGravame,0) + ISNULL(@TotAcordos,0) + ISNULL(@TotTitulosResg,0) + ISNULL(@TotEstorno,0) > 0
BEGIN
	INSERT @Impressao VALUES (REPLICATE(' ',36))
	INSERT @Impressao VALUES (REPLICATE('=',36))
	INSERT @Impressao 
	     ( Etiqueta )
	SELECT ISNULL(nm_malharia,' ')
	  FROM Malharias (NOLOCK)
	 WHERE id_unidade  = @IdUnidade
	   AND id_malharia = @IdMalharia
	INSERT @Impressao VALUES (REPLICATE('=',36))
END

IF @TotBxGravame > 0
BEGIN
	INSERT @Impressao VALUES (REPLICATE(' ',36))
	INSERT @Impressao VALUES ('  ------- BAIXA ------- ')
	INSERT @Impressao VALUES (REPLICATE(' ',36))
	INSERT @Impressao VALUES ('CPF/CNPJ        BCO-N.CHEQ   VALOR')
--	INSERT @Impressao VALUES ('12345678901234--001/123456-1.345,78')

	INSERT @Impressao
	SELECT 	dbo.FormataCpf(GVM.identificador)
	     + 	'  ' 
	     +	dbo.CompletaZerosEsq(TAM.bco_cheque,3)
	     +	'-' 
	     +	dbo.CompletaZerosEsq(TAM.nr_cheque,6)
	     +	' ' 
	     +	dbo.CompletaBrancosEsq(dbo.fn_FormatarMoeda(TAM.vlr_titulo),8)	
	  FROM Gravame GVM (NOLOCK)
	  JOIN Titulos_areceber_malharia TAM
	    ON GVM.id_titulo_areceber = TAM.id_titulo_areceber
	 WHERE GVM.id_unidade_bx  = @IdUnidade
	   AND GVM.id_malharia_bx = @IdMalharia
	   AND GVM.dt_baixa   	 >= @DtInicial
	   AND GVM.dt_baixa      <= @DtFinal
	   AND NOT EXISTS (SELECT * FROM Acordos_Itens_Gravames AIG
				   WHERE AIG.id_gravame = GVM.id_gravame)

	INSERT @Impressao
	SELECT 	dbo.FormataCpf(GVM.identificador)
	     + 	'  ' 
	     +	dbo.CompletaZerosEsq(TAM.bco_cheque,3)
	     +	'-' 
	     +	dbo.CompletaZerosEsq(TAM.nr_cheque,6)
	     +	' ' 
	     +	dbo.CompletaBrancosEsq(dbo.fn_FormatarMoeda(TAM.vlr_titulo),8)
	  FROM Gravame_Cantina GVM (NOLOCK)
	  JOIN Titulos_areceber_cantina TAM
	    ON GVM.id_titulo_areceber = TAM.id_titulo_areceber
	 WHERE GVM.id_unidade_bx  = @IdUnidade
	   --AND GVM.id_malharia_bx = @IdMalharia
	   AND GVM.dt_baixa   	 >= @DtInicial
	   AND GVM.dt_baixa      <= @DtFinal
	   AND NOT EXISTS (SELECT * FROM Acordos_Itens_Gravames AIG
				   WHERE AIG.id_gravame = GVM.id_gravame)

	INSERT @Impressao VALUES (REPLICATE(' ',36))
	INSERT @Impressao VALUES ('Tot. de Bxa de Gravame .R$ ' + dbo.fn_FormatarMoeda(@TotBxGravame))
	INSERT @Impressao VALUES (REPLICATE(' ',36))
END

IF @TotEstorno <> 0
BEGIN
	INSERT @Impressao VALUES (REPLICATE(' ',36))
	INSERT @Impressao VALUES ('  ------- ESTORNO DE VENDA -------')
	INSERT @Impressao VALUES (REPLICATE(' ',36))
	INSERT @Impressao VALUES ('ESTORNO   ITENS     TITULO    TOTAL')
--	INSERT @Impressao VALUES ('00000/00-12345678--12345678--1234567')

	INSERT @Impressao
	SELECT 	dbo.CompletaZerosEsq(seq_estorno_ano,4)
	     + 	'/' 
	     +	dbo.CompletaZerosEsq(ano_estorno,2)
	     +	' ' 
	     +	dbo.CompletaBrancosEsq(dbo.fn_FormatarMoeda(isnull(vlr_titulos,0)-isnull(vlr_real,0)),8)
	     +	'  ' 
	     +	dbo.CompletaBrancosEsq(dbo.fn_FormatarMoeda(isnull(vlr_titulos,0)),8)
	     +	'  ' 
	     +	dbo.CompletaBrancosEsq(dbo.fn_FormatarMoeda(isnull(vlr_real,0)),8)
	FROM Estornos_Malharia EM (NOLOCK)
	WHERE 
		EM.id_unidade  = @IdUnidade 
	AND	EM.id_malharia = @IdMalharia
	AND	EM.dt_estorno >= @DtInicial
	AND	EM.dt_estorno <= @DtFinal 
	AND 	EXISTS (SELECT * FROM Estornos_Itens_Malharia EIM
				WHERE EIM.id_estorno = EM.id_estorno)

	INSERT @Impressao VALUES (REPLICATE(' ',36))
	INSERT @Impressao VALUES ('Tot. em Estornos R$ ' + dbo.fn_FormatarMoeda(@TotEstorno))
	INSERT @Impressao VALUES (REPLICATE(' ',36))
END

IF @TotTitulosResg <> 0
BEGIN
	INSERT @Impressao VALUES (REPLICATE(' ',36))
	INSERT @Impressao VALUES (' ------- RESGATE DE TITULO -------  ')
	INSERT @Impressao VALUES (REPLICATE(' ',36))
	--INSERT @Impressao VALUES ('RESGATE  VENCTO   BCO/CHEQ   TOTAL ')
	INSERT @Impressao VALUES (' VENDA   VENCTO   BCO/CHEQ   TOTAL ')
--	INSERT @Impressao VALUES ('00000/00-25/03/79-001/123456-1234567')

	INSERT @Impressao
--	Resgates de titulos da Malharia
	SELECT 	dbo.CompletaZerosEsq(seq_venda_ano,5)
	     + 	'/' 
	     +	dbo.CompletaZerosEsq(ano_venda,2)
	     +	' ' 
	     +	CONVERT(VARCHAR(10), dt_vencimento, 3)
	     +	' ' 
	     +	dbo.CompletaZerosEsq(bco_cheque,3)
	     +	'/' 
	     +	dbo.CompletaZerosEsq(nr_cheque,6)
	     +	' ' 
	     +	dbo.CompletaBrancosEsq(dbo.fn_FormatarMoeda(isnull(vlr_titulo,0)),7)
	  FROM Estornos_Malharia EM (NOLOCK)
	  JOIN Titulos_Estornos_Malharia TEM (NOLOCK)
	    ON EM.id_estorno = TEM.id_estorno
	  JOIN Titulos_Areceber_Malharia TAM (NOLOCK)
	    ON TAM.id_titulo_areceber = TEM.id_titulo_areceber
	  JOIN Vendas_Malharia VDM (NOLOCK)
	    ON VDM.id_venda = TAM.id_venda
	 WHERE EM.id_unidade  = @IdUnidade 
	   AND EM.id_malharia = @IdMalharia
	   AND EM.dt_estorno >= @DtInicial
	   AND EM.dt_estorno <= @DtFinal 
	   AND cantina = 0
	   AND NOT EXISTS(SELECT * FROM Estornos_Itens_Malharia EIM
				  WHERE EIM.id_estorno = EM.id_estorno)
UNION
--	Resgates de titulos
	SELECT 	dbo.CompletaZerosEsq(seq_venda_ano,5)
	     + 	'/' 
	     +	dbo.CompletaZerosEsq(ano_venda,2)
	     +	' ' 
	     +	CONVERT(VARCHAR(10), dt_vencimento, 3)
	     +	' ' 
	     +	dbo.CompletaZerosEsq(bco_cheque,3)
	     +	'/' 
	     +	dbo.CompletaZerosEsq(nr_cheque,6)
	     +	' ' 
	     +	dbo.CompletaBrancosEsq(dbo.fn_FormatarMoeda(isnull(vlr_titulo,0)),7)
	  FROM	Estornos_Malharia EM (NOLOCK)
	  JOIN	Titulos_Estornos_Malharia TEM (NOLOCK)
	    ON	EM.id_estorno = TEM.id_estorno
   	  JOIN	Titulos_Areceber_Cantina TAM (NOLOCK)
	    ON	TAM.id_titulo_areceber = TEM.id_titulo_areceber
	  JOIN Vendas_Cantina VDM (NOLOCK)
	    ON VDM.id_venda = TAM.id_venda
	 WHERE	EM.id_unidade  = @IdUnidade 
	   AND	EM.id_malharia = @IdMalharia
	   AND	EM.dt_estorno >= @DtInicial
	   AND	EM.dt_estorno <= @DtFinal 
	   AND	cantina = 1
	   AND NOT EXISTS(SELECT * FROM Estornos_Itens_Malharia EIM
				  WHERE EIM.id_estorno = EM.id_estorno)

	INSERT @Impressao VALUES (REPLICATE(' ',36))
	INSERT @Impressao VALUES ('Tot. em Resgates R$ ' + dbo.fn_FormatarMoeda(@TotTitulosResg))
	INSERT @Impressao VALUES (REPLICATE(' ',36))
END

IF @TotAcordos > 0
BEGIN
	INSERT @Impressao VALUES (REPLICATE(' ',36))

	INSERT @Impressao VALUES ('  ------ REGISTRO DE ACORDOS ----- ')
	INSERT @Impressao VALUES (REPLICATE(' ',36))
	INSERT @Impressao VALUES ('ACORDO      DATA        TOTAL ')


	INSERT @Impressao
	SELECT 	dbo.CompletaZerosEsq(seq_acordo_ano,4)
	     + 	'/' 
	     +	dbo.CompletaZerosEsq(ano_acordo,2)
	     +	'   ' 
	     +	CONVERT(VARCHAR(10), dt_acordo, 3)
	     +	'    ' 
	     +	dbo.CompletaBrancosEsq(dbo.fn_FormatarMoeda(SUM(ISNULL(vlr_titulo,0))),8)
	  FROM Acordos ACD (NOLOCK)
	  JOIN Acordos_Itens_Titulos AIT
	    ON ACD.id_acordo = AIT.id_acordo
	  JOIN Titulos_areceber_malharia TAM
	    ON AIT.id_titulo_areceber = TAM.id_titulo_areceber
	 WHERE ACD.id_unidade	 = @IdUnidade 
	   AND ACD.id_malharia	 = @IdMalharia
	   AND ACD.dt_acordo	>= @DtInicial
	   AND ACD.dt_acordo	<= @DtFinal
      GROUP BY seq_acordo_ano, ano_acordo, dt_acordo

	INSERT @Impressao VALUES (REPLICATE(' ',36))
	INSERT @Impressao VALUES ('Tot. em Acordos R$ ' + dbo.fn_FormatarMoeda(@TotAcordos))
	INSERT @Impressao VALUES (REPLICATE(' ',36))
END

 INSERT @Impressao VALUES (REPLICATE(' ',36))
              FETCH NEXT 
      FROM Und_Malharia INTO 
	   @IdUnidade  	
END

CLOSE Und_Malharia
DEALLOCATE Und_Malharia

INSERT @Impressao VALUES (REPLICATE(' ',36))
INSERT @Impressao VALUES (REPLICATE('=',36))
INSERT @Impressao VALUES (REPLICATE(' ',36))
[b]SELECT @Total = (SUM(isnull(@TotBxGravame,0) + isnull (@TotAcordos,0) + isnull (@TotTitulosResg,0) + isnull (@TotEstorno,0)))
INSERT @Impressao VALUES ('Total  -------------- R$ ' +  dbo.fn_FormatarMoeda (CONVERT (DECIMAL (14,2),@Total)))[/b]
-- Saída
 SELECT Etiqueta

      ,  Sequencia as Chave
   FROM @Impressao 
ORDER BY Sequencia

SET NOCOUNT OFF
GO

Compartilhar este post


Link para o post
Compartilhar em outros sites

elizacoelho, codigo grande assim eh complicado de se entender nao sabendo as regras de negocios aplicadas e nao sabendo a estrutura das tabelas envolvidas e no seu caso ainda tem umas funcoes :(

 

 

oque tem de retorno aki???

SELECT @Total = (SUM(isnull(@TotBxGravame,0) + isnull (@TotAcordos,0) + isnull (@TotTitulosResg,0) + isnull (@TotEstorno,0)))

jah nao eh o total????

Compartilhar este post


Link para o post
Compartilhar em outros sites

eliza, de uma "debugada" nas variaveis:

 

@TotBxGravame, @TotAcordos, @TotTitulosResg, @TotEstorno

 

uma delas pode estar vindo com valor invalido ou alguma letra.

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode ser que seja algum problema com formato de dados.

Tente usar CAST para float e a proteção contra nulos do ISNULL. Desta forma a soma de valores fica mais certa e confiável.

 

Abraço,

Giancarlo Braga.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.