408 lines
18 KiB
Plaintext
408 lines
18 KiB
Plaintext
@using System.Globalization
|
|
@using bdHerramientaCACOA.HerramientaURBAN
|
|
<div id="DespachoURBANImprimir" class="d-flex flex-column align-items-center">
|
|
@* DESPACHO URBAN*@
|
|
<div class="col-12 mx-auto mb-5">
|
|
<div class="mb-4 col-8 mx-auto justify-content-center d-flex">
|
|
<label style="color: #078b98 !important"><b>Despacho Profesional</b></label>
|
|
</div>
|
|
<div class="col-8 mx-auto" style="align-items: flex-end;">
|
|
<div style="height: 49px;">
|
|
<b>Coste hora Despacho Profesional</b>
|
|
</div>
|
|
|
|
<div class="table-responsive">
|
|
|
|
<table class="table tablaCACOA tablaCACOA2 mb-0">
|
|
|
|
<thead>
|
|
<tr>
|
|
<th class="colorB fw-bold">Tipo de costes</th>
|
|
<th class="colorB fw-bold">Coste/hora</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td class="colorB w4">Costes directos</td>
|
|
<td class="text-end">@objetoURBAN.DespachoProfesional.CostesDirectos.MilesYDecimales() €/hora</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="colorB ">Costes indirectos</td>
|
|
<td class="text-end">@objetoURBAN.DespachoProfesional.TasaCostesIndirectos.MilesYDecimales() €/hora</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="colorB ">Costes variables</td>
|
|
<td class="text-end">@objetoURBAN.CostesProduccion.CostesVariables.MilesYDecimales() €/hora</td>
|
|
</tr>
|
|
</tbody>
|
|
<tfoot>
|
|
<tr>
|
|
<td colspan="2" class="text-end fw-bold colorC TotalesTabla">
|
|
<div style="height:28px; align-content:center;">
|
|
Total Coste hora Despacho Profesional: <span> @objetoURBAN.CostesProduccion.TotalCostes.MilesYDecimales() €/hora</span>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tfoot>
|
|
</table>
|
|
</div>
|
|
|
|
</div>
|
|
<div class="col-8 mx-auto">
|
|
|
|
<div style="height: 49px;">
|
|
<b>Coste hora Externalización</b>
|
|
</div>
|
|
<div class="table-responsive">
|
|
<table class="table tablaCACOA tablaCACOA2 mb-0">
|
|
<thead>
|
|
<tr>
|
|
<th class="colorB fw-bold">Externalización</th>
|
|
<th class="colorB fw-bold">Porcentaje</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td class="colorFilasIntro w4">Incremento por externalización</td>
|
|
<td class="text-end">
|
|
<span>
|
|
@objetoURBAN.CostesProduccion.CoeficienteCostesExternalizacion %
|
|
</span>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
<tfoot>
|
|
<tr>
|
|
<td colspan="2" class="text-end fw-bold colorC TotalesTabla">
|
|
Coste hora Externalización: <span> @objetoURBAN.CostesProduccion.CosteHoraExternalizacion.MilesYDecimales() €/hora</span>
|
|
</td>
|
|
</tr>
|
|
</tfoot>
|
|
</table>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
@* TRABAJAO PROFESIONAL *@
|
|
<div class="col-12 mx-auto mb-5">
|
|
<div class="mb-4 col-8 mx-auto justify-content-center d-flex">
|
|
<label style="color: #078b98 !important"><b>Trabajo Profesional</b></label>
|
|
</div>
|
|
<div class="col-12 d-flex justify-content-center" style="gap:20px;">
|
|
<div class="formatoCampos pt-2">
|
|
<label class="tituloLbl">Tipo de Documento:</label>
|
|
<label>@CultureInfo.CurrentCulture.TextInfo.ToTitleCase(@objetoURBAN.Enumerados.TiposDeDocumentos.First(x => x.idEnumeracion == objetoURBAN.TrabajoProfesional.idTipoDocumentacion).Descripcion.ToLower())</label>
|
|
</div>
|
|
<div class="formatoCampos pt-2">
|
|
<label class="tituloLbl">Documento:</label>
|
|
@if (objetoURBAN.TrabajoProfesional.idTipoDocumentacion != 0)
|
|
{
|
|
<label>@objetoURBAN.Enumerados.ProyectosPorTipo(objetoURBAN.TrabajoProfesional.idTipoDocumentacion).First(x => x.idtipoproyectos == objetoURBAN.TrabajoProfesional.idTipoProyecto).Descripcion</label>
|
|
}
|
|
</div>
|
|
</div>
|
|
@* TABLAS DE DATOS MINIMOS Y OPCIONALES *@
|
|
<div class="col-11 mx-auto">
|
|
@* TABLA DE DATOS MINIMOS *@
|
|
|
|
<div style="height: 49px; margin-top:50px;">
|
|
<b>Documentación Mínima:</b>
|
|
</div>
|
|
<div class="table-responsive">
|
|
<table class="table tablaCACOA tablaCACOA2 mb-0">
|
|
<thead>
|
|
<tr>
|
|
<th class="colorB fw-bold">Descripción</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@foreach (var item in objetoURBAN.TrabajoProfesional.DocumentacionMinima)
|
|
{
|
|
<tr>
|
|
<td class="colorB w4">@item.Descripcion</td>
|
|
</tr>
|
|
}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
@* TABLA DE DATOS OPCIONALES *@
|
|
|
|
<div style="height: 49px; margin-top:50px;">
|
|
<b>Documentación Opcional:</b>
|
|
</div>
|
|
@if (objetoURBAN.TrabajoProfesional.DocumentacionOpcional.Count != 0)
|
|
{
|
|
<div class="table-responsive">
|
|
<table class="table tablaCACOA tablaCACOA2 mb-0">
|
|
<thead>
|
|
<tr>
|
|
<th class="colorB fw-bold">Descripción</th>
|
|
<th class="colorB fw-bold">Añadida</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@foreach (var item in objetoURBAN.TrabajoProfesional.DocumentacionOpcional)
|
|
{
|
|
<tr>
|
|
<td class="colorB w4">@item.Descripcion</td>
|
|
<td class="colorB w4 text-end">
|
|
|
|
@if (@item.Checkeada)
|
|
{
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-check-square" viewBox="0 0 16 16">
|
|
<path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z" />
|
|
<path d="M10.97 4.97a.75.75 0 0 1 1.071 1.05l-3.992 4.99a.75.75 0 0 1-1.08.02L4.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093 3.473-4.425z" />
|
|
</svg>
|
|
}
|
|
else
|
|
{
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-square" viewBox="0 0 16 16">
|
|
<path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z" />
|
|
</svg>
|
|
}
|
|
|
|
</td>
|
|
</tr>
|
|
}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
}
|
|
else
|
|
{
|
|
<label>Sin documentación</label>
|
|
}
|
|
</div>
|
|
@* TABLA DE DATOS NECESARIOS *@
|
|
<div class="col-11 mx-auto">
|
|
<div style="height: 49px; margin-top:50px;">
|
|
<b>Datos Necesarios:</b>
|
|
</div>
|
|
<div class="table-responsive">
|
|
<table class="table tablaCACOA tablaCACOA2 mb-0">
|
|
<thead>
|
|
<tr>
|
|
<th class="colorB fw-bold">Descripción</th>
|
|
<th class="colorB fw-bold">Valor</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@foreach (var item in objetoURBAN.TrabajoProfesional.DatosNecesarios)
|
|
{
|
|
<tr>
|
|
<td class="colorB w4">@item.Descripcion</td>
|
|
<td class="colorB w4 text-end">@item.ValorNecesario</td>
|
|
</tr>
|
|
}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<div class="col-11 mx-auto">
|
|
<div style="height: 49px; margin-top:50px;">
|
|
<b>Datos Necesarios:</b>
|
|
</div>
|
|
<div class="table-responsive">
|
|
<table class="table tablaCACOA tablaCACOA2 mb-0">
|
|
<thead>
|
|
<tr>
|
|
<th class="colorB fw-bold">Descripción</th>
|
|
<th class="colorB fw-bold"></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@foreach (var item in objetoURBAN.TrabajoProfesional.FasesTrabajoProfesional)
|
|
{
|
|
<tr>
|
|
<td class="colorB w4">@item.Denominacion</td>
|
|
<td class="colorB w4 text-end">@item.Porcentaje %</td>
|
|
</tr>
|
|
}
|
|
</tbody>
|
|
|
|
<tfoot>
|
|
<tr>
|
|
<td colspan="2" class="text-end fw-bold colorC TotalesTabla">
|
|
|
|
<div class="d-flex justify-content-end">
|
|
<div style="align-self: center;">
|
|
@if (objetoURBAN.TrabajoProfesional.FasesTrabajoProfesional.Sum(x => x.Porcentaje) != 100)
|
|
{
|
|
<div>
|
|
Trabajo en misión parcial: <span> @objetoURBAN.TrabajoProfesional.FasesTrabajoProfesional.Sum(x => x.Porcentaje) %</span>
|
|
</div>
|
|
}
|
|
else
|
|
{
|
|
<div>
|
|
Total: <span> @objetoURBAN.TrabajoProfesional.FasesTrabajoProfesional.Sum(x => x.Porcentaje) %</span>
|
|
</div>
|
|
}
|
|
</div>
|
|
</div>
|
|
|
|
</td>
|
|
</tr>
|
|
</tfoot>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
@* INNOVACIÓN INSTRUMENTOS*@
|
|
<div class="col-11 mx-auto mb-5">
|
|
<div>
|
|
<div class="mt-3 mb-3"><b>Innovacion de los instrumentos</b></div>
|
|
<p class="col-6">
|
|
<label>@objetoURBAN.TrabajoProfesional.valorInstrumentos %</label>
|
|
</p>
|
|
|
|
@foreach (var enu in objetoURBAN.Enumerados.ListaInstrumentos)
|
|
{
|
|
<div class="form-check" style="gap:10px;">
|
|
@if (enu.Seleccionado)
|
|
{
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-circle-fill" viewBox="0 0 16 16">
|
|
<circle cx="8" cy="8" r="8" />
|
|
</svg>
|
|
}
|
|
else
|
|
{
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-circle" viewBox="0 0 16 16">
|
|
<path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16" />
|
|
</svg>
|
|
|
|
}
|
|
<label style="margin-left:10px;" class="form-check-label" for="@enu.idEnumeracion">@enu.Descripcion</label>
|
|
</div>
|
|
}
|
|
<table class="tablaAlter mt-4" style="width: 100%;">
|
|
<tr>
|
|
<td class="tdAlter TotalesTabla" style="width: 320px;">HORAS TRABAJO PROFESIONAL URBANISMO: </td>
|
|
<td class="tdAlter TotalesTabla tdAlineadoDerecha">@objetoURBAN.TrabajoProfesional.horasTrabProfesional.MilesYDecimales() h</td>
|
|
</tr>
|
|
</table>
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
@* PLAZOS Y HORAS *@
|
|
<div class="col-11 mx-auto mb-5">
|
|
<div class="row justify-content-center align-content-center align-items-center">
|
|
<div class="col-9 mb-5 align-items-center">
|
|
<table class="table tablaCACOA tablaCACOA2 mb-0">
|
|
<tr>
|
|
<td style="width:60%" class="colorFilasIntro fw-bold w4">Plazo de presentación de la documentación:</td>
|
|
<td class="text-end">
|
|
<div class="justify-content-end d-flex" style="gap:3px;">
|
|
<span class="text-end">@objetoURBAN.CostesProduccion.PlazoPresentacionDocumentos</span>meses
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
</div>
|
|
<div class="col-9 mb-5 ">
|
|
<div style="height: 49px;">
|
|
<b>Trabajo profesional</b>
|
|
</div>
|
|
<table class="table tablaCACOA tablaCACOA2 mb-0">
|
|
<thead>
|
|
<tr>
|
|
<th class="colorB fw-bold">Trabajos</th>
|
|
<th class="colorB fw-bold">Horas</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td class="colorB ">Horas en despacho profesional</td>
|
|
<td class="text-end">@objetoURBAN.CostesProduccion.HorasEnPlazo.MilesYDecimales() h</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="colorB ">Horas mediante externalización</td>
|
|
<td class="text-end">@objetoURBAN.CostesProduccion.NumHorasMinimoExt.MilesYDecimales() h</td>
|
|
</tr>
|
|
</tbody>
|
|
<tfoot>
|
|
<tr>
|
|
<td colspan="2" class="text-end colorC fw-bold w4 TotalesTabla">
|
|
Total horas del trabajo profesional: <span>@((objetoURBAN.CostesProduccion.HorasEnPlazo + objetoURBAN.CostesProduccion.NumHorasMinimoExt).MilesYDecimales()) h </span>
|
|
</td>
|
|
</tr>
|
|
</tfoot>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
@* COSTE DE PRODUCCIÓN *@
|
|
<div class="col-12 mx-auto mb-5">
|
|
<div class="mb-4 col-8 mx-auto justify-content-center d-flex">
|
|
<label style="color: #078b98 !important"><b>Coste de producción</b></label>
|
|
</div>
|
|
<div class="col-8 mx-auto">
|
|
<div style="height: 49px;">
|
|
<b>Costes Asociados a los Servicios de Arquitectura</b>
|
|
</div>
|
|
<table class="table tablaCACOA tablaCACOA2 mb-0">
|
|
|
|
<thead>
|
|
<tr>
|
|
<th class="colorB fw-bold">Concepto</th>
|
|
<th class="colorB fw-bold text-end"></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td class="tdAlter TotalesTabla fw-bold ">COSTES DE PRODUCCIÓN DEL TRABAJO PROFESIONAL</td>
|
|
<td class=" tdAlter TotalesTabla text-end"><span> @objetoURBAN.CostesProduccion.CostesProduccionTrabProf.MilesYDecimales() €</span></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="TotalesTabla colorFilasIntro "><b>Beneficio</b> (antes de impuestos)</td>
|
|
<td class="TotalesTabla text-end">
|
|
<div class="text-end align-items-end" style="gap:3px;">
|
|
<label>@objetoURBAN.CostesProduccion.Beneficio</label> %
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
<tfoot>
|
|
<tr>
|
|
<td colspan="2" class="TotalesTabla text-end fw-bold">
|
|
Precio del trabajo profesional: <span>@objetoURBAN.CostesProduccion.PrecioTrabajoProfesional.MilesYDecimales() € </span>
|
|
</td>
|
|
</tr>
|
|
</tfoot>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
@code {
|
|
[Parameter]
|
|
public URBAN objetoURBAN { get; set; } = new URBAN();
|
|
|
|
public tsHerramientasCACOA bd;
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
bd = tsHerramientasCACOA.NuevoContexto(SoloLectura: false);
|
|
}
|
|
public void RefreshState()
|
|
{
|
|
this.StateHasChanged();
|
|
}
|
|
}
|