----------------------------------------------------------------
-- Dt Criação : 05/11/2012
-- FUNCAO : ATUALIZA LIMITE DE CREDITO
-- AUTOR :
----------------------------------------------------------------
-- EXEC AtualizaLimite '13883996003945','2010-08-13'
--
use cartao1
SET NOCOUNT ON
-- exclui a procedures caso ela já exista
IF EXISTS ( select NAME from SYSOBJECTS
where NAME = 'AtualizaLimite' AND TYPE = 'P')
DROP PROCEDURE AtualizaLimite
GO
-- cria procedure
CREATE PROCEDURE AtualizaLimite
(
-- cnpj do emissor - '05881791000120'
@CNPJ_ADM varchar(14),
-- data do fechamento - '2010-05-20' (inclusive)
@DTFECHAMENTO varchar(10)
)
AS
-- declara variaves usasas na procedure
DECLARE
@CNPJ_BANDEIRA CHAR(14),
@CNPJ_MATRIZ CHAR(14),
@CNPJ_ADM CHAR(14),
@CNPJ_ESTABELECIMENTO CHAR(14),
@CCCPF CHAR(14),
@VALOR FLOAT,
@QTDRegistro INT
-- inicializa variaveis
SELECT
@VALOR = 0,
@QTDRegistro = 0
-- cria tabele temporária
SELECT
LA.CNPJ_ADM,
LA.CCCPF
INTO
#TMP_LANCREDITO
FROM
LANCREDITO LA
INNER JOIN VVAUTOCAR_ADM AD
ON AD.CNPJ_ADM=LA.CNPJ_ADM AND AD.STATUS='A'
WHERE
LA.CNPJ_ADM = @CNPJ_ADM
-- SOMA 1 MES EM DTFECHAMENTO = EX. 2010-06-30
SET @DTFUTURO = CONVERT(CHAR(10),DATEADD(MONTH,1,@DTFECHAMENTO),120)
-- declara cursor
DECLARE C_C01 CURSOR FOR
SELECT
EC.CNPJ_ADM,
EC.CNPJ_ESTABELECIMENTO
FROM
VVAUTOCAR_ESTABADMCICLO EC
WHERE
SUBSTRING(EC.FECHACREDITO,1,1) ='D'
GROUP BY
EC.CNPJ_ADM,
EC.CNPJ_ESTABELECIMENTO
ORDER BY
1,2
-- abre o cursor
OPEN C_C01
FETCH NEXT FROM C_C01 INTO
@CNPJ_ADM,
@CCCPF
WHILE @@FETCH_STATUS = 0
BEGIN
-- carga de variareis
SELECT
@CNPJ_BANDEIRA = AD.CNPJ_BANDEIRA,
@CNPJ_MATRIZ = AD.CNPJ_MATRIZ
FROM
VVAUTOCAR_ADM AD
WHERE
AD.CNPJ_ADM = @CNPJ_ADM
-- checar se o registro existe
SELECT
TOP 1
@VALOR = VALOR
FROM
CCPF
WHERE
CNPJ_ADM = @CNPJ_ADM AND
CCCPF = @CCCPF
ORDER BY
LANCREEXTRATOCRE DESC
-- pega quantidade de registros do select
SELECT
@QTDRegistro = @@ROWCOUNT,@VALOR = ISNULL(@VALOR,0)
-- registro exite - ( ALTERA )
IF @QTDRegistro>0
UPDATE
CCPF
SET
VALOR = VALOR + @VALOR,
DTMODI = CONVERT(CHAR(19),GETDATE(),120)
WHERE
CNPJ_ADM = @CNPJ_ADM
AND CCCPF = @CCCPF
-- nao localizou o registro - ( INSERE )
IF @QTDRegistro=0
INSERT INTO CCPF(
CNPJ_ADM,
@CCCPF,
VALOR)
VALUES
@CNPJ_ADM,
@CCCPF,
@VALOR)
-- avança 1 registro no cursor
FETCH NEXT FROM C_C01 INTO @CNPJ_ADM,
@CCCPF
END
-- tira cursor da memoria do servidor
CLOSE C_C01
DEALLOCATE C_C01