Modificate interfacce Ordini, offerte e cataloghi
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Version>1.1.2604.1417</Version>
|
||||
<Version>1.1.2604.1616</Version>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@@ -3,12 +3,14 @@
|
||||
<div class="d-flex justify-content-between">
|
||||
<div class="px-0 fs-3">
|
||||
<b>Item:</b> <small>@CurrItem.OfferRowUID</small>
|
||||
<small> | </small>
|
||||
<b>Row:</b> <small>@CurrItem.RowNum</small>
|
||||
</div>
|
||||
<div class="px-0">
|
||||
<div class="d-flex gap-3">
|
||||
<div class="input-group">
|
||||
<InputFile class="form-control" OnChange="UploadFile" style="min-width: 24rem;" />
|
||||
<button class="btn btn-sm btn-primary" @onclick="CloseEdit"><i class="fa-solid fa-xmark" title="Close Preview"></i></button>
|
||||
</div>
|
||||
<button type="button" class="btn-close pt-3" title="Close Preview" @onclick="CloseEdit"></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -23,7 +25,7 @@
|
||||
<li class="list-group-item">somma volume</li>
|
||||
<li class="list-group-item">tempo totale</li>
|
||||
</ul>
|
||||
<button class="btn btn-sm btn-outline-primary w-100 mt-auto" @onclick="CloseEdit">Chiudi Preview <i class="fa-solid fa-xmark" title="Close Preview"></i></button>
|
||||
@* <button class="btn btn-sm btn-outline-primary w-100 mt-auto" @onclick="CloseEdit">Chiudi Preview <i class="fa-solid fa-xmark" title="Close Preview"></i></button> *@
|
||||
</div>
|
||||
<div class="col-10">
|
||||
<img class="img-fluid" src="@(imgUrl(CurrItem.OfferRowUID, $"{CurrItem.Envir}"))" />
|
||||
|
||||
@@ -102,10 +102,11 @@ else
|
||||
<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>
|
||||
<th>ID</th>
|
||||
}
|
||||
else
|
||||
{
|
||||
<th>ID</th>
|
||||
<th>Preview</th>
|
||||
}
|
||||
<th>Codice</th>
|
||||
<th>Descrizione</th>
|
||||
@@ -150,7 +151,6 @@ else
|
||||
<img class="img-fluid p-1" src="@imgSrc(item.ImgUrl)" width="48" @onclick="() => ReqEditRow()" />
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -216,18 +216,18 @@ else
|
||||
{
|
||||
if (item.Envir == EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW)
|
||||
{
|
||||
<img class="@cssReqPend(item.HasPendReq) img-fluid image-hover-pop p-1" src="@imgSrc(item.ImgUID)" width="64" @onclick="() => DoEditJwd(item)" title="Edit Item" />
|
||||
<img class="@cssReqPend(item.HasPendReq) img-fluid image-hover-pop p-1" src="@imgSrc(item.ImgUrl)" width="64" @onclick="() => DoEditJwd(item)" title="Edit Item" />
|
||||
}
|
||||
else
|
||||
{
|
||||
<img class="@cssReqPend(item.HasPendReq) img-fluid image-hover-pop" src="@imgSrc(item.ImgUID)" width="150" @onclick="() => DoEditFile(item)" title="Edit Item" />
|
||||
<img class="@cssReqPend(item.HasPendReq) img-fluid image-hover-pop" src="@imgSrc(item.ImgUrl)" width="150" @onclick="() => DoEditFile(item)" title="Edit Item" />
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!item.IsNote)
|
||||
{
|
||||
<img class="img-fluid p-1" src="@imgSrc(item.ImgUID)" width="64" />
|
||||
<img class="img-fluid p-1" src="@imgSrc(item.ImgUrl)" width="64" />
|
||||
}
|
||||
}
|
||||
</td>
|
||||
@@ -428,17 +428,17 @@ else
|
||||
</button>
|
||||
<div class="form-check form-switch small" title="Abilita editing massivo">
|
||||
<input class="form-check-input" type="checkbox" role="switch" @bind="enableMassEdit">
|
||||
<label class="form-check-label">Mass Edit</label>
|
||||
</div>
|
||||
<label class="form-check-label">Mass Edit</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<EditBom CurrRowRec="@EditRecord" MassEdit="enableMassEdit" BomList="CurrBomList" EC_Updated="UpdateBom"></EditBom>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<EditBom CurrRowRec="@EditRecord" MassEdit="enableMassEdit" BomList="CurrBomList" EC_Updated="UpdateBom"></EditBom>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
else if (CurrEditMode == EditMode.JobCycle)
|
||||
{
|
||||
|
||||
@@ -25,34 +25,47 @@
|
||||
else
|
||||
{
|
||||
<div class="card shadow">
|
||||
<div class="card-header bg-success bg-opacity-50 bg-gradient d-flex justify-content-between">
|
||||
<div class="px-0 d-flex">
|
||||
<div class="px-1">
|
||||
<button class="btn btn-sm btn-success" @onclick="() => ForceReloadData()">Prodotto <i class="fa-solid fa-plus"></i></button>
|
||||
</div>
|
||||
<div class="px-1">
|
||||
<button class="btn btn-sm btn-success" @onclick="() => DoAddNote()">Nota <i class="fa-solid fa-plus"></i></button>
|
||||
</div>
|
||||
<div class="px-1">
|
||||
<button class="btn btn-sm btn-success" @onclick="() => ForceReloadData()">Articolo (buy) <i class="fa-solid fa-plus"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="px-0 text-center fs-4">
|
||||
Dettaglio Ordine
|
||||
</div>
|
||||
<div class="px-0 d-flex justify-content-end">
|
||||
@if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
|
||||
<div class="card-header bg-success bg-opacity-50 bg-gradient">
|
||||
<div class="d-flex justify-content-between">
|
||||
@if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Preview)
|
||||
{
|
||||
<div class="px-1">
|
||||
<button class="btn btn-sm btn-primary" @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="() => OrderUpdatePrices()">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 class="px-0 d-flex justify-content-between">
|
||||
<div class="px-1">
|
||||
<b>@CurrRecord.OrderCode</b> <span class="small text-secondary">@CurrRecord.Envir</span>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="px-0 d-flex">
|
||||
<div class="px-1">
|
||||
<button class="btn btn-sm btn-success" @onclick="() => ForceReloadData()">Prodotto a Catalogo <i class="fa-solid fa-plus"></i></button>
|
||||
</div>
|
||||
<div class="px-1">
|
||||
<button class="btn btn-sm @noteCss" @onclick="() => DoAddNote()">Nota <i class="fa-solid fa-plus"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
<div class="px-0 d-flex justify-content-end">
|
||||
@if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Preview)
|
||||
{
|
||||
<div class="px-1">
|
||||
<b>@CurrRecord.CustomerNav.FirstName</b> @CurrRecord.CustomerNav.LastName
|
||||
</div>
|
||||
}
|
||||
else if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
|
||||
{
|
||||
<div class="px-1">
|
||||
<button class="btn btn-sm btn-primary" @onclick="() => OrderForceParameters()">Forza Parametri <i class="fa-solid fa-hammer"></i></button>
|
||||
</div>
|
||||
<div class="px-1">
|
||||
<button class="btn btn-sm btn-primary" @onclick="() => OrderUpdatePrices()">Aggiorna Prezzi <i class="fa-solid fa-calculator"></i></button>
|
||||
</div>
|
||||
<div class="px-1">
|
||||
<button class="btn btn-sm btn-primary" @onclick="() => OrderUpdateAllCosting()">Ricalcolo Completo <i class="fa-solid fa-calculator"></i></button>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cad-body px-2">
|
||||
@@ -74,28 +87,37 @@ else
|
||||
<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>
|
||||
}
|
||||
<th class="text-start">Preview</th>
|
||||
<th>Codice</th>
|
||||
@if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
|
||||
{
|
||||
<th>Descrizione</th>
|
||||
}
|
||||
@if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
|
||||
{
|
||||
<th class="text-center" title="Quantità Articoli">Qty <i class="fa-regular fa-file-lines"></i></th>
|
||||
}
|
||||
else
|
||||
{
|
||||
<th>ID</th>
|
||||
<th class="text-center" title="Quantità Articoli"><i class="fa-regular fa-file-lines"></i></th>
|
||||
}
|
||||
@if (DisplayMode != EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
|
||||
{
|
||||
<th class="text-center" title="Macchine"><i class="fa-solid fa-industry"></i></th>
|
||||
}
|
||||
<th>Codice</th>
|
||||
@* <th>Descrizione</th> *@
|
||||
<th class="text-center" title="Quantità Articoli"><i class="fa-regular fa-file-lines"></i></th>
|
||||
@* <th class="text-end">Importo</th> *@
|
||||
<th class="text-center" title="Macchine"><i class="fa-solid fa-industry"></i></th>
|
||||
<th class="text-center" title="Quantità Prodotti"><i class="fa-solid fa-folder-tree"></i></th>
|
||||
@if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
|
||||
{
|
||||
<th class="text-end" title="Cambio Materiali">Mat.</th>
|
||||
<th class="text-end" title="Ciclo Lavoro">Lav.</th>
|
||||
<th class="text-end" title="# Componenti Riga (Make + Buy)"><i class="fa-solid fa-folder-tree"></i></th>
|
||||
<th class="text-end">Importo</th>
|
||||
}
|
||||
@if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
|
||||
{
|
||||
<th class="text-center" title="Cambio Materiali">Materiali</th>
|
||||
<th class="text-center" title="Ciclo Lavoro">Lavorazioni</th>
|
||||
}
|
||||
@* <th class="text-end">Totale</th>
|
||||
<th class="text-end">Marg.</th> *@
|
||||
<th class="text-center" title="# Prodotti producibili su OGNI macchina"><i class="fa-solid fa-puzzle-piece"></i> Parts</th>
|
||||
<th class="text-end" title="Range tempi prod. previsti"><i class="fa-solid fa-stopwatch"></i> Hour</th>
|
||||
<th class="text-center" title="Range tempi prod. previsti"><i class="fa-solid fa-stopwatch"></i> Hour</th>
|
||||
@if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
|
||||
{
|
||||
<th></th>
|
||||
@@ -107,10 +129,10 @@ else
|
||||
{
|
||||
bool isNote = item.Original.SellingItemID == null;
|
||||
<tr class="@RowClass(item.Original)">
|
||||
<td class="text-nowrap">
|
||||
@if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
|
||||
{
|
||||
if (CurrEditMode == EditMode.None)
|
||||
@if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
|
||||
{
|
||||
<td class="text-nowrap align-top">
|
||||
@if (CurrEditMode == EditMode.None)
|
||||
{
|
||||
<button class="btn btn-sm btn-info" @onclick="() => DoEdit(item.Original)"><i class="fa-solid fa-pencil"></i></button>
|
||||
<button class="btn btn-sm btn-warning" @onclick="() => DoClone(item.Original)"><i class="fa-solid fa-wand-magic" title="Duplica Articoo (Riga Offerta)"></i></button>
|
||||
@@ -122,15 +144,11 @@ else
|
||||
<button class="btn btn-sm btn-success" title="Salva Modifiche" @onclick="() => DoSave(item.Original)"><i class="fa-solid fa-floppy-disk"></i></button>
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@item.Original.RowNum
|
||||
}
|
||||
</td>
|
||||
</td>
|
||||
}
|
||||
@if (isNote)
|
||||
{
|
||||
<td colspan="9" class="small">
|
||||
<td colspan="9" class="small align-top">
|
||||
@if (CurrEditMode == EditMode.RecData && EditRecord != null && EditRecord.OrderRowID == item.Original.OrderRowID)
|
||||
{
|
||||
<div class="input-group">
|
||||
@@ -145,125 +163,174 @@ else
|
||||
}
|
||||
else
|
||||
{
|
||||
@if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
|
||||
{
|
||||
<td>
|
||||
@if (item.Original.HasFile)
|
||||
<td class="align-top">
|
||||
@if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
|
||||
{
|
||||
@if (item.Original.CalcEnabled)
|
||||
{
|
||||
<img src="@($"~/images/SellingItemID_{item.Original.SellingItemID:00}.png")" width="64" />
|
||||
}
|
||||
else
|
||||
{
|
||||
@if (item.Original.Envir == EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW)
|
||||
if (item.Original.Envir == EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW)
|
||||
{
|
||||
@* <img class="img-fluid image-hover-pop p-1" src="@(imgUrl(item.Original.OrderRowUID, $"{item.Original.Envir}"))" width="64" @onclick="() => DoEditJwd(item.Original)" title="Edit Item" /> *@
|
||||
<img class="img-fluid image-hover-pop p-1" src="@imgSrc(item.Original.ImgUrl)" width="64" @onclick="() => DoEditJwd(item.Original)" title="Edit Item" />
|
||||
<img class="@cssReqPend(item.Original.HasPendReq) img-fluid image-hover-pop p-1" src="@imgSrc(item.Original.ImgUrl)" width="64" @onclick="() => DoEditJwd(item.Original)" title="Edit Item" />
|
||||
}
|
||||
else
|
||||
{
|
||||
@* <img class="img-fluid image-hover-pop" src="@(imgUrl(item.Original.OrderRowUID, $"{item.Original.Envir}"))" width="150" @onclick="() => DoEditFile(item.Original)" title="Edit Item" /> *@
|
||||
<img class="img-fluid image-hover-pop" src="@imgSrc(item.Original.ImgUrl)" width="150" @onclick="() => DoEditFile(item.Original)" title="Edit Item" />
|
||||
<img class="@cssReqPend(item.Original.HasPendReq) img-fluid image-hover-pop" src="@imgSrc(item.Original.ImgUrl)" width="150" @onclick="() => DoEditFile(item.Original)" title="Edit Item" />
|
||||
}
|
||||
}
|
||||
</td>
|
||||
}
|
||||
<td>
|
||||
<ul class="list-group">
|
||||
<li class="list-group-item d-flex justify-content-between align-items-start align-items-center px-2 py-1 active">
|
||||
@item.Original.Note
|
||||
</li>
|
||||
<li class="list-group-item d-flex justify-content-between align-items-start align-items-center px-2 py-1">
|
||||
<div class="fw-bold">@item.Original.OrderRowUID</div>
|
||||
@if (ShowBom(item.Original))
|
||||
{
|
||||
@if (CurrEditMode == EditMode.None)
|
||||
{
|
||||
<button class="btn btn-sm btn-primary" @onclick="() => RequestBom(item.Original)" title="Richiesta ricalcolo BOM">
|
||||
BOM <i class="fa-solid fa-arrow-right-arrow-left pe-2"></i>
|
||||
@if (item.Original.AwaitBom)
|
||||
{
|
||||
<span class="text-warning spinner-grow spinner-grow-sm" aria-hidden="true"></span>
|
||||
}
|
||||
</button>
|
||||
}
|
||||
else
|
||||
{
|
||||
<button class="btn btn-sm btn-secondary disabled">
|
||||
BOM <i class="fa-solid fa-arrow-right-arrow-left pe-2"></i>
|
||||
@if (item.Original.AwaitBom)
|
||||
{
|
||||
<span class="text-warning spinner-grow spinner-grow-sm" aria-hidden="true"></span>
|
||||
}
|
||||
</button>
|
||||
}
|
||||
}
|
||||
</li>
|
||||
@if (item.Original.Envir != EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW || !string.IsNullOrEmpty(item.Original.FileName))
|
||||
else
|
||||
{
|
||||
<li class="list-group-item d-flex justify-content-between align-items-start px-2 py-1 small">
|
||||
<div class="mx-0">
|
||||
<div class="">@item.Original.FileName</div>
|
||||
</div>
|
||||
<span class="small">@fSize(item.Original.FileSize)</span>
|
||||
</li>
|
||||
if (!isNote)
|
||||
{
|
||||
<img class="img-fluid p-1" src="@imgSrc(item.Original.ImgUrl)" width="64" />
|
||||
}
|
||||
}
|
||||
</ul>
|
||||
}
|
||||
else if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Preview)
|
||||
{
|
||||
if (item.Original.CalcEnabled)
|
||||
{
|
||||
if (item.Original.Envir == EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW)
|
||||
{
|
||||
<img class="@cssReqPend(item.Original.HasPendReq) img-fluid image-hover-pop p-1" src="@imgSrc(item.Original.ImgUrl)" width="48" @onclick="() => ReqEditRow()" title="Edit Item" />
|
||||
}
|
||||
else
|
||||
{
|
||||
<img class="@cssReqPend(item.Original.HasPendReq) img-fluid image-hover-pop" src="@imgSrc(item.Original.ImgUrl)" width="64" @onclick="() => ReqEditRow()" title="Edit Item" />
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!isNote)
|
||||
{
|
||||
<img class="img-fluid p-1" src="@imgSrc(item.Original.ImgUrl)" width="48" @onclick="() => ReqEditRow()" />
|
||||
}
|
||||
}
|
||||
}
|
||||
</td>
|
||||
@* @if (CurrEditMode == EditMode.RecData && EditRecord != null && EditRecord.OrderRowID == item.Original.OrderRowID)
|
||||
<td class="align-top">
|
||||
<div class="align-content-center">
|
||||
<ul class="list-group">
|
||||
<li class="list-group-item d-flex justify-content-between align-items-start align-items-center px-2 py-1 active">
|
||||
@item.Original.Note
|
||||
</li>
|
||||
<li class="list-group-item d-flex justify-content-between align-items-start align-items-center px-2 py-1">
|
||||
<div class="fw-bold">@item.Original.OrderRowUID</div>
|
||||
@if (ShowBom(item.Original))
|
||||
{
|
||||
@if (CurrEditMode == EditMode.None)
|
||||
{
|
||||
<button class="btn btn-sm btn-primary" @onclick="() => RequestBom(item.Original)" title="Richiesta ricalcolo BOM">
|
||||
BOM <i class="fa-solid fa-arrow-right-arrow-left pe-2"></i>
|
||||
@if (item.Original.AwaitBom)
|
||||
{
|
||||
<span class="text-warning spinner-grow spinner-grow-sm" aria-hidden="true"></span>
|
||||
}
|
||||
</button>
|
||||
}
|
||||
else
|
||||
{
|
||||
<button class="btn btn-sm btn-secondary disabled">
|
||||
BOM <i class="fa-solid fa-arrow-right-arrow-left pe-2"></i>
|
||||
@if (item.Original.AwaitBom)
|
||||
{
|
||||
<span class="text-warning spinner-grow spinner-grow-sm" aria-hidden="true"></span>
|
||||
}
|
||||
</button>
|
||||
}
|
||||
}
|
||||
</li>
|
||||
@if (item.Original.Envir != EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW || !string.IsNullOrEmpty(item.Original.FileName))
|
||||
{
|
||||
<li class="list-group-item d-flex justify-content-between align-items-start px-2 py-1 small">
|
||||
<div class="mx-0">
|
||||
<div class="">@item.Original.FileName</div>
|
||||
</div>
|
||||
<span class="small">@fSize(item.Original.FileSize)</span>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
@if (CurrEditMode == EditMode.RecData && EditRecord != null && EditRecord.OrderRowID == item.Original.OrderRowID)
|
||||
{
|
||||
<td>
|
||||
<div class="input-group">
|
||||
<input class="form-control w-100" style="width: 16rem;" type="text" @bind="@item.Original.Note" />
|
||||
</div>
|
||||
</td>
|
||||
<td class="text-end align-content-center">
|
||||
if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
|
||||
{
|
||||
<td class="align-top">
|
||||
<div class="input-group align-content-center">
|
||||
<input class="form-control w-100" style="width: 16rem;" type="text" @bind="@item.Original.Note" />
|
||||
</div>
|
||||
</td>
|
||||
}
|
||||
<td class="text-end align-top">
|
||||
<input class="form-control text-end" style="width: 4rem;" type="number" @bind="@item.Original.Qty" />
|
||||
</td>
|
||||
}
|
||||
else
|
||||
{
|
||||
<td>@item.Original.Note</td>
|
||||
<td class="text-center align-content-center fs-4">
|
||||
if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
|
||||
{
|
||||
<td class="align-top">@item.Original.Note</td>
|
||||
}
|
||||
<td class="text-center align-top fs-4">
|
||||
<b>@item.Original.Qty</b>
|
||||
</td>
|
||||
} *@
|
||||
<td class="text-center align-content-center fs-4">
|
||||
<b>@item.Original.Qty</b>
|
||||
</td>
|
||||
@* <td class="text-end text-nowrap">
|
||||
<div class="fw-bold" title="Prezzo Finito">
|
||||
@if (!(item.Original.BomOk && item.Original.ItemOk))
|
||||
}
|
||||
@if (DisplayMode != EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
|
||||
{
|
||||
<td class="text-center align-top fs-4" title="@(item.WorkLoad?.ListMachinesJoin ?? "")">
|
||||
<span class="px-2">
|
||||
@(item.WorkLoad?.NumMachines ?? 0)
|
||||
</span>
|
||||
@*@if (@item.WorkLoad.Workable)
|
||||
{
|
||||
<span class="text-danger me-2" title=""><i class="fa-solid fa-triangle-exclamation"></i></span>
|
||||
<i class="fa-solid fa-thumbs-up text-success"></i>
|
||||
}
|
||||
@if (item.Original.AwaitPrice)
|
||||
else
|
||||
{
|
||||
<span class="text-warning spinner-grow spinner-grow-sm" aria-hidden="true"></span>
|
||||
}
|
||||
@($"{item.Original.UnitPrice:C2}")
|
||||
</div>
|
||||
<div class="small text-secondary" title="RockBottom Price">(@item.Original.UnitCost.ToString("C2"))</div>
|
||||
</td> *@
|
||||
|
||||
<td class="text-center align-content-center fs-4" title="@(item.WorkLoad?.ListMachinesJoin ?? "")">
|
||||
<span class="px-2">
|
||||
@(item.WorkLoad?.NumMachines ?? 0)
|
||||
</span>
|
||||
@*@if (@item.WorkLoad.Workable)
|
||||
{
|
||||
<i class="fa-solid fa-thumbs-up text-success"></i>
|
||||
}
|
||||
else
|
||||
{
|
||||
<i class="fa-solid fa-thumbs-down text-danger"></i>
|
||||
} *@
|
||||
</td>
|
||||
<td class="text-center align-content-center text-nowrap">
|
||||
<i class="fa-solid fa-thumbs-down text-danger"></i>
|
||||
} *@
|
||||
</td>
|
||||
}
|
||||
<td class="text-center align-top text-nowrap">
|
||||
<div class="fw-bold fs-4" title="# Totale Prodotti">
|
||||
@($"{item.Original.ProdItemQtyTot:N0}")
|
||||
</div>
|
||||
</td>
|
||||
<td class="text-center align-content-center text-nowrap">
|
||||
@if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
|
||||
{
|
||||
<td class="text-end text-nowrap align-top">
|
||||
<div class="fw-bold" title="Prezzo Finito">
|
||||
@if (!(item.Original.BomOk && item.Original.ItemOk))
|
||||
{
|
||||
<span class="text-danger me-2" title=""><i class="fa-solid fa-triangle-exclamation"></i></span>
|
||||
}
|
||||
@if (item.Original.AwaitPrice)
|
||||
{
|
||||
<span class="text-warning spinner-grow spinner-grow-sm" aria-hidden="true"></span>
|
||||
}
|
||||
@($"{item.Original.UnitPrice:C2}")
|
||||
</div>
|
||||
<div class="small text-secondary" title="RockBottom Price">(@item.Original.UnitCost.ToString("C2"))</div>
|
||||
</td>
|
||||
}
|
||||
@if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
|
||||
{
|
||||
<td class="text-center align-top">
|
||||
@if (!string.IsNullOrEmpty(item.Original.ItemBOM))
|
||||
{
|
||||
<div>
|
||||
<button class="btn btn-sm btn-info" title="Cambio materiali assegnati" @onclick="() => DoSwapMat(item.Original)"><i class="fa-solid fa-arrow-right-arrow-left"></i></button>
|
||||
</div>
|
||||
}
|
||||
</td>
|
||||
<td class="text-center align-top">
|
||||
@if (!string.IsNullOrEmpty(item.Original.ItemSteps))
|
||||
{
|
||||
<button class="btn btn-sm btn-info" title="Verifica Ciclo/Fasi di Lavoro" @onclick="() => DoSwapJobCycle(item.Original)"><i class="fa-solid fa-arrow-right-arrow-left"></i></button>
|
||||
}
|
||||
</td>
|
||||
}
|
||||
<td class="text-center align-top text-nowrap">
|
||||
@if (item.WorkLoad != null)
|
||||
{
|
||||
if (item.WorkLoad.NumKo > 0)
|
||||
@@ -294,43 +361,7 @@ else
|
||||
}
|
||||
}
|
||||
</td>
|
||||
@if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
|
||||
{
|
||||
<td class="text-center">
|
||||
@if (!string.IsNullOrEmpty(item.Original.ItemBOM))
|
||||
{
|
||||
<div>
|
||||
<button class="btn btn-sm btn-info" title="Cambio materiali assegnati" @onclick="() => DoSwapMat(item.Original)"><i class="fa-solid fa-arrow-right-arrow-left"></i></button>
|
||||
</div>
|
||||
}
|
||||
<diiv class="small">
|
||||
@item.Original.ProdItemQty
|
||||
</diiv>
|
||||
</td>
|
||||
<td class="text-center">
|
||||
@if (!string.IsNullOrEmpty(item.Original.ItemSteps))
|
||||
{
|
||||
<button class="btn btn-sm btn-info" title="Verifica Ciclo/Fasi di Lavoro" @onclick="() => DoSwapJobCycle(item.Original)"><i class="fa-solid fa-arrow-right-arrow-left"></i></button>
|
||||
}
|
||||
</td>
|
||||
<td class="text-center">
|
||||
@item.Original.ProdItemQtyTot
|
||||
</td>
|
||||
}
|
||||
@* <td class="text-end text-nowrap">
|
||||
<div class="fw-bold" title="Prezzo Finito">
|
||||
@if (item.Original.AwaitPrice)
|
||||
{
|
||||
<span class="text-warning spinner-grow spinner-grow-sm" aria-hidden="true"></span>
|
||||
}
|
||||
@($"{item.Original.TotalPrice:C2}")
|
||||
</div>
|
||||
<div class="small text-secondary" title="RockBottom Price">(@item.Original.TotalCost.ToString("C2"))</div>
|
||||
</td>
|
||||
<td class="text-end text-nowrap" title="Margine / Sconto MAX applicabile">
|
||||
@item.Original.MaxDiscount.ToString("P2")
|
||||
</td> *@
|
||||
<td class="text-end text-nowrap align-content-center" title="Tempi Stimati">
|
||||
<td class="text-end text-nowrap align-top" title="Tempi Stimati">
|
||||
@if (item.WorkLoad != null)
|
||||
{
|
||||
<button class="btn btn-lg btn-primary shadow w-100" @onclick="() => ShowWLD(item, EditMode.WorkLoadDetailTime)">
|
||||
@@ -345,7 +376,7 @@ else
|
||||
}
|
||||
@if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
|
||||
{
|
||||
<td>
|
||||
<td class="text-end align-top">
|
||||
@if (CurrEditMode == EditMode.RecData && EditRecord != null && EditRecord.OrderRowID == item.Original.OrderRowID)
|
||||
{
|
||||
<button class="btn btn-sm btn-warning" title="Annulla Modifiche" @onclick="DoCancel"><i class="fa-solid fa-ban"></i></button>
|
||||
@@ -363,29 +394,32 @@ else
|
||||
<tr class="table-success">
|
||||
@if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
|
||||
{
|
||||
<td colspan="3"></td>
|
||||
<td colspan="4"></td>
|
||||
}
|
||||
else
|
||||
{
|
||||
<td colspan="2"></td>
|
||||
}
|
||||
<td class="text-center">@($"{GrandTotQty:N0}")</td>
|
||||
@if (DisplayMode != EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
|
||||
{
|
||||
<td class="text-center">@($"{GrandTotQty:N0}")</td>
|
||||
}
|
||||
<td colspan="1"></td>
|
||||
<td class="text-center">@($"{GrandTotNumItems:N0}")</td>
|
||||
@if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
|
||||
{
|
||||
<td colspan="3"></td>
|
||||
<td class="text-center">@($"{GrandTotNumItems:N0}")</td>
|
||||
<td class="text-end">
|
||||
@($"{GrandTotPrice:C2}")
|
||||
<div class="small text-secondary" title="RockBottom Price">(@($"{GrandTotCost:C2}"))</div>
|
||||
</td>
|
||||
<td colspan="2"></td>
|
||||
}
|
||||
else
|
||||
{
|
||||
<td colspan="1"></td>
|
||||
}
|
||||
<td class="text-center">@($"{GrandTotNumItems:N0}")</td>
|
||||
<td class="text-center text-nowrap">
|
||||
<span class="text-success">@GrandTotNumOk</span> | <span class="text-primary">@GrandTotNumOkVin</span> | <span class="text-danger">@GrandTotNumKo</span>
|
||||
</td>
|
||||
<td class="text-center fs-5">
|
||||
@FormatDatetime(GrandTotMaxTime)
|
||||
</td>
|
||||
<td class="text-center text-nowrap">
|
||||
<span class="text-success">@GrandTotNumOk</span> | <span class="text-primary">@GrandTotNumOkVin</span> | <span class="text-danger">@GrandTotNumKo</span>
|
||||
</td>
|
||||
<td class="text-center fs-5">
|
||||
@FormatDatetime(GrandTotMaxTime)
|
||||
</td>
|
||||
@if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
|
||||
{
|
||||
<td></td>
|
||||
@@ -404,20 +438,22 @@ else
|
||||
<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 row modal-title">
|
||||
<div class="col-4 fs-3">
|
||||
Materiali (BOM)
|
||||
</div>
|
||||
<div class="col-4 text-center text-bg-secondary bg-gradient border border-2 rounded">
|
||||
<div class="fw-bold">@EditRecord.Note</div>
|
||||
<small class="small">@EditRecord.OrderRowUID</small>
|
||||
</div>
|
||||
<div class="col-4 text-end fs-4">
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" @onclick="ClosePopup">
|
||||
</button>
|
||||
<div class="form-check form-switch small" title="Abilita editing massivo">
|
||||
<input class="form-check-input" type="checkbox" role="switch" @bind="enableMassEdit">
|
||||
<label class="form-check-label">Mass Edit</label>
|
||||
<div class="modal-header">
|
||||
<div class="row w-100">
|
||||
<div class="col-4 fs-3">
|
||||
Materiali (BOM)
|
||||
</div>
|
||||
<div class="col-4 text-center text-bg-secondary bg-gradient border border-2 rounded">
|
||||
<div class="fw-bold">@EditRecord.Note</div>
|
||||
<small class="small">@EditRecord.OrderRowUID</small>
|
||||
</div>
|
||||
<div class="col-4 text-end fs-4">
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" @onclick="ClosePopup">
|
||||
</button>
|
||||
<div class="form-check form-switch small" title="Abilita editing massivo">
|
||||
<input class="form-check-input" type="checkbox" role="switch" @bind="enableMassEdit">
|
||||
<label class="form-check-label">Mass Edit</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -449,7 +485,6 @@ else
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<EditJob></EditJob>
|
||||
@* <EditBom BomList="@CurrBomList" EC_Updated="UpdateBom"></EditBom> *@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -64,6 +64,9 @@ namespace Lux.UI.Components.Compo.Order
|
||||
[Parameter]
|
||||
public DisplayMode DisplayMode { get; set; } = DisplayMode.Standard;
|
||||
|
||||
[Parameter]
|
||||
public EventCallback<string> EC_Action { get; set; }
|
||||
|
||||
[Parameter]
|
||||
public EventCallback<bool> EC_Updated { get; set; }
|
||||
|
||||
@@ -265,6 +268,8 @@ namespace Lux.UI.Components.Compo.Order
|
||||
|
||||
private int numRecord = 10;
|
||||
|
||||
private string noteCss => EditRecord == null ? "btn-success" : "btn-primary bg-gradient";
|
||||
|
||||
/// <summary>
|
||||
/// Versione originale (pre edit)
|
||||
/// </summary>
|
||||
@@ -1054,7 +1059,7 @@ namespace Lux.UI.Components.Compo.Order
|
||||
/// Forza parametri generali selezionati nell'offerta
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private async Task OfferForceParameters()
|
||||
private async Task OrderForceParameters()
|
||||
{
|
||||
if (!await JSRuntime.InvokeAsync<bool>("confirm", $"Confermi di voler impostare i parametri selezionati per l'Ordine?"))
|
||||
return;
|
||||
@@ -1100,9 +1105,9 @@ namespace Lux.UI.Components.Compo.Order
|
||||
/// - update prezzi
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private async Task OfferUpdateAllCosting()
|
||||
private async Task OrderUpdateAllCosting()
|
||||
{
|
||||
if (!await JSRuntime.InvokeAsync<bool>("confirm", $"Confermi di voler ricalcolare/validare in toto l'offerta?"))
|
||||
if (!await JSRuntime.InvokeAsync<bool>("confirm", $"Confermi di voler ricalcolare/validare in toto l'ordine?"))
|
||||
return;
|
||||
|
||||
// metto a waiting tutte le righe con bom...
|
||||
@@ -1898,6 +1903,16 @@ namespace Lux.UI.Components.Compo.Order
|
||||
return currWLD;
|
||||
}
|
||||
|
||||
private string cssReqPend(bool isDirty)
|
||||
{
|
||||
return isDirty ? "border border-warning rounded border-3" : "";
|
||||
}
|
||||
|
||||
private Task ReqEditRow()
|
||||
{
|
||||
return EC_Action.InvokeAsync("EditRow");
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
|
||||
}
|
||||
|
||||
@@ -145,7 +145,7 @@ else
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<button class="btn btn-sm btn-primary" title="Reset selezione" @onclick="()=>DoEsc()"><i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
<button class="btn btn-sm btn-primary" title="Reset selezione" @onclick="() => DoReset()"><i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
</th>
|
||||
@if (SelRecord == null)
|
||||
{
|
||||
|
||||
@@ -224,6 +224,12 @@ namespace Lux.UI.Components.Pages
|
||||
}
|
||||
}
|
||||
|
||||
private async Task DoReset()
|
||||
{
|
||||
EditRecord = null;
|
||||
SelRecord = null;
|
||||
}
|
||||
|
||||
private void DoFilter()
|
||||
{
|
||||
// verifico eventuali filtri
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
<div class="px-0 fs-3">
|
||||
<b>@EditRecord.OrderCode</b>
|
||||
</div>
|
||||
<div class="px-4">
|
||||
@* <div class="px-4">
|
||||
<div class="d-flex">
|
||||
<div class="px-0 row">
|
||||
<div class="col px-0">
|
||||
@@ -40,7 +40,7 @@
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> *@
|
||||
<div class="px-0">
|
||||
<button type="button" class="btn-close" data-bs-dismiss="card" aria-label="Close" @onclick="DoReset">
|
||||
</button>
|
||||
@@ -49,7 +49,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
|
||||
<OrderRowMan CurrRecord="EditRecord" DisplayMode="EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit" EC_Updated="() => ForceReload()" EC_Action="DoAction"></OrderRowMan>
|
||||
@* @if (currStep == CompileStep.Header)
|
||||
{
|
||||
<OfferMan CurrRecord="EditRecord" EC_Close="DoClose" EC_Updated="DoSave"></OfferMan>
|
||||
@@ -303,7 +303,7 @@ else
|
||||
@if (SelRecord != null)
|
||||
{
|
||||
<div class="col-6">
|
||||
<OrderRowMan CurrRecord="@SelRecord" DisplayMode="EgwCoreLib.Lux.Core.Enums.DisplayMode.Preview" EC_Updated="() => ForceReload()"></OrderRowMan>
|
||||
<OrderRowMan CurrRecord="@SelRecord" DisplayMode="EgwCoreLib.Lux.Core.Enums.DisplayMode.Preview" EC_Updated="() => ForceReload()" EC_Action="DoAction"></OrderRowMan>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
|
||||
@@ -467,36 +467,6 @@ namespace Lux.UI.Components.Pages
|
||||
await Task.Delay(50);
|
||||
}
|
||||
|
||||
#if false
|
||||
/// <summary>
|
||||
/// Restituisce il contenuto del file salvato
|
||||
/// </summary>
|
||||
/// <param name="folderPath"></param>
|
||||
/// <param name="secureName"></param>
|
||||
/// <returns></returns>
|
||||
private string LoadFileContent(string folderPath, string secureName)
|
||||
{
|
||||
string answ = "";
|
||||
if (!string.IsNullOrEmpty(folderPath))
|
||||
{
|
||||
try
|
||||
{
|
||||
// calcolo path file...
|
||||
string filePath = Path.Combine(basePath, folderPath, secureName);
|
||||
if (File.Exists(filePath))
|
||||
{
|
||||
answ = File.ReadAllText(filePath);
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
Log.Error($"Exception on LoadFileContent{Environment.NewLine}{exc}");
|
||||
}
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
#endif
|
||||
|
||||
/// <summary>
|
||||
/// Modalità gestione code calcolo + display history
|
||||
/// </summary>
|
||||
@@ -595,6 +565,14 @@ namespace Lux.UI.Components.Pages
|
||||
.ToList();
|
||||
}
|
||||
|
||||
private void DoAction(string args)
|
||||
{
|
||||
if (args == "EditRow")
|
||||
{
|
||||
EditRecord = SelRecord;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
}
|
||||
}
|
||||
@@ -3,11 +3,12 @@
|
||||
|
||||
<div class="card shadow">
|
||||
<div class="card-header">
|
||||
<div class=" d-flex justify-content-between">
|
||||
<div class="px-0 fs-3">
|
||||
<b>Gestione Cataloghi (Template)</b>
|
||||
</div>
|
||||
<div class="px-0 d-flex justify-content-between">
|
||||
<div class="card-title mb-0">
|
||||
<div class=" d-flex justify-content-between">
|
||||
<div class="px-0 fs-3">
|
||||
<b>Gestione Cataloghi (Template)</b>
|
||||
</div>
|
||||
<div class="px-0 d-flex justify-content-between">
|
||||
@* <div class="px-1">
|
||||
<div class="input-group input-group-sm" title="Environment">
|
||||
<span class="input-group-text">Envir</span>
|
||||
@@ -28,6 +29,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body p-2">
|
||||
<div class="row g-2">
|
||||
@@ -39,7 +41,10 @@
|
||||
{
|
||||
@if (!fullPageDetail)
|
||||
{
|
||||
<div class="@mainCss">
|
||||
<div class="@mainCss px-3">
|
||||
<TemplateList CurrSearchVal="@searchVal" EC_Selected="DoSelect" SelRecord="@SelRecord"></TemplateList>
|
||||
</div>
|
||||
@* <div class="@mainCss">
|
||||
<div class="card shadow">
|
||||
<div class="card-header">
|
||||
<b>Cataloghi</b>
|
||||
@@ -48,7 +53,7 @@
|
||||
<TemplateList CurrSearchVal="@searchVal" EC_Selected="DoSelect" SelRecord="@SelRecord"></TemplateList>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> *@
|
||||
}
|
||||
@if (SelRecord != null)
|
||||
{
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<UserSecretsId>aspnet-Lux.UI-a758c101-a2f4-4e38-977d-1c4887dbbd50</UserSecretsId>
|
||||
<Version>1.1.2604.1417</Version>
|
||||
<Version>1.1.2604.1616</Version>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<body>
|
||||
<i>LUX - Web Windows MES</i>
|
||||
<h4>Versione: 1.1.2604.1417</h4>
|
||||
<h4>Versione: 1.1.2604.1616</h4>
|
||||
<br /> Note di rilascio:
|
||||
<ul>
|
||||
<li>
|
||||
|
||||
@@ -1 +1 @@
|
||||
1.1.2604.1417
|
||||
1.1.2604.1616
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<item>
|
||||
<version>1.1.2604.1417</version>
|
||||
<version>1.1.2604.1616</version>
|
||||
<url>http://nexus.steamware.net/repository/SWS/GPW/stable/GPW.UI.zip</url>
|
||||
<changelog>http://nexus.steamware.net/repository/SWS/GPW/stable/ChangeLog.html</changelog>
|
||||
<mandatory>false</mandatory>
|
||||
|
||||
Reference in New Issue
Block a user