Files
lux/EgwCoreLib.Lux.Data/DbModel/Task/JobStepModel.cs
T
2025-09-19 18:54:17 +02:00

117 lines
3.5 KiB
C#

using EgwCoreLib.Lux.Data.DbModel.Cost;
using EgwCoreLib.Lux.Data.DbModel.Task;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Task
{
/// <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 del driver di costo impiegato
/// </summary>
public int CostDriverID { get; set; }
/// <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à tra CostDriver Step e CostDriver Risorsa (es: m/h)
/// </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 JobModel JobNav { get; set; } = null!;
/// <summary>
/// Navigazione Driver costo
/// </summary>
[ForeignKey("CostDriverID")]
public virtual CostDriverModel DriverNav { 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!;
}
}