Compare commits

...

4 Commits

Author SHA1 Message Date
44098efd88 Fusion de cosas en licitaciones 2025-07-30 09:14:11 +02:00
d180046348 cambios pre vacaciones perea pa subir 2025-07-30 08:47:10 +02:00
d75634b07e Merge branch 'master' of https://gitea.tecnosis.net/CACOA/HerramientaCASA 2025-07-28 13:24:07 +02:00
811b8fc0c0 pa obtener 2025-07-28 13:23:27 +02:00
9 changed files with 290 additions and 102 deletions

View File

@@ -53,7 +53,7 @@
<tfoot>
<tr>
<td colspan="2" class="text-end colorC fw-bold w4 TotalesTabla">
Total horas del trabajo profesional: <span>@objetoURBAN.CostesProduccion.HorasTrabajoProfesional.MilesYDecimales() h </span>
Total horas del trabajo profesional: <span>@((objetoURBAN.CostesProduccion.HorasEnPlazo + objetoURBAN.CostesProduccion.NumHorasMinimoExt).MilesYDecimales()) h </span>
</td>
</tr>
</tfoot>

View File

@@ -3,34 +3,61 @@
@inject NavigationManager Navigation
@using HerramientaCASA.Components.Pages.HerramientaURBANTabs.TrabajoProfURBAN
@using bdHerramientaCACOA.HerramientaURBAN
<div class="row p-0 m-0">
<div class="col-md-12 d-flex mt-3" style="gap: 40px;">
<RadioInput style="margin-right: 10px;" Label="Cálculo completo" Value="modificarTabla" ValueExpression="() => modificarTabla" ValueChanged="(value) => modificarTablaChanged(value)" />
<RadioInput style="margin-right: 10px;" Label="Cálculo por tiempo" Value="modificarHoras" ValueExpression="() => modificarHoras" ValueChanged="(value) => modificarHorasChanged(value)" />
</div>
@if (modificarTabla)
{
<div class="row p-0 m-0">
<div class="col-md-12 mt-3 mb-3">
<CascadingValue Value="this">
<DocumentosURBAN objetoURBAN="objetoURBAN"></DocumentosURBAN>
<DocumentosURBAN objetoURBAN="objetoURBAN"></DocumentosURBAN>
</CascadingValue>
</div>
</div>
</div>
<div class="row p-0 m-0">
<div class="col-md-4">
<CascadingValue Value="this">
<FasesURBAN objetoURBAN="objetoURBAN"></FasesURBAN>
</CascadingValue>
<div class="row p-0 m-0">
<div class="col-md-4">
<CascadingValue Value="this">
<FasesURBAN objetoURBAN="objetoURBAN"></FasesURBAN>
</CascadingValue>
</div>
<div class="col-md-4">
<CascadingValue Value="this">
<InstrumentosURBAN objetoURBAN="objetoURBAN"></InstrumentosURBAN>
</CascadingValue>
</div>
</div>
<div class="col-md-4">
<CascadingValue Value="this">
<InstrumentosURBAN objetoURBAN="objetoURBAN"></InstrumentosURBAN>
</CascadingValue>
}
else
{
<div class="row p-0 m-0">
<div class="col-md-4">
<CascadingValue Value="this">
<FasesURBAN objetoURBAN="objetoURBAN"></FasesURBAN>
</CascadingValue>
<table class="tablaAlter mt-4" style="width: 100%;">
<tr>
<td class="tdAlter" style="width:50%;">HORAS TRABAJO PROFESIONAL URBANISMO: </td>
<td class="tdAlineadoDerecha">
<div class=" d-flex">
<InputNumber TValue="double" @onblur="CalcularWea" @bind-Value="@objetoURBAN.TrabajoProfesional.horasTrabProfesional" Min="0" class="inputForm inputTabla tdAlineadoDerecha" />h
</div>
</td>
</tr>
</table>
</div>
</div>
</div>
}
@code {
[Parameter]
public URBAN objetoURBAN { get; set; } = new URBAN();
public tsHerramientasCACOA bd;
public bool modificarTabla = true;
public bool modificarHoras = false;
protected override async Task OnInitializedAsync()
{
bd = tsHerramientasCACOA.NuevoContexto(SoloLectura: false);
@@ -39,4 +66,40 @@
{
this.StateHasChanged();
}
private async void modificarTablaChanged(bool res)
{
// objetoCASA.TrabajoProfesional.HorasTPE = 0;
// objetoCASA.TrabajoProfesional.HorasTPEDocumentacion = 0;
// objetoCASA.TrabajoProfesional.HorasTPEDireccion = 0;
// if (objetoCASA.TrabajoProfesional.Usos.ToList().Count() != 0)
// {
// objetoCASA.CalcularHorasTPE();
// }
modificarTabla = res;
modificarHoras = !res;
objetoURBAN.TrabajoProfesional.EsPorUsos = true;
//objetoLicitaciones.CalcularHorasSuperficie();
await InvokeAsync(StateHasChanged);
}
private async void modificarHorasChanged(bool res)
{
// horasTPEOriginal = objetoCASA.TrabajoProfesional.HorasTPE;
// ultimaHoraDocumentacion = objetoCASA.TrabajoProfesional.HorasTPEDocumentacion;
// ultimaHoraObra = objetoCASA.TrabajoProfesional.HorasTPEDireccion;
modificarHoras = res;
modificarTabla = !res;
objetoURBAN.TrabajoProfesional.EsPorUsos = false;
//objetoLicitaciones.CalcularHorasSuperficie();
await InvokeAsync(StateHasChanged);
}
private async void CalcularWea()
{
objetoURBAN.CalcularCostesProduccion();
}
}

View File

@@ -104,7 +104,7 @@
{
objeto.Porcentaje = (double)e;
objetoURBAN.ActualizarFase(objeto);
await InvokeAsync(StateHasChanged);
_Parent.RefreshState();
}

View File

@@ -58,7 +58,7 @@
<div class="row">
<div class="col-md-6 mt-3 mb-2">
<div><b>Convenio Colectivo:</b></div>
<InputSelect @bind-Value="@objetoLicitaciones.idProvincia" class="inputForm" @oninput="e => CalcularTabla(e.Value.ToString())">
<InputSelect @bind-Value="@objetoLicitaciones.idProvincia" class="inputForm" @oninput="e => CalcularTabla(e.Value.ToString())" style="width: 225px;">
<option value="">Estatal</option>
<option value="04">Almería</option>
<option value="11">Cádiz</option>
@@ -69,20 +69,26 @@
<option value="41">Sevilla</option>
</InputSelect>
</div>
<div class="col-md-12 d-flex mt-3" style="gap: 40px;">
<RadioInput style="margin-right: 10px;" Label="Cálculo por superficie y uso" Value="modificarTabla" ValueExpression="() => modificarTabla" ValueChanged="(value) => modificarTablaChanged(value)" />
<RadioInput style="margin-right: 10px;" Label="Cálculo por tiempo" Value="modificarHoras" ValueExpression="() => modificarHoras" ValueChanged="(value) => modificarHorasChanged(value)" />
</div>
@if (modificarTabla)
{
<div class="col-md-12 mt-3 mb-5">
<CascadingValue Value="this">
<TrabajoProfLicitacionesGrid objetoLicitaciones="objetoLicitaciones"></TrabajoProfLicitacionesGrid>
</CascadingValue>
</div>
}
</div>
<div class="row">
<div class="col-md-3" >
<CascadingValue Value="this">
<FasesTrabajoLicitaciones objetoLicitaciones="objetoLicitaciones"></FasesTrabajoLicitaciones>
</CascadingValue>
</div>
<div class="col-md-3">
<CascadingValue Value="this">
<FasesTrabajoLicitaciones objetoLicitaciones="objetoLicitaciones"></FasesTrabajoLicitaciones>
</CascadingValue>
</div>
<div class="col-md-5">
<CascadingValue Value="this">
@@ -122,7 +128,7 @@
</table>
</div>
</div> *@
<div class="pt-5" style="margin-top:2000px;">
<div class="pt-5 d-none" style="margin-top:2000px;">
<p><b>Datos configuración para revisión de datos</b></p>
<b>superficie</b> @objetoLicitaciones.superficie;<br />
<b>Coef sup total</b> @objetoLicitaciones.coefSupTotal; (sin redondeo:@objetoLicitaciones.coefsinredondeo)<br />
@@ -143,7 +149,7 @@
<b>tasa costes var</b> @objetoLicitaciones.tasaCostesVariables;<br />
<b>coste hora prod</b> @objetoLicitaciones.costeHoraProduccion;
</div>
<div class="pt-5">
<div class="pt-5 d-none">
<b>Tabla CD+CI para visualizacion de datos, se quitara cuando se vea que los calculos son correctos</b><br />
<b>IPC Coste Indirecto:</b>@objetoLicitaciones.Variables.IPCCosteIndirecto;<br />
<Grid TItem="CosteDirectoIndirecto"
@@ -210,6 +216,9 @@
private int idUser = 0;
public bool modificarTabla = true;
public bool modificarHoras = false;
public Licitaciones()
{
}
@@ -226,7 +235,7 @@
idSimulador = clValue;
}
if (string.IsNullOrEmpty(idSimulador))
{
try
@@ -435,6 +444,40 @@
Navigation.NavigateTo(pdfUrl, true);
}
private async void modificarTablaChanged(bool res)
{
// objetoCASA.TrabajoProfesional.HorasTPE = 0;
// objetoCASA.TrabajoProfesional.HorasTPEDocumentacion = 0;
// objetoCASA.TrabajoProfesional.HorasTPEDireccion = 0;
// if (objetoCASA.TrabajoProfesional.Usos.ToList().Count() != 0)
// {
// objetoCASA.CalcularHorasTPE();
// }
modificarTabla = res;
modificarHoras = !res;
objetoLicitaciones.EsPorUsos = true;
objetoLicitaciones.horasProduccion = 0;
objetoLicitaciones.CalcularHorasSuperficie();
await InvokeAsync(StateHasChanged);
}
private async void modificarHorasChanged(bool res)
{
// horasTPEOriginal = objetoCASA.TrabajoProfesional.HorasTPE;
// ultimaHoraDocumentacion = objetoCASA.TrabajoProfesional.HorasTPEDocumentacion;
// ultimaHoraObra = objetoCASA.TrabajoProfesional.HorasTPEDireccion;
modificarHoras = res;
modificarTabla = !res;
objetoLicitaciones.EsPorUsos = false;
objetoLicitaciones.CalcularHorasSuperficie();
await InvokeAsync(StateHasChanged);
}
}

