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> <tfoot>
<tr> <tr>
<td colspan="2" class="text-end colorC fw-bold w4 TotalesTabla"> <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> </td>
</tr> </tr>
</tfoot> </tfoot>

View File

@@ -3,34 +3,61 @@
@inject NavigationManager Navigation @inject NavigationManager Navigation
@using HerramientaCASA.Components.Pages.HerramientaURBANTabs.TrabajoProfURBAN @using HerramientaCASA.Components.Pages.HerramientaURBANTabs.TrabajoProfURBAN
@using bdHerramientaCACOA.HerramientaURBAN @using bdHerramientaCACOA.HerramientaURBAN
<div class="col-md-12 d-flex mt-3" style="gap: 40px;">
<div class="row p-0 m-0"> <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"> <div class="col-md-12 mt-3 mb-3">
<CascadingValue Value="this"> <CascadingValue Value="this">
<DocumentosURBAN objetoURBAN="objetoURBAN"></DocumentosURBAN> <DocumentosURBAN objetoURBAN="objetoURBAN"></DocumentosURBAN>
</CascadingValue> </CascadingValue>
</div> </div>
</div> </div>
<div class="row p-0 m-0"> <div class="row p-0 m-0">
<div class="col-md-4"> <div class="col-md-4">
<CascadingValue Value="this"> <CascadingValue Value="this">
<FasesURBAN objetoURBAN="objetoURBAN"></FasesURBAN> <FasesURBAN objetoURBAN="objetoURBAN"></FasesURBAN>
</CascadingValue> </CascadingValue>
</div>
<div class="col-md-4">
<CascadingValue Value="this">
<InstrumentosURBAN objetoURBAN="objetoURBAN"></InstrumentosURBAN>
</CascadingValue>
</div>
</div> </div>
<div class="col-md-4"> }
<CascadingValue Value="this"> else
<InstrumentosURBAN objetoURBAN="objetoURBAN"></InstrumentosURBAN> {
</CascadingValue> <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>
</div> }
@code { @code {
[Parameter] [Parameter]
public URBAN objetoURBAN { get; set; } = new URBAN(); public URBAN objetoURBAN { get; set; } = new URBAN();
public tsHerramientasCACOA bd; public tsHerramientasCACOA bd;
public bool modificarTabla = true;
public bool modificarHoras = false;
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
bd = tsHerramientasCACOA.NuevoContexto(SoloLectura: false); bd = tsHerramientasCACOA.NuevoContexto(SoloLectura: false);
@@ -39,4 +66,40 @@
{ {
this.StateHasChanged(); 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

@@ -58,7 +58,7 @@
<div class="row"> <div class="row">
<div class="col-md-6 mt-3 mb-2"> <div class="col-md-6 mt-3 mb-2">
<div><b>Convenio Colectivo:</b></div> <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="">Estatal</option>
<option value="04">Almería</option> <option value="04">Almería</option>
<option value="11">Cádiz</option> <option value="11">Cádiz</option>
@@ -69,20 +69,26 @@
<option value="41">Sevilla</option> <option value="41">Sevilla</option>
</InputSelect> </InputSelect>
</div> </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"> <div class="col-md-12 mt-3 mb-5">
<CascadingValue Value="this"> <CascadingValue Value="this">
<TrabajoProfLicitacionesGrid objetoLicitaciones="objetoLicitaciones"></TrabajoProfLicitacionesGrid> <TrabajoProfLicitacionesGrid objetoLicitaciones="objetoLicitaciones"></TrabajoProfLicitacionesGrid>
</CascadingValue> </CascadingValue>
</div> </div>
}
</div> </div>
<div class="row"> <div class="row">
<div class="col-md-3">
<div class="col-md-3" > <CascadingValue Value="this">
<CascadingValue Value="this"> <FasesTrabajoLicitaciones objetoLicitaciones="objetoLicitaciones"></FasesTrabajoLicitaciones>
<FasesTrabajoLicitaciones objetoLicitaciones="objetoLicitaciones"></FasesTrabajoLicitaciones> </CascadingValue>
</CascadingValue> </div>
</div>
<div class="col-md-5"> <div class="col-md-5">
<CascadingValue Value="this"> <CascadingValue Value="this">
@@ -122,7 +128,7 @@
</table> </table>
</div> </div>
</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> <p><b>Datos configuración para revisión de datos</b></p>
<b>superficie</b> @objetoLicitaciones.superficie;<br /> <b>superficie</b> @objetoLicitaciones.superficie;<br />
<b>Coef sup total</b> @objetoLicitaciones.coefSupTotal; (sin redondeo:@objetoLicitaciones.coefsinredondeo)<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>tasa costes var</b> @objetoLicitaciones.tasaCostesVariables;<br />
<b>coste hora prod</b> @objetoLicitaciones.costeHoraProduccion; <b>coste hora prod</b> @objetoLicitaciones.costeHoraProduccion;
</div> </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>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 /> <b>IPC Coste Indirecto:</b>@objetoLicitaciones.Variables.IPCCosteIndirecto;<br />
<Grid TItem="CosteDirectoIndirecto" <Grid TItem="CosteDirectoIndirecto"
@@ -210,6 +216,9 @@
private int idUser = 0; private int idUser = 0;
public bool modificarTabla = true;
public bool modificarHoras = false;
public Licitaciones() public Licitaciones()
{ {
} }
@@ -435,6 +444,40 @@
Navigation.NavigateTo(pdfUrl, true); 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> </div>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="colorB fw-bold w4">Coste hora de producción</td> <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>
<tr> <tr>
<td class="colorB fw-bold w4">Horas Trabajo profesional</td> <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>
<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" /> <Toasts class="p-3 font-weight-bold" Style="color:white;" AutoHide="true" Delay="4000" Messages="mensajes" Placement="ToastsPlacement.BottomCenter" />
<p class="TituloVentana"> <p class="TituloVentana">
@TextoSuperior @TextoSuperior
</p> </p>
@if (!actualizado) @if (!actualizado)
{ {
<div class="UpdateCacoa d-flex"> <div class="UpdateCacoa d-flex">
<span>Esta simulación utiliza valores desactualizados. ¿Quiere Realizar una copia actualizada?</span> <span>Esta simulación utiliza valores desactualizados. ¿Quiere Realizar una copia actualizada?</span>
<button @onclick="@(() => clonarUrban())" class="btnBlue ms-auto">Actualizar</button> <button @onclick="@(() => clonarUrban())" class="btnBlue ms-auto">Actualizar</button>
</div> </div>
} }
<Modal @ref="popupGuardar" title="@TituloBoton" IsVerticallyCentered="true" UseStaticBackdrop="true" CloseOnEscape="false"> <Modal @ref="popupGuardar" title="@TituloBoton" IsVerticallyCentered="true" UseStaticBackdrop="true" CloseOnEscape="false">
<BodyTemplate> <BodyTemplate>
<div class="col-12 formatoCampos"> <div class="col-12 formatoCampos">
@if (TituloBoton == "Guardar") @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> <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 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> <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> </div>
</BodyTemplate> </BodyTemplate>
<FooterTemplate> <FooterTemplate>
<Button Color="ButtonColor.Secondary" @onclick="cerrarPopupGuardar">Cerrar</Button> <Button Color="ButtonColor.Secondary" @onclick="cerrarPopupGuardar">Cerrar</Button>
<Button @onclick="@(() => guardarUrban())" Color="ButtonColor.Primary">@TituloBoton</Button> <Button @onclick="@(() => guardarUrban())" Color="ButtonColor.Primary">@TituloBoton</Button>
</FooterTemplate> </FooterTemplate>
</Modal> </Modal>
<div class="container-fluid pt-3"> <div class="container-fluid pt-3">
<div class="d-flex" style="width:100%"> <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> <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> <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> <InputText @bind-Value="objetoLicitacionUrban.NombreSimulacion" class="form-control inputForm formatoMoneda inputTabla " style="text-align:left;font-weight:bold;"></InputText>
</div> </div>
<div class="row"> <div class="row">
<div class="col-md-6 mt-3 mb-2"> <div class="col-md-6 mt-3 mb-2">
<div><b>Convenio Colectivo:</b></div> <div><b>Convenio Colectivo:</b></div>
<InputSelect @bind-Value="@objetoLicitacionUrban.idProvincia" class="inputForm" @oninput="e => CalcularTabla(e.Value.ToString())"> <InputSelect @bind-Value="@objetoLicitacionUrban.idProvincia" class="inputForm" @oninput="e => CalcularTabla(e.Value.ToString())" style="width: 225px;">
<option value="">Estatal</option> <option value="">Estatal</option>
<option value="04">Almería</option> <option value="04">Almería</option>
<option value="11">Cádiz</option> <option value="11">Cádiz</option>
<option value="14">Córdoba</option> <option value="14">Córdoba</option>
<option value="18">Granada</option> <option value="18">Granada</option>
<option value="15">Huelva</option> <option value="15">Huelva</option>
<option value="29">Málaga</option> <option value="29">Málaga</option>
<option value="41">Sevilla</option> <option value="41">Sevilla</option>
</InputSelect> </InputSelect>
</div>
</div> </div>
</div> <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 class="row p-0 m-0"> </div>
<div class="col-md-12 mt-3 mb-3"> @if (modificarTabla)
{
<div class="row">
<div class="col-md-12 mt-3 mb-3">
<CascadingValue Value="this"> <CascadingValue Value="this">
<DocumentosLicitacion objetoLicitacionUrban="objetoLicitacionUrban"></DocumentosLicitacion> <DocumentosLicitacion objetoLicitacionUrban="objetoLicitacionUrban"></DocumentosLicitacion>
</CascadingValue> </CascadingValue>
</div> </div>
</div> </div>
}
<div class="row p-0 m-0"> <div class="row">
<div class="col-md-3"> <div class="col-md-3">
<CascadingValue Value="this"> <CascadingValue Value="this">
<FasesLicitacionesUrban objetoLicitacionUrban="objetoLicitacionUrban"></FasesLicitacionesUrban> <FasesLicitacionesUrban objetoLicitacionUrban="objetoLicitacionUrban"></FasesLicitacionesUrban>
@@ -87,7 +91,7 @@
<TablaTrabajadoresUrban objetoLicitacionUrban="objetoLicitacionUrban"></TablaTrabajadoresUrban> <TablaTrabajadoresUrban objetoLicitacionUrban="objetoLicitacionUrban"></TablaTrabajadoresUrban>
</CascadingValue> </CascadingValue>
@* <CascadingValue Value="this"> @* <CascadingValue Value="this">
<InstrumentosLicitacionesUrban objetoLicitacionUrban="objetoLicitacionUrban"></InstrumentosLicitacionesUrban> <InstrumentosLicitacionesUrban objetoLicitacionUrban="objetoLicitacionUrban"></InstrumentosLicitacionesUrban>
</CascadingValue> *@ </CascadingValue> *@
</div> </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="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" <InputNumber TValue="double" @bind-Value="objetoLicitacionUrban.PlazoPresentacionDocumentos"
step="any" step="any"
@oninput="e => controlarMeses(e.Value?.ToString())" @oninput="e => controlarMeses(e.Value?.ToString())"
class="inputForm formatoMoneda inputTabla text-end" /> meses class="inputForm formatoMoneda inputTabla text-end" /> meses
</div> </div>
</td> </td>
@@ -120,7 +124,20 @@
</tr> </tr>
<tr> <tr>
<td class="tdAlter" style="width:50%;">Horas Trabajo Profesional </td> <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>
<tr> <tr>
<td class="colorB fw-bold w4">Coste de producción del Trabajo Profesional</td> <td class="colorB fw-bold w4">Coste de producción del Trabajo Profesional</td>
@@ -150,18 +167,18 @@
</div> </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>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 /> <b>IPC Coste Indirecto:</b>@objetoLicitacionUrban.Variables.IPCCosteIndirecto;<br />
<Grid TItem="CosteDirectoIndirecto" <Grid TItem="CosteDirectoIndirecto"
Class="tablaCACOA table" Class="tablaCACOA table"
Data="objetoLicitacionUrban.Enumerados.ListaCDCI" Data="objetoLicitacionUrban.Enumerados.ListaCDCI"
AllowFiltering="false" AllowFiltering="false"
PageSize="10" PageSize="10"
Height="100" Height="100"
EmptyText="No hay registros." EmptyText="No hay registros."
PageSizeSelectorVisible="false" PageSizeSelectorVisible="false"
Responsive="true"> Responsive="true">
<GridColumns> <GridColumns>
<GridColumn TItem="CosteDirectoIndirecto" HeaderTextAlignment="Alignment.Center" Class="text-end" HeaderText="Nº Trabajadores"> <GridColumn TItem="CosteDirectoIndirecto" HeaderTextAlignment="Alignment.Center" Class="text-end" HeaderText="Nº Trabajadores">
<span>@context.NumeroTrabajadores</span> <span>@context.NumeroTrabajadores</span>
@@ -214,6 +231,9 @@
private int idUser = 0; private int idUser = 0;
public bool modificarTabla = true;
public bool modificarHoras = false;
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
try try
@@ -405,5 +425,37 @@
{ {
await popupGuardar.HideAsync(); 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 double horasTrabProfesional { get; set; } = 0;
public bool EsPorUsos { get; set; } = true;
public List<DocumentacionURBAN> DocumentacionMinima { get; set; } = new List<DocumentacionURBAN>(); public List<DocumentacionURBAN> DocumentacionMinima { get; set; } = new List<DocumentacionURBAN>();
public List<DocumentacionURBAN> DocumentacionOpcional { 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; double porcentajeInnovacion = TrabajoProfesional.valorInstrumentos;
TrabajoProfesional.horasTrabProfesional = (valorhoras * (totalEncargo / 100) * (porcentajeInnovacion / 100)).DosDecimales(); TrabajoProfesional.horasTrabProfesional = (valorhoras * (totalEncargo / 100) * (porcentajeInnovacion / 100)).DosDecimales();
CalcularCostesProduccion();
} }
public double ObtenerHoraTipoDocumento() public double ObtenerHoraTipoDocumento()

View File

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

View File

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