Files
HerramientaCASA/HerramientaCASA/Components/Pages/Imprimir/HerramientaURBANImprimir.razor

520 lines
22 KiB
Plaintext

@using System.Globalization
@using bdHerramientaCACOA.HerramientaURBAN
<div id="DespachoURBANImprimir" class="d-flex flex-column align-items-center pagePrincipal">
@* DESPACHO URBAN*@
<div class="col-12 mx-auto mb-5">
@* ENCABEZADO DE LA PAGINA *@
<div class="EncabezadoImprimir">
<p>
@msTextoEncabezado
</p>
<div class="d-flex flex-column mt-3">
<label>Simulación: <span class="NombreSimulacionImprimir">@objetoURBAN.NombreSimulacion</span></label>
<br />
<label>Fecha de creación: <span class="NombreSimulacionImprimir">@DateTime.Now</span></label>
</div>
</div>
@* COSTE HORA DE LOS TRABAJOS *@
<div class="col-8 mx-auto" style="align-items: flex-end;">
<div class="TituloTablaImprimir">
<b>Coste hora de los trabajos realizados por el despacho profesional</b>
</div>
<div class="table-responsive espacioTablas">
<table class="TablaImprimir mb-0" style="width:100%;">
<thead>
<tr>
<th>Tipo de costes</th>
<th>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>
@* COSTE HORA EXTERNALIZACION *@
<div class="col-8 mx-auto" style="margin-top:50px;">
<div class="TituloTablaImprimir" >
<b>Coste hora Externalización</b>
</div>
<div class="table-responsive espacioTablas">
<table class="TablaImprimir mb-0" style="width:100%;">
<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="@separacionTabla">
<div class="col-8 mx-auto" style="margin-top:50px;">
<div class="table-responsive espacioTablas">
@* <div class="formatoCampos pt-2" style="font-size:9pt;">
<label class="tituloLbl">Tipo de Documento:</label>
@if (objetoURBAN.TrabajoProfesional.idTipoDocumentacion != 0)
{
<label>@CultureInfo.CurrentCulture.TextInfo.ToTitleCase(@objetoURBAN.Enumerados.TiposDeDocumentos.First(x => x.idEnumeracion == objetoURBAN.TrabajoProfesional.idTipoDocumentacion).Descripcion.ToLower())</label>
}
else
{
<label>No Seleccionado</label>
}
</div>
<div class="formatoCampos pt-2" style="font-size:9pt;">
<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>
}
else
{
<label>No Seleccionado</label>
}
</div> *@
<table class="mb-0" style="width:100%;">
<thead>
<tr>
<th >Tipo de Documento:</th>
<th>Documento:</th>
</tr>
</thead>
<tbody>
<tr>
<td class="text-end">
@if (objetoURBAN.TrabajoProfesional.idTipoDocumentacion != 0)
{
<label>@CultureInfo.CurrentCulture.TextInfo.ToTitleCase(@objetoURBAN.Enumerados.TiposDeDocumentos.First(x => x.idEnumeracion == objetoURBAN.TrabajoProfesional.idTipoDocumentacion).Descripcion.ToLower())</label>
}
else
{
<label>No Seleccionado</label>
}
</td>
<td class="text-end">
@if (objetoURBAN.TrabajoProfesional.idTipoDocumentacion != 0)
{
<label>@objetoURBAN.Enumerados.ProyectosPorTipo(objetoURBAN.TrabajoProfesional.idTipoDocumentacion).First(x => x.idtipoproyectos == objetoURBAN.TrabajoProfesional.idTipoProyecto).Descripcion</label>
}
else
{
<label>No Seleccionado</label>
}
</td>
</tr>
</tbody>
</table>
</div>
</div>
@* TABLAS DE DATOS MINIMOS Y OPCIONALES *@
<div class="col-11 mx-auto" style="margin-top:50px;">
@* TABLA DE DATOS MINIMOS *@
<div class="TituloTablaImprimir" style="margin-top:50px;">
<b>Documentación Mínima:</b>
</div>
<div class="table-responsive espacioTablas">
<table class="TablaImprimir mb-0" style="width:100%;">
<thead>
<tr>
<th class="colorB fw-bold">Descripción</th>
</tr>
</thead>
<tbody>
@if (objetoURBAN.TrabajoProfesional.DocumentacionMinima.Count > 0)
{
@foreach (var item in objetoURBAN.TrabajoProfesional.DocumentacionMinima)
{
<tr>
<td class="colorB w4">@item.Descripcion</td>
</tr>
}
}
else
{
<tr>
<td class="colorB w4 text-center">No hay registros</td>
</tr>
}
</tbody>
</table>
</div>
@* TABLA DE DATOS OPCIONALES *@
<div class="TituloTablaImprimir" style="margin-top:80px;">
</div>
<div class="TituloTablaImprimir" style="margin-top:80px;">
<b>Documentación Opcional:</b>
</div>
<div class="table-responsive espacioTablas">
<table class="TablaImprimir mb-0" style="width:100%;">
<thead>
<tr>
<th class="colorB fw-bold">Descripción</th>
<th class="colorB fw-bold">Añadida</th>
</tr>
</thead>
<tbody>
@if (objetoURBAN.TrabajoProfesional.DocumentacionOpcional.Count != 0)
{
@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>
}
}
else
{
<tr>
<td colspan="2" class="colorB text-center">No hay registros</td>
</tr>
}
</tbody>
</table>
</div>
</div>
@* TABLA DE DATOS NECESARIOS *@
<div class="col-11 mx-auto">
<div class="TituloTablaImprimir" style="margin-top:50px;">
<b>Datos Necesarios:</b>
</div>
<div class="table-responsive espacioTablas">
<table class="TablaImprimir mb-0" style="width:100%;">
<thead>
<tr>
<th class="colorB fw-bold">Descripción</th>
<th class="colorB fw-bold">Valor</th>
</tr>
</thead>
<tbody>
@if (objetoURBAN.TrabajoProfesional.DatosNecesarios.Count != 0)
{
@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>
}
}
else
{
<tr>
<td colspan="2" class="colorB text-center">No hay registros</td>
</tr>
}
</tbody>
</table>
</div>
</div>
@* TABLA FASES *@
<div class="col-11 mx-auto">
<div class="TituloTablaImprimir" style=" margin-top:50px;">
<b>Fases:</b>
</div>
<div class="table-responsive espacioTablas">
<table class="TablaImprimir mb-0" style="width:100%;">
<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="TituloTablaImprimir" style="margin-top:80px;">
</div>
<div class="mb-3 TituloTablaImprimir" style="margin-top:80px;"><b>Innovacion de los instrumentos</b></div>
<p style="font-size:9pt;" class="col-6">
<label>@objetoURBAN.TrabajoProfesional.valorInstrumentos %</label>
</p>
@foreach (var enu in objetoURBAN.Enumerados.ListaInstrumentos)
{
<div class="form-check" style="gap:10px; font-size:9pt;">
@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>
}
<div style="font-size:9pt;" class="fw-bold mt-2">
<label>HORAS TRABAJO PROFESIONAL URBANISMO: <span>@objetoURBAN.TrabajoProfesional.horasTrabProfesional.MilesYDecimales() h</span></label>
</div>
</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 mb-0" style="width:100%;">
<div class="TituloTablaImprimir" >
<b>Trabajo profesional</b>
</div>
<div class="col-9 mb-5 align-items-center">
@* PLAZO DE PRESENTACION *@
<div style="font-size:9pt;" class="fw-bold">
<label>Plazo de presentación de la documentación: <span>@objetoURBAN.CostesProduccion.PlazoPresentacionDocumentos meses</span></label>
</div>
</div>
@* HORAS TRABAJO *@
<table class="TablaImprimir mb-0" style="width:100%;">
<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="col-8 mx-auto">
<div class="TituloTablaImprimir" >
<b>Costes Asociados a los Servicios de Arquitectura</b>
</div>
<table class="TablaImprimir mb-0" style="width:100%;">
<thead>
<tr>
<th class="colorB fw-bold">Concepto</th>
<th class="colorB fw-bold text-end"></th>
</tr>
</thead>
<tbody>
<tr>
<td class=" TotalesTabla ">COSTES DE PRODUCCIÓN DEL TRABAJO PROFESIONAL</td>
<td class=" TotalesTabla text-end"><span> @objetoURBAN.CostesProduccion.CostesProduccionTrabProf.MilesYDecimales() €</span></td>
</tr>
<tr>
<td class="TotalesTabla colorFilasIntro ">Beneficio <span style="font-size:7pt;" > (antes de impuestos) </span> </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 class="FooterImprimir">
<p>
@mspie1
</p>
<p>
@mspie2
</p>
</div>
</div>
@code {
[Parameter]
public URBAN objetoURBAN { get; set; } = new URBAN();
public tsHerramientasCACOA bd;
string separacionTabla = "col-12 mx-auto mb-5";
MarkupString msTextoEncabezado => (MarkupString)textoEncabezado;
MarkupString mspie1 => (MarkupString)pie1;
MarkupString mspie2 => (MarkupString)pie2;
string textoEncabezado = "";
string pie1 = "";
string pie2 = "";
protected override async Task OnInitializedAsync()
{
bd = tsHerramientasCACOA.NuevoContexto(SoloLectura: false);
if (objetoURBAN.TrabajoProfesional.DocumentacionMinima.Count == 0)
{
separacionTabla = "col-12 mx-auto mb-4";
}
textoEncabezado = bd.enumeraciones.First(x => x.Codigo.Contains("PDFURBAN")).ValorAlfabeticoLargo;
pie1 = bd.enumeraciones.First(x => x.Codigo.Contains(".PDFPIE1")).ValorAlfabeticoLargo;
pie2 = bd.enumeraciones.First(x => x.Codigo.Contains(".PDFPIE2")).ValorAlfabeticoLargo;
}
public void RefreshState()
{
this.StateHasChanged();
}
}