View File

@@ -33,15 +33,28 @@
</div>
</td>
</tr>
<tr>
<td class="colorB fw-bold w4">Coste hora de producción</td>
<td class="text-end"><span> @objetoLicitaciones.costeHoraProduccion.MilesYDecimales() </span></td>
<td class="text-end"><span>@objetoLicitaciones.costeHoraProduccion.MilesYDecimales() h</span>
</td>
</tr>
<tr>
<td class="colorB fw-bold w4">Horas Trabajo profesional</td>
<td class="text-end"><span> @objetoLicitaciones.horasProduccion.MilesYDecimales() €</span></td>
<td class="text-end">
@if (objetoLicitaciones.EsPorUsos)
{
<span>
@objetoLicitaciones.horasProduccion.MilesYDecimales() h
</span>
}
else
{
<div class="d-flex" style="gap: 3px;">
<InputNumber TValue="double" @onblur="objetoLicitaciones.CalcularHorasSuperficie" @bind-Value="@objetoLicitaciones.horasProduccion" Min="0" class="inputForm inputTabla tdAlineadoDerecha" />h
</div>
}
</td>
</tr>
<tr>

View File

@@ -14,67 +14,71 @@
<Toasts class="p-3 font-weight-bold" Style="color:white;" AutoHide="true" Delay="4000" Messages="mensajes" Placement="ToastsPlacement.BottomCenter" />
<p class="TituloVentana">
@TextoSuperior
</p>
<p class="TituloVentana">
@TextoSuperior
</p>
@if (!actualizado)
{
<div class="UpdateCacoa d-flex">
<span>Esta simulación utiliza valores desactualizados. ¿Quiere Realizar una copia actualizada?</span>
<button @onclick="@(() => clonarUrban())" class="btnBlue ms-auto">Actualizar</button>
</div>
}
<Modal @ref="popupGuardar" title="@TituloBoton" IsVerticallyCentered="true" UseStaticBackdrop="true" CloseOnEscape="false">
<BodyTemplate>
<div class="col-12 formatoCampos">
{
<div class="UpdateCacoa d-flex">
<span>Esta simulación utiliza valores desactualizados. ¿Quiere Realizar una copia actualizada?</span>
<button @onclick="@(() => clonarUrban())" class="btnBlue ms-auto">Actualizar</button>
</div>
}
<Modal @ref="popupGuardar" title="@TituloBoton" IsVerticallyCentered="true" UseStaticBackdrop="true" CloseOnEscape="false">
<BodyTemplate>
<div class="col-12 formatoCampos">
@if (TituloBoton == "Guardar")
{
<p>Se va a <b>guardar</b> esta <b>nueva simulación</b> podrá acceder a ella para consultarla y editarla desde el apartado <b>Mis Simulaciones</b> </p>
}
else
{
@if (TituloBoton == "Guardar")
{
<p>Se va a <b>guardar</b> esta <b>nueva simulación</b> podrá acceder a ella para consultarla y editarla desde el apartado <b>Mis Simulaciones</b> </p>
}
else
{
<p>Se van a <b>sobrescribir</b> los datos de la <b>simulación actual</b> con los cambios realizados, <b>esta opción no puede deshacerse.</b><br /><br /> ¿Desea continuar? </p>
}
</div>
</BodyTemplate>
<FooterTemplate>
<Button Color="ButtonColor.Secondary" @onclick="cerrarPopupGuardar">Cerrar</Button>
<Button @onclick="@(() => guardarUrban())" Color="ButtonColor.Primary">@TituloBoton</Button>
</FooterTemplate>
</Modal>
}
</div>
</BodyTemplate>
<FooterTemplate>
<Button Color="ButtonColor.Secondary" @onclick="cerrarPopupGuardar">Cerrar</Button>
<Button @onclick="@(() => guardarUrban())" Color="ButtonColor.Primary">@TituloBoton</Button>
</FooterTemplate>
</Modal>
<div class="container-fluid pt-3">
<div class="d-flex" style="width:100%">
<button @onclick="@(() => abrirPopupGuardar())" class="btnBlue d-flex align-items-center"> <i class="fas fa-save pe-2"></i>@TituloBoton</button>
<b class="Fuente2 ps-2 pe-2 nomSim">Nombre de la licitación: </b>
<InputText @bind-Value="objetoLicitacionUrban.NombreSimulacion" class="form-control inputForm formatoMoneda inputTabla " style="text-align:left;font-weight:bold;"></InputText>
</div>
<div class="row">
<div class="col-md-6 mt-3 mb-2">
<div><b>Convenio Colectivo:</b></div>
<InputSelect @bind-Value="@objetoLicitacionUrban.idProvincia" class="inputForm" @oninput="e => CalcularTabla(e.Value.ToString())">
<option value="">Estatal</option>
<option value="04">Almería</option>
<option value="11">Cádiz</option>
<option value="14">Córdoba</option>
<option value="18">Granada</option>
<option value="15">Huelva</option>
<option value="29">Málaga</option>
<option value="41">Sevilla</option>
</InputSelect>
<div class="row">
<div class="col-md-6 mt-3 mb-2">
<div><b>Convenio Colectivo:</b></div>
<InputSelect @bind-Value="@objetoLicitacionUrban.idProvincia" class="inputForm" @oninput="e => CalcularTabla(e.Value.ToString())" style="width: 225px;">
<option value="">Estatal</option>
<option value="04">Almería</option>
<option value="11">Cádiz</option>
<option value="14">Córdoba</option>
<option value="18">Granada</option>
<option value="15">Huelva</option>
<option value="29">Málaga</option>
<option value="41">Sevilla</option>
</InputSelect>
</div>
</div>
</div>
<div class="row p-0 m-0">
<div class="col-md-12 mt-3 mb-3">
<div class="col-md-12 d-flex mt-3" style="gap: 40px;">
<RadioInput style="margin-right: 10px;" Label="Cálculo Completo" Value="modificarTabla" ValueExpression="() => modificarTabla" ValueChanged="(value) => modificarTablaChanged(value)" />
<RadioInput style="margin-right: 10px;" Label="Cálculo por tiempo" Value="modificarHoras" ValueExpression="() => modificarHoras" ValueChanged="(value) => modificarHorasChanged(value)" />
</div>
@if (modificarTabla)
{
<div class="row">
<div class="col-md-12 mt-3 mb-3">
<CascadingValue Value="this">
<DocumentosLicitacion objetoLicitacionUrban="objetoLicitacionUrban"></DocumentosLicitacion>
</CascadingValue>
</div>
</div>
<div class="row p-0 m-0">
}
<div class="row">
<div class="col-md-3">
<CascadingValue Value="this">
<FasesLicitacionesUrban objetoLicitacionUrban="objetoLicitacionUrban"></FasesLicitacionesUrban>
@@ -82,12 +86,12 @@
</div>
<div class="col-md-5">
<CascadingValue Value="this">
<TablaTrabajadoresUrban objetoLicitacionUrban="objetoLicitacionUrban"></TablaTrabajadoresUrban>
</CascadingValue>
@* <CascadingValue Value="this">
@* <CascadingValue Value="this">
<InstrumentosLicitacionesUrban objetoLicitacionUrban="objetoLicitacionUrban"></InstrumentosLicitacionesUrban>
</CascadingValue> *@
</div>
@@ -109,7 +113,7 @@
@* <InputNumber TValue="int" Locale="es-ES" Min="0" class="inputForm formatoMoneda inputTabla" Value="@objetoLicitacionUrban.PlazoPresentacionDocumentos" ValueExpression="() => objetoLicitacionUrban.PlazoPresentacionDocumentos" ValueChanged="(value) => PlazoPresentacionDocumentosCambiado(value)"></InputNumber> meses *@
<InputNumber TValue="double" @bind-Value="objetoLicitacionUrban.PlazoPresentacionDocumentos"
step="any"
@oninput="e => controlarMeses(e.Value?.ToString())"
@oninput="e => controlarMeses(e.Value?.ToString())"
class="inputForm formatoMoneda inputTabla text-end" /> meses
</div>
</td>
@@ -120,7 +124,20 @@
</tr>
<tr>
<td class="tdAlter" style="width:50%;">Horas Trabajo Profesional </td>
<td class="tdAlineadoDerecha">@objetoLicitacionUrban.TrabajoProfesional.horasTrabProfesional.MilesYDecimales() h</td>
<td class="tdAlineadoDerecha">
@if (objetoLicitacionUrban.EsPorUsos)
{
<span>
@objetoLicitacionUrban.TrabajoProfesional.horasTrabProfesional.MilesYDecimales() h
</span>
}
else
{
<div class="d-flex" style="gap: 3px;">
<InputNumber TValue="double" @onblur="objetoLicitacionUrban.CalcularHorasTrabajoProfesional" @bind-Value="@objetoLicitacionUrban.TrabajoProfesional.horasTrabProfesional" Min="0" class="inputForm inputTabla tdAlineadoDerecha" />h
</div>
}
</td>
</tr>
<tr>
<td class="colorB fw-bold w4">Coste de producción del Trabajo Profesional</td>
@@ -150,18 +167,18 @@
</div>
<div class="pt-5" style="margin-top:2000px;">
<div class="pt-5 d-none" style="margin-top:2000px;">
<b>Tabla CD+CI para visualizacion de datos, se quitara cuando se vea que los calculos son correctos</b><br />
<b>IPC Coste Indirecto:</b>@objetoLicitacionUrban.Variables.IPCCosteIndirecto;<br />
<Grid TItem="CosteDirectoIndirecto"
Class="tablaCACOA table"
Data="objetoLicitacionUrban.Enumerados.ListaCDCI"
AllowFiltering="false"
PageSize="10"
Height="100"
EmptyText="No hay registros."
PageSizeSelectorVisible="false"
Responsive="true">
Class="tablaCACOA table"
Data="objetoLicitacionUrban.Enumerados.ListaCDCI"
AllowFiltering="false"
PageSize="10"
Height="100"
EmptyText="No hay registros."
PageSizeSelectorVisible="false"
Responsive="true">
<GridColumns>
<GridColumn TItem="CosteDirectoIndirecto" HeaderTextAlignment="Alignment.Center" Class="text-end" HeaderText="Nº Trabajadores">
<span>@context.NumeroTrabajadores</span>
@@ -214,6 +231,9 @@
private int idUser = 0;
public bool modificarTabla = true;
public bool modificarHoras = false;
protected override async Task OnInitializedAsync()
{
try
@@ -405,5 +425,37 @@
{
await popupGuardar.HideAsync();
}
private async void modificarTablaChanged(bool res)
{
// objetoCASA.TrabajoProfesional.HorasTPE = 0;
// objetoCASA.TrabajoProfesional.HorasTPEDocumentacion = 0;
// objetoCASA.TrabajoProfesional.HorasTPEDireccion = 0;
// if (objetoCASA.TrabajoProfesional.Usos.ToList().Count() != 0)
// {
// objetoCASA.CalcularHorasTPE();
// }
modificarTabla = res;
modificarHoras = !res;
objetoLicitacionUrban.EsPorUsos = true;
objetoLicitacionUrban.TrabajoProfesional.horasTrabProfesional = 0;
// objetoLicitacionUrban.CalcularHorasSuperficie();
await InvokeAsync(StateHasChanged);
}
private async void modificarHorasChanged(bool res)
{
// horasTPEOriginal = objetoCASA.TrabajoProfesional.HorasTPE;
// ultimaHoraDocumentacion = objetoCASA.TrabajoProfesional.HorasTPEDocumentacion;
// ultimaHoraObra = objetoCASA.TrabajoProfesional.HorasTPEDireccion;
modificarHoras = res;
modificarTabla = !res;
objetoLicitacionUrban.EsPorUsos = false;
// objetoLicitacionUrban.CalcularHorasSuperficie();
await InvokeAsync(StateHasChanged);
}
}

