jueves, 26 de junio de 2014

Moralejas y resumen de trabajo

Creador del Post: Javier Gómez Madrigal
Hora Inicio: 00:00 Hora Fin: 00:30
Horas Trabajadas: 0.5

La principal moraleja que este proyecto nos dejo fue no dejar las cosas para tan tarde, trabajar con tiempo para lograr terminar todo lo que se nos pide en los proyectos.

horas trabajadas en total: 46.5

Migracion finalizada

Creador del Post: Edward Ovares Villegas Hora Inicio: 19:00 Hora Fin: 03:03 Horas Trabajadas: 8 Se logro terminar la migracion, se mostraba un error que hacia que se hiciera un rollback de la transaction. Luego se encontro el error, pues se cambio el nombre de una tabla y por esta razon se presentaba ese error, luego de que esto se soluciono se presento un error que solo algunas se estaban migrando. Despues de revisar el codigo minusiosamente se logro encontrar el error al llamar a una tabla temporal incorrecta. Despues de este par de inconvenientes se logro migrar correctamente todas las tablas.

metodo migracion

procedures migracion

migracion y la creacion de tablas temporales

Creación del procedure de facturación

USE FacturacionTelefonicaDB

GO
CREATE PROCEDURE SP_FACTURACION
(@FECHA DATE)
AS
BEGIN
BEGIN TRY
DECLARE @FAC_CUENTAS TABLE(ID INT, ID_CONTRATO INT, MINUTOSNORMALES INT, REDUCIDOS INT, INTERNET INT,
  MSN_LOCALES INT, CANT_RECONEXION INT)

DECLARE @FAC_CONTRATO TABLE(ID INT, ID_CUENTA INT, NOMBRE VARCHAR(50), TARIFA MONEY, PRECIO_MIN_NORM MONEY, PRECIO_MIN_REDU MONEY,
   MAX_MIN_NORM INT, MAX_MIN_REDU INT, PRECIO_MIN_INTER MONEY, MAX_MIN_INTER INT, PRECIO_MENSAJE MONEY,
   CANT_MAX_MENS INT)
 
DECLARE @FAC_TEMP TABLE(ID_CUENTA INT, FECHA DATE, DESCRIPCION VARCHAR(50), CARGOS_FIJOS MONEY, TARIFA MONEY, EX_MIN_NOR INT,
   EX_MIN_REDU INT, EX_MIN_INTER INT, EX_MEN INT, LLAMADAS INT, ESP_MEN INT, RECONEX MONEY, MOROSIDAD MONEY,
   MONTO MONEY, ESTADO BIT)
 
INSERT INTO @FAC_CUENTAS
SELECT M.ID, M.FK_Contrato, M.CantMinutosNormales, M.CantMinutosReducidos, M.CantMinutosInternet, M.CantMensajesLocales, M.CantReconexion
FROM FT_Cuenta AS M
WHERE (M.DiaCorte = @FECHA)

INSERT INTO @FAC_CONTRATO
SELECT M.ID, C.ID, M.Nombre, M.TarifaMinima, M.PrecioMinNormal, M.PrecioMinReducido, M.CantMaxMinNormales, M.CantMaxMinReducidos,
  M.PrecioMinInternet, M.CantMaxMinInternet, M.PrecioMensajeLocal, M.CantMaxMensajeLocal
FROM FT_Contrato AS M
INNER JOIN @FAC_CUENTAS AS C ON C.ID_CONTRATO = M.ID

INSERT INTO @FAC_TEMP
SELECT M.ID, @FECHA, 'Facturación de servicio telefónico', 858, C.TARIFA, M.MINUTOSNORMALES, M.REDUCIDOS, M.INTERNET,
      M.MSN_LOCALES, 1000, 0, M.CANT_RECONEXION, 0, 0, 0
FROM @FAC_CUENTAS AS M
INNER JOIN @FAC_CONTRATO AS C ON M.ID_CONTRATO = C.ID

BEGIN TRANSACTION
UPDATE @FAC_TEMP
SET EX_MIN_NOR = (EX_MIN_NOR - C.MAX_MIN_NORM) * C.PRECIO_MIN_NORM
FROM @FAC_CONTRATO AS C

