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

No hay comentarios:

Publicar un comentario