Untitled

mail@pastecode.io avatar
unknown
plain_text
a month ago
3.5 kB
3
Indexable
Never
DECLARE @cod_personal INT, 
        @cod_grupo INT, 
        @cod_aero INT, 
        @cod_zona INT, 
        @cod_estado INT, 
        @fecha_desde VARCHAR(10), 
        @fecha_hasta VARCHAR(10), 
        @es_de_inspecciones INT, 
        @programada INT, 
        @nro_viatico INT, 
        @anio_viatico INT;

-- Asignar valores a los par·metros
SET @cod_personal = -1;
SET @cod_grupo = -1;
SET @cod_aero = -1;
SET @cod_zona = -1;
SET @cod_estado = -1;
SET @fecha_desde = N'01-01-2019';
SET @fecha_hasta = N'30-06-2021';
SET @es_de_inspecciones = -1;
SET @programada = -1;
SET @nro_viatico = -1;
SET @anio_viatico = -1;

-- Crear la tabla de resultados
DECLARE @Resultados TABLE (
    cod_solicitud INT,
    num_anio VARCHAR(20),
    Anio INT,
    Numero INT,
    Fecha_Salida VARCHAR(10),
    ApeyNom VARCHAR(255),
    Estado VARCHAR(100),
    Fecha_llegada VARCHAR(10),
    programada BIT,
    monto_total DECIMAL(10,2),
    trayecto VARCHAR(100), -- Nuevo campo para el procedimiento PlanMaestro_spViaticos_Consulta_StringTrayecto
    monto_anticipo DECIMAL(10,2) -- Nuevo campo para el procedimiento PlanMaestro_spViaticos_Consulta_total_anticipo
);

-- Insertar resultados del primer procedimiento almacenado en la tabla
INSERT INTO @Resultados
(
    cod_solicitud,
    num_anio,
    Anio,
    Numero,
    Fecha_Salida,
    ApeyNom,
    Estado,
    Fecha_llegada,
    programada
)
EXEC PlanMaestro_spViaticos_Consulta_general_por_estado_entre_fechas 
    @cod_personal, @cod_grupo, @cod_aero, @cod_zona, @cod_estado, 
    @fecha_desde, @fecha_hasta, @es_de_inspecciones, @programada, 
    @nro_viatico, @anio_viatico;


-- Declarar variables para almacenar el trayecto y el monto del anticipo
DECLARE @cod_solicitud_temp INT,
        @trayecto_temp VARCHAR(100),
        @monto_anticipo_temp DECIMAL(10,2);

-- Recorrer cada fila de @Resultados y ejecutar el primer procedimiento almacenado
DECLARE cursorTrayecto CURSOR FOR
SELECT cod_solicitud, trayecto
FROM @Resultados;

OPEN cursorTrayecto;
FETCH NEXT FROM cursorTrayecto INTO @cod_solicitud_temp, @trayecto_temp;

WHILE @@FETCH_STATUS = 0
BEGIN
    -- Ejecutar el primer procedimiento almacenado para cada solicitud
    EXEC PlanMaestro_spViaticos_Consulta_StringTrayecto 
        @cod_solicitud = @cod_solicitud_temp, 
        @es_solicitud = 1, 
        @trayecto = @trayecto_temp OUTPUT;

    -- Actualizar trayecto en @Resultados
    UPDATE @Resultados
    SET trayecto = @trayecto_temp
    WHERE cod_solicitud = @cod_solicitud_temp;

    FETCH NEXT FROM cursorTrayecto INTO @cod_solicitud_temp, @trayecto_temp;
END

CLOSE cursorTrayecto;
DEALLOCATE cursorTrayecto;

-- Recorrer cada fila de @Resultados y ejecutar el segundo procedimiento almacenado
DECLARE cursorAnticipo CURSOR FOR
SELECT cod_solicitud, monto_anticipo
FROM @Resultados;

OPEN cursorAnticipo;
FETCH NEXT FROM cursorAnticipo INTO @cod_solicitud_temp, @monto_anticipo_temp;

WHILE @@FETCH_STATUS = 0
BEGIN
    -- Ejecutar el segundo procedimiento almacenado para cada solicitud
    EXEC PlanMaestro_spViaticos_Consulta_total_anticipo 
        @cod_solicitud = @cod_solicitud_temp, 
        @monto_total = @monto_anticipo_temp OUTPUT;

    -- Actualizar monto_anticipo en @Resultados
    UPDATE @Resultados
    SET monto_anticipo = @monto_anticipo_temp
    WHERE cod_solicitud = @cod_solicitud_temp;

    FETCH NEXT FROM cursorAnticipo INTO @cod_solicitud_temp, @monto_anticipo_temp;
END

CLOSE cursorAnticipo;
DEALLOCATE cursorAnticipo;

-- Devolver los resultados combinados
SELECT *
FROM @Resultados;
Leave a Comment