125 lines
3.7 KiB
C#
125 lines
3.7 KiB
C#
// <Auto-Generated>
|
|
// This is here so CodeMaid doesn't reorganize this document
|
|
// </Auto-Generated>
|
|
namespace EgwCoreLib.Lux.Data.DbModel.Job
|
|
{
|
|
/// <summary>
|
|
/// Routing dei cicli di lavoro, con riferimento a risorse e fasi
|
|
/// </summary>
|
|
[Table("task_job_step")]
|
|
public class JobStepModel
|
|
{
|
|
/// <summary>
|
|
/// ID del record
|
|
/// </summary>
|
|
[Key]
|
|
public int JobStepID { get; set; }
|
|
|
|
/// <summary>
|
|
/// Ciclo di appartenenza
|
|
/// </summary>
|
|
public int JobID { get; set; }
|
|
|
|
/// <summary>
|
|
/// Indice della fase all'interno del Job
|
|
/// </summary>
|
|
public int Index { get; set; } = 0;
|
|
|
|
/// <summary>
|
|
/// ID della fase realizzata
|
|
/// </summary>
|
|
public int PhaseID { get; set; }
|
|
|
|
/// <summary>
|
|
/// ID della risorsa impiegata
|
|
/// </summary>
|
|
public int ResourceID { get; set; }
|
|
|
|
/// <summary>
|
|
/// Descrizione della fase del Job
|
|
/// </summary>
|
|
public string Description { get; set; } = "";
|
|
|
|
/// <summary>
|
|
/// Rapporto produttività Risorsa
|
|
/// es: se in più fasi sono previste perdite (sovrametalli, scarti) di processo sarà < 100%
|
|
/// </summary>
|
|
public decimal ProductivityRate { get; set; } = 1;
|
|
|
|
/// <summary>
|
|
/// Costo RockBottom Fase (step) di produzione
|
|
/// sulla base del costo della risorsa, della produttività e della quantità impiegata
|
|
/// </summary>
|
|
/// <param name="quantity">Quantità risorsa impiegata</param>
|
|
/// <returns></returns>
|
|
public decimal RockBottomCost(decimal quantity)
|
|
{
|
|
decimal stepCost = 0;
|
|
var unitRequired = quantity / ProductivityRate;
|
|
if (ResourceNav != null)
|
|
{
|
|
stepCost = ResourceNav.BaseRockBottomCost * quantity;
|
|
}
|
|
return stepCost;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Prezzo calcolato per Fase (step) di produzione
|
|
/// sulla base del costo RockBottom + marginalità standard
|
|
/// </summary>
|
|
/// <param name="quantity">Quantità risorsa impiegata</param>
|
|
/// <returns></returns>
|
|
public decimal RockBottomPrice(decimal quantity)
|
|
{
|
|
decimal stepCost = 0;
|
|
var unitRequired = quantity / ProductivityRate;
|
|
if (ResourceNav != null)
|
|
{
|
|
stepCost = ResourceNav.BasePrice * quantity;
|
|
}
|
|
return stepCost;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Navigazione Job/Cicli
|
|
/// </summary>
|
|
[ForeignKey("JobID")]
|
|
public virtual JobTaskModel JobNav { get; set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Navigazione Fasi
|
|
/// </summary>
|
|
[ForeignKey("PhaseID")]
|
|
public virtual PhaseModel PhaseNav { get; set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Navigazione Risorse
|
|
/// </summary>
|
|
[ForeignKey("ResourceID")]
|
|
public virtual ResourceModel ResourceNav { get; set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Many-to-many with Tags
|
|
/// </summary>
|
|
public virtual ICollection<JobStepTagModel> TagNav { get; set; } = new List<JobStepTagModel>();
|
|
|
|
/// <summary>
|
|
/// Numero Tags compresi
|
|
/// </summary>
|
|
[NotMapped]
|
|
public int NumTags
|
|
{
|
|
get => TagNav?.Count ?? 0;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Elenco Tags come stringa comma delimited
|
|
/// </summary>
|
|
[NotMapped]
|
|
public List<string> TagList
|
|
{
|
|
get => TagNav.Select(x => x.CodTag).ToList() ?? new List<string>();
|
|
}
|
|
}
|
|
}
|