113 lines
4.2 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|