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.
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
Publicar un comentario