lunes, 24 de noviembre de 2014

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