131 lines
4.8 KiB
Plaintext
131 lines
4.8 KiB
Plaintext
@model Rs_system.Models.Colaboracion
|
|
@{
|
|
ViewData["Title"] = "Detalle de Colaboración";
|
|
}
|
|
|
|
<div class="d-flex justify-content-between align-items-center mb-4">
|
|
<div>
|
|
<h4 class="mb-1">Detalle de Colaboración #@Model.Id</h4>
|
|
<p class="text-muted mb-0">Información completa de la colaboración</p>
|
|
</div>
|
|
<a asp-action="Index" class="btn btn-outline-secondary">
|
|
<i class="bi bi-arrow-left me-1"></i> Volver
|
|
</a>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<!-- Información Principal -->
|
|
<div class="col-md-6 mb-4">
|
|
<div class="card-custom">
|
|
<h6 class="text-primary border-bottom pb-2 mb-3">Información de Registro</h6>
|
|
|
|
<div class="mb-3">
|
|
<label class="text-muted small">Miembro</label>
|
|
<div><strong>@Model.Miembro.Persona.Nombres @Model.Miembro.Persona.Apellidos</strong></div>
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label class="text-muted small">Fecha de Registro</label>
|
|
<div>@Model.FechaRegistro.ToString("dd/MM/yyyy HH:mm")</div>
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label class="text-muted small">Registrado por</label>
|
|
<div>@(Model.RegistradoPor ?? "Sistema")</div>
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label class="text-muted small">Monto Total</label>
|
|
<div><h4 class="text-success mb-0">$@Model.MontoTotal.ToString("N2")</h4></div>
|
|
</div>
|
|
|
|
@if (!string.IsNullOrEmpty(Model.Observaciones))
|
|
{
|
|
<div class="mb-3">
|
|
<label class="text-muted small">Observaciones</label>
|
|
<div class="alert alert-info mb-0">@Model.Observaciones</div>
|
|
</div>
|
|
}
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Desglose Detallado -->
|
|
<div class="col-md-6 mb-4">
|
|
<div class="card-custom">
|
|
<h6 class="text-primary border-bottom pb-2 mb-3">Desglose por Tipo</h6>
|
|
|
|
@{
|
|
var porTipo = Model.Detalles.GroupBy(d => d.TipoColaboracion.Nombre);
|
|
}
|
|
|
|
@foreach (var grupo in porTipo)
|
|
{
|
|
<div class="mb-3">
|
|
<div class="d-flex justify-content-between align-items-center mb-2">
|
|
<h6 class="mb-0">@grupo.Key</h6>
|
|
<span class="badge bg-primary">@grupo.Count() meses</span>
|
|
</div>
|
|
<div class="text-muted small">
|
|
Total: <strong class="text-success">$@grupo.Sum(d => d.Monto).ToString("N2")</strong>
|
|
</div>
|
|
</div>
|
|
}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Tabla de Detalles Mensuales -->
|
|
<div class="card-custom">
|
|
<h6 class="text-primary border-bottom pb-2 mb-3">Meses Cubiertos</h6>
|
|
|
|
<div class="table-responsive">
|
|
<table class="table-custom">
|
|
<thead>
|
|
<tr>
|
|
<th>Mes</th>
|
|
<th>Año</th>
|
|
<th>Tipo</th>
|
|
<th class="text-end">Monto</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@foreach (var detalle in Model.Detalles.OrderBy(d => d.Anio).ThenBy(d => d.Mes))
|
|
{
|
|
<tr>
|
|
<td>
|
|
@{
|
|
var fecha = new DateTime(detalle.Anio, detalle.Mes, 1);
|
|
}
|
|
@fecha.ToString("MMMM", new System.Globalization.CultureInfo("es-ES"))
|
|
</td>
|
|
<td>@detalle.Anio</td>
|
|
<td>
|
|
<span class="badge bg-primary">@detalle.TipoColaboracion.Nombre</span>
|
|
</td>
|
|
<td class="text-end">
|
|
<strong>$@detalle.Monto.ToString("N2")</strong>
|
|
</td>
|
|
</tr>
|
|
}
|
|
</tbody>
|
|
<tfoot>
|
|
<tr class="table-active">
|
|
<td colspan="3" class="text-end"><strong>TOTAL:</strong></td>
|
|
<td class="text-end">
|
|
<h5 class="mb-0 text-success">$@Model.Detalles.Sum(d => d.Monto).ToString("N2")</h5>
|
|
</td>
|
|
</tr>
|
|
</tfoot>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="d-flex justify-content-between mt-4">
|
|
<a asp-action="Index" class="btn btn-secondary">
|
|
<i class="bi bi-arrow-left me-1"></i> Volver al Listado
|
|
</a>
|
|
<a asp-action="EstadoCuenta" asp-route-id="@Model.MiembroId" class="btn btn-primary-custom">
|
|
<i class="bi bi-file-text me-1"></i> Ver Estado de Cuenta del Miembro
|
|
</a>
|
|
</div>
|