namespace Domain.Entities
{
    public partial class ESalesDocumentCoverage
    {
        /// <summary>
        /// Identificador interno de la cobertura.
        /// </summary>
        public int Id { get; set; }

        /// <summary>
        /// Documento de venta que cubre el presupuesto/caso.
        /// </summary>
        public int SalesdocumentId { get; set; }

        /// <summary>
        /// Detalle del documento de venta asociado a esta cobertura, cuando aplique. En capita puede apuntar a la linea agregada mensual.
        /// </summary>
        public int? SalesdocumentdetailId { get; set; }

        /// <summary>
        /// Presupuesto/caso cubierto por el documento de venta. Se usa tanto para facturacion directa como para capita.
        /// </summary>
        public int QuoteId { get; set; }

        /// <summary>
        /// Detalle de presupuesto cubierto, cuando se requiera trazabilidad granular por item.
        /// </summary>
        public int? QuoteDetailId { get; set; }

        /// <summary>
        /// Tipo de cobertura. Valores esperados en Domain: Direct, Capita, Adjustment.
        /// </summary>
        public int CoverageType { get; set; }

        /// <summary>
        /// Porcentaje del presupuesto/caso cubierto por el documento. Permite 100% en facturacion directa o particiones 60/40.
        /// </summary>
        public decimal? CoveragePercentage { get; set; }

        /// <summary>
        /// Importe de referencia cubierto por el documento, cuando aplique.
        /// </summary>
        public decimal? CoverageAmount { get; set; }

        /// <summary>
        /// Fecha inicial del periodo de cobertura.
        /// </summary>
        public DateTime? PeriodFrom { get; set; }

        /// <summary>
        /// Fecha final del periodo de cobertura.
        /// </summary>
        public DateTime? PeriodTo { get; set; }

        /// <summary>
        /// Notas internas de cobertura.
        /// </summary>
        public string? Notes { get; set; }

        public DateTime Createdat { get; set; }

        public DateTime? Modifiedat { get; set; }
    }

}
