Crear TF

Se creo el SP para crear las TF de una fecha de operacion especifica. Asociandolo a la TCA o TCM correspondiente. Se utilizo este link de referencia para agregar el dia faltante que no se encuentra en el xml, ya que la fecha de vencimiento de una tf solo presenta el mes y el año. Por lo que se investigó en internet que una tarjeta vencida puede utilizarse hasta el último día, por lo que se agrego que el día de vencimiento fuera el 31.

https://learn.microsoft.com/es-es/sql/t-sql/functions/eomonth-transact-sql?view=sql-server-ver16

Tiempo dedicado 1 hora 





Sp creado:

CREATE PROCEDURE dbo.CrearTF
@inFechaActual DATE
, @outCodeResult INT

AS
BEGIN
SET NOCOUNT ON
BEGIN TRY
--declaraciones
DECLARE @XMLDoc XML

-- almacena el contenido del xml de catalogos
SELECT @XMLDoc = CAST(BulkColumn AS XML)
FROM OPENROWSET(BULK 'C:\OperacionesFinal.xml'
, SINGLE_BLOB) AS x;

-- tablas variables
DECLARE @TF_XML TABLE(
Codigo VARCHAR(16)
, TCAsociada INT
, FechaVencimiento DATE
, CCV VARCHAR(4))

INSERT INTO @TF_XML(
Codigo 
, TCAsociada 
, FechaVencimiento 
, CCV )
SELECT
XMLDATA.value('@Codigo', 'VARCHAR(16)')
, XMLDATA.value('@TCAsociada', 'INT')
-- una tarjeta se puede usar hasta el ultimo dia de ese mes
-- tambien se agrega el dia ya que no viene
, EOMONTH(CONVERT(
DATE
, '01/' + XMLDATA.value('@FechaVencimiento'
, 'VARCHAR(7)')
, 103))
, XMLDATA.value('@CCV', 'VARCHAR(4)')

FROM @XMLDoc.nodes(
'/root/fechaOperacion[@Fecha=sql:variable("@inFechaActual")]/NTF/NTF') 
AS T(XMLDATA);

--crear los tcm y tca
BEGIN TRAN tcrearTF

INSERT INTO dbo.TF (
idTipoCuenta
, idTarjetaCredito
, codigo
, ccv
, fechaVencimiento
, esActiva)
        SELECT
            CASE 
                WHEN tcm.id IS NOT NULL THEN 1 -- Es TCM
                WHEN tca.id IS NOT NULL THEN 2 -- Es TCA
            END AS idTipoCuenta

            , CASE 
                WHEN tcm.id IS NOT NULL THEN tcm.id -- Es TCM
                WHEN tca.id IS NOT NULL THEN tca.id -- Es TCA
            END AS idTipoCuenta
            , tf.Codigo
            , tf.CCV
, tf.FechaVencimiento
-- es recien creada entonces es activa
, 1
FROM @TF_XML tf
        -- Verificar si TCAsociada corresponde a un código TCA
        LEFT JOIN dbo.TCA tca ON tca.codigoTCA = tf.TCAsociada
        -- Verificar si TCAsociada corresponde a un código TCM
        LEFT JOIN dbo.TCM tcm ON tcm.codigo = tf.TCAsociada;

COMMIT TRAN tcrearTF


END TRY
BEGIN CATCH
IF @@TRANCOUNT >0
BEGIN
ROLLBACK TRAN tcrearTF;
END;
INSERT INTO [dbo].[DBError] VALUES (
SUSER_SNAME(),
ERROR_NUMBER(),
ERROR_STATE(),
ERROR_SEVERITY(),
ERROR_LINE(),
ERROR_PROCEDURE(),
ERROR_MESSAGE(),
GETDATE()
);
SET @outCodeResult = 50005;   -- error en BD
END CATCH
SET NOCOUNT OFF;

END;



Comentarios

Entradas más populares de este blog

CargaXML

Crear TH