287 lines
17 KiB
Plaintext
287 lines
17 KiB
Plaintext
@page "/Offers"
|
|
@inherits BaseComp
|
|
|
|
@if (EditRecord != null)
|
|
{
|
|
<div class="p-2 shadow rounded-2 border">
|
|
<div class="d-flex fs-4 align-items-center justify-content-between">
|
|
<div class="px-1 fs-3">
|
|
<b>@EditRecord.OfferCode</b>
|
|
</div>
|
|
<div class="px-0 row">
|
|
<div class="col px-0">
|
|
<span @onclick="() => AdvStep(Enums.CompileStep.Header)">
|
|
<StepArrow ObjId="1" StepText="@Traduci("offerta_testata")" BlockStyle="@(ArrowBackCol(Enums.CompileStep.Header))" StrokeWidth="4" ObjW="360" ObjH="60" StrokeColors="@listBord01" TipAngle="90" TextStyle="@txtStyle"></StepArrow>
|
|
</span>
|
|
</div>
|
|
<div class="col px-0">
|
|
<span @onclick="() => AdvStep(Enums.CompileStep.General)">
|
|
<StepArrow ObjId="2" StepText="@Traduci("offerta_generale")" BlockStyle="@(ArrowBackCol(Enums.CompileStep.General))" StrokeWidth="4" ObjW="360" ObjH="60" StrokeColors="@listBord01" TipAngle="90" TextStyle="@txtStyle"></StepArrow>
|
|
</span>
|
|
</div>
|
|
<div class="col px-0">
|
|
<span @onclick="() => AdvStep(Enums.CompileStep.Rows)">
|
|
<StepArrow ObjId="3" StepText="@Traduci("offerta_righe")" BlockStyle="@(ArrowBackCol(Enums.CompileStep.Rows))" StrokeWidth="4" ObjW="360" ObjH="60" StrokeColors="@listBord01" TipAngle="90" TextStyle="@txtStyle"></StepArrow>
|
|
</span>
|
|
</div>
|
|
<div class="col px-0">
|
|
<span @onclick="() => AdvStep(Enums.CompileStep.Delivery)">
|
|
<StepArrow ObjId="4" StepText="@Traduci("offerta_consegna")" BlockStyle="@(ArrowBackCol(Enums.CompileStep.Delivery))" StrokeWidth="4" ObjW="360" ObjH="60" StrokeColors="@listBord01" TipAngle="90" TextStyle="@txtStyle"></StepArrow>
|
|
</span>
|
|
</div>
|
|
@* <div class="col px-0">
|
|
<span @onclick="() => AdvStep(Enums.CompileStep.FinalCheck)">
|
|
<StepArrow ObjId="5" StepText="Controlli" BlockStyle="@(ArrowBackCol(Enums.CompileStep.FinalCheck))" StrokeWidth="4" ObjW="360" ObjH="60" StrokeColors="@listBord01" TipAngle="90" TextStyle="@txtStyle"></StepArrow>
|
|
</span>
|
|
</div> *@
|
|
</div>
|
|
<button type="button" class="btn-close shadow-sm rounded-4 px-3" data-bs-dismiss="card" aria-label="Close" title="@Traduci("chiudi")" @onclick="() => DoEsc()">
|
|
</button>
|
|
</div>
|
|
|
|
<div class="my-2 py-1 rounded-2">
|
|
@if (currStep == Enums.CompileStep.Header)
|
|
{
|
|
<OfferMan CurrRecord="EditRecord" EC_Cancel="DoCancel" EC_Updated="DoSave" EC_Changed="SetDirty"></OfferMan>
|
|
}
|
|
else if (currStep == Enums.CompileStep.General)
|
|
{
|
|
<OfferCommonPar CurrRecord="EditRecord" EC_Cancel="DoCancel" EC_Updated="DoSave"></OfferCommonPar>
|
|
}
|
|
else if (currStep == Enums.CompileStep.Rows)
|
|
{
|
|
<OfferRowMan CurrRecord="EditRecord" DisplayMode="EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit"></OfferRowMan>
|
|
}
|
|
else if (currStep == Enums.CompileStep.Delivery)
|
|
{
|
|
<OfferDelivery CurrRecord="EditRecord" EC_Cancel="DoCancel" EC_Updated="DoSave"></OfferDelivery>
|
|
}
|
|
@* else if (currStep == Enums.CompileStep.FinalCheck)
|
|
{
|
|
<OfferCheck CurrRecord="EditRecord" EC_Cancel="DoCancel"></OfferCheck>
|
|
} *@
|
|
</div>
|
|
</div>
|
|
}
|
|
else
|
|
{
|
|
if (EditStateRec != null)
|
|
{
|
|
<div class="modal" tabindex="-1" style="display:block; background-color: rgba(10,10,10,.6);" role="dialog">
|
|
<div class="modal-dialog modal-lg">
|
|
<div class="modal-content">
|
|
<div class="modal-header text-bg-info bg-gradient bg-opacity-50">
|
|
<div class="modal-title fs-3">@Traduci("offerta_impostaStato")</div>
|
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" @onclick="() => EditState(null)">
|
|
</button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<div class="row">
|
|
@foreach (var itemState in Enum.GetValues(typeof(Enums.OfferStates)).Cast<Enums.OfferStates>())
|
|
{
|
|
<div class="col">
|
|
<button class="btn btn-sm btn-primary w-100 m-1" @onclick="() => SetState(EditStateRec, itemState)">@Traduci("offerta_" + itemState.ToString().ToLower())</button>
|
|
</div>
|
|
}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
}
|
|
<div class="p-2 shadow rounded-2 border">
|
|
<div class="d-flex align-items-center justify-content-between">
|
|
<div class="px-0">
|
|
<button class="btn btn-success shadow-sm rounded-4 px-3" @onclick="DoAdd">
|
|
<i class="fa-solid fa-cart-plus"></i> @Traduci("nuova")
|
|
</button>
|
|
<a href="@NavigationManager.ToAbsoluteUri("OffStats")" class="btn btn-primary shadow-sm rounded-4 px-3">
|
|
<i class="fa-solid fa-chart-area"></i>
|
|
@Traduci("offerta_stats")
|
|
</a>
|
|
</div>
|
|
<div class="row align-items-center pe-2">
|
|
<div class="col-2 px-1">
|
|
<div class="input-group">
|
|
<label class="input-group-text bg-opacity-50 px-2">@Traduci("stato")</label>
|
|
<select class="form-select form-select-sm px-2" @bind="@FiltState">
|
|
<option value="">-- @Traduci("tutti") --</option>
|
|
@foreach (var item in Enum.GetNames(typeof(Enums.OfferStates)))
|
|
{
|
|
<option value="@item">@Traduci("offerta_" + item.ToString().ToLower())</option>
|
|
}
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="col-3 px-1">
|
|
<div class="input-group" title="@Traduci("ricerca")">
|
|
<span class="input-group-text"><i class="fas fa-search"></i></span>
|
|
<input type="text" class="form-control px-2" accesskey="/" placeholder="Cerca [/] (3+ char)" @bind="@SearchVal">
|
|
<button class="btn @btnResetCss" @onclick="ResetSearch"><i class="fas fa-ban"></i></button>
|
|
</div>
|
|
</div>
|
|
<div class="col-7 px-1">
|
|
<PeriodoSel E_PeriodoSel="SetPeriodo" CurrPeriodo="PeriodoSel" PeriodoLabel="@Traduci("periodo")" DictSelect="CustomSelDict"></PeriodoSel>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="py-2 rounded-2">
|
|
@if (isLoading)
|
|
{
|
|
<div class="col-12">
|
|
<LoadingData></LoadingData>
|
|
</div>
|
|
}
|
|
else if (totalCount == 0)
|
|
{
|
|
<div class="col-12">
|
|
<div class="alert alert-info text-center display-4">@Traduci("noRecord")</div>
|
|
</div>
|
|
}
|
|
else
|
|
{
|
|
<div class="row">
|
|
<div class="@DivMainCss">
|
|
<table class="table table-sm table-striped">
|
|
<thead>
|
|
<tr>
|
|
<th>
|
|
<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)
|
|
{
|
|
<th>@Traduci("id")</th>
|
|
}
|
|
<th>@Traduci("data")</th>
|
|
@if (SelRecord == null)
|
|
{
|
|
<th class="text-center">@Traduci("stato")</th>
|
|
}
|
|
<th>@Traduci("codice")</th>
|
|
<th>@Traduci("venditore")</th>
|
|
<th>@Traduci("cliente")</th>
|
|
@if (SelRecord == null)
|
|
{
|
|
<th>@Traduci("descrizione")</th>
|
|
<th class="text-end" title="# Righe"><i class="fa-solid fa-list"></i></th>
|
|
<th class="text-end" title="# Articoli"><i class="fa-regular fa-file-lines"></i></th>
|
|
<th class="text-end" title="# Componenti Ordine"><i class="fa-solid fa-folder-tree"></i></th>
|
|
}
|
|
<th class="text-end">@Traduci("importo")</th>
|
|
@if (SelRecord == null)
|
|
{
|
|
<th class="text-end">@Traduci("margine")</th>
|
|
}
|
|
<th class="text-end"> </th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@foreach (var item in ListRecords)
|
|
{
|
|
<tr class="@CheckSelect(item)">
|
|
<td>
|
|
<button class="btn btn-sm btn-primary" @onclick="() => DoSelect(item)"><i class="fa-solid fa-magnifying-glass"></i></button>
|
|
<button class="btn btn-sm btn-info" @onclick="() => DoEdit(item)"><i class="fa-solid fa-pencil"></i></button>
|
|
<button class="btn btn-sm btn-warning" @onclick="() => DoClone(item)" title="Duplica Offerta"><i class="fa-solid fa-wand-magic"></i></button>
|
|
</td>
|
|
@if (SelRecord == null)
|
|
{
|
|
<td>@item.OfferID</td>
|
|
}
|
|
<td>
|
|
<div class="small" title="@Traduci("inserita")"><i class="fa-solid fa-circle"></i> @($"{item.Inserted:yyyy-MM-dd}")</div>
|
|
<div class="small text-secondary" title="@Traduci("scadenza")"><i class="fa-solid fa-hourglass-half"></i> @($"{item.ValidUntil:yyyy-MM-dd}")</div>
|
|
</td>
|
|
@if (SelRecord == null)
|
|
{
|
|
<td>
|
|
<button class="btn btn-sm w-100 bg-@ButtonStateCss(item) bg-gradient bg-opacity-25 text-dark rounded-pill" @onclick="() => EditState(item)">
|
|
@Traduci("offerta_" + @item.OffertState.ToString().ToLower())
|
|
</button>
|
|
</td>
|
|
}
|
|
<td>
|
|
@item.OfferCode
|
|
<div class="small text-secondary">@item.Envir</div>
|
|
</td>
|
|
<td>
|
|
@if (item.DealerNav != null)
|
|
{
|
|
<div class=""><b>@item.DealerNav.FirstName</b> @item.DealerNav.LastName</div>
|
|
<div class="small">@item.DealerNav.VAT</div>
|
|
}
|
|
</td>
|
|
<td>
|
|
@if (item.CustomerNav != null)
|
|
{
|
|
<div class=""><b>@item.CustomerNav.FirstName</b> @item.CustomerNav.LastName</div>
|
|
<div class="small">@item.CustomerNav.VAT</div>
|
|
}
|
|
</td>
|
|
@if (SelRecord == null)
|
|
{
|
|
<td>@item.Description</td>
|
|
<td class="text-end">
|
|
@item.NumRows
|
|
</td>
|
|
<td class="text-end">
|
|
@item.NumItems
|
|
</td>
|
|
<td class="text-end">
|
|
@item.NumProdItems
|
|
</td>
|
|
}
|
|
<td class="text-end">
|
|
<div class="fw-bold" title="Prezzo Finito">@item.TotalPrice.ToString("C2")</div>
|
|
<div class="small text-secondary" title="RockBottom Price">(@item.TotalCost.ToString("C2"))</div>
|
|
</td>@if (SelRecord == null)
|
|
{
|
|
<td class="text-end" title="Margine / Sconto MAX applicabile">
|
|
@item.MaxDiscount.ToString("P2")
|
|
</td>
|
|
}
|
|
<td class="text-center">
|
|
<div class="btn-group" role="group">
|
|
<a href="@(DownloadUrl(item.OfferID))" target="_blank" title="Stampa" class="btn btn-sm btn-primary">
|
|
<i class="fa-solid fa-print"></i>
|
|
</a>
|
|
@if (SelRecord == null)
|
|
{
|
|
<button class="btn btn-sm btn-primary" title="@Traduci("print_scegliTemplate")" @onclick="() => SelectOptPrint(item.OfferID)">
|
|
<i class="fa-solid fa-up-right-from-square"></i>
|
|
</button>
|
|
}
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
}
|
|
</tbody>
|
|
@if (totalCount > numRecord)
|
|
{
|
|
<tfoot>
|
|
<tr>
|
|
<td colspan="15">
|
|
<EgwCoreLib.Razor.DataPager currPage="@currPage" PageSize="@numRecord" totalCount="@totalCount" numPageChanged="SavePage" numRecordChanged="SaveNumRec"></EgwCoreLib.Razor.DataPager>
|
|
</td>
|
|
</tr>
|
|
</tfoot>
|
|
}
|
|
</table>
|
|
</div>
|
|
@if (SelRecord != null)
|
|
{
|
|
<div class="col-6">
|
|
<OfferRowMan CurrRecord="@SelRecord" DisplayMode="EgwCoreLib.Lux.Core.Enums.DisplayMode.Preview" EC_Updated="() => ForceReload()" EC_Action="DoAction"></OfferRowMan>
|
|
</div>
|
|
}
|
|
</div>
|
|
}
|
|
</div>
|
|
</div>
|
|
}
|
|
|
|
@if (selectOptPrint)
|
|
{
|
|
<PrintModal url="@apiUrl" currId="@currId" repType="Offerta" EC_Close="ClosePrintModal"></PrintModal>
|
|
}
|
|
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="mMode" UserOptions=@modalOpt></BootstrapModal> |