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();
}
}