View File

@@ -22,6 +22,8 @@ namespace bdHerramientaCACOA.HerramientaURBAN
public double horasTrabProfesional { get; set; } = 0;
public bool EsPorUsos { get; set; } = true;
public List<DocumentacionURBAN> DocumentacionMinima { get; set; } = new List<DocumentacionURBAN>();
public List<DocumentacionURBAN> DocumentacionOpcional { get; set; } = new List<DocumentacionURBAN>();
@@ -54,6 +56,7 @@ namespace bdHerramientaCACOA.HerramientaURBAN
double porcentajeInnovacion = TrabajoProfesional.valorInstrumentos;
TrabajoProfesional.horasTrabProfesional = (valorhoras * (totalEncargo / 100) * (porcentajeInnovacion / 100)).DosDecimales();
CalcularCostesProduccion();
}
public double ObtenerHoraTipoDocumento()

View File

@@ -52,7 +52,7 @@ namespace bdHerramientaCACOA
public double IncrementoUrgencia { get; set; } = 0;
public double PlazoPresentacionDocumentos { get; set; } = 0;
public bool EsPorUsos { get; set; } = true;
public double CostesProduccionTrabProf { get; set; } = 0;
double _beneficio = 19;
@@ -207,8 +207,8 @@ namespace bdHerramientaCACOA
public double costeHoraProduccion { get; set; } = 0;
public void CalcularHorasSuperficie() {
// calcular superficie total
superficie = Usos.Sum(x => x.superficie);
if (superficie > 0) {
superficie = Usos.Sum(x => x.superficie);
if (superficie > 0 || !EsPorUsos) {
// calcular coef superficie total
coefsinredondeo = -0.1375 * Math.Log(superficie) + 2.4;
coefSupTotal = Math.Round( coefsinredondeo,2, MidpointRounding.AwayFromZero);
@@ -231,12 +231,18 @@ namespace bdHerramientaCACOA
// calcular fases encargadas
fasesEncargadas = FasesTrabajo.Where(x=>x.Seleccionado).Sum(x=> x.Porcentaje);
// calcular horas produccion trabajo profesional
horasProduccion = Math.Round((superficie*coefSupTotal*coefTipoTotal*coefIntervencionTotal*(fasesEncargadas/100)), 2, MidpointRounding.AwayFromZero); ;
// calcular horas produccion trabajo profesional
if (EsPorUsos)
{
horasProduccion = Math.Round((superficie * coefSupTotal * coefTipoTotal * coefIntervencionTotal * (fasesEncargadas / 100)), 2, MidpointRounding.AwayFromZero);
// calcular horas elaboracion documentacion
horasPorcentaje = FasesTrabajo.Where(x => x.Codigo.Contains("ESTPREVIO") || x.Codigo.Contains("ANTEPROYECTO") || x.Codigo.Contains("PROYBASICO") || x.Codigo.Contains("PROYEJEC")).Sum(x => x.Porcentaje);
horasDocumentacion = Math.Round(superficie * coefSupTotal * coefTipoTotal * coefIntervencionTotal * (horasPorcentaje / 100), 2, MidpointRounding.AwayFromZero);
}
else {
horasDocumentacion = horasProduccion;
}
// calcular horas elaboracion documentacion
horasPorcentaje = FasesTrabajo.Where(x=> x.Codigo.Contains("ESTPREVIO") || x.Codigo.Contains("ANTEPROYECTO") || x.Codigo.Contains("PROYBASICO") || x.Codigo.Contains("PROYEJEC")).Sum(x=>x.Porcentaje) ;
horasDocumentacion = Math.Round(superficie * coefSupTotal * coefTipoTotal * coefIntervencionTotal*(horasPorcentaje/100), 2, MidpointRounding.AwayFromZero);
// calcular plazo medio(meses) esto hay que preguntarlo
plazoMedio = 3;

View File

@@ -32,6 +32,8 @@ namespace bdHerramientaCACOA
public double Beneficio { get; set; } = 19;
public double PrecioDelTrabajo { get; set; } = 0;
public bool EsPorUsos { get; set; } = true;
private URBANTrabajoProfesional _TrabajoProfesional = new URBANTrabajoProfesional();
public URBANTrabajoProfesional TrabajoProfesional
{
@@ -220,11 +222,17 @@ namespace bdHerramientaCACOA
}
public void CalcularHorasTrabajoProfesional()
{
double valorhoras = ObtenerHoraTipoDocumento();
double totalEncargo = TrabajoProfesional.FasesTrabajoProfesional.Sum(x => x.Porcentaje);
double porcentajeInnovacion = TrabajoProfesional.valorInstrumentos;
if (EsPorUsos)
{
double valorhoras = ObtenerHoraTipoDocumento();
double totalEncargo = TrabajoProfesional.FasesTrabajoProfesional.Sum(x => x.Porcentaje);
double porcentajeInnovacion = TrabajoProfesional.valorInstrumentos;
TrabajoProfesional.horasTrabProfesional = (valorhoras * (totalEncargo / 100) * (porcentajeInnovacion / 100)).DosDecimales();
TrabajoProfesional.horasTrabProfesional = (valorhoras * (totalEncargo / 100) * (porcentajeInnovacion / 100)).DosDecimales();
}
else {
}
CalcularLicitacion();
}
public double ObtenerHoraTipoDocumento()