Fecha Final : 28/05/2018
Hora Inicio: 9:28 am
Hora Final: 10:58
Horas invertidas(Minutos): 388
Colaboradores: Wilson Lopez
Actividad :
Continuación con la creación de proceso masivo y la simulación , después de realizar un par de consultas a un compañero decidimos hacer algunos cambios con la idea de realizar correctamente la simulación de datos.
Creación de las facturas en la simulación , para este proceso se crea una tabla temporal con las propiedades de n municipalidad , se calcula el dia de cierre y se crea una factura luego se determinan que servicios se le ofrecen a cada propiedad y se genera un cargo por cada propiedad , se calcula el ultimo consumo de agua y se aplica a la operación de propiedades.
Pausa:
A eso de 12 a 5 salgo a una actividad de la U , retomo labores a eso de las 7:30
Código:
-----Generar recibos
CREATE PROCEDURE [dbo].[generar_recibos] @IDMuni int , @Fecha date
AS
BEGIN
DECLARE @Propiedades table (ID int,NumeroFinca int)
DECLARE @Servicios table (ID int, FKServicio int, Nombre VARCHAR(30),valor FLOAT)
DECLARE @DAY int
DECLARE @MONTH int
DECLARE @YEAR int
DECLARE @FechaLimite date
DECLARE @MontoTotal Money = 0
DECLARE @ConsumoDeAgua float
DECLARE @ValorAgua float
DECLARE @FacturaID int
BEGIN TRY
begin tran
--Calcular la fecha limite de pago
SELECT @DAY = m.DiaLimite FROM Municipalidad m WHERE m.ID = @IDMuni
SELECT @YEAR = DATEPART ( YEAR , @Fecha)
SELECT @MONTH = DATEPART ( MONTH , @Fecha)
SELECT @FechaLimite = dateadd(mm, (@YEAR - 1900) * 12 + @MONTH - 1 , @DAY - 1)
INSERT INTO @Propiedades(ID,NumeroFinca) SELECT p.ID,p.NumeroFinca FROM Propiedad p WHERE p.FK_Municipalidad = @IDMuni
DECLARE @PropiedadId int = 0
WHILE(1 = 1)
BEGIN
SELECT @PropiedadId = MIN(ID)FROM @Propiedades WHERE ID > @PropiedadId
IF @PropiedadId IS NULL BREAK
BEGIN
--Calcular monto propiedades
--Llenar una tabla con lo servicios por cada propiedad.
INSERT INTO @Servicios(ID,FKServicio, Nombre ,valor) SELECT dbo.TipoServicio.ID,dbo.ServicioXPropiedad.FK_Servicio, dbo.TipoServicio.Nombre, dbo.TipoServicio.Valor
FROM dbo.ServicioXPropiedad INNER JOIN dbo.TipoServicio ON dbo.ServicioXPropiedad.FK_Servicio = dbo.TipoServicio.ID WHERE FK_Propiedad = @PropiedadId
--CREAR EL NUEVO RECIBO
INSERT INTO Recibo (FK_Propiedad,FechaEmision,PagoTotalNoIntereses,InteresMoratorio,TotalPagado,FechaLimite,FechaPagado)
VALUES ( @PropiedadId,@Fecha,0,0,0,@FechaLimite,NULL)
--Asigno el ID de factura
SELECT @FacturaID = MAX(ID) FROM Recibo
SELECT @FacturaID
--Recorremos cada uno de los servicios de la propiedad
DECLARE @ServiciosId int = 0
WHILE(1 = 1)
BEGIN
SELECT @ServiciosId = MIN(ID)FROM @Servicios WHERE ID > @ServiciosId
IF @ServiciosId IS NULL BREAK
BEGIN
DECLARE @Monto float = 0
DECLARE @IDServicio int;
SELECT @IDServicio = ID FROM @Servicios WHERE ID = @ServiciosId
IF(@IDServicio=1)
BEGIN
--Sumar el valor del agua multiplicado por el precio de la ultima lectura
SELECT @ValorAgua = ts.Valor FROM @Servicios ts WHERE ts.ID = @IDServicio
SELECT TOP 1 @ConsumoDeAgua = Q FROM ConsumoAgua ca WHERE ca.FK_Propiedad = @PropiedadId ORDER BY ca.FechaLectura DESC
SET @MontoTotal = @MontoTotal+CAST(@ConsumoDeAgua*@ValorAgua AS MONEY)
END
ELSE
BEGIN
--Sumar el valor de todos los servicios de una propiedad
SELECT @Monto = s.valor FROM @Servicios s WHERE s.ID = @IDServicio;
SET @MontoTotal = @MontoTotal+CAST(@Monto AS MONEY)
END
END
END
UPDATE Recibo SET PagoTotalNoIntereses = @MontoTotal WHERE ID = @FacturaID
--CREAR LINEAS
END
DELETE FROM @Servicios
SET @MontoTotal = 0
END
commit tran
return 1
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0 ROLLBACK;
SELECT ERROR_MESSAGE() --MOSTRAR EL ERROR
return 0 --failed
END CATCH
END
No hay comentarios.:
Publicar un comentario