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