Ir ao conteúdo
  • Cadastre-se

Alterar procedure no SQL Server


rafaelcmd

Posts recomendados

Eu preciso alterar essa procedure abaixo, colocando um parametro para regerar as parcelas, se regerar igual a "S" e alguma parcela ja tenha pagamento, nao remover, apenas diminuir do total e recriar os novos valores, senao remover todos os pagamentos e regerar do zero, alguem me ajuda?

set ANSI_NULLS ON

set QUOTED_IDENTIFIER ON

go

ALTER PROCEDURE [dbo].[sp_gera_pagamento](@IdCompra INT,

@Regerar CHAR(1))

AS

BEGIN

DECLARE @Entrada Money,

@DiasEntrada INT,

@QtdParcelas INT,

@Intervalo INT,

@ValorTotal Money,

@ValorEntrada Money,

@ValorParcela Money,

@DataEntrada DateTime,

@DataParcela DateTime,

@Parcela INT

Select @Entrada = P.Entrada,

@DiasEntrada = P.DiasEntrada,

@QtdParcelas = P.QtdParcelas,

@Intervalo = P.IntervaloParcelas,

@ValorTotal = SUM((IC.Quantidade*

IC.ValorUnitario)-IC.Desconto),

@DataParcela = C.DatadaCompra

From Compra C

Inner Join ItemCompra IC on IC.IdCompra = C.IdCompra

Inner Join PlanoPagamento P

on P.IdPlanoPagamento = C.IdPlanoPagamento

Where C.IdCompra = @IdCompra

Group By P.Entrada, P.DiasEntrada, P.QtdParcelas,

P.IntervaloParcelas, C.DatadaCompra

SET @Parcela = 1

IF (isnull(@Entrada,0) > 0)

BEGIN

SET @DataEntrada = DateAdd(day,

@DiasEntrada, @DataParcela)

SET @ValorEntrada = (@ValorTotal * (@Entrada/100))

Insert Pagamento (IdCompra,NumeroParcela,

ValorParcela, DataParcela)

Values(@IdCompra, @Parcela,@ValorEntrada,

@DataEntrada)

SET @Parcela = (@Parcela + 1)

SET @DataParcela = DateAdd(day,

@Intervalo, @DataEntrada)

SET @Entrada = 1

END

ELSE

BEGIN

SET @ValorEntrada = 0

SET @Entrada = 0

END

SET @ValorParcela = ((@ValorTotal - @ValorEntrada)

/@QtdParcelas)

While (@Parcela <= (@QtdParcelas+@Entrada))

BEGIN

--Gerar Pagamentos

Insert Pagamento (IdCompra,NumeroParcela,

ValorParcela, DataParcela)

Values(@IdCompra, @Parcela,@ValorParcela,

@DataParcela)

SET @Parcela = (@Parcela + 1)

--Se o intervalo é igual a 30 é porque devemos

--incrementar 1 mes e nem sempre o mes é de

--30 dias

IF (@Intervalo = 30)

SET @DataParcela = DateAdd(Month,1,@DataParcela)

ELSE

SET @DataParcela = DateAdd(day,@Intervalo,

@DataParcela)

END

Select * from Pagamento

Where IdCompra = @IdCompra

END

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois...

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!