Varie code cleanup
This commit is contained in:
@@ -14,12 +14,13 @@ namespace Lux.API.Controllers
|
||||
/// </summary>
|
||||
/// <param name="DLService"></param>
|
||||
/// <param name="iORService"></param>
|
||||
/// <param name="iOrdRService"></param>
|
||||
/// <param name="imgServ"></param>
|
||||
/// <param name="logger"></param>
|
||||
public FileController(IDataLayerServices DLService, IOfferRowService iORService, IImageCacheService imgServ)
|
||||
public FileController(IDataLayerServices DLService, IOfferRowService iORService, IOrderRowService iOrdRService, IImageCacheService imgServ)
|
||||
{
|
||||
_DSService = DLService;
|
||||
_OffRService = iORService;
|
||||
_OrdRService = iOrdRService;
|
||||
_imgService = imgServ;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Version>1.1.2606.1015</Version>
|
||||
<Version>1.1.2606.1016</Version>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@@ -85,4 +85,4 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="BootstrapModal.ModalMode.Confirm" UserOptions=@modalOpt></BootstrapModal>
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="mMode" UserOptions=@modalOpt></BootstrapModal>
|
||||
@@ -128,4 +128,4 @@
|
||||
}
|
||||
}
|
||||
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="BootstrapModal.ModalMode.Confirm" UserOptions=@modalOpt></BootstrapModal>
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="mMode" UserOptions=@modalOpt></BootstrapModal>
|
||||
@@ -85,4 +85,4 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="BootstrapModal.ModalMode.Confirm" UserOptions=@modalOpt></BootstrapModal>
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="mMode" UserOptions=@modalOpt></BootstrapModal>
|
||||
@@ -1,44 +1,41 @@
|
||||
@inherits BaseComp
|
||||
|
||||
<div class="rounded rounded-3 bg-secondary bg-opacity-25 bg-gradient p-2 m-0 shadow">
|
||||
@if (CurrRecord != null)
|
||||
{
|
||||
<div><span class="fs-5"># <b>@(CurrRecord?.CustomerID)</b></span></div>
|
||||
<div class="row g-1">
|
||||
<div class="col-md-4">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control" @bind="@CurrRecord.FirstName">
|
||||
<label class="small bg-opacity-50">@Traduci("nome")</label>
|
||||
</div>
|
||||
<div><span class="fs-5"># <b>@(CurrRecord.CustomerID)</b></span></div>
|
||||
<div class="row g-1">
|
||||
<div class="col-md-4">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control" @bind="@CurrRecord.FirstName">
|
||||
<label class="small bg-opacity-50">@Traduci("nome")</label>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control" @bind="@CurrRecord.LastName" >
|
||||
<label class="small bg-opacity-50">@Traduci("contatti_cognome")</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control" @bind="@CurrRecord.LastName">
|
||||
<label class="small bg-opacity-50">@Traduci("contatti_cognome")</label>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control" @bind="@CurrRecord.CompanyName">
|
||||
<label class="small bg-opacity-50">@Traduci("contatti_nomeAzienda")</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control" @bind="@CurrRecord.CompanyName">
|
||||
<label class="small bg-opacity-50">@Traduci("contatti_nomeAzienda")</label>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control" @bind="@CurrRecord.VAT">
|
||||
<label class="small bg-opacity-50">@Traduci("contatti_cf")</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control" @bind="@CurrRecord.VAT">
|
||||
<label class="small bg-opacity-50">@Traduci("contatti_cf")</label>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<div class="row g-1 py-1">
|
||||
<div class="col-md-6">
|
||||
<button class="btn btn-lg btn-success w-100" @onclick="DoSave">@Traduci("salva")</button>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<button class="btn btn-lg btn-warning w-100" @onclick="DoCancel">@Traduci("annulla")</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<div class="row g-1 py-1">
|
||||
<div class="col-md-6">
|
||||
<button class="btn btn-lg btn-success w-100" @onclick="DoSave">@Traduci("salva")</button>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<button class="btn btn-lg btn-warning w-100" @onclick="DoCancel">@Traduci("annulla")</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -5,7 +5,7 @@ namespace Lux.UI.Components.Compo.Contatti
|
||||
#region Public Properties
|
||||
|
||||
[Parameter]
|
||||
public CustomerModel? CurrRecord { get; set; } = null;
|
||||
public CustomerModel CurrRecord { get; set; } = null!;
|
||||
|
||||
[Parameter]
|
||||
public EventCallback<bool> EC_Close { get; set; }
|
||||
|
||||
@@ -76,4 +76,4 @@ else
|
||||
</table>
|
||||
}
|
||||
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="BootstrapModal.ModalMode.Confirm" UserOptions=@modalOpt></BootstrapModal>
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="mMode" UserOptions=@modalOpt></BootstrapModal>
|
||||
@@ -1,44 +1,41 @@
|
||||
@inherits BaseComp
|
||||
|
||||
<div class="rounded rounded-3 bg-secondary bg-opacity-25 bg-gradient p-2 m-0 shadow">
|
||||
@if (CurrRecord != null)
|
||||
{
|
||||
<div><span class="fs-5"># <b>@(CurrRecord?.DealerID)</b></span></div>
|
||||
<div class="row g-1">
|
||||
<div class="col-md-4">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control" @bind="@CurrRecord.FirstName">
|
||||
<label class="small bg-opacity-50">@Traduci("nome")</label>
|
||||
</div>
|
||||
<div><span class="fs-5"># <b>@(CurrRecord.DealerID)</b></span></div>
|
||||
<div class="row g-1">
|
||||
<div class="col-md-4">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control" @bind="@CurrRecord.FirstName">
|
||||
<label class="small bg-opacity-50">@Traduci("nome")</label>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control" @bind="@CurrRecord.LastName" >
|
||||
<label class="small bg-opacity-50">@Traduci("contatti_cognome")</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control" @bind="@CurrRecord.LastName">
|
||||
<label class="small bg-opacity-50">@Traduci("contatti_cognome")</label>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control" @bind="@CurrRecord.CompanyName">
|
||||
<label class="small bg-opacity-50">@Traduci("contatti_nomeAzienda")</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control" @bind="@CurrRecord.CompanyName">
|
||||
<label class="small bg-opacity-50">@Traduci("contatti_nomeAzienda")</label>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control" @bind="@CurrRecord.VAT">
|
||||
<label class="small bg-opacity-50">@Traduci("contatti_cf")</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control" @bind="@CurrRecord.VAT">
|
||||
<label class="small bg-opacity-50">@Traduci("contatti_cf")</label>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<div class="row g-1 py-1">
|
||||
<div class="col-md-6">
|
||||
<button class="btn btn-lg btn-success w-100" @onclick="DoSave">@Traduci("salva")</button>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<button class="btn btn-lg btn-warning w-100" @onclick="DoCancel">@Traduci("annulla")</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<div class="row g-1 py-1">
|
||||
<div class="col-md-6">
|
||||
<button class="btn btn-lg btn-success w-100" @onclick="DoSave">@Traduci("salva")</button>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<button class="btn btn-lg btn-warning w-100" @onclick="DoCancel">@Traduci("annulla")</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -5,7 +5,7 @@ namespace Lux.UI.Components.Compo.Contatti
|
||||
#region Public Properties
|
||||
|
||||
[Parameter]
|
||||
public DealerModel? CurrRecord { get; set; } = null;
|
||||
public DealerModel CurrRecord { get; set; } = null!;
|
||||
|
||||
[Parameter]
|
||||
public EventCallback<bool> EC_Close { get; set; }
|
||||
|
||||
@@ -76,4 +76,4 @@ else
|
||||
</table>
|
||||
}
|
||||
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="BootstrapModal.ModalMode.Confirm" UserOptions=@modalOpt></BootstrapModal>
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="mMode" UserOptions=@modalOpt></BootstrapModal>
|
||||
@@ -46,71 +46,79 @@
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
<table class="table table-sm table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<button class="btn btn-sm btn-primary" title="@Traduci("reset")" @onclick="DoReset"><i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
</th>
|
||||
<th>@Traduci("cod")</th>
|
||||
<th>@Traduci("descrizione")</th>
|
||||
<th class="text-end"># Val</th>
|
||||
<th class="text-end">
|
||||
<button class="btn btn-sm btn-success" @onclick="ToggleAdd"><i class="fa-solid fa-plus"></i></button>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (var item in ListRecords)
|
||||
{
|
||||
<tr class="@checkSel(item)">
|
||||
@if (EditRecord != null && item.ClassCod == EditRecord.ClassCod)
|
||||
{
|
||||
<td class="text-start text-nowrap">
|
||||
<button class="btn btn-sm btn-success" title="@Traduci("salva")" @onclick="() => DoSave(item)"><i class="fa-solid fa-save"></i></button>
|
||||
<button class="btn btn-sm btn-secondary opacity-50" title="@Traduci("modifica")"><i class="fa-solid fa-pencil"></i></button>
|
||||
</td>
|
||||
<td>@item.ClassCod</td>
|
||||
<td><input class="form-control form-control-sm border-2 border-info py-1" type="text" style="width: 12rem;" @bind="@item.Description" /></td>
|
||||
<td class="text-end">@item.NumChild</td>
|
||||
<td class="text-end">
|
||||
<button class="btn btn-sm btn-warning" title="@Traduci("annulla")" @onclick="DoReset"><i class="fa-solid fa-ban"></i></button>
|
||||
</td>
|
||||
}
|
||||
else
|
||||
{
|
||||
<td class="text-start text-nowrap">
|
||||
<button class="btn btn-sm btn-primary" title="@Traduci("seleziona")" @onclick="() => DoSelect(item)"><i class="fa-solid fa-magnifying-glass"></i></button>
|
||||
<button class="btn btn-sm btn-info" title="@Traduci("modifica")" @onclick="() => DoEdit(item)"><i class="fa-solid fa-pencil"></i></button>
|
||||
@* <button class="btn btn-sm btn-success" @onclick="() => DoClone(item)"><i class="fa-solid fa-clone"></i></button> *@
|
||||
</td>
|
||||
<td>@item.ClassCod</td>
|
||||
<td>@item.Description</td>
|
||||
<td class="text-end">@item.NumChild</td>
|
||||
<td class="text-end">
|
||||
@if (item.NumChild > 0)
|
||||
{
|
||||
<button class="btn btn-sm btn-secondary opacity-50" disabled title="@Traduci("childCorrelati")"><i class="fa-solid fa-trash-can"></i></button>
|
||||
}
|
||||
else
|
||||
{
|
||||
<button class="btn btn-sm btn-danger" title="@Traduci("elimina")" @onclick="() => DoDelete(item)"><i class="fa-solid fa-trash-can"></i></button>
|
||||
}
|
||||
</td>
|
||||
}
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
@if (totalCount >= numRecord)
|
||||
{
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="5">
|
||||
<EgwCoreLib.Razor.DataPager currPage="@currPage" PageSize="@numRecord" totalCount="@totalCount" numPageChanged="SavePage" numRecordChanged="SaveNumRec"></EgwCoreLib.Razor.DataPager>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
}
|
||||
</table>
|
||||
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="BootstrapModal.ModalMode.Confirm" UserOptions=@modalOpt></BootstrapModal>
|
||||
@if (isLoading)
|
||||
{
|
||||
<LoadingData></LoadingData>
|
||||
}
|
||||
else
|
||||
{
|
||||
<table class="table table-sm table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<button class="btn btn-sm btn-primary" title="@Traduci("reset")" @onclick="DoReset"><i class="fa-solid fa-arrow-rotate-right"></i></button>
|
||||
</th>
|
||||
<th>@Traduci("cod")</th>
|
||||
<th>@Traduci("descrizione")</th>
|
||||
<th class="text-end"># Val</th>
|
||||
<th class="text-end">
|
||||
<button class="btn btn-sm btn-success" @onclick="ToggleAdd"><i class="fa-solid fa-plus"></i></button>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (var item in ListRecords)
|
||||
{
|
||||
<tr class="@checkSel(item)">
|
||||
@if (EditRecord != null && item.ClassCod == EditRecord.ClassCod)
|
||||
{
|
||||
<td class="text-start text-nowrap">
|
||||
<button class="btn btn-sm btn-success" title="@Traduci("salva")" @onclick="() => DoSave(item)"><i class="fa-solid fa-save"></i></button>
|
||||
<button class="btn btn-sm btn-secondary opacity-50" title="@Traduci("modifica")"><i class="fa-solid fa-pencil"></i></button>
|
||||
</td>
|
||||
<td>@item.ClassCod</td>
|
||||
<td><input class="form-control form-control-sm border-2 border-info py-1" type="text" style="width: 12rem;" @bind="@item.Description" /></td>
|
||||
<td class="text-end">@item.NumChild</td>
|
||||
<td class="text-end">
|
||||
<button class="btn btn-sm btn-warning" title="@Traduci("annulla")" @onclick="DoReset"><i class="fa-solid fa-ban"></i></button>
|
||||
</td>
|
||||
}
|
||||
else
|
||||
{
|
||||
<td class="text-start text-nowrap">
|
||||
<button class="btn btn-sm btn-primary" title="@Traduci("seleziona")" @onclick="() => DoSelect(item)"><i class="fa-solid fa-magnifying-glass"></i></button>
|
||||
<button class="btn btn-sm btn-info" title="@Traduci("modifica")" @onclick="() => DoEdit(item)"><i class="fa-solid fa-pencil"></i></button>
|
||||
@* <button class="btn btn-sm btn-success" @onclick="() => DoClone(item)"><i class="fa-solid fa-clone"></i></button> *@
|
||||
</td>
|
||||
<td>@item.ClassCod</td>
|
||||
<td>@item.Description</td>
|
||||
<td class="text-end">@item.NumChild</td>
|
||||
<td class="text-end">
|
||||
@if (item.NumChild > 0)
|
||||
{
|
||||
<button class="btn btn-sm btn-secondary opacity-50" disabled title="@Traduci("childCorrelati")"><i class="fa-solid fa-trash-can"></i></button>
|
||||
}
|
||||
else
|
||||
{
|
||||
<button class="btn btn-sm btn-danger" title="@Traduci("elimina")" @onclick="() => DoDelete(item)"><i class="fa-solid fa-trash-can"></i></button>
|
||||
}
|
||||
</td>
|
||||
}
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
@if (totalCount >= numRecord)
|
||||
{
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="5">
|
||||
<EgwCoreLib.Razor.DataPager currPage="@currPage" PageSize="@numRecord" totalCount="@totalCount" numPageChanged="SavePage" numRecordChanged="SaveNumRec"></EgwCoreLib.Razor.DataPager>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
}
|
||||
</table>
|
||||
}
|
||||
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="mMode" UserOptions=@modalOpt></BootstrapModal>
|
||||
@@ -85,4 +85,4 @@ else
|
||||
</table>
|
||||
}
|
||||
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="BootstrapModal.ModalMode.Confirm" UserOptions=@modalOpt></BootstrapModal>
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="mMode" UserOptions=@modalOpt></BootstrapModal>
|
||||
@@ -1,101 +1,98 @@
|
||||
@inherits BaseComp
|
||||
|
||||
<div class="rounded rounded-3 bg-secondary bg-opacity-25 bg-gradient p-2 m-0 shadow">
|
||||
@if (CurrRecord != null)
|
||||
{
|
||||
<div><span class="fs-5"># <b>@(CurrRecord?.ItemID)</b></span> | Codice @CurrRecord.ItemCode</div>
|
||||
<div class="row g-1">
|
||||
<div class="col-md-2">
|
||||
<div class="form-floating">
|
||||
<select @bind="@CurrRecord.CodGroup" class="form-select" disabled="@CurrRecord.IsProtected">
|
||||
@foreach (var item in ListItemGroup)
|
||||
{
|
||||
<option value="@item.CodGroup">@item.Description</option>
|
||||
}
|
||||
</select>
|
||||
<label class="small bg-opacity-50">@Traduci("gruppo")</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-1">
|
||||
<div class="form-floating">
|
||||
<select @bind="@CurrRecord.ItemType" class="form-select" disabled="@CurrRecord.IsProtected">
|
||||
@foreach (var sType in Enum.GetValues(typeof(EgwCoreLib.Lux.Core.Enums.ItemClassType)))
|
||||
{
|
||||
<option value="@sType">@sType</option>
|
||||
}
|
||||
</select>
|
||||
<label class="small bg-opacity-50">@Traduci("tipo")</label>
|
||||
</div>
|
||||
</div><div class="col-md-1">
|
||||
<div class="form-floating">
|
||||
<div class="form-control ">
|
||||
<div class="form-check form-switch">
|
||||
<input class="form-check-input" type="checkbox" checked="@CurrRecord.IsService">
|
||||
</div>
|
||||
</div>
|
||||
<label class="small bg-opacity-50">@Traduci("articoli_servizio")</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control" @bind="@CurrRecord.ExtItemCode" disabled="@CurrRecord.IsProtected">
|
||||
<label class="small bg-opacity-50">@Traduci("articoli_itemCode")</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control" @bind="@CurrRecord.SupplCode" disabled="@CurrRecord.IsProtected">
|
||||
<label class="small bg-opacity-50">@Traduci("articoli_supplCode")</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<div class="form-floating">
|
||||
<InputDouble CssClass="form-control form-control-lg text-end" Decimals="2" Step="0.05" @bind-Value="@CurrRecord.Cost"></InputDouble>
|
||||
@* <input type="number" class="form-control text-end" @bind="@CurrRecord.Cost"> *@
|
||||
<label class="small bg-opacity-50">@Traduci("articoli_costo")</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-1">
|
||||
<div class="form-floating">
|
||||
<InputPercent CssClass="form-control form-control-lg text-end" ForceInvariantParsing="true" Decimals="1" @bind-Value="@MarginDec"></InputPercent>
|
||||
@* <input type="number" class="form-control text-end" @bind="@CurrRecord.Margin"> *@
|
||||
<label class="small bg-opacity-50">@Traduci("margine")</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control" @bind="@CurrRecord.Description" disabled="@CurrRecord.IsProtected">
|
||||
<label class="small bg-opacity-50">@Traduci("descrizione")</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-1">
|
||||
<div class="form-floating">
|
||||
<input type="number" class="form-control text-end" @bind="@CurrRecord.QtyMin">
|
||||
<label class="small bg-opacity-50">@Traduci("articoli_qtyMin")</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-1">
|
||||
<div class="form-floating">
|
||||
<input type="number" class="form-control text-end" @bind="@CurrRecord.QtyMax">
|
||||
<label class="small bg-opacity-50">@Traduci("articoli_qtyMax")</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-1">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control text-end" @bind="@CurrRecord.UM">
|
||||
<label class="small bg-opacity-50">@Traduci("unitaMisura")</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="row g-1 py-1">
|
||||
<div class="col-md-6">
|
||||
<button class="btn btn-lg btn-success w-100" @onclick="DoSave">@Traduci("salva")</button>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<button class="btn btn-lg btn-warning w-100" @onclick="DoCancel">@Traduci("annulla")</button>
|
||||
</div>
|
||||
</div>
|
||||
<div><span class="fs-5"># <b>@(CurrRecord.ItemID)</b></span> | Codice @CurrRecord.ItemCode</div>
|
||||
<div class="row g-1">
|
||||
<div class="col-md-2">
|
||||
<div class="form-floating">
|
||||
<select @bind="@CurrRecord.CodGroup" class="form-select" disabled="@CurrRecord.IsProtected">
|
||||
@foreach (var item in ListItemGroup)
|
||||
{
|
||||
<option value="@item.CodGroup">@item.Description</option>
|
||||
}
|
||||
</select>
|
||||
<label class="small bg-opacity-50">@Traduci("gruppo")</label>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
<div class="col-md-1">
|
||||
<div class="form-floating">
|
||||
<select @bind="@CurrRecord.ItemType" class="form-select" disabled="@CurrRecord.IsProtected">
|
||||
@foreach (var sType in Enum.GetValues(typeof(EgwCoreLib.Lux.Core.Enums.ItemClassType)))
|
||||
{
|
||||
<option value="@sType">@sType</option>
|
||||
}
|
||||
</select>
|
||||
<label class="small bg-opacity-50">@Traduci("tipo")</label>
|
||||
</div>
|
||||
</div><div class="col-md-1">
|
||||
<div class="form-floating">
|
||||
<div class="form-control ">
|
||||
<div class="form-check form-switch">
|
||||
<input class="form-check-input" type="checkbox" checked="@CurrRecord.IsService">
|
||||
</div>
|
||||
</div>
|
||||
<label class="small bg-opacity-50">@Traduci("articoli_servizio")</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control" @bind="@CurrRecord.ExtItemCode" disabled="@CurrRecord.IsProtected">
|
||||
<label class="small bg-opacity-50">@Traduci("articoli_itemCode")</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control" @bind="@CurrRecord.SupplCode" disabled="@CurrRecord.IsProtected">
|
||||
<label class="small bg-opacity-50">@Traduci("articoli_supplCode")</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<div class="form-floating">
|
||||
<InputDouble CssClass="form-control form-control-lg text-end" Decimals="2" Step="0.05" @bind-Value="@CurrRecord.Cost"></InputDouble>
|
||||
@* <input type="number" class="form-control text-end" @bind="@CurrRecord.Cost"> *@
|
||||
<label class="small bg-opacity-50">@Traduci("articoli_costo")</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-1">
|
||||
<div class="form-floating">
|
||||
<InputPercent CssClass="form-control form-control-lg text-end" ForceInvariantParsing="true" Decimals="1" @bind-Value="@MarginDec"></InputPercent>
|
||||
@* <input type="number" class="form-control text-end" @bind="@CurrRecord.Margin"> *@
|
||||
<label class="small bg-opacity-50">@Traduci("margine")</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control" @bind="@CurrRecord.Description" disabled="@CurrRecord.IsProtected">
|
||||
<label class="small bg-opacity-50">@Traduci("descrizione")</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-1">
|
||||
<div class="form-floating">
|
||||
<input type="number" class="form-control text-end" @bind="@CurrRecord.QtyMin">
|
||||
<label class="small bg-opacity-50">@Traduci("articoli_qtyMin")</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-1">
|
||||
<div class="form-floating">
|
||||
<input type="number" class="form-control text-end" @bind="@CurrRecord.QtyMax">
|
||||
<label class="small bg-opacity-50">@Traduci("articoli_qtyMax")</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-1">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control text-end" @bind="@CurrRecord.UM">
|
||||
<label class="small bg-opacity-50">@Traduci("unitaMisura")</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="row g-1 py-1">
|
||||
<div class="col-md-6">
|
||||
<button class="btn btn-lg btn-success w-100" @onclick="DoSave">@Traduci("salva")</button>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<button class="btn btn-lg btn-warning w-100" @onclick="DoCancel">@Traduci("annulla")</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -5,7 +5,7 @@ namespace Lux.UI.Components.Compo.Item
|
||||
#region Public Properties
|
||||
|
||||
[Parameter]
|
||||
public ItemModel? CurrRecord { get; set; } = null;
|
||||
public ItemModel CurrRecord { get; set; } = null!;
|
||||
|
||||
[Parameter]
|
||||
public EventCallback<bool> EC_Close { get; set; }
|
||||
|
||||
@@ -101,4 +101,4 @@ else
|
||||
</table>
|
||||
}
|
||||
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="BootstrapModal.ModalMode.Confirm" UserOptions=@modalOpt></BootstrapModal>
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="mMode" UserOptions=@modalOpt></BootstrapModal>
|
||||
@@ -4,7 +4,7 @@
|
||||
@if (CurrRecord != null)
|
||||
{
|
||||
<div>
|
||||
<span class="fs-5"># <b>@(CurrRecord?.SellingItemID)</b></span> | Codice @CurrRecord?.ItemCode
|
||||
<span class="fs-5"># <b>@(CurrRecord.SellingItemID)</b></span> | Codice @CurrRecord.ItemCode
|
||||
</div>
|
||||
<div class="row g-1">
|
||||
<div class="col-md-3">
|
||||
|
||||
@@ -97,4 +97,4 @@ else
|
||||
</table>
|
||||
}
|
||||
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="BootstrapModal.ModalMode.Confirm" UserOptions=@modalOpt></BootstrapModal>
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="mMode" UserOptions=@modalOpt></BootstrapModal>
|
||||
@@ -176,4 +176,4 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="BootstrapModal.ModalMode.Confirm" UserOptions=@modalOpt></BootstrapModal>
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="mMode" UserOptions=@modalOpt></BootstrapModal>
|
||||
@@ -7,7 +7,7 @@ namespace Lux.UI.Components.Compo.JobTask
|
||||
#region Public Properties
|
||||
|
||||
[Parameter]
|
||||
public JobTaskModel CurrJob { get; set; }
|
||||
public JobTaskModel CurrJob { get; set; } = null!;
|
||||
|
||||
[Parameter]
|
||||
public List<JobStepModel> CurrRecords { get; set; } = null!;
|
||||
@@ -25,10 +25,10 @@ namespace Lux.UI.Components.Compo.JobTask
|
||||
public List<string> ListAllTags { get; set; } = new List<string>();
|
||||
|
||||
[Parameter]
|
||||
public List<PhaseModel> ListPhases { get; set; }
|
||||
public List<PhaseModel> ListPhases { get; set; } = null!;
|
||||
|
||||
[Parameter]
|
||||
public List<ResourceModel> ListResources { get; set; }
|
||||
public List<ResourceModel> ListResources { get; set; } = null!;
|
||||
|
||||
#endregion Public Properties
|
||||
|
||||
@@ -197,7 +197,8 @@ namespace Lux.UI.Components.Compo.JobTask
|
||||
/// </summary>
|
||||
/// <param name="rec2del"></param>
|
||||
private async Task DoDelete(JobStepModel rec2del)
|
||||
{;
|
||||
{
|
||||
;
|
||||
mTitle = "Attenzione";
|
||||
mMessage = $"Sicuro di voler eliminare il record? {rec2del.Description} ({rec2del.JobStepID})";
|
||||
mMode = BootstrapModal.ModalMode.Confirm;
|
||||
|
||||
@@ -121,4 +121,4 @@ else
|
||||
</table>
|
||||
}
|
||||
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="BootstrapModal.ModalMode.Confirm" UserOptions=@modalOpt></BootstrapModal>
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="mMode" UserOptions=@modalOpt></BootstrapModal>
|
||||
@@ -66,4 +66,4 @@ else
|
||||
</div>
|
||||
}
|
||||
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="BootstrapModal.ModalMode.Confirm" UserOptions=@modalOpt></BootstrapModal>
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="mMode" UserOptions=@modalOpt></BootstrapModal>
|
||||
@@ -39,7 +39,9 @@ namespace Lux.UI.Components.Compo.JobTask
|
||||
|
||||
private int currPage = 1;
|
||||
|
||||
private ResourceModel? editRecord = null;
|
||||
#if false
|
||||
private ResourceModel? editRecord = null;
|
||||
#endif
|
||||
|
||||
private bool isLoading = false;
|
||||
|
||||
@@ -143,7 +145,9 @@ namespace Lux.UI.Components.Compo.JobTask
|
||||
/// </summary>
|
||||
private async Task DoReset()
|
||||
{
|
||||
editRecord = null;
|
||||
#if false
|
||||
editRecord = null;
|
||||
#endif
|
||||
selRecord = null;
|
||||
await ReloadBaseData();
|
||||
ReloadData();
|
||||
|
||||
@@ -466,4 +466,4 @@ else
|
||||
}
|
||||
}
|
||||
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="BootstrapModal.ModalMode.Confirm" UserOptions=@modalOpt></BootstrapModal>
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="mMode" UserOptions=@modalOpt></BootstrapModal>
|
||||
@@ -205,10 +205,12 @@ namespace Lux.UI.Components.Compo.Offer
|
||||
/// </summary>
|
||||
private OfferRowModel? EditRecord = null;
|
||||
|
||||
#if false
|
||||
/// <summary>
|
||||
/// Abilita edit massivo record ITEM
|
||||
/// </summary>
|
||||
private bool enableMassEdit = false;
|
||||
private bool enableMassEdit = false;
|
||||
#endif
|
||||
|
||||
private string genericBasePath = "";
|
||||
|
||||
@@ -233,12 +235,14 @@ namespace Lux.UI.Components.Compo.Offer
|
||||
|
||||
private int numRecord = 10;
|
||||
|
||||
#if false
|
||||
/// <summary>
|
||||
/// Versione originale (pre edit)
|
||||
/// </summary>
|
||||
private string origJwd = "";
|
||||
|
||||
private List<string> PreparedFile = new();
|
||||
private List<string> PreparedFile = new();
|
||||
#endif
|
||||
|
||||
/// <summary>
|
||||
/// Versione precedente JWD x test e confronto
|
||||
|
||||
@@ -567,4 +567,4 @@ else if (WorkLoadRecord != null)
|
||||
} *@
|
||||
}
|
||||
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="BootstrapModal.ModalMode.Confirm" UserOptions=@modalOpt></BootstrapModal>
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="mMode" UserOptions=@modalOpt></BootstrapModal>
|
||||
@@ -271,10 +271,12 @@ namespace Lux.UI.Components.Compo.Order
|
||||
|
||||
private string noteCss => EditRecord == null ? "btn-success" : "btn-primary bg-gradient";
|
||||
|
||||
#if false
|
||||
/// <summary>
|
||||
/// Versione originale (pre edit)
|
||||
/// </summary>
|
||||
private string origJwd = "";
|
||||
private string origJwd = "";
|
||||
#endif
|
||||
|
||||
/// <summary>
|
||||
/// Versione precedente JWD x test e confronto
|
||||
|
||||
@@ -155,4 +155,4 @@
|
||||
</div>
|
||||
}
|
||||
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="BootstrapModal.ModalMode.Confirm" UserOptions=@modalOpt></BootstrapModal>
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="mMode" UserOptions=@modalOpt></BootstrapModal>
|
||||
@@ -148,11 +148,14 @@ namespace Lux.UI.Components.Compo.Planner
|
||||
/// <summary>
|
||||
/// Sistemazione colore sfonto di ogni evento mostrato
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
private void OnAppointmentRender(SchedulerAppointmentRenderEventArgs<EventDto> args)
|
||||
/// <param name="selEv"></param>
|
||||
private void OnAppointmentRender(SchedulerAppointmentRenderEventArgs<EventDto> selEv)
|
||||
{
|
||||
// Never call StateHasChanged in AppointmentRender - would lead to infinite loop
|
||||
args.Attributes["style"] = $"background: {args.Data.Color}; color: {args.Data.ForeColor};";
|
||||
if (selEv.Data != null)
|
||||
{
|
||||
// Never call StateHasChanged in AppointmentRender - would lead to infinite loop
|
||||
selEv.Attributes["style"] = $"background: {selEv.Data.Color}; color: {selEv.Data.ForeColor};";
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -162,9 +165,11 @@ namespace Lux.UI.Components.Compo.Planner
|
||||
/// <returns></returns>
|
||||
private async Task OnAppointmentSelect(SchedulerAppointmentSelectEventArgs<EventDto> selEv)
|
||||
{
|
||||
var copy = selEv.Data.Clone();
|
||||
await Task.Delay(1);
|
||||
var data = await DialogService.OpenAsync<TaskDetail>("", new Dictionary<string, object> { { "ThisTask", copy } });
|
||||
if (selEv.Data != null)
|
||||
{
|
||||
var copy = selEv.Data.Clone();
|
||||
var data = await DialogService.OpenAsync<TaskDetail>("", new Dictionary<string, object> { { "ThisTask", copy } });
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -175,7 +180,10 @@ namespace Lux.UI.Components.Compo.Planner
|
||||
private async Task OnLoadData(SchedulerLoadDataEventArgs args)
|
||||
{
|
||||
await Task.Delay(1);
|
||||
currView = scheduler.SelectedView.Text.ToLowerInvariant();
|
||||
if (scheduler.SelectedView != null)
|
||||
{
|
||||
currView = scheduler.SelectedView.Text.ToLowerInvariant();
|
||||
}
|
||||
DateTime dtMid = args.Start.AddDays(args.End.Subtract(args.Start).TotalDays / 2);
|
||||
// controllo se sia cambiata data anno precedente...
|
||||
if (dtMid.Year != SelDate.Year)
|
||||
@@ -197,48 +205,53 @@ namespace Lux.UI.Components.Compo.Planner
|
||||
|
||||
private void OnSlotRender(SchedulerSlotRenderEventArgs args)
|
||||
{
|
||||
// Highlight today in month view
|
||||
if (args.View.Text == "Month" && args.Start.Date == DateTime.Today)
|
||||
if (args.View != null)
|
||||
{
|
||||
args.Attributes["style"] = "background: var(--rz-scheduler-highlight-background-color, rgba(255,220,40,.2));";
|
||||
}
|
||||
// Highlight today in month view
|
||||
if (args.View.Text == "Month" && args.Start.Date == DateTime.Today)
|
||||
{
|
||||
args.Attributes["style"] = "background: var(--rz-scheduler-highlight-background-color, rgba(255,220,40,.2));";
|
||||
}
|
||||
|
||||
// Highlight working hours (9-18)
|
||||
if ((args.View.Text == "Week" || args.View.Text == "Day") && args.Start.Hour > 8 && args.Start.Hour < 19)
|
||||
{
|
||||
args.Attributes["style"] = "background: var(--rz-scheduler-highlight-background-color, rgba(255,220,40,.2));";
|
||||
// Highlight working hours (9-18)
|
||||
if ((args.View.Text == "Week" || args.View.Text == "Day") && args.Start.Hour > 8 && args.Start.Hour < 19)
|
||||
{
|
||||
args.Attributes["style"] = "background: var(--rz-scheduler-highlight-background-color, rgba(255,220,40,.2));";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async Task OnSlotSelect(SchedulerSlotSelectEventArgs args)
|
||||
{
|
||||
int prevIdx = selectedIndex;
|
||||
await Task.Delay(1);
|
||||
// verifico indice corretto della vista...
|
||||
switch (args.View.Text)
|
||||
if (args.View != null)
|
||||
{
|
||||
case "Day":
|
||||
selectedIndex = 0;
|
||||
break;
|
||||
// verifico indice corretto della vista...
|
||||
switch (args.View.Text)
|
||||
{
|
||||
case "Day":
|
||||
selectedIndex = 0;
|
||||
break;
|
||||
|
||||
case "Week":
|
||||
selectedIndex = 1;
|
||||
break;
|
||||
case "Week":
|
||||
selectedIndex = 1;
|
||||
break;
|
||||
|
||||
case "Month":
|
||||
selectedIndex = 2;
|
||||
break;
|
||||
case "Month":
|
||||
selectedIndex = 2;
|
||||
break;
|
||||
|
||||
case "Planner":
|
||||
selectedIndex = 3;
|
||||
break;
|
||||
case "Planner":
|
||||
selectedIndex = 3;
|
||||
break;
|
||||
|
||||
case "Year":
|
||||
selectedIndex = 4;
|
||||
break;
|
||||
case "Year":
|
||||
selectedIndex = 4;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (prevIdx != selectedIndex)
|
||||
{
|
||||
|
||||
@@ -15,38 +15,41 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (var item in AllRecords)
|
||||
@if (AllRecords != null)
|
||||
{
|
||||
<tr>
|
||||
<td class="text-start">
|
||||
<button class="btn btn-info" @onclick="() => CreateProd(item)" title="Creazione Prod File"><i class="fa-solid fa-floppy-disk"></i></button>
|
||||
<button class="btn btn-primary" @onclick="() => CalcProd(item)" title="Calcolo Lavorazioni"><i class="fa-solid fa-screwdriver-wrench"></i></button>
|
||||
</td>
|
||||
@* <td class="text-center">
|
||||
foreach (var item in AllRecords)
|
||||
{
|
||||
<tr>
|
||||
<td class="text-start">
|
||||
<button class="btn btn-info" @onclick="() => CreateProd(item)" title="Creazione Prod File"><i class="fa-solid fa-floppy-disk"></i></button>
|
||||
<button class="btn btn-primary" @onclick="() => CalcProd(item)" title="Calcolo Lavorazioni"><i class="fa-solid fa-screwdriver-wrench"></i></button>
|
||||
</td>
|
||||
@* <td class="text-center">
|
||||
<button><i class="fa-solid fa-caret-up"></i></button>
|
||||
@(idx++)
|
||||
<button><i class="fa-solid fa-caret-down"></i></button>
|
||||
</td> *@
|
||||
<td class="text-start">
|
||||
@item.ProdBatchID
|
||||
</td>
|
||||
<td class="text-start">
|
||||
@item.OdlTag
|
||||
</td>
|
||||
<td class="text-start">
|
||||
@item.ProdPlantCod
|
||||
</td>
|
||||
<td class="text-end">
|
||||
@item.Qty
|
||||
</td>
|
||||
<td class="text-end">
|
||||
@item.Qty
|
||||
</td>
|
||||
<td class="text-end fs-3">
|
||||
<b>@FormatEstTime(item.EstimTime)</b>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<td class="text-start">
|
||||
@item.ProdBatchID
|
||||
</td>
|
||||
<td class="text-start">
|
||||
@item.OdlTag
|
||||
</td>
|
||||
<td class="text-start">
|
||||
@item.ProdPlantCod
|
||||
</td>
|
||||
<td class="text-end">
|
||||
@item.Qty
|
||||
</td>
|
||||
<td class="text-end">
|
||||
@item.Qty
|
||||
</td>
|
||||
<td class="text-end fs-3">
|
||||
<b>@FormatEstTime(item.EstimTime)</b>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
}
|
||||
}
|
||||
</tbody>
|
||||
@* <tfoot class="table-dark text-light">
|
||||
|
||||
@@ -31,4 +31,4 @@ else
|
||||
}
|
||||
}
|
||||
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="BootstrapModal.ModalMode.Confirm" UserOptions=@modalOpt></BootstrapModal>
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="mMode" UserOptions=@modalOpt></BootstrapModal>
|
||||
@@ -1,111 +1,116 @@
|
||||
|
||||
<div class="row">
|
||||
<div class="col-2 px-2">
|
||||
<div class="pb-2">
|
||||
<div class="card border-0 rounded-3 shadow">
|
||||
<div class="card-header bg-primary bg-gradient bg-opacity-25 p-2 rounded">
|
||||
<div class="d-flex align-items-center justify-content-center">
|
||||
<span class="fw-bold text-dark fs-5">Stato offerte</span>
|
||||
@if (isLoading)
|
||||
{
|
||||
<LoadingData></LoadingData>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="row">
|
||||
<div class="col-2 px-2">
|
||||
<div class="pb-2">
|
||||
<div class="card border-0 rounded-3 shadow">
|
||||
<div class="card-header bg-primary bg-gradient bg-opacity-25 p-2 rounded">
|
||||
<div class="d-flex align-items-center justify-content-center">
|
||||
<span class="fw-bold text-dark fs-5">Stato offerte</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<PieChart CanvasId="pieOfferCount" PieDict="@DatasetCount" DictColorFill="@FillColors" DictColorBorder="@BorderColors" Label="# Offerte" />
|
||||
</div>
|
||||
<PieChart CanvasId="pieOfferCount" PieDict="@DatasetCount" DictColorFill="@FillColors" DictColorBorder="@BorderColors" Label="# Offerte" />
|
||||
</div>
|
||||
<div class="col-2 px-2">
|
||||
<div class="pb-2">
|
||||
<div class="card border-0 rounded-3 shadow">
|
||||
<div class="card-header bg-primary bg-gradient bg-opacity-25 p-2 rounded">
|
||||
<div class="d-flex align-items-center justify-content-center">
|
||||
<span class="fw-bold text-dark fs-5">Venditori</span>
|
||||
<div class="col-2 px-2">
|
||||
<div class="pb-2">
|
||||
<div class="card border-0 rounded-3 shadow">
|
||||
<div class="card-header bg-primary bg-gradient bg-opacity-25 p-2 rounded">
|
||||
<div class="d-flex align-items-center justify-content-center">
|
||||
<span class="fw-bold text-dark fs-5">Venditori</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<PieChart CanvasId="pieDealerCount" PieDict="@DatasetDealerCount" DictColorFill="@FillDealerColors" DictColorBorder="@BorderDealerColors" Label="# Offerte" />
|
||||
</div>
|
||||
<PieChart CanvasId="pieDealerCount" PieDict="@DatasetDealerCount" DictColorFill="@FillDealerColors" DictColorBorder="@BorderDealerColors" Label="# Offerte" />
|
||||
</div>
|
||||
<div class="col-8 ps-4">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="card border-0 rounded-3 shadow">
|
||||
<div class="card-header bg-primary bg-gradient bg-opacity-25 p-3 rounded">
|
||||
<div class="d-flex align-items-center justify-content-center gap-2">
|
||||
<span class="fw-bold text-dark fs-5 ps-1">Offerte confermate</span>
|
||||
<div class="col-8 ps-4">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="card border-0 rounded-3 shadow">
|
||||
<div class="card-header bg-primary bg-gradient bg-opacity-25 p-3 rounded">
|
||||
<div class="d-flex align-items-center justify-content-center gap-2">
|
||||
<span class="fw-bold text-dark fs-5 ps-1">Offerte confermate</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row pt-3">
|
||||
<div class="col-4">
|
||||
<div class="card border-0 rounded-3 shadow">
|
||||
<div class="card-header bg-primary bg-gradient bg-opacity-25 p-3 rounded">
|
||||
<div class="d-flex align-items-center gap-2">
|
||||
<span class="text-primary"><i class="fa-solid fa-coins fa-2x"></i></span>
|
||||
<span class="fw-bold text-dark fs-5 ps-1">Margine medio:</span>
|
||||
<span class="text-primary fs-5 fw-semibold">@MargineMedio() %</span>
|
||||
<div class="row pt-3">
|
||||
<div class="col-4">
|
||||
<div class="card border-0 rounded-3 shadow">
|
||||
<div class="card-header bg-primary bg-gradient bg-opacity-25 p-3 rounded">
|
||||
<div class="d-flex align-items-center gap-2">
|
||||
<span class="text-primary"><i class="fa-solid fa-coins fa-2x"></i></span>
|
||||
<span class="fw-bold text-dark fs-5 ps-1">Margine medio:</span>
|
||||
<span class="text-primary fs-5 fw-semibold">@MargineMedio() %</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="card border-0 rounded-3 shadow">
|
||||
<div class="card-header bg-primary bg-gradient bg-opacity-25 p-3 rounded">
|
||||
<div class="d-flex align-items-center gap-2">
|
||||
<span class="text-primary"><i class="fa-solid fa-coins fa-2x"></i></span>
|
||||
<span class="fw-bold text-dark fs-6 ps-1">Margine min:</span>
|
||||
<span class="text-primary fs-6 fw-semibold">@MargineMin() %</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="card border-0 rounded-3 shadow">
|
||||
<div class="card-header bg-primary bg-gradient bg-opacity-25 p-3 rounded">
|
||||
<div class="d-flex align-items-center gap-2">
|
||||
<span class="text-primary"><i class="fa-solid fa-coins fa-2x"></i></span>
|
||||
<span class="fw-bold text-dark fs-6 ps-1">Margine max:</span>
|
||||
<span class="text-primary fs-6 fw-semibold">@MargineMax() %</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="card border-0 rounded-3 shadow">
|
||||
<div class="card-header bg-primary bg-gradient bg-opacity-25 p-3 rounded">
|
||||
<div class="d-flex align-items-center gap-2">
|
||||
<span class="text-primary"><i class="fa-solid fa-coins fa-2x"></i></span>
|
||||
<span class="fw-bold text-dark fs-6 ps-1">Margine min:</span>
|
||||
<span class="text-primary fs-6 fw-semibold">@MargineMin() %</span>
|
||||
<div class="row pt-3">
|
||||
<div class="col-4">
|
||||
<div class="card border-0 rounded-3 shadow">
|
||||
<div class="card-header bg-primary bg-gradient bg-opacity-25 p-3 rounded">
|
||||
<div class="d-flex align-items-center gap-2">
|
||||
<span class="text-primary"><i class="fa-solid fa-home fa-2x"></i></span>
|
||||
<span class="fw-bold text-dark fs-5 ps-1">Finestre/Offerta medio:</span>
|
||||
<span class="text-primary fs-5 fw-semibold">@NumFinestreMedio()</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="card border-0 rounded-3 shadow">
|
||||
<div class="card-header bg-primary bg-gradient bg-opacity-25 p-3 rounded">
|
||||
<div class="d-flex align-items-center gap-2">
|
||||
<span class="text-primary"><i class="fa-solid fa-coins fa-2x"></i></span>
|
||||
<span class="fw-bold text-dark fs-6 ps-1">Margine max:</span>
|
||||
<span class="text-primary fs-6 fw-semibold">@MargineMax() %</span>
|
||||
<div class="col-4">
|
||||
<div class="card border-0 rounded-3 shadow">
|
||||
<div class="card-header bg-primary bg-gradient bg-opacity-25 p-3 rounded">
|
||||
<div class="d-flex align-items-center gap-2">
|
||||
<span class="text-primary"><i class="fa-solid fa-home fa-2x"></i></span>
|
||||
<span class="fw-bold text-dark fs-6 ps-1">N° Finestre min:</span>
|
||||
<span class="text-primary fs-6 fw-semibold">@NumFinestreMin()</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row pt-3">
|
||||
<div class="col-4">
|
||||
<div class="card border-0 rounded-3 shadow">
|
||||
<div class="card-header bg-primary bg-gradient bg-opacity-25 p-3 rounded">
|
||||
<div class="d-flex align-items-center gap-2">
|
||||
<span class="text-primary"><i class="fa-solid fa-home fa-2x"></i></span>
|
||||
<span class="fw-bold text-dark fs-5 ps-1">Finestre/Offerta medio:</span>
|
||||
<span class="text-primary fs-5 fw-semibold">@NumFinestreMedio()</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="card border-0 rounded-3 shadow">
|
||||
<div class="card-header bg-primary bg-gradient bg-opacity-25 p-3 rounded">
|
||||
<div class="d-flex align-items-center gap-2">
|
||||
<span class="text-primary"><i class="fa-solid fa-home fa-2x"></i></span>
|
||||
<span class="fw-bold text-dark fs-6 ps-1">N° Finestre min:</span>
|
||||
<span class="text-primary fs-6 fw-semibold">@NumFinestreMin()</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="card border-0 rounded-3 shadow">
|
||||
<div class="card-header bg-primary bg-gradient bg-opacity-25 p-3 rounded">
|
||||
<div class="d-flex align-items-center gap-2">
|
||||
<span class="text-primary"><i class="fa-solid fa-home fa-2x"></i></span>
|
||||
<span class="fw-bold text-dark fs-6 ps-1">N° Finestre max:</span>
|
||||
<span class="text-primary fs-6 fw-semibold">@NumFinestreMax()</span>
|
||||
<div class="col-4">
|
||||
<div class="card border-0 rounded-3 shadow">
|
||||
<div class="card-header bg-primary bg-gradient bg-opacity-25 p-3 rounded">
|
||||
<div class="d-flex align-items-center gap-2">
|
||||
<span class="text-primary"><i class="fa-solid fa-home fa-2x"></i></span>
|
||||
<span class="fw-bold text-dark fs-6 ps-1">N° Finestre max:</span>
|
||||
<span class="text-primary fs-6 fw-semibold">@NumFinestreMax()</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
using System.Linq;
|
||||
using static EgwCoreLib.Lux.Core.Enums;
|
||||
|
||||
namespace Lux.UI.Components.Compo.Stats
|
||||
@@ -31,7 +30,7 @@ namespace Lux.UI.Components.Compo.Stats
|
||||
{
|
||||
double ans = 0;
|
||||
var filtRecord = AllRecords.Where(x => x.OffertState.Equals(OfferStates.Confirmed));
|
||||
if(filtRecord != null && filtRecord.Count() > 0)
|
||||
if (filtRecord != null && filtRecord.Count() > 0)
|
||||
ans = Math.Round((filtRecord.Sum(x => x.TotalPrice) - filtRecord.Sum(x => x.TotalCost)) / filtRecord.Sum(x => x.TotalPrice) * 100, 2);
|
||||
return ans;
|
||||
}
|
||||
@@ -41,7 +40,7 @@ namespace Lux.UI.Components.Compo.Stats
|
||||
double ans = 0;
|
||||
var filtRecord = AllRecords.Where(x => x.OffertState.Equals(OfferStates.Confirmed));
|
||||
if (filtRecord != null && filtRecord.Count() > 0)
|
||||
ans = Math.Round(filtRecord.Min(x=>x.MaxDiscount) * 100, 2);
|
||||
ans = Math.Round(filtRecord.Min(x => x.MaxDiscount) * 100, 2);
|
||||
return ans;
|
||||
}
|
||||
|
||||
@@ -65,7 +64,7 @@ namespace Lux.UI.Components.Compo.Stats
|
||||
|
||||
private double NumFinestreMin()
|
||||
{
|
||||
double ans = 0;
|
||||
double ans = 0;
|
||||
var filtRecord = AllRecords.Where(x => x.OffertState.Equals(OfferStates.Confirmed));
|
||||
if (filtRecord != null && filtRecord.Count() > 0)
|
||||
ans = filtRecord.Min(x => x.NumItems);
|
||||
@@ -105,12 +104,11 @@ namespace Lux.UI.Components.Compo.Stats
|
||||
FillColors[allStates[i]] = "hsla(0, 70%, 50%, 0.5)";
|
||||
break;
|
||||
}
|
||||
//FillColors[allStates[i]] = palette[i];
|
||||
BorderColors[allStates[i]] = ColorHelper.ToOpaque(FillColors[allStates[i]]);
|
||||
}
|
||||
|
||||
DatasetCount = AllRecords
|
||||
.Where(p => p.OffertState != null)
|
||||
//.Where(p => p.OffertState != null)
|
||||
.GroupBy(p => p.OffertState.ToString())
|
||||
.ToDictionary(g => g.Key, g => (double)g.Count());
|
||||
|
||||
@@ -133,7 +131,7 @@ namespace Lux.UI.Components.Compo.Stats
|
||||
}
|
||||
|
||||
DatasetDealerCount = AllRecords
|
||||
.Where(p => p.OffertState != null)
|
||||
//.Where(p => p.OffertState != null)
|
||||
.GroupBy(p => p.DealerNav.LastName)
|
||||
.ToDictionary(g => g.Key, g => (double)g.Count());
|
||||
|
||||
|
||||
@@ -62,7 +62,9 @@ namespace Lux.UI.Components.Compo.Stats
|
||||
|
||||
private Enums.RuidTagMode SelMode = Enums.RuidTagMode.Envir;
|
||||
|
||||
private StatsRealtimeDto? stats;
|
||||
#if false
|
||||
private StatsRealtimeDto? stats;
|
||||
#endif
|
||||
|
||||
#endregion Private Fields
|
||||
|
||||
|
||||
@@ -94,4 +94,4 @@ else
|
||||
}
|
||||
@* } *@
|
||||
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="BootstrapModal.ModalMode.Confirm" UserOptions=@modalOpt></BootstrapModal>
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="mMode" UserOptions=@modalOpt></BootstrapModal>
|
||||
@@ -161,4 +161,4 @@ else
|
||||
}
|
||||
}
|
||||
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="BootstrapModal.ModalMode.Confirm" UserOptions=@modalOpt></BootstrapModal>
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="mMode" UserOptions=@modalOpt></BootstrapModal>
|
||||
@@ -32,7 +32,9 @@ namespace Lux.UI.Components.Compo.Warehouse
|
||||
|
||||
#region Private Fields
|
||||
|
||||
private bool allSelected = false;
|
||||
#if false
|
||||
private bool allSelected = false;
|
||||
#endif
|
||||
|
||||
private string apiUrl = "";
|
||||
|
||||
|
||||
@@ -1,32 +1,39 @@
|
||||
@inherits BaseComp
|
||||
|
||||
<div class="p-2 shadow">
|
||||
<div class="d-flex justify-content-between">
|
||||
<div class="px-0 fs-4">
|
||||
<b>@Traduci("fabbisogno_fornitoreOrd")</b>
|
||||
</div>
|
||||
<div class="px-0 d-flex justify-content-between">
|
||||
<div class="input-group input-group-sm" style="width:10em;" title="@Traduci("ricerca")">
|
||||
<span class="input-group-text">@Traduci("stato")</span>
|
||||
<select class="form-select" @bind="@SearchVal">
|
||||
@foreach (var item in OrderStateList)
|
||||
{
|
||||
<option value="@item.ToString()">@Traduci("fornitore_"+item.ToString().ToLower())</option>
|
||||
}
|
||||
</select>
|
||||
@if (isLoading)
|
||||
{
|
||||
<LoadingData></LoadingData>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="p-2 shadow">
|
||||
<div class="d-flex justify-content-between">
|
||||
<div class="px-0 fs-4">
|
||||
<b>@Traduci("fabbisogno_fornitoreOrd")</b>
|
||||
</div>
|
||||
<div class="px-0 d-flex justify-content-between">
|
||||
<div class="input-group input-group-sm" style="width:10em;" title="@Traduci("ricerca")">
|
||||
<span class="input-group-text">@Traduci("stato")</span>
|
||||
<select class="form-select" @bind="@SearchVal">
|
||||
@foreach (var item in OrderStateList)
|
||||
{
|
||||
<option value="@item.ToString()">@Traduci("fornitore_" + item.ToString().ToLower())</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="my-2 py-1">
|
||||
@foreach (var item in ListRecords)
|
||||
<div class="my-2 py-1">
|
||||
@foreach (var item in ListRecords)
|
||||
{
|
||||
<BuyOrderDetail CurrRec="@item" EC_SaveBuyOrder="SaveBuyOrder"></BuyOrderDetail>
|
||||
}
|
||||
</div>
|
||||
@if (totalCount > numRecord)
|
||||
{
|
||||
<BuyOrderDetail CurrRec="@item" EC_SaveBuyOrder="SaveBuyOrder"></BuyOrderDetail>
|
||||
<div class="card-footer py-0 px-1">
|
||||
<EgwCoreLib.Razor.DataPager currPage="@currPage" PageSize="@numRecord" totalCount="@totalCount" numPageChanged="SavePage" numRecordChanged="SaveNumRec"></EgwCoreLib.Razor.DataPager>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
@if (totalCount > numRecord)
|
||||
{
|
||||
<div class="card-footer py-0 px-1">
|
||||
<EgwCoreLib.Razor.DataPager currPage="@currPage" PageSize="@numRecord" totalCount="@totalCount" numPageChanged="SavePage" numRecordChanged="SaveNumRec"></EgwCoreLib.Razor.DataPager>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
|
||||
@@ -142,7 +142,10 @@ namespace Lux.UI.Components.Compo.Warehouse
|
||||
}
|
||||
else
|
||||
{
|
||||
query = query.Where(x => x.ItemCode.Contains(searchVal, StringComparison.OrdinalIgnoreCase) || (x.ItemID != null && x.ItemNav.Description.Contains(searchVal, StringComparison.OrdinalIgnoreCase)));
|
||||
query = query.Where(x =>
|
||||
x.ItemCode.Contains(searchVal, StringComparison.OrdinalIgnoreCase)
|
||||
|| (x.ItemID != null && x.ItemNav != null && x.ItemNav.Description.Contains(searchVal, StringComparison.OrdinalIgnoreCase))
|
||||
);
|
||||
}
|
||||
}
|
||||
// effettuo search
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
}
|
||||
}
|
||||
</li>
|
||||
@if (QueuePaged == null || QueuePaged?.Count() == 0)
|
||||
@if (QueuePaged == null || QueuePaged.Count() == 0)
|
||||
{
|
||||
<li class="list-group-item align-items-lg-start">Nessun Job trovato!</li>
|
||||
}
|
||||
|
||||
@@ -235,4 +235,4 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="BootstrapModal.ModalMode.Confirm" UserOptions=@modalOpt></BootstrapModal>
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="mMode" UserOptions=@modalOpt></BootstrapModal>
|
||||
|
||||
@@ -16,7 +16,9 @@ namespace Lux.UI.Components.Pages
|
||||
|
||||
#region Private Fields
|
||||
|
||||
private ItemModel? editRecord = null;
|
||||
#if false
|
||||
private ItemModel? editRecord = null;
|
||||
#endif
|
||||
private bool isLoading = false;
|
||||
private List<GenClassModel> ListGenClass = new List<GenClassModel>();
|
||||
|
||||
@@ -83,7 +85,7 @@ namespace Lux.UI.Components.Pages
|
||||
{
|
||||
SelCodGroup = codGroup;
|
||||
}
|
||||
|
||||
|
||||
#endregion Private Methods
|
||||
}
|
||||
}
|
||||
@@ -1,38 +1,46 @@
|
||||
@page "/OffStats"
|
||||
@inherits BaseComp
|
||||
|
||||
<div class="p-2 shadow">
|
||||
<div class="d-flex align-items-center justify-content-between">
|
||||
<a href="@NavigationManager.ToAbsoluteUri("Offers")" class="btn btn-primary shadow-sm rounded-4 px-3">
|
||||
<i class="fa-solid fa-list me-1"></i>
|
||||
@Traduci("navMan_offerte")
|
||||
</a>
|
||||
<div class="input-group input-group shadow-sm" style="width:35em;">
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">Da:</span>
|
||||
<input type="datetime-local"
|
||||
class="form-control"
|
||||
min="@periodoLimit.Inizio.AddHours(-1).ToString("yyyy-MM-ddTHH:mm")"
|
||||
max="@DateTime.Now.Hour.ToString("yyyy-MM-ddTHH:mm")"
|
||||
@bind="@dtFrom" />
|
||||
|
||||
<span class="input-group-text">A:</span>
|
||||
<input type="datetime-local"
|
||||
class="form-control"
|
||||
min="@periodoLimit.Inizio.ToString("yyyy-MM-ddTHH:mm")"
|
||||
max="@DateTime.Now.Hour.ToString("yyyy-MM-ddTHH:mm")"
|
||||
@bind="@dtTo" />
|
||||
@if (isLoading)
|
||||
{
|
||||
<LoadingData></LoadingData>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="p-2 shadow">
|
||||
<div class="d-flex align-items-center justify-content-between">
|
||||
<a href="@NavigationManager.ToAbsoluteUri("Offers")" class="btn btn-primary shadow-sm rounded-4 px-3">
|
||||
<i class="fa-solid fa-list me-1"></i>
|
||||
@Traduci("navMan_offerte")
|
||||
</a>
|
||||
<div class="input-group input-group shadow-sm" style="width:35em;">
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">Da:</span>
|
||||
<input type="datetime-local"
|
||||
class="form-control"
|
||||
min="@periodoLimit.Inizio.AddHours(-1).ToString("yyyy-MM-ddTHH:mm")"
|
||||
max="@DateTime.Now.Hour.ToString("yyyy-MM-ddTHH:mm")"
|
||||
@bind="@dtFrom" />
|
||||
|
||||
<button class="btn btn-sm @btnReload" @onclick="DoReload">
|
||||
Carica <i class="fa-solid fa-arrows-rotate"></i>
|
||||
</button>
|
||||
<span class="input-group-text">A:</span>
|
||||
<input type="datetime-local"
|
||||
class="form-control"
|
||||
min="@periodoLimit.Inizio.ToString("yyyy-MM-ddTHH:mm")"
|
||||
max="@DateTime.Now.Hour.ToString("yyyy-MM-ddTHH:mm")"
|
||||
@bind="@dtTo" />
|
||||
|
||||
<button class="btn btn-sm @btnReload" @onclick="DoReload">
|
||||
Carica <i class="fa-solid fa-arrows-rotate"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="my-2 py-1">
|
||||
<OfferStats AllRecords="AllOfferRecords"></OfferStats>
|
||||
</div>
|
||||
</div>
|
||||
<div class="my-2 py-1">
|
||||
<OfferStats AllRecords="AllOfferRecords"></OfferStats>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
|
||||
@* <div class="card shadow">
|
||||
|
||||
@@ -284,4 +284,4 @@ else
|
||||
{
|
||||
<PrintModal url="@apiUrl" currId="@currId" repType="Offerta" EC_Close="ClosePrintModal"></PrintModal>
|
||||
}
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="BootstrapModal.ModalMode.Confirm" UserOptions=@modalOpt></BootstrapModal>
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="mMode" UserOptions=@modalOpt></BootstrapModal>
|
||||
@@ -166,7 +166,7 @@ namespace Lux.UI.Components.Pages
|
||||
private IProdService PService { get; set; } = null!;
|
||||
|
||||
[Inject]
|
||||
private NavigationManager NavigationManager { get;set; } = null!;
|
||||
private NavigationManager NavigationManager { get; set; } = null!;
|
||||
|
||||
private string txtState
|
||||
{
|
||||
@@ -229,7 +229,7 @@ namespace Lux.UI.Components.Pages
|
||||
|
||||
private void DoAdd()
|
||||
{
|
||||
int refNum = AllRecords.Where(x=>x.RefYear == DateTime.Today.Year).Max(x=>x.RefNum) + 1;
|
||||
int refNum = AllRecords.Where(x => x.RefYear == DateTime.Today.Year).Max(x => x.RefNum) + 1;
|
||||
EditRecord = new OfferModel()
|
||||
{
|
||||
RefYear = DateTime.Today.Year,
|
||||
@@ -498,7 +498,7 @@ namespace Lux.UI.Components.Pages
|
||||
bool needCalc = false;
|
||||
// recupero elenco items collegati alla riga d'ordine
|
||||
var ProdList = await PIService.GetByOrderRowAsync(rigaOrd.OrderRowID);
|
||||
List<string> TagList = ProdList.Select(x => x.ProdItemTag).ToList();
|
||||
List<string> TagList = ProdList.Select(x => x.ProdItemTag ?? "").ToList();
|
||||
//string serTagList = JsonConvert.SerializeObject(TagList);
|
||||
string serTagList = string.Join(",", TagList);
|
||||
// preparo richiesta serializzata e la accodo (viene inviata richiesta calcolo)
|
||||
|
||||
@@ -163,7 +163,8 @@ else
|
||||
<option value="">-- @Traduci("tutti") --</option>
|
||||
@foreach (var sType in Enum.GetValues(typeof(EgwCoreLib.Lux.Core.Enums.OrderStates)))
|
||||
{
|
||||
<option value="@sType">@Traduci("ordine_" + sType.ToString().ToLower())</option>
|
||||
@* <option value="@sType">@Traduci("ordine_" + sType.ToString().ToLower())</option> *@
|
||||
<option value="@sType">@Traduci($"ordine_{sType}".ToLower())</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
@@ -364,4 +365,4 @@ else
|
||||
<PrintModal url="@apiUrl" currId="@currId" repType="MaterialReqOrd" EC_Close="ClosePrintModal"></PrintModal>
|
||||
}
|
||||
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="BootstrapModal.ModalMode.Confirm" UserOptions=@modalOpt></BootstrapModal>
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="mMode" UserOptions=@modalOpt></BootstrapModal>
|
||||
@@ -84,7 +84,9 @@ namespace Lux.UI.Components.Pages
|
||||
|
||||
private int totalCount = 0;
|
||||
|
||||
private string txtStyle = "font-size: 1.2em; font-weight:bold; fill: white;";
|
||||
#if false
|
||||
private string txtStyle = "font-size: 1.2em; font-weight:bold; fill: white;";
|
||||
#endif
|
||||
|
||||
private BootstrapModal Modal = new();
|
||||
private string mTitle = "";
|
||||
@@ -360,7 +362,7 @@ namespace Lux.UI.Components.Pages
|
||||
var ProdList = await PIService.GetByOrderRowAsync(rigaOrd.OrderRowID);
|
||||
if (ProdList != null && ProdList.Count > 0)
|
||||
{
|
||||
TagsList = ProdList.Select(x => x.ProdItemTag).ToList();
|
||||
TagsList = ProdList.Select(x => x.ProdItemTag ?? "").ToList();
|
||||
}
|
||||
//string serTagList = JsonConvert.SerializeObject(TagList);
|
||||
string serTagList = string.Join(",", TagsList);
|
||||
|
||||
@@ -51,5 +51,5 @@
|
||||
</div>
|
||||
|
||||
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="BootstrapModal.ModalMode.Confirm" UserOptions=@modalOpt></BootstrapModal>
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="mMode" UserOptions=@modalOpt></BootstrapModal>
|
||||
|
||||
|
||||
@@ -16,12 +16,14 @@ namespace Lux.UI.Components.Pages
|
||||
|
||||
#region Private Fields
|
||||
|
||||
private bool addNew = false;
|
||||
private VocabolarioModel? currRec = null;
|
||||
private List<VocabolarioModel> FiltVocab = new();
|
||||
private List<VocabolarioModel> FullVocab = new();
|
||||
private bool isLoading = false;
|
||||
private string langDef = "IT";
|
||||
#if false
|
||||
private List<VocabolarioModel> FiltVocab = new();
|
||||
private bool addNew = false;
|
||||
private string langDef = "IT";
|
||||
#endif
|
||||
private List<LinguaModel> ListLingue = new();
|
||||
|
||||
private string SearchVal = "";
|
||||
@@ -32,8 +34,10 @@ namespace Lux.UI.Components.Pages
|
||||
|
||||
private string btnResetCss => string.IsNullOrEmpty(SearchVal) ? "btn-secondary" : "btn-primary";
|
||||
|
||||
#if false
|
||||
[Inject]
|
||||
private IVocabolarioService VService { get; set; } = null!;
|
||||
private IVocabolarioService VService { get; set; } = null!;
|
||||
#endif
|
||||
|
||||
#endregion Private Properties
|
||||
|
||||
|
||||
@@ -51,4 +51,4 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="BootstrapModal.ModalMode.Confirm" UserOptions=@modalOpt></BootstrapModal>
|
||||
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="mMode" UserOptions=@modalOpt></BootstrapModal>
|
||||
@@ -1,7 +1,6 @@
|
||||
using EgwCoreLib.Lux.Core.Generic;
|
||||
using EgwCoreLib.Razor;
|
||||
using Newtonsoft.Json;
|
||||
using System.Linq;
|
||||
using static EgwCoreLib.Lux.Core.Enums;
|
||||
using static Lux.UI.Components.Compo.Planner.BalanceProgGroup;
|
||||
|
||||
@@ -517,79 +516,81 @@ namespace Lux.UI.Components.Pages
|
||||
var currPOR = ListEstimRecords?.FirstOrDefault(x => x.OrderRowID == prodGroupItem.OrderRowID) ?? new OrderRowModel();
|
||||
|
||||
var currRec = await OrdService.GetByIdAsync(currPOR.OrderID, true);
|
||||
|
||||
var dictReq = new Dictionary<string, double>();
|
||||
// verifico se ho 1 sola macchina o molte...
|
||||
int numMacc = prodGroupItem.WorkGroupList.Count;
|
||||
if (numMacc == 1)
|
||||
if (currRec != null)
|
||||
{
|
||||
// SE vuoto il nome --> manual!
|
||||
var curRec = prodGroupItem.WorkGroupList.FirstOrDefault();
|
||||
string mName = string.IsNullOrEmpty(curRec.Key) ? "Manual" : curRec.Key;
|
||||
dictReq.Add(mName, 1);
|
||||
balData.MachineBalance = dictReq;
|
||||
balData.TagList = curRec.Value.TagList;
|
||||
}
|
||||
else
|
||||
{
|
||||
List<string> tagList = new();
|
||||
foreach (var cMacc in prodGroupItem.WorkGroupList)
|
||||
var dictReq = new Dictionary<string, double>();
|
||||
// verifico se ho 1 sola macchina o molte...
|
||||
int numMacc = prodGroupItem.WorkGroupList.Count;
|
||||
if (numMacc == 1)
|
||||
{
|
||||
dictReq.Add(cMacc.Key, 1.0 / numMacc);
|
||||
tagList.AddRange(cMacc.Value.TagList);
|
||||
// SE vuoto il nome --> manual!
|
||||
var curRec = prodGroupItem.WorkGroupList.FirstOrDefault();
|
||||
string mName = string.IsNullOrEmpty(curRec.Key) ? "Manual" : curRec.Key;
|
||||
dictReq.Add(mName, 1);
|
||||
balData.MachineBalance = dictReq;
|
||||
balData.TagList = curRec.Value.TagList;
|
||||
}
|
||||
// verifico tags distinct
|
||||
balData.MachineBalance = dictReq;
|
||||
balData.TagList = tagList.Distinct().ToList();
|
||||
else
|
||||
{
|
||||
List<string> tagList = new();
|
||||
foreach (var cMacc in prodGroupItem.WorkGroupList)
|
||||
{
|
||||
dictReq.Add(cMacc.Key, 1.0 / numMacc);
|
||||
tagList.AddRange(cMacc.Value.TagList);
|
||||
}
|
||||
// verifico tags distinct
|
||||
balData.MachineBalance = dictReq;
|
||||
balData.TagList = tagList.Distinct().ToList();
|
||||
}
|
||||
|
||||
// preparo oggetto richiesta
|
||||
Egw.Window.Data.Enums.QuestionModes cMode = Egw.Window.Data.Enums.QuestionModes.ORDER;
|
||||
Egw.Window.Data.Enums.QuestionOrderSubModes cSubMode = Egw.Window.Data.Enums.QuestionOrderSubModes.BALANCE;
|
||||
string reqKey = "";
|
||||
// preparo la richiesta di bilanciamento
|
||||
CalcRequestDTO calcReq = new CalcRequestDTO();
|
||||
// elenco tags ricevuto...
|
||||
List<string> TagList = balData.TagList;
|
||||
string serTagList = string.Join(",", TagList);
|
||||
|
||||
// preparo richiesta serializzata e la accodo (viene inviata richiesta calcolo)
|
||||
Dictionary<string, string> dictArgs = new Dictionary<string, string>();
|
||||
// creo registrazione richiesta...
|
||||
var ruid = await CRService.AddRequestAsync($"{currPOR.Envir}", $"{(int)cMode}-{(int)cSubMode}", currPOR.OrderRowUID);
|
||||
dictArgs.Add("UID", currPOR.OrderRowUID);
|
||||
dictArgs.Add("Group", $"{prodGroupItem.GrpIdx}");
|
||||
// aggiungo RUID effettivo
|
||||
dictArgs.Add("RUID", ruid);
|
||||
dictArgs.Add("OrderUID", currRec.OrderCode);
|
||||
dictArgs.Add("Mode", $"{(int)cMode}");
|
||||
dictArgs.Add("SubMode", $"{(int)cSubMode}");
|
||||
dictArgs.Add("TagList", serTagList);
|
||||
// serializzo la richiesta di bilanciamento...
|
||||
string reqBalance = JsonConvert.SerializeObject(balData.MachineBalance);
|
||||
dictArgs.Add("ReqBalance", reqBalance);
|
||||
dictArgs.Add("BarLenght", $"{balData.BarLenght}");
|
||||
calcReq = new CalcRequestDTO()
|
||||
{
|
||||
DictExec = dictArgs,
|
||||
EnvType = currPOR.Envir
|
||||
};
|
||||
// chiave: composta da cMode, submode, UID riga...
|
||||
reqKey = $"{cMode}:{cSubMode}:{currPOR.OrderRowUID}.{prodGroupItem.GrpIdx}";
|
||||
// invio richiesta
|
||||
await PService.EnqueueRequestAsync("Balance", reqKey, calcReq);
|
||||
// parto dalla history attuale
|
||||
var currHist = currRec.LogHistory;
|
||||
// aggiungo evento...
|
||||
currHist.Add(new TaskHistDTO()
|
||||
{
|
||||
DtEvent = DateTime.Now,
|
||||
UserName = "Default User",
|
||||
Message = $"{reqKey}",
|
||||
IconCss = "fa-solid fa-hourglass-start"
|
||||
});
|
||||
currRec.LogHistory = currHist;
|
||||
await OrdService.UpsertAsync(currRec);
|
||||
}
|
||||
|
||||
// preparo oggetto richiesta
|
||||
Egw.Window.Data.Enums.QuestionModes cMode = Egw.Window.Data.Enums.QuestionModes.ORDER;
|
||||
Egw.Window.Data.Enums.QuestionOrderSubModes cSubMode = Egw.Window.Data.Enums.QuestionOrderSubModes.BALANCE;
|
||||
string reqKey = "";
|
||||
// preparo la richiesta di bilanciamento
|
||||
CalcRequestDTO calcReq = new CalcRequestDTO();
|
||||
// elenco tags ricevuto...
|
||||
List<string> TagList = balData.TagList;
|
||||
string serTagList = string.Join(",", TagList);
|
||||
|
||||
// preparo richiesta serializzata e la accodo (viene inviata richiesta calcolo)
|
||||
Dictionary<string, string> dictArgs = new Dictionary<string, string>();
|
||||
// creo registrazione richiesta...
|
||||
var ruid = await CRService.AddRequestAsync($"{currPOR.Envir}", $"{(int)cMode}-{(int)cSubMode}", currPOR.OrderRowUID);
|
||||
dictArgs.Add("UID", currPOR.OrderRowUID);
|
||||
dictArgs.Add("Group", $"{prodGroupItem.GrpIdx}");
|
||||
// aggiungo RUID effettivo
|
||||
dictArgs.Add("RUID", ruid);
|
||||
dictArgs.Add("OrderUID", currRec.OrderCode);
|
||||
dictArgs.Add("Mode", $"{(int)cMode}");
|
||||
dictArgs.Add("SubMode", $"{(int)cSubMode}");
|
||||
dictArgs.Add("TagList", serTagList);
|
||||
// serializzo la richiesta di bilanciamento...
|
||||
string reqBalance = JsonConvert.SerializeObject(balData.MachineBalance);
|
||||
dictArgs.Add("ReqBalance", reqBalance);
|
||||
dictArgs.Add("BarLenght", $"{balData.BarLenght}");
|
||||
calcReq = new CalcRequestDTO()
|
||||
{
|
||||
DictExec = dictArgs,
|
||||
EnvType = currPOR.Envir
|
||||
};
|
||||
// chiave: composta da cMode, submode, UID riga...
|
||||
reqKey = $"{cMode}:{cSubMode}:{currPOR.OrderRowUID}.{prodGroupItem.GrpIdx}";
|
||||
// invio richiesta
|
||||
await PService.EnqueueRequestAsync("Balance", reqKey, calcReq);
|
||||
// parto dalla history attuale
|
||||
var currHist = currRec.LogHistory;
|
||||
// aggiungo evento...
|
||||
currHist.Add(new TaskHistDTO()
|
||||
{
|
||||
DtEvent = DateTime.Now,
|
||||
UserName = "Default User",
|
||||
Message = $"{reqKey}",
|
||||
IconCss = "fa-solid fa-hourglass-start"
|
||||
});
|
||||
currRec.LogHistory = currHist;
|
||||
await OrdService.UpsertAsync(currRec);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -619,7 +620,7 @@ namespace Lux.UI.Components.Pages
|
||||
{
|
||||
ListOdl = ListOdlAll.Where(x => FiltEnvir == null || x.Envir == FiltEnvir).ToList();
|
||||
}
|
||||
|
||||
|
||||
// if (ListEstimRecordsAll != null && ListEstimRecordsAll.Count > 0)
|
||||
// {
|
||||
// ListEstimRecords = ListEstimRecordsAll.Where(x => x.Envir.ToString() == searchValByEnvir).ToList();
|
||||
@@ -632,7 +633,7 @@ namespace Lux.UI.Components.Pages
|
||||
// {
|
||||
// ListOdl = ListOdlAll.Where(x => x.Envir.ToString() == searchValByEnvir).ToList();
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Filtro e paginazione
|
||||
@@ -646,7 +647,7 @@ namespace Lux.UI.Components.Pages
|
||||
.Take(numRecord)
|
||||
.ToList();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
#if false
|
||||
|
||||
@@ -659,8 +660,8 @@ namespace Lux.UI.Components.Pages
|
||||
throw new global::System.NotImplementedException();
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endregion Private Methods
|
||||
|
||||
#endregion Private Methods
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,7 @@
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<UserSecretsId>aspnet-Lux.UI-a758c101-a2f4-4e38-977d-1c4887dbbd50</UserSecretsId>
|
||||
<Version>1.1.2606.1015</Version>
|
||||
<Version>1.1.2606.1016</Version>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<body>
|
||||
<i>LUX - Web Windows MES</i>
|
||||
<h4>Versione: 1.1.2606.1015</h4>
|
||||
<h4>Versione: 1.1.2606.1016</h4>
|
||||
<br /> Note di rilascio:
|
||||
<ul>
|
||||
<li>
|
||||
|
||||
@@ -1 +1 @@
|
||||
1.1.2606.1015
|
||||
1.1.2606.1016
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<item>
|
||||
<version>1.1.2606.1015</version>
|
||||
<version>1.1.2606.1016</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