Please take a look at this and tell me if there is something wrong. I can´t find where is the problem but this sp is not working.
USE [DB_Canales]
GO
/****** Object: StoredProcedure [dbo].[SP_CargaBaseCanales_3] Script Date: 11-10-2019 12:20:51 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================================================================================
-- Author:
<Sebastian Carreño>
-- Create date: <Create Date,,>
-- Description:
<Description,,>
-- 2019-09-02: Se cambia busqueda de los recibos tecnocom, se busca el último recibo generado para la cuenta
-- 2019-09-03: Se incorpora la busqueda del ultimo EECC para nexus, de forma de actualizar lo ultimo facturado, si corresponde
-- EXEC SP_CargaBaseCanales_3
-- ============================================================================================================
ALTER PROCEDURE [dbo].[SP_CargaBaseCanales_3]
AS
BEGIN
DECLARE
@FEchaActual int,
@FechaVencimeinto int
DECLARE @NombreSP VARCHAR(50) = 'SP_CargaBaseCanales_3'
--LOG
INSERT INTO DB_Canales.dbo.TBL_LOG VALUES (@NombreSP, GETDATE(), NULL, '01.0. MAX Fechas EECC NEXUS')
SET @FEchaActual = (SELECT
MAX(FechaFactActual)
FROM
PRODAPPS108.DMSMUCorp.DBO.HIST_EECCE_HrCtaNac_NEXUSTC NEXUSTC with (nolock)
)
SET @FechaVencimeinto = (SELECT MAX(FechaProceso)
FROM PRODAPPS108.DMSMUCorp.DBO.HIST_EECCE_DetTransNac_NEXUSTC Cuenta with (nolock))
--LOG
INSERT INTO DB_Canales.dbo.TBL_LOG VALUES (@NombreSP, GETDATE(), NULL, '02.0. MERGE Tbl_hist_Estado_Cuenta NEXUS')
--#################################################################################################
--############################Cargamos la Infromacion de Hist Estado Cuenta #######################
--#################################################################################################
MERGE DB_Canales.dbo.Tbl_hist_Estado_Cuenta AS TARGET
USING (
SELECT top 10
NEXUSTC.SaldoCapitalCuotas AS SaldoCapitalCuotas,
NEXUSTC.PagoMinPesos AS PagoMinPesos ,
NEXUSTC.TasaIntCuotas5_24 AS TasaIntCuotas5_24,
TasaIntProxPeriodo AS TasaIntProxPeriodo,
NEXUSTC.CuotaMes1 AS CuotaMes1,
NEXUSTC.CuotaMes2 AS CuotaMes2,
NEXUSTC.CuotaMes3 AS CuotaMes3,
NEXUSTC.CuotaMes4 AS CuotaMes4,
Convert(BIGINT,NEXUSTC.[Saldo anterior]) AS SaldoAnterior,
Convert(BIGINT,NEXUSTC.TotalPagos) as TotalPagos,
NEXUSTC.TotalComprasCuotasAvan AS TotalComprasCuotasAvan,
NEXUSTC.TotalCargosAbonosCta AS TotalCargosAbonosCta,
Convert(date, Convert(varchar(10),FechaFactActual, 112)) as FECHAFACTURACION,
Convert(date, Convert(varchar(10),NEXUSTC.FechaFactProxima, 112)) AS FecProxima,
Convert(date, Convert(varchar(10),NEXUSTC.FechaProceso,112)) As Fechaultimafacturacion,
case when NEXUSTC.FechaFactVencimiento = 0 then
(select top 1 fechavencimiento from DB_Canales.dbo.CALENDARIO_FACTURACION)
else Convert(date, Convert(varchar(10),NEXUSTC.FechaFactVencimiento,112))
end as FechaFactVencimiento,
NEXUSTC.NumCuenta as NumCuenta,
FechaFactActual,
cuenta.rut
FROM PRODAPPS108.DMSMUCorp.DBO.HIST_EECCE_HrCtaNac_NEXUSTC NEXUSTC with (nolock)
inner join (
select
numcuenta, max(fechaproceso) fechaproceso
FROM PRODAPPS108.DMSMUCorp.DBO.HIST_EECCE_HrCtaNac_NEXUSTC a with (nolock)
group by numcuenta
) UEECC
on NEXUSTC.numcuenta = UEECC.numcuenta
and NEXUSTC.fechaproceso = UEECC.fechaproceso
INNER JOIN [DB_CANALES].[dbo].[Tbl_Cuenta] CUENTA WITH(NOLOCK)
ON
CUENTA.IdNumerocuenta = NEXUSTC.NUMCUENTA where
) AS SOURCE
ON (TARGET.idnumerocuenta = SOURCE.NUMCUENTA
AND TARGET.FechaVencimiento = Convert(date, Convert(varchar(10),SOURCE.FechaFactActual, 112))
)
WHEN MATCHED AND
(
ISNULL(TARGET.SaldoCapitalCuotas,0) <> ISNULL(SOURCE.SaldoCapitalCuotas,0)
OR
ISNULL(TARGET.PagoMinimo,0) <> ISNULL(SOURCE.PagoMinPesos,0)
OR
ISNULL(TARGET.ComprasCuoptas,0) <> ISNULL(SOURCE.TasaIntCuotas5_24,0)
OR
ISNULL(TARGET.ComprasCuotas5a24,0) <> ISNULL(SOURCE.TasaIntProxPeriodo,0)
OR
ISNULL(TARGET.CuotaPrimerMes,0) <> ISNULL(SOURCE.CuotaMes1,0)
OR
ISNULL(TARGET.CuotaSegundoMes,0) <> ISNULL(SOURCE.CuotaMes2,0)
OR
ISNULL(TARGET.CuotaTercerMes,0) <> ISNULL(SOURCE.CuotaMes3,0)
OR
ISNULL(TARGET.CuotaCuartoMes,0) <> ISNULL(SOURCE.CuotaMes4,0)
OR
ISNULL(TARGET.MontoSaldoAnterior,0) <> ISNULL(SOURCE.SaldoAnterior,0)
OR
ISNULL(TARGET.TotalDePagos,0)
<> ISNULL(SOURCE.TotalPagos,0)
OR
ISNULL(TARGET.TotalCargosAutCuenta,0) <> ISNULL(SOURCE.TotalComprasCuotasAvan,0)
OR
ISNULL(TARGET.TotalCargosyAbonosCuenta,0) <> ISNULL(SOURCE.TotalCargosAbonosCta,0)
OR
ISNULL(TARGET.FechaVencimiento,'?') <> ISNULL(SOURCE.FECHAFACTURACION,'?')
OR
ISNULL(TARGET.FechaProxFacturacion,'?') <> ISNULL(SOURCE.FecProxima,'?')
OR
ISNULL(TARGET.FechaUltimaFacturacion,'?') <> ISNULL(SOURCE.Fechaultimafacturacion,'?')
)
THEN
UPDATE SET
TARGET.SaldoCapitalCuotas = SOURCE.SaldoCapitalCuotas ,
TARGET.PagoMinimo = SOURCE.PagoMinPesos,
TARGET.ComprasCuoptas = SOURCE.TasaIntCuotas5_24,
TARGET.ComprasCuotas5a24 = SOURCE.TasaIntProxPeriodo,
TARGET.CuotaPrimerMes = SOURCE.CuotaMes1 ,
TARGET.CuotaSegundoMes = SOURCE.CuotaMes2,
TARGET.CuotaTercerMes = SOURCE.CuotaMes3,
TARGET.CuotaCuartoMes = SOURCE.CuotaMes4,
TARGET.MontoSaldoAnterior = SOURCE.SaldoAnterior,
TARGET.TotalDePagos
= SOURCE.TotalPagos,
TARGET.TotalCargosAutCuenta = SOURCE.TotalComprasCuotasAvan,
TARGET.TotalCargosyAbonosCuenta = SOURCE.TotalCargosAbonosCta,
TARGET.FechaVencimiento = SOURCE.FECHAFACTURACION,
TARGET.FechaProxFacturacion = SOURCE.FecProxima,
TARGET.FechaUltimaFacturacion = SOURCE.Fechaultimafacturacion,
TARGET.FechaPrimerVtoAvanceCIota = SOURCE.FechaFactVencimiento
WHEN NOT MATCHED BY TARGET THEN
INSERT (
SaldoCapitalCuotas
, PagoMinimo,
ComprasCuoptas
, ComprasCuotas5a24,
CuotaPrimerMes
, CuotaSegundoMes,
CuotaTercerMes
, CuotaCuartoMes,
MontoSaldoAnterior
, TotalDePagos,
TotalCargosAutCuenta
, TotalCargosyAbonosCuenta,
FechaVencimiento
, FechaProxFacturacion,
FechaUltimaFacturacion
, FechaPrimerVtoAvanceCIota,
IdNumeroCuenta , rut,
idorigen
)
VALUES (SOURCE.SaldoCapitalCuotas
,SOURCE.PagoMinPesos,
SOURCE.TasaIntCuotas5_24
,SOURCE.TasaIntProxPeriodo,
SOURCE.CuotaMes1
,SOURCE.CuotaMes2,
SOURCE.CuotaMes3
,SOURCE.CuotaMes4,
SOURCE.SaldoAnterior
,SOURCE.TotalPagos,
SOURCE.TotalComprasCuotasAvan,SOURCE.TotalCargosAbonosCta,
SOURCE.FECHAFACTURACION
,SOURCE.FecProxima ,
SOURCE.Fechaultimafacturacion, SOURCE.FechaFactVencimiento,
SOURCE.NUMCUENTA,
SOURCE.rut,
1
);
--------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
DECLARE @FEchaActualTecno Date
--LOG
INSERT INTO DB_Canales.dbo.TBL_LOG VALUES (@NombreSP, GETDATE(), NULL, '03.0. MERGE Tbl_hist_Estado_Cuenta SAT')
SET @FEchaActualTecno = (
SELECT
MAX(Fecha_proceso)
FROM
PRODAPPS108.BDSAT.ITFGEN.HIST_RECIBOS Tecno with (nolock)
)
MERGE DB_Canales.dbo.Tbl_hist_Estado_Cuenta AS TARGET
USING (
SELECT
RICIBO.CUENTA AS NUMCUENTA,
IMPREC
AS FACTURADO,
IMPMIN AS PAGOMIN,
IMPAPL AS PAGADPO,
FECEMIMOV as Fechaultimafacturacion,
FECVENMOV AS FECHAVEN,
CUEN.LIMCRECTA1 - CUEN.SALDISCRE1 -CUEN.SALAUTCREC1 SALDO,
cta.rut
FROM (
SELECT REC.CODENT, REC.CENTALTA, REC.CUENTA, REC.NUMEXTCTA, REC.SITUAREC, REC.FECEMIMOV,
REC.FECVENMOV, REC.IMPREC - REC.IMPAPL AS IMPREC, REC.IMPMIN, REC.IMPAPL
FROM PRODAPPS108.BDSAT.ITFGEN.HIST_RECIBOS REC
INNER JOIN (SELECT CODENT, CENTALTA, CUENTA, MAX(NUMEXTCTA) NUMEXTCTA
FROM PRODAPPS108.BDSAT.ITFGEN.HIST_RECIBOS
WHERE FECHA_PROCESO = @FEchaActualTecno
GROUP BY CODENT, CENTALTA, CUENTA
) ULTREC
ON REC.CODENT = ULTREC.CODENT
AND REC.CENTALTA = ULTREC.CENTALTA
AND REC.CUENTA = ULTREC.CUENTA
AND REC.NUMEXTCTA = ULTREC.NUMEXTCTA
WHERE REC.Fecha_Proceso = @FEchaActualTecno
) RICIBO
INNER JOIN PRODAPPS108.BDSAT.[dbo].[HIST_CUENTAS] CUEN
ON RICIBO.CODENT = CUEN.CODENT
AND RICIBO.CENTALTA = CUEN.CENALTA
AND RICIBO.CUENTA = CUEN.CUENTA
AND CUEN.FECHA_PROCESO >= @FEchaActualTecno
inner join db_canales.dbo.tbl_cuenta CTA
ON CTA.IdNumeroCuenta = RICIBO.CUENTA
) AS SOURCE
ON ( TARGET.idnumerocuenta = SOURCE.NUMCUENTA
AND TARGET.FechaVencimiento = Convert(date, Convert(varchar(10),SOURCE.FECHAVEN, 112))
)
WHEN MATCHED AND
(
ISNULL(TARGET.SaldoCapitalCuotas,0) <> ISNULL(SOURCE.SALDO,0)
OR ISNULL(TARGET.PagoMinimo,0) <> ISNULL(SOURCE.PAGOMIN,0)
OR ISNULL(TARGET.FechaVencimiento,'1900-01-01') <> SOURCE.FECHAVEN
OR ISNULL(TARGET.Fechaultimafacturacion, '1900-01-01') <> SOURCE.Fechaultimafacturacion
OR ISNULL(TARGET.FechaPrimerVtoAvanceCIota,'1900-01-01') <> SOURCE.FECHAVEN
OR (isnull(TotalDePagos,0) <> SOURCE.PAGADPO)
)
THEN
UPDATE SET
TARGET.SaldoCapitalCuotas
= SOURCE.SALDO ,
TARGET.PagoMinimo
= SOURCE.PAGOMIN,
TARGET.FechaVencimiento
= SOURCE.FECHAVEN,
TARGET.FechaPrimerVtoAvanceCIota
= SOURCE.FECHAVEN,
TARGET.Fechaultimafacturacion
= SOURCE.Fechaultimafacturacion,
TARGET.TotalDePagos = SOURCE.PAGADPO
WHEN NOT MATCHED BY TARGET THEN
INSERT (
SaldoCapitalCuotas,
PagoMinimo,
TotalDePagos,
FechaVencimiento,
FechaUltimaFacturacion,
IdNumeroCuenta,
rut,
idorigen
)
VALUES (SOURCE.SALDO ,SOURCE.PAGOMIN,
SOURCE.PAGADPO,
SOURCE.FECHAVEN,
SOURCE.Fechaultimafacturacion,
SOURCE.NUMCUENTA,
source.rut,
2
);
--#################################################################################################
--######################### Cargamos la Infromacion de Hist_Movimientos_Cuenta ####################
--#################################################################################################
--LOG
INSERT INTO DB_Canales.dbo.TBL_LOG VALUES (@NombreSP, GETDATE(), NULL, '04.0. MERGE Tbl_Movimiento_Cuenta NEXUS')
MERGE DB_Canales.dbo.Tbl_Movimiento_Cuenta AS TARGET
USING
(SELECT Convert(date,Convert(varchar(10),FechaProceso,112)) AS FechaProceso,
Cuenta.ComercioNombre AS ComercioNombre ,
TransaccionMonto AS TransaccionMonto,
Cuenta.SegmentoTXS AS SegmentoTXS ,
Cuenta.Correlativo AS Correlativo,
TransaccionCodigo AS TransaccionCodigo,
HISTCuenta.IdEstadoCuenta AS IdEstadoCuenta
FROM PRODAPPS108.DMSMUCorp.DBO.HIST_EECCE_DetTransNac_NEXUSTC Cuenta with (nolock)
INNER JOIN DB_Canales.dbo.Tbl_hist_Estado_Cuenta HISTCuenta with (nolock)
ON HISTCuenta.IdNumeroCuenta = Cuenta.NUmCuenta
WHERE FechaProceso = convert(varchar(10),@FechaVencimeinto,112) -- Between convert(varchar(10), getdate()-2 ,112) AND convert(varchar(10), getdate()-1 ,112)
GROUP BY FechaProceso, Cuenta.ComercioNombre, TransaccionMonto,
Cuenta.SegmentoTXS,Cuenta.Correlativo,TransaccionCodigo,HISTCuenta.IdEstadoCuenta
) AS SOURCE
ON ( TARGET.IdEstadoCuenta = SOURCE.IdEstadoCuenta )
WHEN NOT MATCHED BY TARGET THEN
INSERT (Fecha,
ComercioNombre,
Monto,
Segmento,
Correlativo,
CodTransaccion,
IdEstadoCuenta)
VALUES (SOURCE.FechaProceso,SOURCE.ComercioNombre,
SOURCE.TransaccionMonto,SOURCE.SegmentoTXS , SOURCE.Correlativo,
SOURCE.TransaccionCodigo, SOURCE.IdEstadoCuenta
);
------------------------------------------------------------------
------------------------------------------------------------------
--LOG
INSERT INTO DB_Canales.dbo.TBL_LOG VALUES (@NombreSP, GETDATE(), NULL, '05.0. MERGE Tbl_Movimiento_Cuenta SAT')
MERGE DB_Canales.dbo.Tbl_Movimiento_Cuenta AS TARGET
USING (
SELECT FECFAC AS FechaProceso,
OPER.CUENTA ,
NOMCOMRED AS ComercioNombre ,
IMPDIV AS TransaccionMonto ,
1 AS SegmentoTXS ,
NUMORDEN Correlativo ,
NUMAUT TransaccionCodigo ,
IdEstadoCuenta AS IdEstadoCuenta
FROM PRODAPPS108.BDSAT.OperacionesDiarias.HIST_MOVIMIENTOS_DE_CREDITO OPER
INNER JOIN DB_Canales.dbo.Tbl_hist_Estado_Cuenta HistCuenta
ON OPER.CUENTA = HistCuenta.IdNumeroCuenta
where FECHA_PROCESO = CONVERT(VARCHAR(10),GETDATE()-1,120)
) AS SOURCE
ON (TARGET.IdEstadoCuenta = SOURCE.IdEstadoCuenta)
WHEN NOT MATCHED BY TARGET THEN
INSERT (
Fecha,
ComercioNombre,
Monto,
Segmento,
Correlativo,
CodTransaccion,
IdEstadoCuenta)
VALUES (SOURCE.FechaProceso,SOURCE.ComercioNombre,
SOURCE.TransaccionMonto,SOURCE.SegmentoTXS , SOURCE.Correlativo,
SOURCE.TransaccionCodigo, SOURCE.IdEstadoCuenta
);
END
--LOG
INSERT INTO DB_Canales.dbo.TBL_LOG VALUES (@NombreSP, GETDATE(), NULL, '06.0. FIN')
GO