Sesion #15

 Duración 9 horas 1:00pm - 10:00pm

Se finaliza con todos los aspectos pendientes del proyecto. Desde las funcionalidades faltantes hasta mejoras y/o correcciones en las ya existentes. 

Esta sesión tan larga nos fuimos turnando para comer y/o descansar. Para poder terminar el proyecto hoy mismo.

Se trabaja en los siguientes puntos:

-Sub Estados de Cuenta

-Creacion de un par de tablas nuevas que eran necesarias para la creacion del trigger y de la parte de los sub estados de cuenta.

-Trigger 

- Mejoras y correciones en la parte web


Adjunto parte del codigo escrito:

ALTER PROCEDURE [dbo].[SP_GenerarSubEstadoCuentaAdicional]
AS
BEGIN
    SET NOCOUNT ON;
    BEGIN TRY
        -- Variables de fechas
        DECLARE @fecha_corte DATE = GETDATE();

        -- Insertar sub-estados de cuenta para cada cuenta adicional en la tabla SubEstadoCuenta
        INSERT INTO SubEstadoCuenta (id_tcm, id_tca, fecha_corte, saldo_actual, pago_minimo, pago_contado, intereses_corrientes, intereses_moratorios)
        SELECT
            CTM.id AS id_tcm,
            TCA.id AS id_tca,
            @fecha_corte AS fecha_corte,
            CTM.saldo_actual AS saldo_actual,  -- Usa el saldo de la cuenta maestra
            CASE WHEN CTM.saldo_actual > 0 THEN CTM.saldo_actual * 0.05 ELSE 0 END AS pago_minimo,  -- Pago mínimo calculado sobre el saldo de la cuenta maestra
            CASE WHEN CTM.saldo_actual > 0 THEN CTM.saldo_actual ELSE 0 END AS pago_contado,  -- Pago total de la cuenta maestra
            ISNULL((SELECT SUM(monto_interes)
                    FROM InteresCorriente IC
                    WHERE IC.id_tcm = CTM.id
                      AND IC.fecha_operacion <= @fecha_corte), 0) AS intereses_corrientes,
            ISNULL((SELECT SUM(monto_interes)
                    FROM InteresMoratorio IM
                    WHERE IM.id_tcm = CTM.id
                      AND IM.fecha_operacion <= @fecha_corte), 0) AS intereses_moratorios
        FROM CuentaTarjetaAdicional TCA
        INNER JOIN CuentaTarjetaMaestra CTM ON TCA.id_tcm = CTM.id;
       
    END TRY
    BEGIN CATCH
        -- Manejo de errores y registro en DBErrors
        DECLARE @ErrorMessage NVARCHAR(4000) = LEFT(ERROR_MESSAGE(), 4000);
        INSERT INTO dbo.DBErrors
        VALUES (
            SUSER_SNAME(),
            ERROR_NUMBER(),
            ERROR_STATE(),
            ERROR_SEVERITY(),
            ERROR_LINE(),
            ERROR_PROCEDURE(),
            @ErrorMessage,
            GETDATE()
        );
    END CATCH;
END;
GO


CREATE TABLE SubEstadoCuenta (
    id INT PRIMARY KEY IDENTITY(1,1),
    id_tcm INT NOT NULL,                
    id_tca INT NOT NULL,                
    fecha_corte DATE NOT NULL,          
    saldo_actual DECIMAL(18,2) NOT NULL,
    pago_minimo DECIMAL(18,2) NOT NULL,  
    pago_contado DECIMAL(18,2) NOT NULL,
    intereses_corrientes DECIMAL(18,2),
    intereses_moratorios DECIMAL(18,2),
    FOREIGN KEY (id_tcm) REFERENCES CuentaTarjetaMaestra(id),
    FOREIGN KEY (id_tca) REFERENCES CuentaTarjetaAdicional(id)
);


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Sub Estados de cuenta</title>
    <style>
        /* Estilos básicos para la tabla */
        table {
            width: 80%;
            border-collapse: collapse;
            margin: 20px auto;
        }
        th, td {
            padding: 8px;
            border: 1px solid #ddd;
            text-align: left;
        }
        th {
            background-color: #f2f2f2;
        }
    </style>
</head>
<body>
    <h1>Estados de Cuenta</h1>
    <h2>Número de cuenta: {{ documento }}</h2>
    <table id="maestraTable">
        <thead>
            <tr>
                <th>ID Cuenta</th>
                <th>Fecha de Corte</th>
                <th>Saldo</th>
                <th>Pago Minimo</th>
                <th>Pago Contado</th>
                <th>Intereses Corrientes</th>
                <th>Intereses Moratorios</th>
            </tr>
        </thead>
        <tbody></tbody>
    </table>
   

    <button onclick="redireccionar()">Volver</button>

    <script>
        const urlParams = new URLSearchParams(window.location.search);
        const documento = urlParams.get('documento');
        const username = urlParams.get('username');

        function redireccionar(){
            window.location.href = `pagina_principal/${username}`;
        }

        // Obtener tarjetas del tarjetahabiente y mostrarlas en la tabla
        document.addEventListener('DOMContentLoaded', () => {
            fetch(`/subEstados?documento=${documento}`)
                .then(response => response.json())
                .then(data => {
                    const tableBody = document.querySelector('#maestraTable tbody');
                    tableBody.innerHTML = '';
                    data.estados.forEach(estado => {
                        const row = document.createElement('tr');
                        row.innerHTML = `
                            <td>${estado.id_cuenta}</td>
                            <td>${estado.fecha}</td>
                            <td>${estado.saldo}</td>
                            <td>${estado.pago_minimo}</td>
                            <td>${estado.pago_contado}</td>
                            <td>${estado.intereses_corrientes}</td>
                            <td>${estado.intereses_moratorios}</td>
                        `;
                        tableBody.appendChild(row);
                    });
                   
                })
                .catch(error => console.error('Error al obtener tarjetas:', error));
        });
    </script>
</body>
</html>




Comentarios

Entradas más populares de este blog

Sesion #14