-- ============================================================
-- SP_PrestacionesRealizadasDetalle  (orquestador)
-- Llama a los 4 SPs hijos y devuelve el resultado unificado.
-- La interfaz externa no cambia: mismos parámetros, mismo resultado.
-- ============================================================

--exec [Clinica].[SP_PrestacionesRealizadasDetalle] '20260501', '20260531'
CREATE   PROCEDURE [Clinica].[SP_PrestacionesRealizadasDetalle]
    @FechaDesde         DATETIME,
    @FechaHasta         DATETIME,
    @IdProfesional      INT = NULL,
    @IdProfesionalOrden INT = NULL,
    @IdTipoPrestacion   VARCHAR(100) = NULL,
    @IdCaja             INT = NULL,
    @Top                INT = NULL
AS
BEGIN
    SET NOCOUNT ON;

    CREATE TABLE #Resultado (
        IdMovimientoCaja             INT,
        Identificador                VARCHAR(50),
        IdCaja                       INT,
        Caja                         VARCHAR(200),
        IdTipoEstadoCaja             INT,
        TipoEstadoCaja               VARCHAR(100),
        RutCajero                    VARCHAR(20),
        NombreCajero                 VARCHAR(200),
        FechaMovimiento              DATETIME,
        HoraMovimiento               VARCHAR(10),
        IdProfesional                INT,
        OrigenBono                   VARCHAR(100),
        RutProfesional               VARCHAR(20),
        NombreProfesional            VARCHAR(200),
        IdProfesionalOrden_Potencial INT,
        IdProfesionalOrden           INT,
        RutProfesionalOrden          VARCHAR(20),
        NombreProfesionalOrden       VARCHAR(200),
        RutPaciente                  VARCHAR(20),
        NombrePaciente               VARCHAR(200),
        CodigoPrestacion             VARCHAR(50),
        NombrePrestacion             VARCHAR(300),
        IdTipoPrestacion             INT,
        TipoPrestacion               VARCHAR(100),
        Modalidad                    VARCHAR(100),
        SistemaSalud                 VARCHAR(100),
        Isapre                       VARCHAR(100),
        NroBono                      VARCHAR(100),
        FechaEmision                 VARCHAR(20),
        FechaRecepcion               VARCHAR(20),
        Valor                        DECIMAL(18,2),
        MontoPagadoPrevision         DECIMAL(18,2),
        MontoCopago                  DECIMAL(18,2),
        SeguroComplementario         DECIMAL(18,2),
        Excedentes                   DECIMAL(18,2),
        TotalPagado                  DECIMAL(18,2),
        IdTipoCopago                 INT,
        TipoCopago                   VARCHAR(100)
    );

    INSERT INTO #Resultado
    EXEC Clinica.SP_PrestacionesImed
        @FechaDesde, @FechaHasta, @IdProfesional, @IdProfesionalOrden, @IdTipoPrestacion, @IdCaja;

    INSERT INTO #Resultado
    EXEC Clinica.SP_PrestacionesParticular
        @FechaDesde, @FechaHasta, @IdProfesional, @IdProfesionalOrden, @IdTipoPrestacion, @IdCaja;

    INSERT INTO #Resultado
    EXEC Clinica.SP_PrestacionesBonoExterno
        @FechaDesde, @FechaHasta, @IdProfesional, @IdProfesionalOrden, @IdTipoPrestacion, @IdCaja;

    INSERT INTO #Resultado
    EXEC Clinica.SP_PrestacionesPabellon
        @FechaDesde, @FechaHasta, @IdProfesional, @IdProfesionalOrden, @IdTipoPrestacion, @IdCaja;

	INSERT INTO #Resultado
	exec [Clinica].[SP_PrestacionesBonoImedManual]
		@FechaDesde, @FechaHasta, @IdProfesional, @IdProfesionalOrden, @IdTipoPrestacion, @IdCaja;

    --SELECT TOP (ISNULL(@Top, 600)) *
	select *
    FROM #Resultado
    ORDER BY FechaMovimiento DESC;

    DROP TABLE #Resultado;
END