cinu
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Rs_system.Models.ViewModels.Catalogos;
|
||||
|
||||
public class TipoSalidaViewModel
|
||||
{
|
||||
public long Id { get; set; }
|
||||
|
||||
[Required(ErrorMessage = "El nombre es obligatorio")]
|
||||
[StringLength(100)]
|
||||
public string Nombre { get; set; } = string.Empty;
|
||||
|
||||
[StringLength(300)]
|
||||
public string? Descripcion { get; set; }
|
||||
|
||||
[Display(Name = "Es Entrega Directa a Pastor")]
|
||||
public bool EsEntregaPastor { get; set; }
|
||||
}
|
||||
|
||||
public class BeneficiarioViewModel
|
||||
{
|
||||
public long Id { get; set; }
|
||||
|
||||
[Required(ErrorMessage = "El nombre es obligatorio")]
|
||||
[StringLength(150)]
|
||||
public string Nombre { get; set; } = string.Empty;
|
||||
|
||||
[StringLength(300)]
|
||||
public string? Descripcion { get; set; }
|
||||
}
|
||||
84
RS_system/Models/ViewModels/DiezmoCierreDetalleViewModel.cs
Normal file
84
RS_system/Models/ViewModels/DiezmoCierreDetalleViewModel.cs
Normal file
@@ -0,0 +1,84 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Rs_system.Models.ViewModels;
|
||||
|
||||
// ─────────────────────────────────────────────────────────────────────────────
|
||||
// Formulario — Nuevo cierre
|
||||
// ─────────────────────────────────────────────────────────────────────────────
|
||||
public class DiezmoCierreCreateViewModel
|
||||
{
|
||||
[Required(ErrorMessage = "La fecha es obligatoria.")]
|
||||
[Display(Name = "Fecha del cierre")]
|
||||
public DateOnly Fecha { get; set; } = DateOnly.FromDateTime(DateTime.Today);
|
||||
|
||||
[Display(Name = "Observaciones")]
|
||||
[StringLength(500)]
|
||||
public string? Observaciones { get; set; }
|
||||
}
|
||||
|
||||
// ─────────────────────────────────────────────────────────────────────────────
|
||||
// Pantalla operativa de detalle del cierre
|
||||
// ─────────────────────────────────────────────────────────────────────────────
|
||||
public class DiezmoCierreDetalleViewModel
|
||||
{
|
||||
public long Id { get; set; }
|
||||
public DateOnly Fecha { get; set; }
|
||||
public bool Cerrado { get; set; }
|
||||
public string? Observaciones { get; set; }
|
||||
public string? CerradoPor { get; set; }
|
||||
public DateTime? FechaCierre { get; set; }
|
||||
|
||||
// Totales
|
||||
public decimal TotalRecibido { get; set; }
|
||||
public decimal TotalCambio { get; set; }
|
||||
public decimal TotalNeto { get; set; }
|
||||
public decimal TotalSalidas { get; set; }
|
||||
public decimal SaldoFinal { get; set; }
|
||||
|
||||
// Datos de detalles
|
||||
public List<DiezmoDetalleRowViewModel> Detalles { get; set; } = new();
|
||||
|
||||
// Datos de salidas
|
||||
public List<DiezmoSalidaRowViewModel> Salidas { get; set; } = new();
|
||||
|
||||
// Formularios embebidos para modales
|
||||
public DiezmoDetalleFormViewModel FormDetalle { get; set; } = new();
|
||||
public DiezmoSalidaFormViewModel FormSalida { get; set; } = new();
|
||||
|
||||
// Datos de selectores para los modales
|
||||
public List<Microsoft.AspNetCore.Mvc.Rendering.SelectListItem> MiembrosSelect { get; set; } = new();
|
||||
public List<Microsoft.AspNetCore.Mvc.Rendering.SelectListItem> TiposSalidaSelect { get; set; } = new();
|
||||
public List<Microsoft.AspNetCore.Mvc.Rendering.SelectListItem> BeneficiariosSelect { get; set; } = new();
|
||||
|
||||
public string EstadoBadge => Cerrado ? "badge bg-secondary" : "badge bg-success";
|
||||
public string EstadoTexto => Cerrado ? "Cerrado" : "Abierto";
|
||||
}
|
||||
|
||||
// ─────────────────────────────────────────────────────────────────────────────
|
||||
// Fila de un detalle en la tabla
|
||||
// ─────────────────────────────────────────────────────────────────────────────
|
||||
public class DiezmoDetalleRowViewModel
|
||||
{
|
||||
public long Id { get; set; }
|
||||
public long MiembroId { get; set; }
|
||||
public string NombreMiembro { get; set; } = string.Empty;
|
||||
public decimal MontoEntregado { get; set; }
|
||||
public decimal CambioEntregado { get; set; }
|
||||
public decimal MontoNeto { get; set; }
|
||||
public string? Observaciones { get; set; }
|
||||
public DateTime Fecha { get; set; }
|
||||
}
|
||||
|
||||
// ─────────────────────────────────────────────────────────────────────────────
|
||||
// Fila de una salida en la tabla
|
||||
// ─────────────────────────────────────────────────────────────────────────────
|
||||
public class DiezmoSalidaRowViewModel
|
||||
{
|
||||
public long Id { get; set; }
|
||||
public string TipoSalidaNombre { get; set; } = string.Empty;
|
||||
public string? BeneficiarioNombre { get; set; }
|
||||
public decimal Monto { get; set; }
|
||||
public string Concepto { get; set; } = string.Empty;
|
||||
public string? NumeroRecibo { get; set; }
|
||||
public DateTime Fecha { get; set; }
|
||||
}
|
||||
19
RS_system/Models/ViewModels/DiezmoCierreListViewModel.cs
Normal file
19
RS_system/Models/ViewModels/DiezmoCierreListViewModel.cs
Normal file
@@ -0,0 +1,19 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Rs_system.Models.ViewModels;
|
||||
|
||||
/// <summary>Fila del listado de cierres de diezmos.</summary>
|
||||
public class DiezmoCierreListViewModel
|
||||
{
|
||||
public long Id { get; set; }
|
||||
public DateOnly Fecha { get; set; }
|
||||
public bool Cerrado { get; set; }
|
||||
public decimal TotalRecibido { get; set; }
|
||||
public decimal TotalNeto { get; set; }
|
||||
public decimal TotalSalidas { get; set; }
|
||||
public decimal SaldoFinal { get; set; }
|
||||
public int NumeroDetalles { get; set; }
|
||||
public int NumeroSalidas { get; set; }
|
||||
public string EstadoBadge => Cerrado ? "badge bg-secondary" : "badge bg-success";
|
||||
public string EstadoTexto => Cerrado ? "Cerrado" : "Abierto";
|
||||
}
|
||||
28
RS_system/Models/ViewModels/DiezmoDetalleFormViewModel.cs
Normal file
28
RS_system/Models/ViewModels/DiezmoDetalleFormViewModel.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Rs_system.Models.ViewModels;
|
||||
|
||||
/// <summary>Formulario modal para agregar un diezmo de un miembro.</summary>
|
||||
public class DiezmoDetalleFormViewModel
|
||||
{
|
||||
[Required(ErrorMessage = "Seleccione un miembro.")]
|
||||
[Display(Name = "Miembro")]
|
||||
public long MiembroId { get; set; }
|
||||
|
||||
[Required(ErrorMessage = "El monto entregado es obligatorio.")]
|
||||
[Range(0.01, 999999.99, ErrorMessage = "El monto debe ser mayor a 0.")]
|
||||
[Display(Name = "Monto entregado")]
|
||||
public decimal MontoEntregado { get; set; }
|
||||
|
||||
[Required(ErrorMessage = "El monto del diezmo (neto) es obligatorio.")]
|
||||
[Range(0.01, 999999.99, ErrorMessage = "El diezmo debe ser mayor a 0.")]
|
||||
[Display(Name = "Diezmo (Neto)")]
|
||||
public decimal MontoNeto { get; set; }
|
||||
|
||||
// Este campo ahora vendrá como solo-lectura desde el formulario
|
||||
public decimal CambioEntregado { get; set; } = 0;
|
||||
|
||||
[Display(Name = "Observaciones")]
|
||||
[StringLength(300)]
|
||||
public string? Observaciones { get; set; }
|
||||
}
|
||||
24
RS_system/Models/ViewModels/DiezmoSalidaFormViewModel.cs
Normal file
24
RS_system/Models/ViewModels/DiezmoSalidaFormViewModel.cs
Normal file
@@ -0,0 +1,24 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Rs_system.Models.ViewModels;
|
||||
|
||||
/// <summary>Formulario modal para registrar una salida/entrega de fondos.</summary>
|
||||
public class DiezmoSalidaFormViewModel
|
||||
{
|
||||
[Required(ErrorMessage = "Seleccione el tipo de salida.")]
|
||||
[Display(Name = "Tipo de salida")]
|
||||
public long TipoSalidaId { get; set; }
|
||||
|
||||
[Display(Name = "Beneficiario")]
|
||||
public long? BeneficiarioId { get; set; }
|
||||
|
||||
[Required(ErrorMessage = "El monto es obligatorio.")]
|
||||
[Range(0.01, 999999.99, ErrorMessage = "El monto debe ser mayor a 0.")]
|
||||
[Display(Name = "Monto")]
|
||||
public decimal Monto { get; set; }
|
||||
|
||||
[Required(ErrorMessage = "El concepto es obligatorio.")]
|
||||
[StringLength(300)]
|
||||
[Display(Name = "Concepto")]
|
||||
public string Concepto { get; set; } = string.Empty;
|
||||
}
|
||||
14
RS_system/Models/ViewModels/PaginatedViewModel.cs
Normal file
14
RS_system/Models/ViewModels/PaginatedViewModel.cs
Normal file
@@ -0,0 +1,14 @@
|
||||
namespace Rs_system.Models.ViewModels;
|
||||
|
||||
public class PaginatedViewModel<T>
|
||||
{
|
||||
public List<T> Items { get; set; } = new();
|
||||
public int CurrentPage { get; set; }
|
||||
public int PageSize { get; set; }
|
||||
public int TotalItems { get; set; }
|
||||
public int TotalPages => (int)Math.Ceiling((double)TotalItems / PageSize);
|
||||
public string? SearchQuery { get; set; }
|
||||
|
||||
public bool HasPreviousPage => CurrentPage > 1;
|
||||
public bool HasNextPage => CurrentPage < TotalPages;
|
||||
}
|
||||
Reference in New Issue
Block a user