using System; using System.Collections.Generic; using System.Linq; using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; using bdHerramientaCACOA.db; using Mysqlx.Expr; using static bdHerramientaCACOA.CASA; namespace bdHerramientaCACOA { public class CosteDirectoIndirecto { public CosteDirectoIndirecto() { CalcularDatos(); } public CosteDirectoIndirecto(int NumeroTrabajadores,double CosteMinimo,double CosteMaximo, int JornadaLaboral, double HorasProduccionMedia,double porcentajeCostesVariables,double IPCCosteIndirecto) { this._porcentajeCostesVariables = porcentajeCostesVariables; this._JornadaLaboral = JornadaLaboral; this._HorasProdMedia = Math.Round(HorasProduccionMedia / 100,2, MidpointRounding.AwayFromZero); this._NumeroTrabajadores = NumeroTrabajadores; this._CosteMinimoPersonal= Math.Round(CosteMinimo, 2, MidpointRounding.AwayFromZero); this._CosteMaximoPersonal = Math.Round(CosteMaximo, 2, MidpointRounding.AwayFromZero); this._IPCCosteIndirecto = IPCCosteIndirecto; CalcularDatos(); } private double _IPCCosteIndirecto = 0; public double IPCCosteIndirecto { get { return _IPCCosteIndirecto; } set { _IPCCosteIndirecto = value; } } private int _JornadaLaboral = 0; public int JornadaLaboral { get { return _JornadaLaboral; } set { _JornadaLaboral = value; CalcularDatos(); } } private double _HorasProdMedia = 0; public double HorasProdMedia { get { return _HorasProdMedia; } set { _HorasProdMedia = value; CalcularDatos(); } } private double _porcentajeCostesVariables = 0; public double PorcentajeCostesVariables { get { return _porcentajeCostesVariables; } set { _porcentajeCostesVariables = value; CalcularDatos(); } } private int _NumeroTrabajadores = 0; public int NumeroTrabajadores { get { return _NumeroTrabajadores; } set { _NumeroTrabajadores = value; CalcularDatos(); } } private double _CosteMinimoPersonal = 0; public double CosteMinimoPersonal { get { return _CosteMinimoPersonal; } set { _CosteMinimoPersonal = value; CalcularDatos(); } } private double _CosteMaximoPersonal = 0; public double CosteMaximoPersonal { get { return _CosteMaximoPersonal; } set { _CosteMaximoPersonal = value; CalcularDatos(); } } public double HorasProduccionAnuales { get; set; } = 0; public double CosteMedioPersonal { get; set; } = 0; public double CostesDirectos { get; set; } = 0; public double CostesIndirectos { get; set; } = 0; public double CostesVariables { get; set; } = 0; public double TotalDespachoProfesional { get; set; } = 0; public void CalcularDatos() { HorasProduccionAnuales = Math.Round(NumeroTrabajadores * JornadaLaboral * HorasProdMedia, 0, MidpointRounding.AwayFromZero); CosteMedioPersonal= Math.Round((CosteMaximoPersonal + CosteMinimoPersonal)/2, 2, MidpointRounding.AwayFromZero); CostesDirectos = Math.Round((CosteMedioPersonal/HorasProduccionAnuales), 2, MidpointRounding.AwayFromZero); CostesIndirectos = Math.Round((-2.535 * Math.Log(NumeroTrabajadores) + 10.753)* IPCCosteIndirecto, 2, MidpointRounding.AwayFromZero); CostesVariables= Math.Round((CostesDirectos+CostesIndirectos)*PorcentajeCostesVariables, 2, MidpointRounding.AwayFromZero); TotalDespachoProfesional = Math.Round(CostesDirectos + CostesIndirectos+CostesVariables, 2, MidpointRounding.AwayFromZero); } } }