UPDATE @FAC_TEMP
SET EX_MIN_REDU = (EX_MIN_REDU - C.MAX_MIN_REDU) * C.PRECIO_MIN_REDU
FROM @FAC_CONTRATO AS C

UPDATE @FAC_TEMP
SET EX_MIN_INTER = (EX_MIN_INTER - C.MAX_MIN_INTER) * C.PRECIO_MIN_INTER
FROM @FAC_CONTRATO AS C

UPDATE @FAC_TEMP
SET EX_MEN = (EX_MEN - C.CANT_MAX_MENS) * C.PRECIO_MENSAJE
FROM @FAC_CONTRATO AS C

UPDATE @FAC_TEMP
SET MONTO = MONTO + EX_MEN + EX_MIN_INTER + EX_MIN_NOR + EX_MIN_REDU + RECONEX + MOROSIDAD

INSERT INTO FT_Factura
SELECT T.ID_CUENTA, T.FECHA, T.DESCRIPCION, T.CARGOS_FIJOS, T.TARIFA, T.EX_MIN_NOR,
   T.EX_MIN_REDU, T.EX_MIN_INTER, T.EX_MEN, T.LLAMADAS, T.ESP_MEN, T.RECONEX, T.MOROSIDAD,
   T.MONTO, T.ESTADO
FROM @FAC_TEMP AS T
COMMIT TRANSACTION
RETURN 1;
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
RETURN @@ERROR*-1;
END CATCH;
END
GO

Creacion del procedure aplica movimientos

USE FacturacionTelefonicaDB

GO
CREATE PROCEDURE SP_APLICA_MOVIMIENTOS
(@FECHA DATE,
@DIAANTERIOR DATE)
AS
BEGIN
BEGIN TRY
DECLARE @MENSAJES TABLE(ID INT, ID_CUENTA INT, HORAINICIO DATETIME, HORAFIN DATETIME)

DECLARE @LLAMADAS TABLE(ID INT, ID_CUENTA INT, HORAINICIO DATETIME, HORAFIN DATETIME)

DECLARE @INTERNET TABLE(ID INT, ID_CUENTA INT, HORAINICIO DATETIME, HORAFIN DATETIME)

INSERT INTO @MENSAJES
SELECT M.ID, M.FK_Cuenta, M.FechaHoraInicio, M.FechaHoraFin
FROM FT_MovimientoMensajeEnviado AS M
WHERE (M.FechaHoraInicio > @DIAANTERIOR) AND (M.FechaHoraInicio < @FECHA)

INSERT INTO @LLAMADAS
SELECT M.ID, M.FK_Cuenta, M.FechaHoraInicio, M.FechaHoraFin
FROM FT_MovimientoLlamada AS M
WHERE (M.FechaHoraInicio > @DIAANTERIOR) AND (M.FechaHoraInicio < @FECHA)

INSERT INTO @INTERNET
SELECT M.ID, M.FK_Cuenta, M.FechaHoraInicio, M.FechaHoraFin
FROM FT_MovimientoConexionInternet AS M
WHERE (M.FechaHoraInicio > @DIAANTERIOR) AND (M.FechaHoraInicio < @FECHA)

BEGIN TRANSACTION
UPDATE FT_Cuenta
SET CantMensajesLocales = CantMensajesLocales + (CONVERT(INT,(CONVERT (TIME, M.HORAFIN))) - CONVERT(INT,(CONVERT (TIME, M.HORAINICIO))))
FROM @MENSAJES AS M
WHERE (FT_Cuenta.ID = M.ID_CUENTA)

UPDATE FT_Cuenta
SET CantMinutosNormales = CantMinutosNormales + (CONVERT(INT,(CONVERT (TIME, M.HORAFIN))) - CONVERT(INT,(CONVERT (TIME, M.HORAINICIO))))
FROM @LLAMADAS AS M
WHERE (FT_Cuenta.ID = M.ID_CUENTA)

UPDATE FT_Cuenta
SET CantMinutosInternet = CantMinutosInternet + (CONVERT(INT,(CONVERT (TIME, M.HORAFIN))) - CONVERT(INT,(CONVERT (TIME, M.HORAINICIO))))
FROM @INTERNET AS M
WHERE (FT_Cuenta.ID = M.ID_CUENTA)
COMMIT TRANSACTION
RETURN 1;
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
RETURN @@ERROR*-1;
END CATCH;
END
GO