Files
HerramientaCASA/HerramientaCASA/Components/Pages/HerramientaCASATabs/DespachoProfesionalComponents/CosteIndirectoGrid.razor
2025-07-25 12:56:07 +02:00

165 lines
5.6 KiB
Plaintext

@using BlazorBootstrap
@using bdHerramientaCACOA.db
<Toasts class="p-3 font-weight-bold" Style="color:white;" AutoHide="true" Delay="4000" Messages="mensajes" Placement="ToastsPlacement.BottomCenter" />
<div class="d-flex justify-content-between mt-3 alturaTitulosTabla">
<div><b>Costes Indirectos Anuales</b></div>
</div>
<div style="position:relative;margin-bottom: 20px;">
<Grid
@ref="grid"
TItem="CASA.CosteIndirecto"
Class="tablaCACOA table"
Data="costesIndirectos"
AllowFiltering="false"
PageSize="10"
Height="100"
EmptyText="No hay registros."
PageSizeSelectorVisible="false"
Responsive="true">
<GridColumns>
<GridColumn TItem="CASA.CosteIndirecto" HeaderText="Concepto" HeaderTextAlignment="Alignment.Center" PropertyName="Concepto" Class="colorFilasIntro">
@context.Concepto
</GridColumn>
<GridColumn TItem="CASA.CosteIndirecto" HeaderTextAlignment="Alignment.Center" Class="formatoMoneda columna30Ancho" HeaderText="Importe" PropertyName="importe">
<div class="d-flex separadorMoneda">
<CurrencyInput HideCurrencySymbol="true" TValue="double" Locale="es-ES" Min="0" class="inputForm formatoMoneda inputTabla" Value="@context.importe" ValueExpression="() => context.importe" ValueChanged="(value) => valorCambiado(value,context)"></CurrencyInput> €
</div>
</GridColumn>
<GridColumn Class="text-end columna20Ancho" TItem="CASA.CosteIndirecto" HeaderText="Periocidad">
@* @if (context != itemSeleccionado)
{
<span>@listadoPeriodos.FirstOrDefault(p => p.idEnumeracion == context.idPeriodicidad)?.ValorAlfabetico1</span>
}
else
{ *@
<InputSelect Value="@context.idPeriodicidad" class="inputForm selectTabla" ValueExpression="() => context.idPeriodicidad" TValue="int" ValueChanged="(value) => valorCICambiado(value,context)">
@foreach (var periodo in listadoPeriodos)
{
<option value="@periodo.idEnumeracion">@periodo.ValorAlfabetico1</option>
}
</InputSelect>
@* } *@
</GridColumn>
<GridColumn Class="text-end columna30Ancho" HeaderTextAlignment="Alignment.Center" TItem="CASA.CosteIndirecto" HeaderText="Coste" PropertyName="coste">
<span >@context.coste.ToString("C", new System.Globalization.CultureInfo("es-ES"))</span>
</GridColumn>
</GridColumns>
</Grid>
<table class="table tablaCACOA mb-0" style="position:absolute;bottom:-19px;">
<tfoot>
<tr>
<td colspan="2" class="text-end fw-bold colorC">
Total Costes Indirectos: <span>
@objetoCASA.DespachoProfesional.TotalCostesIndirectos.MilesYDecimales() €
</span>
</td>
</tr>
</tfoot>
</table>
</div>
@code {
[Parameter]
public CASA objetoCASA { get; set; }
public List<CASA.CosteIndirecto> costesIndirectos { get; set; } = new List<CASA.CosteIndirecto>();
private CASA.CosteIndirecto itemSeleccionado = new CASA.CosteIndirecto();
Grid<CASA.CosteIndirecto> grid = default!;
private List<CASA.enumeracionesCASA> listadoPeriodos = new List<CASA.enumeracionesCASA>();
private string tituloPopup = "";
private Modal popupGestionDatos = default!;
private bool editarElemento;
public tsHerramientasCACOA bd;
List<ToastMessage> mensajes = new List<ToastMessage>();
[CascadingParameter]
public DespachoProfesional _Parent { get; set; }
[CascadingParameter]
public HerramientaCASA.Components.Pages.HerramientaURBANTabs.DespachoProfesionalURBAN _OtroParent { get; set; }
protected override async Task OnInitializedAsync()
{
bd = tsHerramientasCACOA.NuevoContexto(SoloLectura: false);
listadoPeriodos = objetoCASA.Enumerados.Periodos.ToList();
//costesIndirectos = objetoCASA.DespachoProfesional.CostesIndirectos.ToList();
}
protected override void OnParametersSet()
{
costesIndirectos = objetoCASA.DespachoProfesional.CostesIndirectos.ToList();
StateHasChanged();
}
private async Task OnRowClick(GridRowEventArgs<CASA.CosteIndirecto> objeto)
{
itemSeleccionado = objeto.Item;
}
private async void valorCambiado(double e,CASA.CosteIndirecto objeto)
{
if (objeto.idPeriodicidad != 0)
{
objeto.importe = (double)e;
objetoCASA.ActualizarCosteIndirecto(objeto);
await InvokeAsync(StateHasChanged);
refrescarPadre();
}
}
private async void valorCICambiado(int e, CASA.CosteIndirecto objeto)
{
objeto.idPeriodicidad = (int)e;
objetoCASA.ActualizarCosteIndirecto(objeto);
await InvokeAsync(StateHasChanged);
refrescarPadre();
}
private async void guardar(CASA.CosteIndirecto objeto)
{
objetoCASA.ActualizarCosteIndirecto(objeto);
// mensajes.Add(new ToastMessage
// {
// Type = ToastType.Primary,
// Message = $"Guardado correctamente.",
// });
costesIndirectos = objetoCASA.DespachoProfesional.CostesIndirectos.ToList();
await InvokeAsync(StateHasChanged);
refrescarPadre();
}
private void limpiarDatos(CASA.CosteIndirecto objeto)
{
objetoCASA.LimpiarCosteIndirecto(objeto);
}
private void refrescarPadre()
{
if (_Parent != null)
{
_Parent.RefreshState();
}
else if (_OtroParent != null)
{
_OtroParent.RefreshState();
}
}
}