Primera versión
This commit is contained in:
28
bdHerramientaCACOA/HerramientaUrban/DocumentacionURBAN.cs
Normal file
28
bdHerramientaCACOA/HerramientaUrban/DocumentacionURBAN.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace bdHerramientaCACOA.HerramientaURBAN
|
||||
{
|
||||
public partial class URBAN
|
||||
{
|
||||
public class DocumentacionURBAN
|
||||
{
|
||||
public int iddocumentacion { get; set; } = 0;
|
||||
|
||||
public string Descripcion { get; set; } = "";
|
||||
|
||||
public bool Checkeada { get; set; } = false;
|
||||
|
||||
public double ValorNecesario { get; set; } = 0;
|
||||
|
||||
public double CoefHoras { get; set; } = 0;
|
||||
|
||||
public bool esCheckbox { get; set; } = false;
|
||||
|
||||
public int Orden { get; set; } = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
100
bdHerramientaCACOA/HerramientaUrban/EnumeradosURBAN.cs
Normal file
100
bdHerramientaCACOA/HerramientaUrban/EnumeradosURBAN.cs
Normal file
@@ -0,0 +1,100 @@
|
||||
using bdHerramientaCACOA.db;
|
||||
using bdHerramientaCACOA.HerramientaUrban;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing.Imaging;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using static bdHerramientaCACOA.CASA;
|
||||
|
||||
namespace bdHerramientaCACOA.HerramientaURBAN
|
||||
{
|
||||
public partial class URBAN {
|
||||
public class EnumeradosURBAN
|
||||
{
|
||||
public List<FasesURBAN> FasesTrabajo { get; set; } = new List<FasesURBAN>();
|
||||
public List<enumeracionesCASA> ListaInstrumentos { get; set; } = new List<enumeracionesCASA>();
|
||||
public List<enumeracionesCASA> Periodos { get; set; } = new List<enumeracionesCASA>();
|
||||
|
||||
public List<enumeracionesCASA> TiposDeDocumentos { get; set; } = new List<enumeracionesCASA>();
|
||||
|
||||
public List<tipoproyectosURBAN> TiposProyecto { get; set; } = new List<tipoproyectosURBAN>();
|
||||
|
||||
public List<tipoproyecto_documentacionURBAN> TipoProy_Documentacion { get; set; } = new List<tipoproyecto_documentacionURBAN>();
|
||||
|
||||
public List<DocumentacionURBAN> documentacion { get; set; } = new List<DocumentacionURBAN>();
|
||||
|
||||
public List<tipoproyectosURBAN> ProyectosPorTipo(int idTipoDocumento)
|
||||
{
|
||||
return TiposProyecto.Where(x => x.idTipoDocumento == idTipoDocumento).ToList();
|
||||
}
|
||||
|
||||
|
||||
public List<enumeracionesCASA> ListaCostesVariables { get; set; } = new List<enumeracionesCASA>();
|
||||
}
|
||||
|
||||
public List<DocumentacionURBAN> DocumentacionMinima(int idTipoProyecto)
|
||||
{
|
||||
|
||||
List<tipoproyecto_documentacionURBAN> lista = Enumerados.TipoProy_Documentacion.Where(x => x.idtipoproyecto == idTipoProyecto && x.esMinima == true).ToList();
|
||||
List<DocumentacionURBAN> ldm = new List<DocumentacionURBAN>();
|
||||
|
||||
foreach (tipoproyecto_documentacionURBAN tpd in lista)
|
||||
{
|
||||
DocumentacionURBAN d = Enumerados.documentacion.First(x => x.iddocumentacion == tpd.iddocumentacion);
|
||||
ldm.Add(d);
|
||||
}
|
||||
|
||||
return ldm;
|
||||
}
|
||||
public List<DocumentacionURBAN> DocumentacionOpcional(int idTipoProyecto)
|
||||
{
|
||||
|
||||
List<tipoproyecto_documentacionURBAN> lista = Enumerados.TipoProy_Documentacion.Where(x => x.idtipoproyecto == idTipoProyecto && x.esOpcional == true).ToList();
|
||||
List<DocumentacionURBAN> ldm = new List<DocumentacionURBAN>();
|
||||
|
||||
foreach (tipoproyecto_documentacionURBAN tpd in lista)
|
||||
{
|
||||
DocumentacionURBAN d = Enumerados.documentacion.First(x => x.iddocumentacion == tpd.iddocumentacion);
|
||||
ldm.Add(d);
|
||||
}
|
||||
|
||||
return ldm;
|
||||
}
|
||||
public List<DocumentacionURBAN> DatosNecesarios(int idTipoProyecto)
|
||||
{
|
||||
|
||||
List<tipoproyecto_documentacionURBAN> lista = Enumerados.TipoProy_Documentacion.Where(x => x.idtipoproyecto == idTipoProyecto && x.esNecesario == true).ToList();
|
||||
List<DocumentacionURBAN> ldm = new List<DocumentacionURBAN>();
|
||||
|
||||
foreach (tipoproyecto_documentacionURBAN tpd in lista)
|
||||
{
|
||||
DocumentacionURBAN d = Enumerados.documentacion.First(x => x.iddocumentacion == tpd.iddocumentacion);
|
||||
ldm.Add(d);
|
||||
}
|
||||
|
||||
return ldm;
|
||||
}
|
||||
private List<DocumentacionURBAN> documentacionAUrban(List<documentacion> lista)
|
||||
{
|
||||
var listaDoc = new List<DocumentacionURBAN>();
|
||||
foreach (var documentacion in lista)
|
||||
{
|
||||
var d = new DocumentacionURBAN();
|
||||
d.iddocumentacion = documentacion.iddocumentacion;
|
||||
d.Descripcion = documentacion.Descripcion.ToString();
|
||||
if (documentacion.CoeficienteHoras.HasValue)
|
||||
{
|
||||
d.CoefHoras = (double)documentacion.CoeficienteHoras;
|
||||
}
|
||||
d.esCheckbox = documentacion.Checkeable;
|
||||
listaDoc.Add(d);
|
||||
}
|
||||
|
||||
return listaDoc;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
321
bdHerramientaCACOA/HerramientaUrban/URBAN.cs
Normal file
321
bdHerramientaCACOA/HerramientaUrban/URBAN.cs
Normal file
@@ -0,0 +1,321 @@
|
||||
using bdHerramientaCACOA.db;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using static bdHerramientaCACOA.CASA;
|
||||
using bdHerramientaCACOA.extensiones;
|
||||
using System.Text.Json;
|
||||
using bdHerramientaCACOA.HerramientaUrban;
|
||||
|
||||
namespace bdHerramientaCACOA.HerramientaURBAN
|
||||
{
|
||||
public partial class URBAN
|
||||
{
|
||||
public string NombreSimulacion { get; set; } = "Simulación Urbanismo "+ DateTime.Now;
|
||||
|
||||
private CASADespachoProfesional _DespachoProfesional = new CASADespachoProfesional();
|
||||
public CASADespachoProfesional DespachoProfesional
|
||||
{
|
||||
get { return _DespachoProfesional; }
|
||||
set { _DespachoProfesional = value; }
|
||||
}
|
||||
|
||||
private URBANTrabajoProfesional _TrabajoProfesional = new URBANTrabajoProfesional();
|
||||
public URBANTrabajoProfesional TrabajoProfesional
|
||||
{
|
||||
get { return _TrabajoProfesional; }
|
||||
set { _TrabajoProfesional = value; }
|
||||
}
|
||||
|
||||
private URBANCostesProduccion _CostesProduccion = new URBANCostesProduccion();
|
||||
public URBANCostesProduccion CostesProduccion
|
||||
{
|
||||
get { return _CostesProduccion; }
|
||||
set
|
||||
{
|
||||
_CostesProduccion = value;
|
||||
}
|
||||
}
|
||||
|
||||
public EnumeradosURBAN Enumerados { get; set; } = new EnumeradosURBAN();
|
||||
public VariablesCASA Variables { get; set; } = new VariablesCASA();
|
||||
|
||||
|
||||
#region Carga de Datos
|
||||
public void CargarVariables(bdHerramientaCACOA.dbcontext.tsHerramientasCACOA bd)
|
||||
{
|
||||
Variables.anyo = (int)bd.enumeraciones.First(x => x.Codigo == "VARCASA.ANYO").ValorNumerico1;
|
||||
Variables.ConvenioColectivo = (string)bd.enumeraciones.First(x => x.Codigo == "VARCASA.CONCOL").ValorAlfabetico2;
|
||||
Variables.JornadaLaboralHoraSemana = (int)bd.enumeraciones.First(x => x.Codigo == "VARCASA.JORLABHS").ValorNumerico1;
|
||||
Variables.DiasLaborales = (int)bd.enumeraciones.First(x => x.Codigo == "VARCASA.DIASLAB").ValorNumerico1;
|
||||
Variables.JornadaLaboralEstTrabajadores = (int)bd.enumeraciones.First(x => x.Codigo == "VARCASA.JORLABESTTRAB").ValorNumerico1;
|
||||
Variables.JornadaLaboralAnual = (int)bd.enumeraciones.First(x => x.Codigo == "VARCASA.JORLABANUAL").ValorNumerico1;
|
||||
Variables.HorasProduccionMedia = (double)bd.enumeraciones.First(x => x.Codigo == "VARCASA.HORPRODMEDIA").ValorNumerico1;
|
||||
Variables.CosteSegSocial = (double)bd.enumeraciones.First(x => x.Codigo == "VARCASA.COSTESSEGSOCIAL").ValorNumerico1;
|
||||
Variables.CostesVariables = (double)bd.enumeraciones.First(x => x.Codigo == "VARCASA.COSTESVARIABLES").ValorNumerico1;
|
||||
Variables.OtrosCostes = (double)bd.enumeraciones.First(x => x.Codigo == "VARCASA.OTROSCOSTES").ValorNumerico1;
|
||||
}
|
||||
public void RellenarCamposExtra(dbcontext.tsHerramientasCACOA bd, bool esClonar)
|
||||
{
|
||||
CargarVariables(bd);
|
||||
CargarEnumerados(bd, esClonar);
|
||||
//por defecto periodoMensual
|
||||
enumeraciones perMensual = bd.enumeraciones.First(x => x.Codigo == "PERIODOS.MENSUAL");
|
||||
//Cargamos los costes indirectos
|
||||
var grupoCostesIndirectos = bd.gruposenumeraciones.FirstOrDefault(x => x.Grupo == "CI");
|
||||
var listaCosteIndirectos = Utilidades.devolverListadoOrdenadoEnumeracion(bd, grupoCostesIndirectos.idGrupoEnumeracion);
|
||||
foreach (enumeraciones enu in listaCosteIndirectos)
|
||||
{
|
||||
if (!DespachoProfesional.CostesIndirectos.Any(x => x.Concepto == enu.ValorAlfabetico1))
|
||||
{
|
||||
CosteIndirecto ci = new CosteIndirecto();
|
||||
ci.idCosteIndirecto = enu.idEnumeracion;
|
||||
ci.Concepto = enu.ValorAlfabetico1;
|
||||
ci.idPeriodicidad = perMensual.idEnumeracion;
|
||||
ci.valorPeriodo = (double)perMensual.ValorNumerico1;
|
||||
|
||||
DespachoProfesional.CostesIndirectos.Add(ci);
|
||||
}
|
||||
}
|
||||
checkListCostIndirectos(listaCosteIndirectos);
|
||||
|
||||
//Cargamos las Fases
|
||||
var grupoFases = bd.gruposenumeraciones.FirstOrDefault(x => x.Grupo == "FASURB");
|
||||
var listaFases = bd.enumeraciones.Where(x => x.idGrupoEnumeracion == grupoFases.idGrupoEnumeracion).ToList();
|
||||
foreach (enumeraciones enu in listaFases)
|
||||
{
|
||||
if (!TrabajoProfesional.FasesTrabajoProfesional.Any(x => x.idFase == enu.idEnumeracion))
|
||||
{
|
||||
FasesURBAN ft = new FasesURBAN();
|
||||
ft.idFase = enu.idEnumeracion;
|
||||
ft.Codigo = enu.Codigo;
|
||||
ft.Denominacion = enu.ValorAlfabetico1;
|
||||
ft.Porcentaje = (double)enu.ValorNumerico1;
|
||||
|
||||
TrabajoProfesional.FasesTrabajoProfesional.Add(ft);
|
||||
}
|
||||
}
|
||||
checkListFases(listaFases);
|
||||
|
||||
Enumerados.FasesTrabajo= JsonSerializer.Deserialize<List<FasesURBAN>>(JsonSerializer.Serialize(TrabajoProfesional.FasesTrabajoProfesional));
|
||||
}
|
||||
|
||||
private void checkListCostIndirectos(List<enumeraciones> listaCostesIndirectos)
|
||||
{
|
||||
var itemsAEliminar = DespachoProfesional.CostesIndirectos
|
||||
.Where(item => !listaCostesIndirectos.Any(x => x.ValorAlfabetico1 == item.Concepto))
|
||||
.ToList();
|
||||
|
||||
foreach (var item in itemsAEliminar)
|
||||
{
|
||||
DespachoProfesional.CostesIndirectos.Remove(item);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void checkListFases(List<enumeraciones> listaFasesUrban)
|
||||
{
|
||||
var itemsAEliminar = TrabajoProfesional.FasesTrabajoProfesional
|
||||
.Where(item => !listaFasesUrban.Any(x => x.idEnumeracion == item.idFase))
|
||||
.ToList();
|
||||
|
||||
foreach (var item in itemsAEliminar)
|
||||
{
|
||||
TrabajoProfesional.FasesTrabajoProfesional.Remove(item);
|
||||
}
|
||||
}
|
||||
|
||||
public void CargarEnumerados(dbcontext.tsHerramientasCACOA bd, bool esClonar) {
|
||||
var grupoPeriodos = bd.gruposenumeraciones.FirstOrDefault(x => x.Grupo == "PERIODOS");
|
||||
Enumerados.Periodos = ListaEnumeracionCASA(bd.enumeraciones.Where(x => x.idGrupoEnumeracion == grupoPeriodos.idGrupoEnumeracion).ToList());
|
||||
|
||||
var grupoTipDocumento = bd.gruposenumeraciones.FirstOrDefault(x => x.Grupo == "TIPODOCU");
|
||||
Enumerados.TiposDeDocumentos = ListaEnumeracionCASA(bd.enumeraciones.Where(x => x.idGrupoEnumeracion == grupoTipDocumento.idGrupoEnumeracion).ToList());
|
||||
|
||||
if (!esClonar)
|
||||
{
|
||||
var grupoInstrumentos = bd.gruposenumeraciones.FirstOrDefault(x => x.Grupo == "INNINSTR");
|
||||
Enumerados.ListaInstrumentos = ListaEnumeracionCASA(bd.enumeraciones.Where(x => x.idGrupoEnumeracion == grupoInstrumentos.idGrupoEnumeracion).ToList());
|
||||
}
|
||||
|
||||
var grupoVariables = bd.gruposenumeraciones.FirstOrDefault(x => x.Grupo == "CVURB");
|
||||
Enumerados.ListaCostesVariables = ListaEnumeracionCASA(bd.enumeraciones.Where(x => x.idGrupoEnumeracion == grupoVariables.idGrupoEnumeracion).ToList());
|
||||
|
||||
|
||||
List<tipoproyectos> lp= bd.tipoproyectos.ToList();
|
||||
List<tipoproyectosURBAN> lpu = new List<tipoproyectosURBAN>();
|
||||
foreach (tipoproyectos tp in lp) {
|
||||
tipoproyectosURBAN tpu= new tipoproyectosURBAN();
|
||||
tpu.idtipoproyectos = tp.idtipoproyectos;
|
||||
tpu.idTipoDocumento = tp.idTipoDocumento;
|
||||
tpu.Descripcion = tp.Descripcion;
|
||||
tpu.Abreviatura = tp.Abreviatura;
|
||||
lpu.Add(tpu);
|
||||
}
|
||||
Enumerados.TiposProyecto = lpu;
|
||||
|
||||
List<tipoproyecto_documentacion> ltpd= bd.tipoproyecto_documentacion.ToList();
|
||||
List<tipoproyecto_documentacionURBAN> ltpdu = new List<tipoproyecto_documentacionURBAN>();
|
||||
foreach (tipoproyecto_documentacion tpd in ltpd)
|
||||
{
|
||||
tipoproyecto_documentacionURBAN tpdu = new tipoproyecto_documentacionURBAN();
|
||||
tpdu.idtipoproyecto_documentacion = tpd.idtipoproyecto_documentacion;
|
||||
tpdu.idtipoproyecto = tpd.idtipoproyecto;
|
||||
tpdu.iddocumentacion = tpd.iddocumentacion;
|
||||
tpdu.esMinima = tpd.esMinima;
|
||||
tpdu.esOpcional = tpd.esOpcional;
|
||||
tpdu.esNecesario = tpd.esNecesario;
|
||||
ltpdu.Add(tpdu);
|
||||
}
|
||||
|
||||
Enumerados.TipoProy_Documentacion = ltpdu;
|
||||
|
||||
Enumerados.documentacion = documentacionAUrban(bd.documentacion.ToList());
|
||||
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region Funciones Despacho Profesional
|
||||
//Funciones Despacho Profesional
|
||||
public double CalcularHorasTotalesProduccion()
|
||||
{
|
||||
if (DespachoProfesional.Trabajadores.Count == 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
return DespachoProfesional.Trabajadores.Sum(x => x.HorasProduccion);
|
||||
}
|
||||
public double CalcularCostesDirectosAnuales()
|
||||
{
|
||||
return DespachoProfesional.Trabajadores.Sum(x => x.CosteAnualTotal);
|
||||
}
|
||||
public double CalcularTotalCostesIndirectos()
|
||||
{
|
||||
return DespachoProfesional.CostesIndirectos.Sum(x => x.coste);
|
||||
}
|
||||
|
||||
public double CalcularCostesDirectos()
|
||||
{
|
||||
if (DespachoProfesional.HorasTotalesProduccion == 0 || DespachoProfesional.CostesDirectosAnuales == 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return Math.Round((DespachoProfesional.CostesDirectosAnuales / DespachoProfesional.HorasTotalesProduccion), 2, MidpointRounding.AwayFromZero);
|
||||
}
|
||||
public double CalcularTasaCostesIndirectos()
|
||||
{
|
||||
if (DespachoProfesional.HorasTotalesProduccion == 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
return Math.Round((DespachoProfesional.TotalCostesIndirectos / DespachoProfesional.HorasTotalesProduccion), 2, MidpointRounding.AwayFromZero);
|
||||
}
|
||||
}
|
||||
public double CalcularCosteHoraDespachoProfesional()
|
||||
{
|
||||
return Math.Round((DespachoProfesional.CostesDirectos + DespachoProfesional.TasaCostesIndirectos), 2, MidpointRounding.AwayFromZero);
|
||||
}
|
||||
|
||||
public void CalcularCosteTotalAnual(Trabajador trab)
|
||||
{
|
||||
trab.CosteAnualTotal = (trab.NumTrabajadores * trab.CosteAnual).DosDecimales();
|
||||
}
|
||||
public void CalcularHorasProduccion(Trabajador trab)
|
||||
{
|
||||
trab.HorasProduccion = (Variables.JornadaLaboralAnual * trab.JornadaLaboral / Variables.JornadaLaboralHoraSemana * trab.NumTrabajadores * (trab.PorcentajeProduccion / 100)).DosDecimales();
|
||||
}
|
||||
public void InsertarTrabajador(Trabajador trab)
|
||||
{
|
||||
CalcularCosteTotalAnual(trab);
|
||||
CalcularHorasProduccion(trab);
|
||||
DespachoProfesional.Trabajadores.Add(trab);
|
||||
|
||||
CalcularFinales();
|
||||
}
|
||||
public void ActualizarTrabajador(Trabajador trab)
|
||||
{
|
||||
CalcularCosteTotalAnual(trab);
|
||||
CalcularHorasProduccion(trab);
|
||||
|
||||
int indice = DespachoProfesional.Trabajadores.ToList().IndexOf(trab);
|
||||
DespachoProfesional.Trabajadores[indice] = trab;
|
||||
|
||||
CalcularFinales();
|
||||
}
|
||||
public void EliminarTrabajador(Trabajador trab)
|
||||
{
|
||||
DespachoProfesional.Trabajadores.Remove(trab);
|
||||
|
||||
CalcularFinales();
|
||||
}
|
||||
|
||||
|
||||
public void ActualizarCosteIndirecto(CosteIndirecto ci)
|
||||
{
|
||||
var periodo = Enumerados.Periodos.First(x => x.idEnumeracion == ci.idPeriodicidad);
|
||||
ci.idPeriodicidad = periodo.idEnumeracion;
|
||||
ci.valorPeriodo = (double)periodo.ValorNumerico1;
|
||||
ci.coste = ci.importe * ci.valorPeriodo;
|
||||
|
||||
int indice = DespachoProfesional.CostesIndirectos.ToList().IndexOf(ci);
|
||||
DespachoProfesional.CostesIndirectos[indice] = ci;
|
||||
|
||||
CalcularFinales();
|
||||
}
|
||||
public void LimpiarCosteIndirecto(CosteIndirecto ci)
|
||||
{
|
||||
ci.importe = 0;
|
||||
ci.coste = 0;
|
||||
}
|
||||
|
||||
|
||||
public void CalcularFinales()
|
||||
{
|
||||
DespachoProfesional.CostesDirectosAnuales = CalcularCostesDirectosAnuales();
|
||||
DespachoProfesional.HorasTotalesProduccion = CalcularHorasTotalesProduccion();
|
||||
|
||||
DespachoProfesional.TotalCostesIndirectos = CalcularTotalCostesIndirectos();
|
||||
DespachoProfesional.TasaCostesIndirectos = CalcularTasaCostesIndirectos();
|
||||
|
||||
DespachoProfesional.CostesDirectos = CalcularCostesDirectos();
|
||||
DespachoProfesional.CosteHoraDespachoProfesional = CalcularCosteHoraDespachoProfesional();
|
||||
CalcularCostesProduccion();
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
#region parsearObjetos
|
||||
public List<enumeracionesCASA> ListaEnumeracionCASA(List<enumeraciones> lista)
|
||||
{
|
||||
|
||||
List<enumeracionesCASA> lu = new List<enumeracionesCASA>();
|
||||
foreach (enumeraciones enu in lista)
|
||||
{
|
||||
lu.Add(EnumeracionACASA(enu));
|
||||
}
|
||||
return lu;
|
||||
}
|
||||
public enumeracionesCASA EnumeracionACASA(enumeraciones enu)
|
||||
{
|
||||
return new enumeracionesCASA()
|
||||
{
|
||||
idEnumeracion = enu.idEnumeracion,
|
||||
idGrupoEnumeracion = enu.idGrupoEnumeracion,
|
||||
Codigo = enu.Codigo,
|
||||
Descripcion = enu.Descripcion,
|
||||
ValorAlfabetico1 = enu.ValorAlfabetico1,
|
||||
ValorAlfabetico2 = enu.ValorAlfabetico2,
|
||||
ValorNumerico1 = enu.ValorNumerico1
|
||||
};
|
||||
}
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
116
bdHerramientaCACOA/HerramientaUrban/URBANCostesProduccion.cs
Normal file
116
bdHerramientaCACOA/HerramientaUrban/URBANCostesProduccion.cs
Normal file
@@ -0,0 +1,116 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using bdHerramientaCACOA.extensiones;
|
||||
using static bdHerramientaCACOA.CASA;
|
||||
namespace bdHerramientaCACOA.HerramientaURBAN
|
||||
{
|
||||
public partial class URBAN
|
||||
{
|
||||
public class URBANCostesProduccion
|
||||
{
|
||||
public bool EsCalculado { get; set; } = true;
|
||||
public double porcentaje { get; set; } = 2.5;
|
||||
public List<CosteVariable> ListaCostesVariables { get; set; } = new List<CosteVariable>();
|
||||
public double CostesVariables { get; set; } = 0;
|
||||
public double TotalCostesVariables { get; set; } = 0;
|
||||
public double TotalCostes { get; set; } = 0;
|
||||
public double CoeficienteCostesExternalizacion { get; set; } = 15;
|
||||
public double CosteHoraExternalizacion { get; set; } = 0;
|
||||
|
||||
|
||||
//h
|
||||
public double HorasTrabajoProfesional { get; set; } = 0;
|
||||
public double PlazoPresentacionDocumentos { get; set; } = 6;
|
||||
public double HorasEnPlazo { get; set; } = 0;
|
||||
public double NumHorasMinimoExt { get; set; } = 0;
|
||||
|
||||
//€
|
||||
public double CostesProduccionTrabProf { get; set; } = 0;
|
||||
public double Beneficio { get; set; } = 0;
|
||||
public double PrecioTrabajoProfesional { get; set; } = 0;
|
||||
}
|
||||
|
||||
//Funciones Costes Produccion
|
||||
public void InsertarCostesVariables(CosteVariable cv)
|
||||
{
|
||||
CostesProduccion.ListaCostesVariables.Add(cv);
|
||||
CalcularCostesProduccion();
|
||||
}
|
||||
public void ActualizarCostesVariables(CosteVariable cv)
|
||||
{
|
||||
int indice = CostesProduccion.ListaCostesVariables.ToList().IndexOf(cv);
|
||||
CostesProduccion.ListaCostesVariables[indice] = cv;
|
||||
|
||||
CalcularCostesProduccion();
|
||||
}
|
||||
public void EliminarCostesVariables(CosteVariable cv)
|
||||
{
|
||||
CostesProduccion.ListaCostesVariables.Remove(cv);
|
||||
CalcularCostesProduccion();
|
||||
}
|
||||
public double CalcularCostesTotales()
|
||||
{
|
||||
return CostesProduccion.ListaCostesVariables.Sum(x => x.Coste);
|
||||
}
|
||||
public void CalcularCostesProduccion()
|
||||
{
|
||||
|
||||
if (CostesProduccion.EsCalculado)
|
||||
{
|
||||
double chtp = CalcularHorasTotalesProduccion();
|
||||
if (chtp == 0)
|
||||
{
|
||||
CostesProduccion.CostesVariables = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
CostesProduccion.CostesVariables = Math.Round(CalcularCostesTotales() / CalcularHorasTotalesProduccion(), 2);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
CostesProduccion.CostesVariables = ((DespachoProfesional.CostesDirectos + DespachoProfesional.TasaCostesIndirectos) * (CostesProduccion.porcentaje / 100)).DosDecimales();
|
||||
}
|
||||
CostesProduccion.TotalCostesVariables = CalcularCostesTotales();
|
||||
CostesProduccion.TotalCostes = (DespachoProfesional.CostesDirectos + DespachoProfesional.TasaCostesIndirectos + CostesProduccion.CostesVariables).DosDecimales();
|
||||
CostesProduccion.CosteHoraExternalizacion = Math.Round(CostesProduccion.TotalCostes * (1 + CostesProduccion.CoeficienteCostesExternalizacion / 100), 2, MidpointRounding.AwayFromZero);
|
||||
|
||||
|
||||
//H
|
||||
if (TrabajoProfesional.horasTrabProfesional<40) {
|
||||
CostesProduccion.HorasTrabajoProfesional = 40;
|
||||
}
|
||||
else
|
||||
{
|
||||
double totalEncargo = TrabajoProfesional.FasesTrabajoProfesional.Sum(x => x.Porcentaje);
|
||||
CostesProduccion.HorasTrabajoProfesional = (TrabajoProfesional.horasTrabProfesional * (totalEncargo / 100)).DosDecimales();
|
||||
}
|
||||
|
||||
CostesProduccion.HorasEnPlazo = (DespachoProfesional.HorasTotalesProduccion * CostesProduccion.PlazoPresentacionDocumentos / 12).DosDecimales();
|
||||
|
||||
if (CostesProduccion.HorasEnPlazo >= CostesProduccion.HorasTrabajoProfesional)
|
||||
{
|
||||
CostesProduccion.NumHorasMinimoExt = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
CostesProduccion.NumHorasMinimoExt = (CostesProduccion.HorasTrabajoProfesional - CostesProduccion.HorasEnPlazo).DosDecimales();
|
||||
}
|
||||
|
||||
|
||||
//€
|
||||
if (CostesProduccion.NumHorasMinimoExt == 0)
|
||||
{
|
||||
CostesProduccion.CostesProduccionTrabProf = (CostesProduccion.HorasTrabajoProfesional * CostesProduccion.TotalCostes).DosDecimales();
|
||||
}
|
||||
else
|
||||
{
|
||||
CostesProduccion.CostesProduccionTrabProf = ((CostesProduccion.HorasEnPlazo * CostesProduccion.TotalCostes) + (CostesProduccion.NumHorasMinimoExt * CostesProduccion.CosteHoraExternalizacion)).DosDecimales();
|
||||
}
|
||||
CostesProduccion.PrecioTrabajoProfesional = (CostesProduccion.CostesProduccionTrabProf * (1+(CostesProduccion.Beneficio/100))).DosDecimales();
|
||||
}
|
||||
}
|
||||
}
|
||||
375
bdHerramientaCACOA/HerramientaUrban/URBANTrabajoProfesional.cs
Normal file
375
bdHerramientaCACOA/HerramientaUrban/URBANTrabajoProfesional.cs
Normal file
@@ -0,0 +1,375 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using bdHerramientaCACOA.db;
|
||||
using bdHerramientaCACOA.extensiones;
|
||||
using static bdHerramientaCACOA.CASA;
|
||||
|
||||
namespace bdHerramientaCACOA.HerramientaURBAN
|
||||
{
|
||||
public partial class URBAN
|
||||
{
|
||||
public class URBANTrabajoProfesional
|
||||
{
|
||||
public int idTipoDocumentacion { get; set; } = 0;
|
||||
public int idTipoProyecto { get; set; } = 0;
|
||||
|
||||
|
||||
public int idInstrumento { get; set; } = 0;
|
||||
public double valorInstrumentos { get; set; } = 0;
|
||||
|
||||
public double horasTrabProfesional { get; set; } = 0;
|
||||
|
||||
public List<DocumentacionURBAN> DocumentacionMinima { get; set; } = new List<DocumentacionURBAN>();
|
||||
|
||||
public List<DocumentacionURBAN> DocumentacionOpcional { get; set; } = new List<DocumentacionURBAN>();
|
||||
|
||||
public List<DocumentacionURBAN> DatosNecesarios { get; set; } = new List<DocumentacionURBAN>();
|
||||
|
||||
public List<FasesURBAN> FasesTrabajoProfesional { get; set; } = new List<FasesURBAN>();
|
||||
|
||||
}
|
||||
public void ActualizarFase(FasesURBAN ft)
|
||||
{
|
||||
int indice = TrabajoProfesional.FasesTrabajoProfesional.ToList().IndexOf(ft);
|
||||
TrabajoProfesional.FasesTrabajoProfesional[indice] = ft;
|
||||
CalcularHorasTrabajoProfesional();
|
||||
}
|
||||
public void ActualizarDocumentacionOpcional(DocumentacionURBAN doc)
|
||||
{
|
||||
int indice = TrabajoProfesional.DocumentacionOpcional.ToList().IndexOf(doc);
|
||||
TrabajoProfesional.DocumentacionOpcional[indice] = doc;
|
||||
CalcularHorasTrabajoProfesional();
|
||||
}
|
||||
public void ActualizarDatoNecesario(DocumentacionURBAN doc) {
|
||||
int indice = TrabajoProfesional.DatosNecesarios.ToList().IndexOf(doc);
|
||||
TrabajoProfesional.DatosNecesarios[indice] = doc;
|
||||
CalcularHorasTrabajoProfesional();
|
||||
}
|
||||
public void CalcularHorasTrabajoProfesional() {
|
||||
double valorhoras = ObtenerHoraTipoDocumento();
|
||||
double totalEncargo = TrabajoProfesional.FasesTrabajoProfesional.Sum(x => x.Porcentaje);
|
||||
double porcentajeInnovacion = TrabajoProfesional.valorInstrumentos;
|
||||
|
||||
TrabajoProfesional.horasTrabProfesional = (valorhoras * (totalEncargo / 100) * (porcentajeInnovacion / 100)).DosDecimales();
|
||||
}
|
||||
|
||||
public double ObtenerHoraTipoDocumento()
|
||||
{
|
||||
int datos = TrabajoProfesional.DatosNecesarios.Count;
|
||||
var colcoef = "?";
|
||||
var formHP = "?";
|
||||
double TPCOEF1 = obtenerTPCOEF1();
|
||||
double TPCOEF2 = 0;
|
||||
if (TrabajoProfesional.DatosNecesarios.Count >= 2) {
|
||||
if (TrabajoProfesional.DatosNecesarios[1].esCheckbox)
|
||||
{
|
||||
if (TrabajoProfesional.DatosNecesarios[1].Checkeada)
|
||||
{
|
||||
TPCOEF2 = TrabajoProfesional.DatosNecesarios[1].CoefHoras;
|
||||
}
|
||||
}
|
||||
else {
|
||||
double TPdato2 = TrabajoProfesional.DatosNecesarios[1].ValorNecesario;
|
||||
TPCOEF2 = TrabajoProfesional.DatosNecesarios[1].CoefHoras * TPdato2;
|
||||
}
|
||||
}
|
||||
double TPCOEF3 = 0;
|
||||
if (TrabajoProfesional.DatosNecesarios.Count >= 3)
|
||||
{
|
||||
if (TrabajoProfesional.DatosNecesarios[2].Checkeada) {
|
||||
TPCOEF3 = TrabajoProfesional.DatosNecesarios[2].CoefHoras;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
return ((TPCOEF1+TPCOEF2)*(1+TPCOEF3)).DosDecimales();
|
||||
}
|
||||
|
||||
public double obtenerTPCOEF1()
|
||||
{
|
||||
if(TrabajoProfesional.idTipoProyecto != 0)
|
||||
{
|
||||
int minimo = TrabajoProfesional.DocumentacionMinima.Count;
|
||||
int opciones = TrabajoProfesional.DocumentacionOpcional.Count;
|
||||
int opcSel = TrabajoProfesional.DocumentacionOpcional.Where(x => x.Checkeada == true).Count();
|
||||
string abreviatura = Enumerados.TiposProyecto.First(x => x.idtipoproyectos == TrabajoProfesional.idTipoProyecto).Abreviatura;
|
||||
double TPdato1 = TrabajoProfesional.DatosNecesarios[0].ValorNecesario;
|
||||
double formDato1 = 0;
|
||||
if (TPdato1 != 0)
|
||||
{
|
||||
switch (abreviatura)
|
||||
{
|
||||
case "PGOM":
|
||||
if (TPdato1 < 1)
|
||||
{
|
||||
formDato1 = 0.7 * 77.14;
|
||||
}
|
||||
else
|
||||
{
|
||||
formDato1 = 0.7 * (95.413 * Math.Pow(TPdato1, -0.328));
|
||||
}
|
||||
break;
|
||||
case "POI":
|
||||
if (TPdato1 > 50)
|
||||
{
|
||||
formDato1 = 70.6;
|
||||
}
|
||||
else
|
||||
{
|
||||
formDato1 = 56.703 * Math.Pow(TPdato1, 0.0554);
|
||||
}
|
||||
break;
|
||||
case "PBOM":
|
||||
if (TPdato1 < 1)
|
||||
{
|
||||
formDato1 = 0.7 * 77.14;
|
||||
}
|
||||
else
|
||||
{
|
||||
formDato1 = (95.413 * Math.Pow(TPdato1, -0.328));
|
||||
}
|
||||
break;
|
||||
case "POU":
|
||||
if (TPdato1 < 1)
|
||||
{
|
||||
formDato1 = 0.3 * 77.14;
|
||||
}
|
||||
else
|
||||
{
|
||||
formDato1 = 0.3 * (95.413 * Math.Pow(TPdato1, -0.328));
|
||||
}
|
||||
break;
|
||||
case "PPO":
|
||||
if (TPdato1 <= 5)
|
||||
{
|
||||
formDato1 = 9.44;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (TPdato1 > 100)
|
||||
{
|
||||
formDato1 = 2.3;
|
||||
}
|
||||
else
|
||||
{
|
||||
formDato1 = 24.911 * Math.Pow(TPdato1, -0.473);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "PRI":
|
||||
if (TPdato1 <= 5)
|
||||
{
|
||||
formDato1 = 17.08;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (TPdato1 > 100)
|
||||
{
|
||||
formDato1 = 3.67;
|
||||
}
|
||||
else
|
||||
{
|
||||
formDato1 = 50.413 * Math.Pow(TPdato1, -0.524);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "EO":
|
||||
if (TPdato1 <= 5)
|
||||
{
|
||||
formDato1 = 12.2;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (TPdato1 > 100)
|
||||
{
|
||||
formDato1 = 3.17;
|
||||
}
|
||||
else
|
||||
{
|
||||
formDato1 = 31.953 * Math.Pow(TPdato1, -0.475);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "PE":
|
||||
if (TPdato1 <= 5)
|
||||
{
|
||||
formDato1 = 6.8;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (TPdato1 > 100)
|
||||
{
|
||||
formDato1 = 1.81;
|
||||
}
|
||||
else
|
||||
{
|
||||
formDato1 = 17.536 * Math.Pow(TPdato1, -0.468);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "PEP":
|
||||
if (TPdato1 <= 5)
|
||||
{
|
||||
formDato1 = 22.65;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (TPdato1 > 100)
|
||||
{
|
||||
formDato1 = 6;
|
||||
}
|
||||
else
|
||||
{
|
||||
formDato1 = 58.555 * Math.Pow(TPdato1, -0.468);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "ED":
|
||||
if (TPdato1 < 10)
|
||||
{
|
||||
formDato1 = 10.085 * Math.Pow(TPdato1, -0.4);
|
||||
}
|
||||
else
|
||||
{
|
||||
formDato1 = 4.2;
|
||||
}
|
||||
break;
|
||||
case "CAT":
|
||||
formDato1 = TrabajoProfesional.DatosNecesarios.First().CoefHoras;
|
||||
break;
|
||||
case "PPAR":
|
||||
if (TPdato1 > 50)
|
||||
{
|
||||
formDato1 = 0.88;
|
||||
}
|
||||
else
|
||||
{
|
||||
formDato1 = 4.7193 * Math.Pow(TPdato1, -0.34);
|
||||
}
|
||||
break;
|
||||
case "UE":
|
||||
if (TPdato1 >= 100)
|
||||
{
|
||||
formDato1 = 0.26;
|
||||
}
|
||||
else
|
||||
{
|
||||
formDato1 = 2.1598 * Math.Pow(TPdato1, -0.468);
|
||||
}
|
||||
break;
|
||||
case "PREP":
|
||||
if (TPdato1 >= 100)
|
||||
{
|
||||
formDato1 = 0.94;
|
||||
}
|
||||
else
|
||||
{
|
||||
formDato1 = 4.9615 * Math.Pow(TPdato1, -0.328);
|
||||
}
|
||||
break;
|
||||
case "PNF":
|
||||
if (TPdato1 >= 100)
|
||||
{
|
||||
formDato1 = 0.94;
|
||||
}
|
||||
else
|
||||
{
|
||||
formDato1 = 4.9615 * Math.Pow(TPdato1, -0.328);
|
||||
}
|
||||
break;
|
||||
case "PDCU":
|
||||
if (TPdato1 >= 100)
|
||||
{
|
||||
formDato1 = 0.94;
|
||||
}
|
||||
else
|
||||
{
|
||||
formDato1 = 4.9615 * Math.Pow(TPdato1, -0.328);
|
||||
}
|
||||
break;
|
||||
case "PETC":
|
||||
if (TPdato1 >= 100)
|
||||
{
|
||||
formDato1 = 1.85;
|
||||
}
|
||||
else
|
||||
{
|
||||
formDato1 = 8.97 * Math.Pow(TPdato1, -0.322);
|
||||
}
|
||||
break;
|
||||
case "PU":
|
||||
if (TPdato1 >= 100)
|
||||
{
|
||||
formDato1 = 50;
|
||||
}
|
||||
else
|
||||
{
|
||||
formDato1 = -27.14 * Math.Log(TPdato1) + 189.88;
|
||||
}
|
||||
break;
|
||||
case "POOU":
|
||||
if (TPdato1 >= 100)
|
||||
{
|
||||
formDato1 = 50;
|
||||
}
|
||||
else
|
||||
{
|
||||
formDato1 = -27.14 * Math.Log(TPdato1) + 189.88;
|
||||
}
|
||||
break;
|
||||
case "PDATU":
|
||||
if (TPdato1 <= 100)
|
||||
{
|
||||
formDato1 = 1.65;
|
||||
}
|
||||
else
|
||||
{
|
||||
formDato1 = 25.451 * Math.Pow(TPdato1, -0.328);
|
||||
}
|
||||
break;
|
||||
case "PEAAT":
|
||||
if (TPdato1 <= 1)
|
||||
{
|
||||
formDato1 = 10.14;
|
||||
}
|
||||
else
|
||||
{
|
||||
formDato1 = 13.898 * Math.Pow(TPdato1, -0.383);
|
||||
}
|
||||
break;
|
||||
case "PA":
|
||||
if (TPdato1 <= 1)
|
||||
{
|
||||
formDato1 = 10.14;
|
||||
}
|
||||
else
|
||||
{
|
||||
formDato1 = 13.898 * Math.Pow(TPdato1, -0.383);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
double TPdatoXformula = (TPdato1 * formDato1).DosDecimales();
|
||||
return ((minimo + (0.5 * opcSel)) * TPdatoXformula).DosDecimales();
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
public class FasesURBAN
|
||||
{
|
||||
public int idFase { get; set; } = 0;
|
||||
public string Codigo { get; set; } = "";
|
||||
public string Denominacion { get; set; } = "";
|
||||
public double Porcentaje { get; set; } = 0;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using bdHerramientaCACOA.db;
|
||||
|
||||
namespace bdHerramientaCACOA.HerramientaUrban
|
||||
{
|
||||
public partial class tipoproyecto_documentacionURBAN
|
||||
{
|
||||
public int idtipoproyecto_documentacion { get; set; }
|
||||
|
||||
public int? idtipoproyecto { get; set; }
|
||||
|
||||
public int? iddocumentacion { get; set; }
|
||||
|
||||
public bool? esMinima { get; set; }
|
||||
|
||||
public bool? esOpcional { get; set; }
|
||||
|
||||
public bool? esNecesario { get; set; }
|
||||
|
||||
public int orden { get; set; }
|
||||
}
|
||||
}
|
||||
19
bdHerramientaCACOA/HerramientaUrban/tipoproyectosURBAN.cs
Normal file
19
bdHerramientaCACOA/HerramientaUrban/tipoproyectosURBAN.cs
Normal file
@@ -0,0 +1,19 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace bdHerramientaCACOA.HerramientaUrban
|
||||
{
|
||||
public partial class tipoproyectosURBAN
|
||||
{
|
||||
public int idtipoproyectos { get; set; }
|
||||
|
||||
public int idTipoDocumento { get; set; }
|
||||
|
||||
public string? Descripcion { get; set; }
|
||||
|
||||
public string? Abreviatura { get; set; }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user