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

245 lines
11 KiB
Plaintext

<div id="LicitacionesCASAImprimir" class="d-flex flex-column align-items-center pagePrincipal">
<div class="col-12 mx-auto">
@* ENCABEZADO DE LA PAGINA *@
@* A esta se le pone un margin bottom diferente para que cuando los usos esten vacios que entre en una sola página *@
<div class="EncabezadoImprimir" style="margin-bottom: 80px !important;">
<p>
@msTextoEncabezado
</p>
<div class="d-flex flex-column mt-3">
<label>Simulación: <span class="NombreSimulacionImprimir">@objetoLicitaciones.Descripcion</span></label>
<br />
<label>Fecha de creación: <span class="NombreSimulacionImprimir">@DateTime.Now</span></label>
</div>
</div>
@* TABLA USOS TIPOLOGIAS *@
<div class="col-11 mx-auto mb-4" style="align-items: flex-end;">
<div class="TituloTablaImprimir">
<b>Usos/Tipologías</b>
</div>
<div class="table-responsive espacioTablas">
<table class="TablaImprimir mb-0" style="width:100%;">
<thead>
<tr>
<th width="15%">Superficie (m²)</th>
<th width="20%">Usos</th>
<th width="35%">Tipología</th>
<th width="30%">Intervención</th>
</tr>
</thead>
<tbody>
@if (objetoLicitaciones.Usos.Count != 0)
{
@foreach (var uso in objetoLicitaciones.Usos)
{
<tr>
<td class="text-end">@uso.superficie.MilesYDecimales()</td>
<td>@objetoLicitaciones.Enumerados.GruposTipologias?.FirstOrDefault(x => x.idEnumeracion == uso.idGrupoTipologia)?.ValorAlfabetico1</td>
<td>@objetoLicitaciones.Enumerados.Tipologias?.FirstOrDefault(x => x.idTipologia == uso.idTipologia)?.Descripcion</td>
<td>@objetoLicitaciones.Enumerados.Intervenciones?.FirstOrDefault(x => x.idEnumeracion == uso.idTipoIntervencion)?.ValorAlfabetico1</td>
</tr>
}
}
else
{
<tr>
<td colspan="4" class="text-center">No hay registros</td>
</tr>
}
</tbody>
<tfoot>
<tr>
<td colspan="4" class="text-start fw-bold colorC TotalesTabla">
<div style="height:20px; align-content:center;">
Total superficie: <span> @objetoLicitaciones.Usos.Sum(x => x.superficie).MilesYDecimales() m²</span>
</div>
</td>
</tr>
</tfoot>
</table>
</div>
</div>
@* TABLA FASES *@
<div class="col-8 mx-auto" style="align-items: flex-end;">
<div class="TituloTablaImprimir" >
<b>Fases</b>
</div>
<div class="table-responsive">
<table class="TablaImprimir mb-0 espacioTablas" style="width:90%;">
<thead>
<tr>
<th class="text-start" >Fases</th>
<th ></th>
</tr>
</thead>
<tbody>
@foreach (var fase in objetoLicitaciones.FasesTrabajo)
{
<tr>
<td>@fase.Denominacion</td>
<td >
<div class="centrarChecksImprimir text-end">
<span style="margin-right:5px;">@fase.Porcentaje</span>
@if (fase.Seleccionado)
{
<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>
}
</div>
</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 (objetoLicitaciones.FasesTrabajo
.Where(f => f.Seleccionado)
.Sum(f => f.Porcentaje) != 100)
{
<div>
Trabajo en misión parcial: <span>
@objetoLicitaciones.FasesTrabajo.Where(f => f.Seleccionado).Sum(f => f.Porcentaje) %
</span>
</div>
}
else
{
<div>
Total: <span>
@objetoLicitaciones.FasesTrabajo.Where(f => f.Seleccionado).Sum(f => f.Porcentaje) %
</span>
</div>
}
</div>
</div>
</td>
</tr>
</tfoot>
</table>
</div>
</div>
@* TABLA COSTES DE PRODUCCION *@
<div class="col-8 mx-auto" style="align-items: flex-end; margin-top:35px;">
<div class="TituloTablaImprimir" >
<b>Costes de producción</b>
</div>
<div class="table-responsive">
<table class="TablaImprimir mb-0 espacioTablas">
<thead>
<tr>
<th class="colorB fw-bold" style="width:60%">Concepto</th>
<th class="colorB fw-bold"></th>
</tr>
</thead>
<tbody>
<tr>
<td>Plazo de presentación de la documentación</td>
<td class="text-end">@objetoLicitaciones.PlazoPresentacionDocumentos meses</td>
</tr>
<tr>
<td>Coste hora de producción</td>
<td class="text-end"><span>@objetoLicitaciones.costeHoraProduccion.MilesYDecimales() €/h</span> </td>
</tr>
<tr>
<td>Horas trabajo profesional</td>
<td class="text-end"><span>@objetoLicitaciones.horasProduccion.MilesYDecimales() h</span> </td>
</tr>
<tr>
<td>COSTE DE PRODUCCIÓN DEL TRABAJO PROFESIONAL</td>
<td class="text-end"><span> @objetoLicitaciones.CostesProduccionTrabProf.MilesYDecimales() €</span></td>
</tr>
<tr>
<td class="TotalesTabla colorB w4">
G.G. + B.I.
<span class="fw-normal" style="font-size:7pt;">(40/19 Junta Consultiva de Contratación Pública del Estado)</span>
</td>
<td class="TotalesTabla text-end" style="align-content:center;">
<div class="d-flex" style="justify-content: end; gap:3px;">
@objetoLicitaciones.Beneficio %
</div>
</td>
</tr>
</tbody>
<tfoot>
<tr>
<td colspan="2" class="text-end fw-bold TotalesTabla tablaCACOA">
Precio del trabajo profesional: <span>@objetoLicitaciones.PrecioTrabProf.MilesYDecimales() € </span>
</td>
</tr>
</tfoot>
</table>
</div>
</div>
@* A esta se le pone un margin top diferente para que cuando los usos esten vacios que entre en una sola página *@
<div class="FooterImprimir" style="margin-top: 55px !important;">
<p>
@mspie1
</p>
<p>
@mspie2
</p>
</div>
</div>
</div>
@code {
[Parameter]
public LICITACIONES objetoLicitaciones { get; set; } = new LICITACIONES();
public tsHerramientasCACOA bd;
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);
textoEncabezado = bd.enumeraciones.First(x => x.Codigo.Contains("PDFCASALIC")).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();
}
}