USE [Clinica]
GO
/****** Object:  View [Caja].[VWCaja]    Script Date: 18-08-2025 21:38:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO




CREATE VIEW [Caja].[VWCaja] AS

	SELECT
		c.IdCaja, c.Descripcion, cc.SaldoInicial, cc.SaldoFinal, ISNULL(mov.Monto, 0) MontoActual,
		m.IdCentroMedico, m.Descripcion as CentroMedico, ec.IdTipoEstadoCaja, ec.Descripcion as TipoEstadoCaja,
		cc.IdCicloCaja, cc.FechaApertura, cc.FechaCierre, cc.FechaValidacion,
		cc.ArchivoPdfInicial, cc.ArchivoPdfFirmado,
		cc.IdUsuarioCajero, cuc.Nombre AS UsuarioCajero, 
		cuv.Nombre as UsuarioValidacion, cc.IdUsuarioValidacion
	FROM
		Caja.Caja c
	JOIN Clinica.CentroMedico m ON c.IdCentroMedico = m.IdCentroMedico
	JOIN Caja.TipoEstadoCaja ec on c.IdTipoEstadoCaja = ec.IdTipoEstadoCaja
	LEFT JOIN (
		SELECT IdCaja, MAX(FechaApertura) as MaxFechaApertura FROM Caja.CicloCaja GROUP BY IdCaja
	) CMax ON c.IdCaja = CMax.IdCaja
	LEFT JOIN Caja.CicloCaja cc ON c.IdCaja = cc.IdCaja AND cc.FechaApertura = CMax.MaxFechaApertura
	LEFT JOIN (
		SELECT IdCicloCaja, SUM(MontoCopago) Monto FROM Caja.MovimientoCaja GROUP BY IdCicloCaja
	) mov ON cc.IdCicloCaja = mov.IdCicloCaja
	LEFT JOIN Core.Usuario uc ON cc.IdUsuarioCajero = uc.IdUsuario
	LEFT JOIN Core.Contacto cuc ON uc.IdContacto = cuc.IdContacto
	LEFT JOIN Core.Usuario uv ON cc.IdUsuarioValidacion = uv.IdUsuario
	LEFT JOIN Core.Contacto cuv ON uv.IdContacto = cuv.IdContacto

GO
