Fin de la migración
Descripcion:
Lo que se trabajó en esta sección de la migración fue la parte del archivo de movimientos, que tuvo que ser adaptada al diagrama, puesto que no contenía información esencial
para la venta de los tiquetes del teatro.
Problemas:
El principal problema radica en que el precio de los tiquetes estaba calculado previamente y no daba lugar a los cálculos que éste requería para efecto de las inserciones, ya que
no tomaba en cuenta el precio de cada localidad del escenario ni el precio que varia dependiendo de cada evento.
También se tuvo problemas con los usuario extraídos por los archivos, ya que no contenían id que los asociaran con los tiquetes respectivos a las funciones
-----------------------------------------------------------------------------------------------------------------------
-- Verifica si el store procedure existe, para eliminarlo
IF OBJECT_ID ( N'BT_SP_AJUSTE', N'P' ) IS NOT NULL
DROP PROCEDURE BT_SP_AJUSTE;
GO
CREATE PROCEDURE BT_SP_AJUSTE
AS
BEGIN
BEGIN TRY
DECLARE @counter int,@max int; -- Contador del while y max
DECLARE @ElementA nvarchar(MAX),@ElementB nvarchar(MAX);
SET @counter = 1;
SET @max = (SELECT COUNT(*) FROM [XMLBoleteriaTeatroDB].[dbo].[XMLMovimientos] xg)+1;
--Inicio del ciclo de while
WHILE @counter < @max
BEGIN
SET @ElementA = (SELECT NombreComprador FROM [XMLBoleteriaTeatroDB].[dbo].[XMLMovimientos] WHERE ID = @counter);
SET @ElementB = (SELECT Id FROM [BoleteriaTeatroDB].dbo.BT_Usuario bu WHERE bu.Nombre = @ElementA);
UPDATE [XMLBoleteriaTeatroDB].[dbo].[XMLMovimientos]
SET
NombreComprador = @ElementB
WHERE Id = @counter
SET @counter = @counter + 1;
END
RETURN 1;
END TRY
BEGIN CATCH
EXEC BT_SP_GetErrorInfo;
RETURN @@ERROR*-1;
END CATCH
END
GO
-----------------------------------------------------------------------------------------------------------------------
-- Verifica si el store procedure existe, para eliminarlo
IF OBJECT_ID ( N'BT_SP_INSERTAR_MOVIMIENTO', N'P' ) IS NOT NULL
DROP PROCEDURE BT_SP_INSERTAR_MOVIMIENTO;
GO
CREATE PROCEDURE BT_SP_INSERTAR_MOVIMIENTO
AS
BEGIN
BEGIN TRY
INSERT INTO [BoleteriaTeatroDB].[dbo].[BT_MedioPago]
(Nombre)
VALUES('Tarjeta de Credito')
BEGIN TRANSACTION
-- Insert del Medio de Pago
-- Insert AsientoXTanda
INSERT INTO [BoleteriaTeatroDB].[dbo].[BT_AsientoXTanda]
(FK_Tanda,FK_Asiento)
SELECT FKTanda,FKAsiento FROM dbo.XMLMovimientos x
WHERE X.TipoOperacion = 'insercionMovimientos';
-- Insert Tiquetes
INSERT INTO [BoleteriaTeatroDB].[dbo].[BT_Tiquete]
(FK_AsientoXTanda,FK_MedioPago,FK_Usuario,FechaCompra,PrecioTotal,MontoCancelado)
SELECT (L.Id),1 ,X.NombreComprador,X.FechaCompra,L.PrecioTotal,L.PrecioTotal
FROM [XMLBoleteriaTeatroDB].[dbo].[XMLMovimientos] X
INNER JOIN
(SELECT AT.Id, AT.FK_Asiento, AT.FK_Tanda,(E.Precio+L.Precio) AS PrecioTotal
FROM [BoleteriaTeatroDB].[dbo].[BT_AsientoXTanda] AT
INNER JOIN [BoleteriaTeatroDB].[dbo].[BT_Tanda] T ON T.Id = AT.FK_Tanda
INNER JOIN [BoleteriaTeatroDB].[dbo].[BT_Evento] E ON E.Id = T.FK_Evento
INNER JOIN [BoleteriaTeatroDB].[dbo].[BT_Asiento] A ON A.Id = AT.FK_Asiento
INNER JOIN [BoleteriaTeatroDB].[dbo].[BT_Localidad] L ON L.Id = A.FK_Localidad)
L ON L.Id = X.ID
IF @@TRANCOUNT > 0
COMMIT TRANSACTION;
SELECT * FROM [BoleteriaTeatroDB].[dbo].[BT_AsientoXTanda]
SELECT * FROM [BoleteriaTeatroDB].[dbo].[BT_Tiquete]
RETURN 1;
END TRY
BEGIN CATCH
EXEC BT_SP_GetErrorInfo;
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
RETURN @@ERROR*-1;
END CATCH
END
GO
Horas Trabajadas: 2.5 hora
Autores:
Edward Ovares Villegas
Luis Diego Flores

0 comentarios:
Publicar un comentario
Suscribirse a Enviar comentarios [Atom]
<< Inicio