using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace Rs_system.Models; /// /// Diezmo individual aportado por un miembro dentro de un cierre. /// MontoNeto = MontoEntregado - CambioEntregado (calculado por el sistema). /// [Table("diezmo_detalles")] public class DiezmoDetalle { [Key] [Column("id")] public long Id { get; set; } [Column("diezmo_cierre_id")] public long DiezmoCierreId { get; set; } [Column("miembro_id")] public long MiembroId { get; set; } /// Monto físico que el miembro entregó (puede incluir cambio). [Column("monto_entregado", TypeName = "numeric(12,2)")] [Required] public decimal MontoEntregado { get; set; } /// Cambio devuelto al miembro. [Column("cambio_entregado", TypeName = "numeric(12,2)")] public decimal CambioEntregado { get; set; } = 0; /// Diezmo neto real = MontoEntregado - CambioEntregado. Calculado por el sistema. [Column("monto_neto", TypeName = "numeric(12,2)")] public decimal MontoNeto { get; set; } [Column("observaciones")] [StringLength(300)] public string? Observaciones { get; set; } [Column("fecha")] public DateTime Fecha { get; set; } = DateTime.UtcNow; // ── Auditoría ── [Column("creado_por")] [StringLength(100)] public string? CreadoPor { get; set; } [Column("creado_en")] public DateTime CreadoEn { get; set; } = DateTime.UtcNow; [Column("actualizado_en")] public DateTime ActualizadoEn { get; set; } = DateTime.UtcNow; [Column("actualizado_por")] [StringLength(100)] public string? ActualizadoPor { get; set; } [Column("eliminado")] public bool Eliminado { get; set; } = false; // ── Navegación ── [ForeignKey("DiezmoCierreId")] public virtual DiezmoCierre DiezmoCierre { get; set; } = null!; [ForeignKey("MiembroId")] public virtual Miembro Miembro { get; set; } = null!; }