-
Notifications
You must be signed in to change notification settings - Fork 0
/
SP_Corrige_Parcelas.txt
62 lines (53 loc) · 2.63 KB
/
SP_Corrige_Parcelas.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
CREATE PROCEDURE [dbo].[SP_Corrige_Parcelas](@ID_PAGAMENTO AS INT,
@QTAPARCELAS_NOVA AS INT,
@TAXA_ADM AS FLOAT)
AS
SET NOCOUNT ON
BEGIN
DECLARE @QtdeDias INT = 30,
@TaxaCalculada FLOAT,
@idPagamentoVenda INT,
@qtParcelas INT,
@idEmpresa INT,
@dtEmissao DATETIME,
@dtVencimento DATETIME,
@vlPagamento FLOAT,
@Taxa FLOAT,
@idStatusParcela INT
SELECT @idPagamentoVenda = Pagamento.idPagamentoVenda,
@qtParcelas = Pagamento.qtParcelas,
@idEmpresa = Pagamento.idEmpresa,
@dtEmissao = Pagamento.dtEmissao,
@dtVencimento = DATEADD(DAY, @QtdeDias, Pagamento.dtEmissao),
@vlPagamento = Pagamento.vlPagamento,
@Taxa = (Pagamento.vlPagamento * @TAXA_ADM) / 100,
@idStatusParcela = StatusParcela.idStatusParcela
FROM card.tbPagamentoVenda AS Pagamento,
card.tbStatusParcela AS StatusParcela
WHERE Pagamento.idPagamentoVenda = @ID_PAGAMENTO AND StatusParcela.idStatusParcela = 2
DECLARE @contador INT = 1
DECLARE @TotalParcelas INT
SELECT @TotalParcelas = qtParcelas FROM card.tbPagamentoVenda WHERE idPagamentoVenda = @ID_PAGAMENTO;
IF (@QTAPARCELAS_NOVA > @TotalParcelas )
UPDATE card.tbPagamentoVenda SET qtParcelas = @QTAPARCELAS_NOVA WHERE idPagamentoVenda = @ID_PAGAMENTO;
WHILE @contador <= @QTAPARCELAS_NOVA
BEGIN
INSERT INTO card.tbParcela (idPagamentoVenda, nrParcela, idEmpresa, dtEmissao, dtVencimento, vlParcela, vlTaxaAdministracao, idContaCorrente, dtPagamento, vlPago, idStatusParcela, idMovimentoBanco)
SELECT @ID_PAGAMENTO, @contador , @idEmpresa, @dtEmissao, @dtVencimento, @vlPagamento, @Taxa, null, null, null, @idStatusParcela, null
WHERE NOT EXISTS (
SELECT 1 FROM card.tbParcela
WHERE idPagamentoVenda = @ID_PAGAMENTO AND nrParcela = @contador
);
SET @contador = @contador + 1
END
IF(@QTAPARCELAS_NOVA < @TotalParcelas )
BEGIN
DELETE
FROM card.tbParcela
WHERE idStatusParcela = 2
AND idPagamentoVenda = @ID_PAGAMENTO
AND nrParcela > @QTAPARCELAS_NOVA
AND dtPagamento IS NULL
UPDATE card.tbPagamentoVenda SET qtParcelas = @QTAPARCELAS_NOVA WHERE idPagamentoVenda = @ID_PAGAMENTO;
END
END