From acbfc1766805a1fe3c20b137fb6a10cfc173cd60 Mon Sep 17 00:00:00 2001 From: Facundo Melgarejo Date: Sun, 17 Nov 2024 21:37:02 -0300 Subject: [PATCH 1/2] fix: :boom: Detalle de pagos, calculo de valor original, mora y cuota con mora --- .../EstadoCuenta/EstadoCuenta.tsx | 100 ++++++------------ 1 file changed, 34 insertions(+), 66 deletions(-) diff --git a/FrontAdmin/src/components/Pages-Alumnos/EstadoCuenta/EstadoCuenta.tsx b/FrontAdmin/src/components/Pages-Alumnos/EstadoCuenta/EstadoCuenta.tsx index 13af295..30ac30e 100644 --- a/FrontAdmin/src/components/Pages-Alumnos/EstadoCuenta/EstadoCuenta.tsx +++ b/FrontAdmin/src/components/Pages-Alumnos/EstadoCuenta/EstadoCuenta.tsx @@ -24,6 +24,7 @@ interface Cuota { tipo: string; valorinformado: number; monto: number; + fecha_vencimiento: string, cuota_completa: boolean, } @@ -60,6 +61,9 @@ interface CompromisoResponse { cuota_reducida_2venc: number, cuota_reducida_3venc: number, matricula: number, + fecha_vencimiento_2: number, + fecha_vencimiento_1: number, + fecha_vencimiento_3: number, } interface Pago { @@ -142,7 +146,6 @@ function InformarPago() { const fetchCompromiso = async () => { try { const data = await FetchCompromisos(); - console.log(' compromiso:', data) setCompromiso(data) } catch (error) { setError(error); @@ -182,7 +185,6 @@ function InformarPago() { const fetchDetalleCompromiso = async () => { try { const detalleData = await FetchDetalleCompromiso(compromisoFirmado.results[0].id_compromiso_de_pago); - console.log('detalle compromiso:', detalleData) setDetalleCompromiso(detalleData); } catch (error) { console.error('Error al obtener el detalle del compromiso', error); @@ -219,33 +221,48 @@ function InformarPago() { ultimo_cursado: '-' }; - const verificarMora = (fecha: string) => { - const [year, month, day] = fecha.split('-'); - const dia = parseInt(day, 10); + const verificarMora = (fechaDeInforme: string, cuota_fechaVencimiento: string) => { + if (!cuota_fechaVencimiento) { + console.error('Fecha de vencimiento inválida:', cuota_fechaVencimiento); + return false; // Devuelve un valor predeterminado + } + const [year, month, day] = fechaDeInforme.split('-'); + let DatefechaDeInforme = new Date(year + '-' + month + '-' + day); + + //armar la fecha de vencimiento mes a mes + const [year_vto, month_vto, day_vto] = cuota_fechaVencimiento.split('-'); + let fechaCompleta_vto_1 = new Date( year_vto + '-' + month_vto + '-' + detalleCompromiso?.fecha_vencimiento_1) + let fechaCompleta_vto_2 = new Date( year_vto + '-' + month_vto + '-' + detalleCompromiso?.fecha_vencimiento_2); - if (dia > 15) { + if (DatefechaDeInforme > fechaCompleta_vto_2) { return 2 - } else if (dia > 10) { + } else if (DatefechaDeInforme > fechaCompleta_vto_1) { return 1 } else { return 0 } }; - const mostrarMontoConMora = (fecha: string, cuota_completa: boolean) => { - const mora = verificarMora(fecha); //poner fecha en formato 'aaaa-mm-dd' para simular la mora - + const mostrarMontoConMora = ( + fechaDeInforme: string, + cuota_completa: boolean, + cuota_fechaVencimiento: string + ) => { + if (!detalleCompromiso) return 0; + const mora = verificarMora(fechaDeInforme, cuota_fechaVencimiento); + switch (mora) { case 0: - return cuota_completa ? detalleCompromiso?.monto_completo : detalleCompromiso?.cuota_reducida; + return cuota_completa ? detalleCompromiso.monto_completo : detalleCompromiso.cuota_reducida; case 1: - return cuota_completa ? detalleCompromiso?.monto_completo_2venc : detalleCompromiso?.cuota_reducida_2venc; + return cuota_completa ? detalleCompromiso.monto_completo_2venc : detalleCompromiso.cuota_reducida_2venc; case 2: - return cuota_completa ? detalleCompromiso?.monto_completo_3venc : detalleCompromiso?.cuota_reducida_3venc; + return cuota_completa ? detalleCompromiso.monto_completo_3venc : detalleCompromiso.cuota_reducida_3venc; default: - return 0; // Manejo de error o default + return 0; } }; + return ( @@ -368,11 +385,11 @@ function InformarPago() { {pago.cuotas.map (cuota => ( cuota.id_cuota === detail ? ( // Verifica cada cuota para mostrar solo las que coinciden - <> + <> {cuota.nro_cuota} {'$ ' + new Intl.NumberFormat('es-ES').format(cuota.tipo === "Matrícula" ? (detalleCompromiso?.matricula ?? 0) : (cuotaCompleta ? (detalleCompromiso?.monto_completo) ?? 0 : (detalleCompromiso?.cuota_reducida) ?? 0) )} - {'$ ' + new Intl.NumberFormat('es-ES').format((mostrarMontoConMora(pago.fecha, cuota.cuota_completa) ?? 0) - (cuota.cuota_completa ? (detalleCompromiso?.monto_completo) ?? 0 : (detalleCompromiso?.cuota_reducida) ?? 0) ) } + {'$ ' + new Intl.NumberFormat('es-ES').format(cuota.tipo === "Matrícula" ? 0 : (mostrarMontoConMora(pago.fecha, cuota.cuota_completa, cuota.fecha_vencimiento) ?? 0) - (cuota.cuota_completa ? (detalleCompromiso?.monto_completo) ?? 0 : (detalleCompromiso?.cuota_reducida) ?? 0) ) } {'$ ' + new Intl.NumberFormat('es-ES').format(cuota.monto)} {formatoFechaISOaDDMMAAAA(pago.fecha)} @@ -394,53 +411,4 @@ function InformarPago() { ); } -export default InformarPago; - -/* - - - Estado de cuenta - - - - - - Estado de cuenta al {fechaDeHoy} - - {pagos.length > 1 ? ( - - - - - - - - - - - - - {pagos && pagos.map((pago, index) => ( - - - - - - - - - ))} - -
- Numero - Fecha Primer Vto.Valor ActualValor PagadoValor InformadoValor Adeudado
- {pago.numero} - {}{'$ ' + new Intl.NumberFormat('es-ES').format(pago.montoActual)}{'$ ' + new Intl.NumberFormat('es-ES').format(pago.valorpagado)}{'$ ' + new Intl.NumberFormat('es-ES').format(pago.valorinformado)}{'$ ' + new Intl.NumberFormat('es-ES').format(pago.montoActual - pago.valorpagado - pago.valorinformado)}
- ) : ( - No existen cuotas del cuatrimestre en curso. El alumno no firmo el compromiso de pago del periodo actual. - )} -
- -
-
-*/ \ No newline at end of file +export default InformarPago; \ No newline at end of file From 9daaeb60c45c3c62ea1b9c376c7703e6a5cd169e Mon Sep 17 00:00:00 2001 From: Facundo Melgarejo Date: Mon, 18 Nov 2024 14:29:46 -0300 Subject: [PATCH 2/2] feat: :rocket: se agrego detalle de pagos en FichaAlumno, desde la vista de admin --- FrontAdmin/src/API-Alumnos/Compromiso.ts | 8 +- FrontAdmin/src/API-Alumnos/Pagos.ts | 7 +- .../EstadoCuenta/EstadoCuenta.tsx | 24 +- .../Pages/Alumnos/SubPages/FichaAlumno.tsx | 609 +++++++++++++----- 4 files changed, 452 insertions(+), 196 deletions(-) diff --git a/FrontAdmin/src/API-Alumnos/Compromiso.ts b/FrontAdmin/src/API-Alumnos/Compromiso.ts index dbc55e1..481e001 100644 --- a/FrontAdmin/src/API-Alumnos/Compromiso.ts +++ b/FrontAdmin/src/API-Alumnos/Compromiso.ts @@ -1,11 +1,13 @@ import Cookies from 'js-cookie' // los dni son la mama de lo hardcodeado -export const FetchCompromisos = async () => { +export const FetchCompromisos = async (dni: number | undefined ) => { try { const token = Cookies.get('tokennn'); - const dni = Cookies.get('dni'); - + if (!dni) { + dni = parseInt(Cookies.get('dni') || '', 10); + } + const response = await fetch(`http://localhost:8000/api/firmas/firmas-de-alumno/${dni}/`, { method: 'GET', headers: { diff --git a/FrontAdmin/src/API-Alumnos/Pagos.ts b/FrontAdmin/src/API-Alumnos/Pagos.ts index d7ad32b..7fa72d5 100644 --- a/FrontAdmin/src/API-Alumnos/Pagos.ts +++ b/FrontAdmin/src/API-Alumnos/Pagos.ts @@ -62,11 +62,12 @@ export const FetchGetCuotas = async (dni: number | undefined ) => { }; -export const FetchResumenPagos = async () => { +export const FetchResumenPagos = async (dni: number | undefined ) => { try { const token = Cookies.get('tokennn'); - const dni = Cookies.get('dni'); - + if (!dni) { + dni = parseInt(Cookies.get('dni') || '', 10); + } const response = await fetch(`http://localhost:8000/api/pagos/alumno/resumen_pagos/${dni}`, { method: 'GET', headers: { diff --git a/FrontAdmin/src/components/Pages-Alumnos/EstadoCuenta/EstadoCuenta.tsx b/FrontAdmin/src/components/Pages-Alumnos/EstadoCuenta/EstadoCuenta.tsx index 30ac30e..3d9a731 100644 --- a/FrontAdmin/src/components/Pages-Alumnos/EstadoCuenta/EstadoCuenta.tsx +++ b/FrontAdmin/src/components/Pages-Alumnos/EstadoCuenta/EstadoCuenta.tsx @@ -145,7 +145,7 @@ function InformarPago() { const fetchCompromiso = async () => { try { - const data = await FetchCompromisos(); + const data = await FetchCompromisos(undefined); setCompromiso(data) } catch (error) { setError(error); @@ -157,7 +157,7 @@ function InformarPago() { const fetchPagos = async () => { try { - const data = await FetchResumenPagos(); + const data = await FetchResumenPagos(undefined); setPagos(data); } catch (error) { setError(error); @@ -173,11 +173,6 @@ function InformarPago() { fetchDetalleAlumno(dni); fetchCompromiso(); fetchPagos(); - - - - - }, []); useEffect(() => { @@ -221,11 +216,7 @@ function InformarPago() { ultimo_cursado: '-' }; - const verificarMora = (fechaDeInforme: string, cuota_fechaVencimiento: string) => { - if (!cuota_fechaVencimiento) { - console.error('Fecha de vencimiento inválida:', cuota_fechaVencimiento); - return false; // Devuelve un valor predeterminado - } + const verificarFechaDePago = (fechaDeInforme: string, cuota_fechaVencimiento: string) => { const [year, month, day] = fechaDeInforme.split('-'); let DatefechaDeInforme = new Date(year + '-' + month + '-' + day); @@ -243,20 +234,23 @@ function InformarPago() { } }; - const mostrarMontoConMora = ( + const calcularMontoConMora = ( fechaDeInforme: string, cuota_completa: boolean, cuota_fechaVencimiento: string ) => { if (!detalleCompromiso) return 0; - const mora = verificarMora(fechaDeInforme, cuota_fechaVencimiento); + const mora = verificarFechaDePago(fechaDeInforme, cuota_fechaVencimiento); switch (mora) { case 0: + //pagado antes del primer vto return cuota_completa ? detalleCompromiso.monto_completo : detalleCompromiso.cuota_reducida; case 1: + //pagado antes del segundo vto return cuota_completa ? detalleCompromiso.monto_completo_2venc : detalleCompromiso.cuota_reducida_2venc; case 2: + //pagado despues del segundo vto return cuota_completa ? detalleCompromiso.monto_completo_3venc : detalleCompromiso.cuota_reducida_3venc; default: return 0; @@ -389,7 +383,7 @@ function InformarPago() { {cuota.nro_cuota} {'$ ' + new Intl.NumberFormat('es-ES').format(cuota.tipo === "Matrícula" ? (detalleCompromiso?.matricula ?? 0) : (cuotaCompleta ? (detalleCompromiso?.monto_completo) ?? 0 : (detalleCompromiso?.cuota_reducida) ?? 0) )} - {'$ ' + new Intl.NumberFormat('es-ES').format(cuota.tipo === "Matrícula" ? 0 : (mostrarMontoConMora(pago.fecha, cuota.cuota_completa, cuota.fecha_vencimiento) ?? 0) - (cuota.cuota_completa ? (detalleCompromiso?.monto_completo) ?? 0 : (detalleCompromiso?.cuota_reducida) ?? 0) ) } + {'$ ' + new Intl.NumberFormat('es-ES').format(cuota.tipo === "Matrícula" ? 0 : (calcularMontoConMora(pago.fecha, cuota.cuota_completa, cuota.fecha_vencimiento) ?? 0) - (cuota.cuota_completa ? (detalleCompromiso?.monto_completo) ?? 0 : (detalleCompromiso?.cuota_reducida) ?? 0) ) } {'$ ' + new Intl.NumberFormat('es-ES').format(cuota.monto)} {formatoFechaISOaDDMMAAAA(pago.fecha)} diff --git a/FrontAdmin/src/components/Pages/Alumnos/SubPages/FichaAlumno.tsx b/FrontAdmin/src/components/Pages/Alumnos/SubPages/FichaAlumno.tsx index 1f4aa62..7b682cc 100644 --- a/FrontAdmin/src/components/Pages/Alumnos/SubPages/FichaAlumno.tsx +++ b/FrontAdmin/src/components/Pages/Alumnos/SubPages/FichaAlumno.tsx @@ -1,4 +1,4 @@ -import { useParams } from 'react-router-dom'; + import { useParams } from 'react-router-dom'; import { Flex, Box, @@ -18,8 +18,8 @@ import { Checkbox, Input, Tag, - Tabs, - TabList, + Tabs, + TabList, Tab, TabPanels, TabPanel, @@ -32,13 +32,17 @@ import { FetchDetalleAlumno, FetchMateriasAlumno, } from '../../../../API/DetalleAlumno.ts'; +import { IoEyeOutline, } from "react-icons/io5"; +import {AttachmentIcon, ArrowLeftIcon, ArrowRightIcon} from '@chakra-ui/icons'; +import { FetchResumenPagos } from '../../../../API-Alumnos/Pagos.ts'; import { FetchGetCuotas } from '../../../../API-Alumnos/Pagos.ts'; -import { FetchCompromisosAlumno } from '../../../../API-Alumnos/Compromiso.ts'; +import { FetchCompromisosAlumno, FetchCompromisos } from '../../../../API-Alumnos/Compromiso.ts'; import { inhabilitacionesA } from '../../../../API-Alumnos/InhabilitacionesAlumno.ts'; import React, { useState, useEffect, useMemo } from 'react'; -import { ArrowLeftIcon, ChevronLeftIcon } from '@chakra-ui/icons'; import { Link } from 'react-router-dom'; -import {formatoFechaISOaDDMMAAAA} from '../../../../utils/general'; +import { formatoFechaISOaDDMMAAAA } from '../../../../utils/general'; +import Cookies from 'js-cookie'; +import { FetchDetalleCompromiso } from '../../../../API-Alumnos/Compromiso.ts'; interface Alumno { full_name: string; @@ -60,7 +64,7 @@ interface Cuota { tipocuota: string; valorinformado: number; } - + interface Materia { codigo_materia: number; anio_cursada: number; @@ -69,6 +73,65 @@ interface Materia { cuatrimestre: number; } + +interface Cuota { + id_cuota: number, + nro_cuota: number; + fecha_informado: string, + numero: number, + montoActual: number; + fechaVencimiento: string; + valorpagado: number; + estado: number; //whats this? + tipo: string; + valorinformado: number; + monto: number; + fecha_vencimiento: string, + cuota_completa: boolean, +} + + +interface Pago { + monto_informado: number; + estado: string; + fecha: string; + cuotas: Cuota[]; + comentario: string; +} + +interface PagosResponse { + count: number; + next: string | null; + previous: string | null; + results: Pago[]; // Esta es la propiedad que contiene los pagos +} + +interface Compromiso { + id_compromiso_de_pago: number, + compromiso_de_pago: string, + fecha_firmado: string, + firmado: boolean, + alumno: number, + firmo_ultimo_compromiso: boolean, +} + +interface CompromisoResponse { + count: number; + next: string | null; + previous: string | null; + results: Compromiso[]; + monto_completo: number; + monto_completo_2venc: number, + monto_completo_3venc: number, + cuota_reducida: number, + cuota_reducida_2venc: number, + cuota_reducida_3venc: number, + matricula: number, + fecha_vencimiento_2: number, + fecha_vencimiento_1: number, + fecha_vencimiento_3: number, +} + function FichaAlumno() { const { dni } = useParams(); const [alumno, setAlumno] = useState(null); // Define el estado con un valor inicial de null @@ -76,27 +139,35 @@ function FichaAlumno() { const [materias, setMaterias] = useState([]); // Define el estado con un valor inicial de null const [loading, setLoading] = useState(true); const [error, setError] = useState(null); - const [firmoCompromiso, setFirmoCompromiso] = useState(false); const [deuda, setDeuda] = useState(0); + const [detail, showDetail] = useState(null); + const [idCuotaSeleccionada, setIdCuotaSeleccionada] = useState(null); + const [cuotaCompleta, setCuotaCompleta] = useState() + const [limit] = useState(5); + const [offset, setOffset1] = useState(0); + const [totalCuotas, setTotalCuotas] = useState(0); + const [pagos, setPagos] = useState(null); + const [detalleCompromiso, setDetalleCompromiso] = useState(); + const [compromisoFirmado, setCompromiso] = useState(); // Defi + interface Inhabilitacion { fecha_desde: string; fecha_hasta: string; descripcion: string; } - + const [inhabilitaciones, setInhabilitaciones] = useState([]); const navigate = useNavigate(); const handleBackClick = () => { - navigate(-1); + navigate(-1); }; useEffect(() => { const fetchInhabilitaciones = async () => { try { - const dniNumber = parseInt(dni!, 10); - console.log(dniNumber); + const dniNumber = parseInt(dni!, 10); const response = await inhabilitacionesA(dniNumber); setInhabilitaciones(response.results); } catch (error) { @@ -111,12 +182,13 @@ function FichaAlumno() { useEffect(() => { const fetchDetalleAlumno = async (dni: any) => { try { - if (dni) { - const dataDetalle = await FetchDetalleAlumno(dni); - const dataMaterias = await FetchMateriasAlumno(dni); + const dniNumber = parseInt(dni, 10); // Convierte a número + const data = await FetchEstadoCuenta(dniNumber); + console.log('dniNumber en este punto', dni); + const dataDetalle = await FetchDetalleAlumno(dniNumber); + const dataMaterias = await FetchMateriasAlumno(dniNumber); setAlumno(dataDetalle); setMaterias(dataMaterias); - } } catch (error) { setError(error); console.error('Error al obtener los datos', error); @@ -138,38 +210,55 @@ function FichaAlumno() { setLoading(false); } }; + fetchDetalleAlumno(dni); + fetchEstadoCuentaAlumno(); + fetchCompromiso(); + fetchImpagas(); + fetchPagos(); + }, []); + - const fetchCompromiso = async () => { - try { - if (!dni) return - const dniNumber = parseInt(dni, 10); // Convierte a número - const firmas = await FetchCompromisosAlumno(dniNumber); - if (firmas.results.length > 0) { - if (firmas.results[0].firmo_ultimo_compromiso === true) { - setFirmoCompromiso(true); - } + const fetchPagos = async () => { + try { + if (!dni) return + const dniNumber = parseInt(dni, 10); // Convierte a número + const data = await FetchResumenPagos(dniNumber); + setPagos(data); + } catch (error) { + console.error('Error al obtener los datos', error); + } finally { + setLoading(false); } - } catch (error) { - console.error('Error al obtener los datos', error); - } - } + }; + + const fetchCompromiso = async () => { + try { + const data = await FetchCompromisos(parseInt(dni!, 10)); + setCompromiso(data) + } catch (error) { + setError(error); + console.error('Error al obtener los datos', error); + } finally { + setLoading(false); + } + }; const fetchImpagas = async () => { try { if (dni) { - const dniNumber = parseInt(dni, 10); - const data = await FetchGetCuotas(dniNumber); - if (data.length > 0) { + const dniNumber = parseInt(dni, 10); + const data = await FetchGetCuotas(dniNumber); //, limit, offset agregar para hacer paginacion cuando este el endpoint + if (data.length > 0) { const today = new Date(); const totalDeuda = data.reduce((acc: number, cuota: Cuota) => { const fechaVencimiento = new Date(cuota.fechaVencimiento); if (fechaVencimiento < today) { - return acc + cuota.montoActual; + return acc + cuota.montoActual; } return acc; }, 0); setDeuda(totalDeuda); - } + } } } catch (error) { setError(error); @@ -179,15 +268,80 @@ function FichaAlumno() { } }; - if (dni) { - fetchDetalleAlumno(dni); - fetchEstadoCuentaAlumno(); - fetchCompromiso(); - fetchImpagas(); + useEffect(() => { + if (idCuotaSeleccionada !== null && compromisoFirmado) { + const fetchDetalleCompromiso = async () => { + try { + const detalleData = await FetchDetalleCompromiso(compromisoFirmado.results[0].id_compromiso_de_pago); + setDetalleCompromiso(detalleData); + } catch (error) { + console.error('Error al obtener el detalle del compromiso', error); + } + }; + + fetchDetalleCompromiso(); + } + }, [idCuotaSeleccionada, compromisoFirmado]); + + const handleDetailPay = (cuota: any) => { + showDetail(cuota.id_cuota) + setIdCuotaSeleccionada(cuota.id_cuota); + setCuotaCompleta(cuota.cuota_completa) + }; + + const handleNextPage = () => { + if (offset + limit < totalCuotas) { + setOffset1(offset + limit); } - + }; + + const handlePreviousPage = () => { + if (offset > 0) { + setOffset1(offset - limit); + } + }; + + const verificarFechaDePago = (fechaDeInforme: string, cuota_fechaVencimiento: string) => { + const [year, month, day] = fechaDeInforme.split('-'); + let DatefechaDeInforme = new Date(year + '-' + month + '-' + day); - }, [dni]); // Incluye `dni` como dependencia + //armar la fecha de vencimiento mes a mes + const [year_vto, month_vto, day_vto] = cuota_fechaVencimiento.split('-'); + let fechaCompleta_vto_1 = new Date( year_vto + '-' + month_vto + '-' + detalleCompromiso?.fecha_vencimiento_1) + let fechaCompleta_vto_2 = new Date( year_vto + '-' + month_vto + '-' + detalleCompromiso?.fecha_vencimiento_2); + + if (DatefechaDeInforme > fechaCompleta_vto_2) { + return 2 + } else if (DatefechaDeInforme > fechaCompleta_vto_1) { + return 1 + } else { + return 0 + } + }; + + const calcularMontoConMora = ( + fechaDeInforme: string, + cuota_completa: boolean, + cuota_fechaVencimiento: string + ) => { + if (!detalleCompromiso) return 0; + const mora = verificarFechaDePago(fechaDeInforme, cuota_fechaVencimiento); + + switch (mora) { + case 0: + //pagado antes del primer vto + return cuota_completa ? detalleCompromiso.monto_completo : detalleCompromiso.cuota_reducida; + case 1: + //pagado antes del segundo vto + return cuota_completa ? detalleCompromiso.monto_completo_2venc : detalleCompromiso.cuota_reducida_2venc; + case 2: + //pagado despues del segundo vto + return cuota_completa ? detalleCompromiso.monto_completo_3venc : detalleCompromiso.cuota_reducida_3venc; + default: + return 0; + } + }; + if (loading) { return Cargando...; @@ -200,9 +354,9 @@ function FichaAlumno() { if (!alumno) { return No se encontraron datos.; } - + return ( - + + Página {Math.ceil(offset / limit) + 1} de {Math.ceil(totalCuotas / limit)} + + + + + {detail != null ? + + + Detalle cuota + + + + + + + + + + + + + {pagos?.results + .filter(pago => + pago.cuotas.length > 0 && + pago.cuotas.some(cuota => cuota.id_cuota === detail) // Verifica si alguna cuota cumple la condición + ) + .map((pago, index) => ( + + {pago.cuotas.map(cuota => ( + cuota.id_cuota === detail ? ( // Verifica cada cuota para mostrar solo las que coinciden + <> + + + + + + + + ) : null + ))} + + ))} + +
CuotaValor Original CuotaMoraCuota con MoraFecha de InformeValor Pagado
{cuota.nro_cuota}{'$ ' + new Intl.NumberFormat('es-ES').format(cuota.tipo === "Matrícula" ? (detalleCompromiso?.matricula ?? 0) : (cuotaCompleta ? (detalleCompromiso?.monto_completo) ?? 0 : (detalleCompromiso?.cuota_reducida) ?? 0))} + {'$ ' + new Intl.NumberFormat('es-ES').format(cuota.tipo === "Matrícula" ? 0 : (calcularMontoConMora(pago.fecha, cuota.cuota_completa, cuota.fecha_vencimiento) ?? 0) - (cuota.cuota_completa ? (detalleCompromiso?.monto_completo) ?? 0 : (detalleCompromiso?.cuota_reducida) ?? 0))} + {'$ ' + new Intl.NumberFormat('es-ES').format(cuota.monto)}{formatoFechaISOaDDMMAAAA(pago.fecha)}{'$ ' + new Intl.NumberFormat('es-ES').format(pago.monto_informado > cuota.monto ? cuota.monto : pago.monto_informado)}
+
+
+ + : ( + + )} + + + + {materias.length > 0 ? ( - - - - - - + + + + + - {cuotas && cuotas.map((cuota, index) => ( - - - - - - - + {materias?.map((materia, index) => ( + + navigate(`#`) //Aca tendriamos que ver a donde se lo redirige + } + cursor="pointer" + _hover={{ bg: "gray.50" }} + > + + + + + ))}
- Numero - Fecha Primer Vto.Valor ActualValor PagadoValor InformadoValor AdeudadoCodigo de materiaNombreAño de cursadaPlanCuatrimestre
- {cuota.numero} - {formatoFechaISOaDDMMAAAA(cuota.fechaVencimiento)}{'$ ' + new Intl.NumberFormat('es-ES').format(cuota.montoActual)}{'$ ' + new Intl.NumberFormat('es-ES').format(cuota.valorpagado)}{'$ ' + new Intl.NumberFormat('es-ES').format(cuota.valorinformado)}{'$ ' + new Intl.NumberFormat('es-ES').format(cuota.montoActual - cuota.valorpagado - cuota.valorinformado)}
{materia.codigo_materia}{materia.nombre}{materia.anio_cursada}{materia.anio_plan}{materia.cuatrimestre}
) : ( - No existen cuotas. El alumno no firmo el compromiso de pago del periodo actual. + El alumno no se encuentra cursando materias en el cuatrimestre en curso. )}
- - - {materias.length > 0 ? ( - - - - - - - - - - - - {materias?.map((materia, index) => ( - - navigate(`#`) //Aca tendriamos que ver a donde se lo redirige - } - cursor="pointer" - _hover={{ bg: "gray.50" }} - > - - - - - - - ))} - -
Codigo de materiaNombreAño de cursadaPlanCuatrimestre
{materia.codigo_materia}{materia.nombre}{materia.anio_cursada}{materia.anio_plan}{materia.cuatrimestre}
- ) : ( - El alumno no se encuentra cursando materias en el cuatrimestre en curso. - )} -
- {inhabilitaciones.length > 0 ? ( - - - - - - - - - - {inhabilitaciones.map((inhabilitacion, index) => ( - - - - - - ))} - -
Fecha DesdeFecha HastaDescripción
{new Date(inhabilitacion.fecha_desde).toLocaleDateString()}{new Date(inhabilitacion.fecha_hasta).toLocaleDateString()}{inhabilitacion.descripcion}
- ) : ( - El alumno no tiene inhabilitaciones registradas. - )} -
+ {inhabilitaciones.length > 0 ? ( + + + + + + + + + + {inhabilitaciones.map((inhabilitacion, index) => ( + + + + + + ))} + +
Fecha DesdeFecha HastaDescripción
{new Date(inhabilitacion.fecha_desde).toLocaleDateString()}{new Date(inhabilitacion.fecha_hasta).toLocaleDateString()}{inhabilitacion.descripcion}
+ ) : ( + El alumno no tiene inhabilitaciones registradas. + )} + - + @@ -447,3 +675,34 @@ function FichaAlumno() { } export default FichaAlumno; +/* +{ + cuotas.length > 1 ? ( + + + + + + + + + + + + + {cuotas && cuotas.map((cuota, index) => ( + + + + + + + + + ))} + +
+ Numero + Fecha Primer Vto.Valor ActualValor PagadoValor InformadoValor Adeudado
+ {cuota.numero} + {formatoFechaISOaDDMMAAAA(cuota.fechaVencimiento)}{'$ ' + new Intl.NumberFormat('es-ES').format(cuota.montoActual)}{'$ ' + new Intl.NumberFormat('es-ES').format(cuota.valorpagado)}{'$ ' + new Intl.NumberFormat('es-ES').format(cuota.valorinformado)}{'$ ' + new Intl.NumberFormat('es-ES').format(cuota.montoActual - cuota.valorpagado - cuota.valorinformado)}
*/ \ No newline at end of file