miércoles, 12 de agosto de 2020

12/08/2020

 Se agregaron los siguientes SPs:

  • SP_ProcesaPagoFactura: Procesan los nodos de pagos del xml y paga el correspondiente al mas viejo de la tabla de numeros que le entra(@numeros)
        CREATE PROC [dbo].[SP_ProcesaPagoFactura] @inNumeros PagoFacturasTipo READONLY
        UPDATE [dbo].[Factura]

SET Estado = 1
,FechaPago = GETDATE()
FROM [dbo].[Factura] FL
INNER JOIN [dbo].[Contrato] C ON C.id = FL.idContrato
INNER JOIN @inNumeros N ON N.numero = C.Numero
WHERE FL.Fecha = MIN(FL.Fecha)
  • SP_ProcesaDatosMegas: Procesa el uso de los megas de los contratos.(inUsoDatos,InFechaOperacion)
       CREATE PROC [dbo].[SP_ProcesaDatosMegas] @inUsoDatos DatosTipo READONLY,                                                                                                                                 @InFechaOperacion DATE
        DECLARE @idMenor INT
,@idMayor INT
,@cantidadMegasBase INT
,@costoMegaAdicional FLOAT
,@idFactura INT
,@monto MONEY
SELECT @idMenor = min([id]), @idMayor=max([id]) FROM @inUsoDatos--SACA ID MAYOR Y MENOR PARA ITERAR LA TABLA
BEGIN TRAN
WHILE @idMenor<=@idMayor
BEGIN
SET @costoMegaAdicional = (SELECT Valor 
  FROM ElementoDeTipoTarifa ETT
  INNER JOIN TipoTarifa TT ON TT.id = ETT.idTipoTarifa
  INNER JOIN Contrato C ON C.TipoTarifa = TT.id
  INNER JOIN @inUsoDatos UD ON UD.id = .Numero
  WHERE UD.id = @idMenor AND ETT.idTipoElemento = 6)
SET @cantidadMegasBase = (SELECT Valor 
  FROM ElementoDeTipoTarifa ETT
  INNER JOIN TipoTarifa TT ON TT.id = ETT.idTipoTarifa
  INNER JOIN Contrato C ON C.TipoTarifa = TT.id
  INNER JOIN @inUsoDatos UD ON UD.id = .Numero
  WHERE UD.id = @idMenor AND ETT.idTipoElemento = 3)
SET @idFactura = (SELECT TOP 1 F.id FROM Factura F 
INNER JOIN Contrato C ON C.id = F.idContrato
INNER JOIN @inUsoDatos UD ON C.Numero = UD.numero
WHERE UD.id = @idMenor)
UPDATE Factura
SET SaldoMegas += (SELECT CantMegas FROM @inUsoDatos WHERE id = @idMenor)
WHERE id = @idFactura

IF @cantidadMegasBase < (SELECT SaldoMegas FROM Factura WHERE id = @idFactura)
BEGIN
SET @monto = @costoMegaAdicional*(SELECT CantMegas FROM @inUsoDatos WHERE id = @idMenor)
INSERT Detalle(Monto,idFactura,idElementoDeTarifa)
SELECT @monto,@idFactura,6
SET @idMenor += 1
END
ELSE
BEGIN
SET @monto = 0
INSERT Detalle(Monto,idFactura,idElementoDeTarifa)
SELECT @monto,@idFactura,3
SET @idMenor += 1
END

UPDATE Factura
SET montoTotal += @monto
WHERE id = @idFactura
END
COMMIT
END TRY

Se trabajo por 6 horas

martes, 11 de agosto de 2020

11/08/2020

 Se agrego un script que lee el xml de configuraciones el cual es el siguiente:


USE [prograFinal]

DECLARE @XMLData XML

DECLARE @hdoc INT

SELECT @XMLData = C

FROM OPENROWSET (BULK 'C:\Users\emema\Documents\TEC\2020\SEM_I\BasesI\PrograFinal\proyectoFinalDB\archivosXML\configuracionTarifas.xml', SINGLE_BLOB) AS ReturnData(C)

EXEC sp_xml_preparedocument @hdoc OUTPUT, @XMLData



--INSERTA TIPO RELACION FAMILIAR.

INSERT INTO [dbo].[TipoRelacionFamiliar] ([id], [nombre])

SELECT [ID],[Nombre]

FROM OPENXML (@hdoc,'configTarifas/TipoRelacionFamiliar', 1)

WITH(

[ID] INT '@ID',

[Nombre] VARCHAR(100) '@Nombre'

)


E inserta los tipos de relaciones familiares,  tipos de tarifa, elementos y elemento de tarifa.

Se cambio el diagrama y prácticamente esta finalizado:


Se trabajo por 4 horas