Files
lux/Lux.UI/Components/Compo/OfferRowMan.razor
T
2025-10-20 11:49:24 +02:00

263 lines
15 KiB
Plaintext

@if (EditRecord != null && CurrEditMode == EditMode.SerStruc)
{
<WebWindowComplex.TableComp ListPayload="SetupList"
LiveData="CurrData"
EC_OnUpdate="SaveJWD"
EC_OnClose="CloseEdit">
</WebWindowComplex.TableComp>
}
else
{
<div class="card shadow">
<div class="card-header bg-info bg-opacity-50 bg-gradient d-flex justify-content-between">
<div class="px-0 fs-4">Dettaglio Offerta</div>
<div class="px-0 d-flex justify-content-end">
@if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
{
<div class="px-1">
<button class="btn btn-sm btn-warning" @onclick="() => OfferForceParameters()">Forza Parametri <i class="fa-solid fa-hammer"></i></button>
</div>
<div class="px-1">
<button class="btn btn-sm btn-primary" @onclick="() => OfferUpdatePrices()">Aggiorna Prezzi <i class="fa-solid fa-calculator"></i></button>
</div>
<div class="px-1">
<button class="btn btn-sm btn-primary" @onclick="() => OfferUpdateAllCosting()">Ricalcolo Completo <i class="fa-solid fa-calculator"></i></button>
</div>
}
</div>
</div>
<div class="cad-body px-2">
@if (isLoading || ListRecords == null)
{
<LoadingData></LoadingData>
}
else if (totalCount == 0)
{
<div class="alert alert-info text-center fs-5">Nessun record trovato</div>
}
else
{
<table class="table table-sm table-striped">
<thead>
<tr>
@if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
{
<th>
<button class="btn btn-sm btn-primary" style="min-width: 6rem;" @onclick="ForceReloadData"><i class="fa-solid fa-rotate-right"></i></button>
</th>
<th>Preview</th>
}
else
{
<th>ID</th>
}
<th>Codice</th>
<th>Descrizione</th>
<th class="text-end">Qty</th>
<th class="text-end">Importo</th>
@if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
{
<th class="text-end" title="Cambio Materiali">Mat.</th>
}
<th class="text-end">Totale</th>
<th class="text-end">Marg.</th>
@if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
{
<th></th>
}
</tr>
</thead>
<tbody>
@foreach (var item in ListRecords)
{
<tr class="@RowClass(item)">
<td class="text-nowrap">
<span class="px-1">
@item.RowNum
</span>
@if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
{
if (CurrEditMode == EditMode.None)
{
<button class="btn btn-sm btn-info" @onclick="() => DoEdit(item)"><i class="fa-solid fa-pencil"></i></button>
<button class="btn btn-sm btn-warning" @onclick="() => DoClone(item)"><i class="fa-solid fa-clone"></i></button>
}
else
{
if (EditRecord != null && EditRecord.OfferRowID == item.OfferRowID)
{
<button class="btn btn-sm btn-success" title="Annulla Modifiche" @onclick="() => DoSave(item)"><i class="fa-solid fa-floppy-disk"></i></button>
}
}
}
else
{
@item.RowNum
}
</td>
@if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
{
<td>
@if (string.IsNullOrEmpty(item.SerStruct) || item.SerStruct.Length <= 2)
{
<img class="img-fluid" src="@(imgUrl(item.OfferRowUID, $"{item.Envir}"))" width="48" />
}
else
{
<img class="img-fluid" src="@(imgUrl(item.OfferRowUID, $"{item.Envir}"))" width="48" @onclick="() => DoEditJwd(item)" title="Edit Item" />
}
</td>
}
<td class="small">
<div>@item.OfferRowUID</div>
@if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit && !string.IsNullOrEmpty(item.SerStruct) && item.SerStruct.Length > 2)
{
<button class="btn btn-sm btn-primary" @onclick="() => RequestBom(item)" title="Richiesta ricalcolo BOM">
BOM <i class="fa-solid fa-arrow-right-arrow-left pe-2"></i>
@if (item.AwaitBom)
{
<span class="text-warning spinner-grow spinner-grow-sm" aria-hidden="true"></span>
}
</button>
}
@if (item.Envir != EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW || !string.IsNullOrEmpty(item.FileName))
{
<div class="input-group input-group-sm">
@if (EditRecord != null && EditRecord.OfferRowID == item.OfferRowID)
{
<span>
<InputFile class="form-control" OnChange="UploadFile" style="width: 24rem;" />
</span>
<button class="btn btn-sm btn-info" @onclick="() => ToggleFileEdit(null)"><i class="fa-solid fa-floppy-disk"></i></button>
}
else
{
<span class="input-group-text small"><b>@item.FileName</b> | @fSize(item.FileSize)</span>
<button class="btn btn-sm btn-primary" @onclick="() => ToggleFileEdit(item)"><i class="fa-solid fa-floppy-disk"></i></button>
}
</div>
}
</td>
@if (CurrEditMode == EditMode.RecData && EditRecord != null && EditRecord.OfferRowID == item.OfferRowID)
{
<td>
<div class="input-group">
<input class="form-input w-100" style="width: 16rem;" type="text" @bind="@item.Note" />
</div>
</td>
<td class="text-end">
<input class="text-end" style="width: 4rem;" type="number" @bind="@item.Qty" />
</td>
}
else
{
<td>@item.Note</td>
<td class="text-end">
<b>@item.Qty</b>
</td>
}
<td class="text-end text-nowrap">
<div class="fw-bold" title="Prezzo Finito">
@if (!(item.BomOk && item.ItemOk))
{
<span class="text-danger me-2" title=""><i class="fa-solid fa-triangle-exclamation"></i></span>
}
@if (item.AwaitPrice)
{
<span class="text-warning spinner-grow spinner-grow-sm" aria-hidden="true"></span>
}
@($"{item.UnitPrice:C2}")
</div>
<div class="small text-secondary" title="RockBottom Price">(@item.UnitCost.ToString("C2"))</div>
</td>
@if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
{
<td class="text-end">
@if (!string.IsNullOrEmpty(item.ItemBOM))
{
<button class="btn btn-sm btn-info" title="Cambio materiali assegnati" @onclick="() => DoSwapMat(item)"><i class="fa-solid fa-arrow-right-arrow-left"></i></button>
}
</td>
}
<td class="text-end text-nowrap">
<div class="fw-bold" title="Prezzo Finito">
@if (item.AwaitPrice)
{
<span class="text-warning spinner-grow spinner-grow-sm" aria-hidden="true"></span>
}
@($"{item.TotalPrice:C2}")
</div>
<div class="small text-secondary" title="RockBottom Price">(@item.TotalCost.ToString("C2"))</div>
</td>
<td class="text-end text-nowrap" title="Margine / Sconto MAX applicabile">
@item.MaxDiscount.ToString("P2")
</td>
@if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
{
<td>
@if (CurrEditMode == EditMode.RecData && EditRecord != null && EditRecord.OfferRowID == item.OfferRowID)
{
<button class="btn btn-sm btn-warning" title="Annulla Modifiche" @onclick="DoCancel"><i class="fa-solid fa-ban"></i></button>
}
else
{
<button class="btn btn-sm btn-danger" title="Eliminazione riga" @onclick="() => DoDelete(item)"><i class="fa-solid fa-trash"></i></button>
}
</td>
}
</tr>
}
</tbody>
<tfoot>
<tr class="table-success">
@if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
{
<th colspan="4"></th>
}
else
{
<th colspan="3"></th>
}
<th class="text-end">@($"{GrandTotQty:N0}")</th>
@if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
{
<th colspan="2"></th>
}
else
{
<th colspan="1"></th>
}
<th class="text-end">
@($"{GrandTotPrice:C2}")
<div class="small text-secondary" title="RockBottom Price">(@($"{GrandTotCost:C2}"))</div>
</th>
<th class="text-end">@($"{GrandTotMargin:P2}")</th>
@if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
{
<th></th>
}
</tr>
</tfoot>
</table>
}
</div>
</div>
}
@if (EditRecord != null && CurrEditMode == EditMode.BOM)
{
<div class="modal" tabindex="-1" style="display:block; background-color: rgba(10,10,10,.6);" role="dialog">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<div class="modal-header">
<div class="modal-title fs-4">Cambio Materiali offerta <b>@EditRecord.OfferRowUID</b></div>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" @onclick="ClosePopup">
</button>
</div>
<div class="modal-body">
<EditBom BomList="@CurrBomList" EC_Updated="UpdateBom"></EditBom>
</div>
</div>
</div>
</div>
}