namespace EgwCoreLib.Lux.Data.DbModel.Catalog { /// /// Classe dei template di oggetti gestiti /// [Table("sales_template")] public class TemplateModel { /// /// ID del record /// [Key] public int TemplateID { get; set; } /// /// Environment del template /// public EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS Envir { get; set; } = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW; /// /// SourceType dell'Item /// public ItemSourceType SourceType { get; set; } = ItemSourceType.ND; /// /// Denominazione /// public string Name { get; set; } = ""; /// /// Descrizione /// public string Description { get; set; } = ""; /// /// Numero Item compresi /// [NotMapped] public double NumItems { get => TemplateRowNav?.Sum(x => x.Qty) ?? 0; } /// /// Numero ProdItem compresi /// [NotMapped] public double NumProdItems { get => TemplateRowNav?.Sum(x => x.ProdItemQtyTot) ?? 0; } /// /// Numero Item compresi /// [NotMapped] public int NumRows { get => TemplateRowNav?.Count ?? 0; } /// /// Costo totale offerta (rock bottom) /// [NotMapped] public double TotalCost { get => TemplateRowNav?.Sum(x => x.TotalCost) ?? 0; } /// /// Prezzo totale offerta (compreso di amrginalità) /// [NotMapped] public double TotalPrice { get => TemplateRowNav?.Sum(x => x.TotalPrice) ?? 0; } /// /// Sconto massimo applicabile /// [NotMapped] public double MaxDiscount { get => (TotalCost > 0 && TotalPrice > TotalCost) ? (TotalPrice - TotalCost) / TotalPrice : 0; } /// /// Navigazione alle righe offerta /// public virtual ICollection TemplateRowNav { get; set; } = new List(); } }