añadido incremento en licitaciones CASA

This commit is contained in:
2025-07-28 12:27:10 +02:00
parent 4fd3b09eb0
commit e4a9271ed0
3 changed files with 74 additions and 6 deletions

View File

@@ -50,7 +50,7 @@ namespace bdHerramientaCACOA
public int idGradMed { get; set; } = 0;
public int idDelin { get; set; } = 0;
public double IncrementoUrgencia { get; set; } = 0;
public double PlazoPresentacionDocumentos { get; set; } = 0;
public double CostesProduccionTrabProf { get; set; } = 0;
@@ -102,7 +102,7 @@ namespace bdHerramientaCACOA
ft.Codigo = enu.Codigo;
ft.Denominacion = enu.ValorAlfabetico1;
ft.Porcentaje = (double)enu.ValorNumerico1;
ft.PlazoMinimo = enu.ValorNumerico2 == null ? null : (double)enu.ValorNumerico2;
FasesTrabajo.Add(ft);
}
}
@@ -295,14 +295,29 @@ namespace bdHerramientaCACOA
// calcular coste hora de produccion
costeHoraProduccion = CosteCDCI * (1 + tasaCostesVariables);
if (PlazoPresentacionDocumentos == 0)
{
CostesProduccionTrabProf = 0;
}
else {
CostesProduccionTrabProf = (horasProduccion * coefPlazos * costeHoraProduccion).DosDecimales();
else
{
IncrementoUrgencia = CalcularIncremento();
if (IncrementoUrgencia == 0)
{
CostesProduccionTrabProf = (horasProduccion * coefPlazos * costeHoraProduccion).DosDecimales();
}
else
{
var incr = 1 + (IncrementoUrgencia / 100);
CostesProduccionTrabProf = ((horasProduccion * incr) *
(coefPlazos * incr) *
(costeHoraProduccion * incr)).DosDecimales();
}
}
PrecioTrabProf = (CostesProduccionTrabProf * (1 + (Beneficio / 100))).DosDecimales();
PrecioTrabProf = (CostesProduccionTrabProf * (1 + (Beneficio / 100))).DosDecimales();
CostesProduccionTrabProf = Math.Round(CostesProduccionTrabProf, 2, MidpointRounding.AwayFromZero);
PrecioTrabProf = Math.Round(PrecioTrabProf, 2, MidpointRounding.AwayFromZero);
@@ -465,7 +480,29 @@ namespace bdHerramientaCACOA
return listaCDCI;
}
public double CalcularIncremento()
{
double incremento = 3.5;
var listaPlazos = FasesTrabajo.Where(x => x.Porcentaje > 0 && x.PlazoMinimo != null && x.Seleccionado==true).ToList();
if (listaPlazos.Count > 0)
{
double meses = (double)listaPlazos.Sum(x => x.PlazoMinimo);
if (PlazoPresentacionDocumentos < meses)
{
return (meses - PlazoPresentacionDocumentos) * incremento;
}
else
{
return 0;
}
}
else
{
return 0;
}
}
public class ConvenioColectivoConcurso
{
public int idConvenioColectivo { get; set; } = 0;