117 lines
3.5 KiB
C#
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!;
|
|
}
|
|
}
|