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
Publicar un comentario