Files
HerramientaCASA/bdHerramientaCACOA/CosteDirectoIndirecto.cs
2025-07-25 12:56:07 +02:00

113 lines
4.2 KiB
C#

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