Entrada 17 (Lógica para dropDownList en InsertarMovimiento)

 Fecha: 27 de abril de 2026

Inicio: [22:52] | Fin: [23:55] || Total: [1 y 3 minutos]

Presente: Sebastián Ramírez Abarca

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

¿QUÉ HICIMOS HOY?

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

- Se implementó el store procedure, el endpoint y las rutas para implementar la drop down list de tiposMovimiento para la página de insertar movimiento.

        + Store procedure: sp_GetTiposMovimiento.

        + Función getTiposMovimiento en empleadoController.ts

        + Se creó la ruta con el archivo tiposMovimiento.ts

        + Se registró la ruta en index.ts

 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

PROBLEMAS DETECTADOS Y CÓMO RESOLVERLOS

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

- No puedo probar los cambios para detectar errores en ejecución pues el equipo de mi compañero está desconectado por lo que no puedo subir sp_GetTiposMovimientos al motor.
Solución: Hacer la prueba mañana cuando mi compañero encienda su equipo.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

DUDAS Y DIVERGENCIAS DE CRITERIOS

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

- No hubo dudas ni divergencias en esta sesión.

 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

AVANCE DEL CÓDIGO

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

sp_GetTiposMovimientos.sql:

USE VacacionesDB;
GO

-- =====================================================
-- SP: Obtener todos los tipos de movimiento
-- =====================================================
DROP PROCEDURE IF EXISTS sp_GetTiposMovimiento;
GO

CREATE PROCEDURE sp_GetTipoMovimiento;
GO

CREATE PROCEDURE sp_GetTipoMovimiento
    @outResultCode INT OUTPUT
AS
BEGIN
    SET NOCOUNT ON;

    BEGIN TRY

        SELECT t.id, t.Nombre, t.TipoAccion
        FROM dbo.TipoMovimiento
        ORDER BY Nombre ASC;

        SET @outResultCode = 0;

    END TRY
    BEGIN CATCH
       
        INSERT INTO dbo.DBError (UserName, Number, State, Severity, Line, [Procedure], Message, DateTime)
        Values(
            SYSTEM_USER,
            ERROR_NUMBER(),
            CAST(ERROR_STATE() AS VARCHAR(32)),
            CAST(ERROR_SEVERITY() AS VARCHAR(32)),
            ERROR_LINE(),
            ISNULL(ERROR_PROCEDURE(), 'sp_GetTiposMovimiento'),
            ERROR_MESSAGE(),
            GETDATE()
        );

        SET @outResultCode = 50008;
    END CATCH
END;
GO

función getTiposMovimiento en empleadoController.ts:

// GET /api/tiposMovimiento
export async function getTiposMovimiento(req: Request, res: Response): Promise<void> {
    try {
        const pool = await getPool();

        const result = await pool
            .request()
            .output('outResultCode', sql.Int)
            .execute('sp_GetTiposMovimiento');

        const outResultCode: number = result.output.outResultCode;

        if (outResultCode !== 0){
            res.status(400).json({
                success: false,
                outResultCode,
                message: await getErrorMessage(outResultCode)
            });
            return;
        }

        res.status(200).json({
            success: true,
            outResultCode,
            data: result.recordset
        });

    } catch (error){
        console.error('Error en getTiposMovimiento:', error);
        res.status(500).json({
            success: false,
            outResultCode: 50008,
            message: 'Error interno del servidor'
        });
    }
}

tiposMovimientos.ts:

import { Router } from 'express';
import { getTiposMovimiento } from '../controllers/empleadoController';

const router = Router();

// GET /api/tiposMovimiento para lista de los tipos de movimientos para el SELECT
router.get('/', getTiposMovimiento);

export default router;

Nueva ruta en index.ts:

import tiposMovimientoRouter from './routes/tiposMovimiento'
app.use('/api/tiposMovimiento', tiposMovimientoRouter);

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

MORALEJAS / BUENAS PRÁCTICAS

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

- Esta vez pensé en cómo obtener los tiposMovimientos para la drop down list antes de hacer el sp, espero no tener que devolverme a corregir.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

PRÓXIMA SESIÓN: ¿QUÉ SIGUE?

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

- Crear página de insertar movimientos.

Comentarios

Entradas más populares de este blog

Entrada 16 (Controlador de movimientos)

Entrada 20 (Lógica de insertarMovimientos, conectarla y probarla)

Entrada 21 (Análisis de resultados)