change overlay close button to be more visible
fix inventory sorting on salesRep pages
This commit is contained in:
parent
1afbf20b15
commit
15dfabb36d
35 changed files with 92 additions and 85 deletions
|
@ -23,10 +23,6 @@
|
||||||
<div class="list-group mt-2">
|
<div class="list-group mt-2">
|
||||||
<div class="list-group-item d-print-none">
|
<div class="list-group-item d-print-none">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@*
|
|
||||||
<div class="col-sm-4 action-link-element" onclick="@(() => SortProducts(ProductSort.Description))"><i class="bi-sort-alpha-down"></i> Navn <i class="bi-sort-alpha-up-alt"></i></div>
|
|
||||||
<div class="col-sm-3 action-link-element" onclick="@(() => SortProducts(ProductSort.Sku))"><i class="bi-sort-alpha-down"></i> Varenr <i class="bi-sort-alpha-up-alt"></i></div>
|
|
||||||
*@
|
|
||||||
<div class="col-sm-7 text-end">
|
<div class="col-sm-7 text-end">
|
||||||
<div class="form-check form-check-inline">
|
<div class="form-check form-check-inline">
|
||||||
<input class="form-check-input" type="checkbox" id="sortOrder" checked @onclick="@SetSortOrder"/>
|
<input class="form-check-input" type="checkbox" id="sortOrder" checked @onclick="@SetSortOrder"/>
|
||||||
|
@ -34,17 +30,17 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check form-check-inline">
|
<div class="form-check form-check-inline">
|
||||||
<input class="form-check-input" type="radio" name="sortCol" id="description" value="description"
|
<input class="form-check-input" type="radio" name="sortCol" id="description" value="description"
|
||||||
onclick="@(() => SortProducts(ProductSort.Description))">
|
onclick="@(() => SortDisplayList(SortColumn.Description))">
|
||||||
<label class="form-check-label" for="description">Navn</label>
|
<label class="form-check-label" for="description">Navn</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check form-check-inline">
|
<div class="form-check form-check-inline">
|
||||||
<input class="form-check-input" type="radio" name="sortCol" id="itemNumber" value="itemNumber"
|
<input class="form-check-input" type="radio" name="sortCol" id="itemNumber" value="itemNumber"
|
||||||
onclick="@(() => SortProducts(ProductSort.Sku))">
|
onclick="@(() => SortDisplayList(SortColumn.Sku))">
|
||||||
<label class="form-check-label" for="itemNumber">Vare Nr.</label>
|
<label class="form-check-label" for="itemNumber">Vare Nr.</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check form-check-inline">
|
<div class="form-check form-check-inline">
|
||||||
<input class="form-check-input" type="radio" name="sortCol" id="lastInvoiceDate" value="itemDate"
|
<input class="form-check-input" type="radio" name="sortCol" id="lastInvoiceDate" value="itemDate"
|
||||||
onclick="@(() => SortProducts(ProductSort.LastInvoiceDate))" checked>
|
onclick="@(() => SortDisplayList(SortColumn.LastInvoiceDate))" checked>
|
||||||
<label class="form-check-label" for="lastInvoiceDate">Sidst leveret</label>
|
<label class="form-check-label" for="lastInvoiceDate">Sidst leveret</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -53,7 +49,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@foreach (var product in FilteredList)
|
@foreach (var product in DisplayList)
|
||||||
{
|
{
|
||||||
<div class="list-group-item">
|
<div class="list-group-item">
|
||||||
<div class="row align-items-center">
|
<div class="row align-items-center">
|
||||||
|
|
|
@ -36,46 +36,47 @@ public partial class CustomerInventoryListComponent
|
||||||
|
|
||||||
// ##############################################3333############
|
// ##############################################3333############
|
||||||
// private variables
|
// private variables
|
||||||
|
private List<ProductInventoryItemView> DisplayList { get; set; }
|
||||||
private bool Descending { get; set; } = true;
|
private bool Descending { get; set; } = true;
|
||||||
private string SearchTerm { get; set; } = "";
|
private string DisplayFilter { get; set; } = "";
|
||||||
private List<ProductInventoryItemView> FilteredList { get; set; }
|
private SortColumn SortColumn { get; set; } = SortColumn.LastInvoiceDate;
|
||||||
private ProductSort SortColumn { get; set; } = ProductSort.LastInvoiceDate;
|
|
||||||
|
|
||||||
protected override void OnInitialized()
|
protected override void OnParametersSet()
|
||||||
{
|
{
|
||||||
// sort base list
|
// sort the base Inventory
|
||||||
Inventory = Utils.SortInventory(Inventory, SortColumn, Descending);
|
Inventory = Utils.SortInventory(Inventory, SortColumn, Descending);
|
||||||
// initialize FilteredList
|
// initialize FilteredList
|
||||||
FilterItems(SearchTerm);
|
ApplyInventoryFilter(DisplayFilter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void SetSortOrder()
|
private void SetSortOrder()
|
||||||
{
|
{
|
||||||
Descending = !Descending;
|
Descending = !Descending;
|
||||||
FilteredList = Utils.SortInventory(FilteredList, SortColumn, Descending);
|
SortDisplayList(SortColumn);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void SortDisplayList(SortColumn sortColumn)
|
||||||
|
{
|
||||||
|
SortColumn = sortColumn;
|
||||||
|
DisplayList = Utils.SortInventory(DisplayList, SortColumn, Descending);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void OnSearchChanged(string searchTerm)
|
private void OnSearchChanged(string searchTerm)
|
||||||
{
|
{
|
||||||
// use search input to filter list
|
// use search input to filter list
|
||||||
FilterItems(searchTerm);
|
ApplyInventoryFilter(searchTerm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void FilterItems(string filter)
|
private void ApplyInventoryFilter(string searchTerm)
|
||||||
{
|
{
|
||||||
SearchTerm = filter;
|
DisplayFilter = searchTerm;
|
||||||
FilteredList = string.IsNullOrWhiteSpace(filter)
|
DisplayList = string.IsNullOrWhiteSpace(searchTerm)
|
||||||
? Inventory
|
? Inventory
|
||||||
: Inventory.Where(i => i.Description.ToLower().Contains(filter.ToLower())).ToList();
|
: Inventory.Where(i => i.Description.ToLower().Contains(searchTerm.ToLower())).ToList();
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void SortProducts(ProductSort column)
|
|
||||||
{
|
|
||||||
FilteredList = Utils.SortInventory(FilteredList, column, Descending);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -33,17 +33,17 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check form-check-inline">
|
<div class="form-check form-check-inline">
|
||||||
<input class="form-check-input" type="radio" name="sortCol" id="description" value="description"
|
<input class="form-check-input" type="radio" name="sortCol" id="description" value="description"
|
||||||
onclick="@(() => SortProducts(ProductSort.Description))">
|
onclick="@(() => SortDisplayList(SortColumn.Description))">
|
||||||
<label class="form-check-label" for="description">Navn</label>
|
<label class="form-check-label" for="description">Navn</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check form-check-inline">
|
<div class="form-check form-check-inline">
|
||||||
<input class="form-check-input" type="radio" name="sortCol" id="itemNumber" value="itemNumber"
|
<input class="form-check-input" type="radio" name="sortCol" id="itemNumber" value="itemNumber"
|
||||||
onclick="@(() => SortProducts(ProductSort.Sku))">
|
onclick="@(() => SortDisplayList(SortColumn.Sku))">
|
||||||
<label class="form-check-label" for="itemNumber">Vare Nr.</label>
|
<label class="form-check-label" for="itemNumber">Vare Nr.</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check form-check-inline">
|
<div class="form-check form-check-inline">
|
||||||
<input class="form-check-input" type="radio" name="sortCol" id="lastInvoiceDate" value="itemDate"
|
<input class="form-check-input" type="radio" name="sortCol" id="lastInvoiceDate" value="itemDate"
|
||||||
onclick="@(() => SortProducts(ProductSort.LastInvoiceDate))" checked>
|
onclick="@(() => SortDisplayList(SortColumn.LastInvoiceDate))" checked>
|
||||||
<label class="form-check-label" for="lastInvoiceDate">Sidst leveret</label>
|
<label class="form-check-label" for="lastInvoiceDate">Sidst leveret</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -25,46 +25,53 @@ using Wonky.Entity.Views;
|
||||||
namespace Wonky.Client.Components;
|
namespace Wonky.Client.Components;
|
||||||
public partial class CustomerProductCheckListComponent
|
public partial class CustomerProductCheckListComponent
|
||||||
{
|
{
|
||||||
|
// ##############################################################
|
||||||
|
[Inject] public ILocalStorageService Storage { get; set; }
|
||||||
|
|
||||||
|
// ##############################################################
|
||||||
[Parameter] public List<ProductInventoryItemView> Inventory { get; set; } = new();
|
[Parameter] public List<ProductInventoryItemView> Inventory { get; set; } = new();
|
||||||
[Parameter] public string CompanyId { get; set; } = "";
|
[Parameter] public string CompanyId { get; set; } = "";
|
||||||
[Inject] public ILocalStorageService Storage { get; set; }
|
|
||||||
// private variables
|
// ##############################################################
|
||||||
private bool Descending { get; set; } = true;
|
private bool Descending { get; set; } = true;
|
||||||
private string SearchTerm { get; set; } = "";
|
private string DisplayFilter { get; set; } = "";
|
||||||
private List<ProductInventoryItemView> FilteredList { get; set; } = new();
|
private List<ProductInventoryItemView> DisplayList { get; set; } = new();
|
||||||
|
private SortColumn SortColumn { get; set; } = SortColumn.LastInvoiceDate;
|
||||||
|
|
||||||
|
|
||||||
protected override void OnParametersSet()
|
protected override void OnParametersSet()
|
||||||
{
|
{
|
||||||
Inventory = Utils.SortInventory(Inventory, ProductSort.LastInvoiceDate, Descending);
|
Inventory = Utils.SortInventory(Inventory, SortColumn, Descending);
|
||||||
FilterItems(SearchTerm);
|
ApplyInventoryFilter(DisplayFilter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void SetSortOrder()
|
private void SetSortOrder()
|
||||||
{
|
{
|
||||||
Descending = !Descending;
|
Descending = !Descending;
|
||||||
FilteredList = Utils.SortInventory(FilteredList, ProductSort.LastInvoiceDate, Descending);
|
DisplayList = Utils.SortInventory(DisplayList, SortColumn, Descending);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void OnSearchChanged(string searchTerm)
|
private void OnSearchChanged(string searchTerm)
|
||||||
{
|
{
|
||||||
FilterItems(searchTerm);
|
ApplyInventoryFilter(searchTerm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void FilterItems(string filter)
|
private void ApplyInventoryFilter(string filter)
|
||||||
{
|
{
|
||||||
SearchTerm = filter;
|
DisplayFilter = filter;
|
||||||
FilteredList = string.IsNullOrWhiteSpace(filter)
|
DisplayList = string.IsNullOrWhiteSpace(filter)
|
||||||
? Inventory
|
? Inventory
|
||||||
: Inventory.Where(i => i.Description.ToLower().Contains(filter.ToLower())).ToList();
|
: Inventory.Where(i => i.Description.ToLower().Contains(filter.ToLower())).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void SortProducts(ProductSort column)
|
private void SortDisplayList(SortColumn column)
|
||||||
{
|
{
|
||||||
FilteredList = Utils.SortInventory(Inventory, column, Descending);
|
SortColumn = column;
|
||||||
|
DisplayList = Utils.SortInventory(DisplayList, SortColumn, Descending);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -33,17 +33,17 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check form-check-inline">
|
<div class="form-check form-check-inline">
|
||||||
<input class="form-check-input" type="radio" name="sortCol" id="description" value="description"
|
<input class="form-check-input" type="radio" name="sortCol" id="description" value="description"
|
||||||
onclick="@(() => SortProducts(ProductSort.Description))">
|
onclick="@(() => SortProducts(Enums.SortColumn.Description))">
|
||||||
<label class="form-check-label" for="description">Navn</label>
|
<label class="form-check-label" for="description">Navn</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check form-check-inline">
|
<div class="form-check form-check-inline">
|
||||||
<input class="form-check-input" type="radio" name="sortCol" id="itemNumber" value="itemNumber"
|
<input class="form-check-input" type="radio" name="sortCol" id="itemNumber" value="itemNumber"
|
||||||
onclick="@(() => SortProducts(ProductSort.Sku))">
|
onclick="@(() => SortProducts(Enums.SortColumn.Sku))">
|
||||||
<label class="form-check-label" for="itemNumber">Vare Nr.</label>
|
<label class="form-check-label" for="itemNumber">Vare Nr.</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check form-check-inline">
|
<div class="form-check form-check-inline">
|
||||||
<input class="form-check-input" type="radio" name="sortCol" id="lastInvoiceDate" value="itemDate"
|
<input class="form-check-input" type="radio" name="sortCol" id="lastInvoiceDate" value="itemDate"
|
||||||
onclick="@(() => SortProducts(ProductSort.LastInvoiceDate))" checked>
|
onclick="@(() => SortProducts(Enums.SortColumn.LastInvoiceDate))" checked>
|
||||||
<label class="form-check-label" for="lastInvoiceDate">Sidst leveret</label>
|
<label class="form-check-label" for="lastInvoiceDate">Sidst leveret</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -41,7 +41,7 @@ public partial class OfficeCustomerInventoryListComponent
|
||||||
private bool Descending { get; set; } = true;
|
private bool Descending { get; set; } = true;
|
||||||
private string SearchTerm { get; set; } = "";
|
private string SearchTerm { get; set; } = "";
|
||||||
private List<ProductInventoryItemView> FilteredList { get; set; } = new();
|
private List<ProductInventoryItemView> FilteredList { get; set; } = new();
|
||||||
private ProductSort SortColumn { get; set; } = ProductSort.LastInvoiceDate;
|
private SortColumn SortColumn { get; set; } = SortColumn.LastInvoiceDate;
|
||||||
|
|
||||||
|
|
||||||
protected override void OnParametersSet()
|
protected override void OnParametersSet()
|
||||||
|
@ -73,7 +73,7 @@ public partial class OfficeCustomerInventoryListComponent
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void SortProducts(ProductSort column)
|
private void SortProducts(SortColumn column)
|
||||||
{
|
{
|
||||||
FilteredList = Utils.SortInventory(FilteredList, column, Descending);
|
FilteredList = Utils.SortInventory(FilteredList, column, Descending);
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
namespace Wonky.Client.Enums;
|
namespace Wonky.Client.Enums;
|
||||||
|
|
||||||
public enum ProductSort
|
public enum SortColumn
|
||||||
{
|
{
|
||||||
Description,
|
Description,
|
||||||
Sku,
|
Sku,
|
|
@ -28,17 +28,17 @@ namespace Wonky.Client.Helpers;
|
||||||
public static class Utils
|
public static class Utils
|
||||||
{
|
{
|
||||||
public static List<ProductInventoryItemView> SortInventory(IEnumerable<ProductInventoryItemView> inventory,
|
public static List<ProductInventoryItemView> SortInventory(IEnumerable<ProductInventoryItemView> inventory,
|
||||||
ProductSort column, bool descending)
|
SortColumn sortColumn, bool descending)
|
||||||
{
|
{
|
||||||
return column switch
|
return sortColumn switch
|
||||||
{
|
{
|
||||||
ProductSort.Description => descending
|
SortColumn.Description => descending
|
||||||
? inventory.OrderByDescending(x => x.Description).ToList()
|
? inventory.OrderByDescending(x => x.Description).ToList()
|
||||||
: inventory.OrderBy(x => x.Description).ToList(),
|
: inventory.OrderBy(x => x.Description).ToList(),
|
||||||
ProductSort.Sku => descending
|
SortColumn.Sku => descending
|
||||||
? inventory.OrderByDescending(x => x.Sku).ToList()
|
? inventory.OrderByDescending(x => x.Sku).ToList()
|
||||||
: inventory.OrderBy(x => x.Sku).ToList(),
|
: inventory.OrderBy(x => x.Sku).ToList(),
|
||||||
ProductSort.LastInvoiceDate => descending
|
SortColumn.LastInvoiceDate => descending
|
||||||
? inventory.OrderByDescending(x => x.LastInvoiceDate).ToList()
|
? inventory.OrderByDescending(x => x.LastInvoiceDate).ToList()
|
||||||
: inventory.OrderBy(x => x.LastInvoiceDate).ToList(),
|
: inventory.OrderBy(x => x.LastInvoiceDate).ToList(),
|
||||||
_ => inventory.OrderByDescending(x => x.LastInvoiceDate).ToList()
|
_ => inventory.OrderByDescending(x => x.LastInvoiceDate).ToList()
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h3 class="modal-title">@CompanyName - Aktivitet oversigt</h3>
|
<h3 class="modal-title">@CompanyName - Aktivitet oversigt</h3>
|
||||||
<button type="button" class="btn-close" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"></button>
|
<button type="button" class="btn btn-danger" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"><i class="bi-x-lg"></i></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<CustomerActivityListComponent Activities="Activities"/>
|
<CustomerActivityListComponent Activities="Activities"/>
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
<div class="modal-dialog modal-dialog-scrollable modal-fullscreen">
|
<div class="modal-dialog modal-dialog-scrollable modal-fullscreen">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<button type="button" class="btn-close" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"></button>
|
<button type="button" class="btn btn-danger" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"><i class="bi-x-lg"></i></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h3 class="modal-title">@CompanyName - Produktoversigt</h3>
|
<h3 class="modal-title">@CompanyName - Produktoversigt</h3>
|
||||||
<button type="button" class="btn-close" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"></button>
|
<button type="button" class="btn btn-danger" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"><i class="bi-x-lg"></i></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<CustomerInventoryListComponent OnReorderSelected="OnReorderCallback" CompanyId="@CompanyId" Inventory="@Inventory"/>
|
<CustomerInventoryListComponent OnReorderSelected="OnReorderCallback" CompanyId="@CompanyId" Inventory="@Inventory"/>
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h4 class="modal-title">@SalesItem.Name @SalesItem.Sku (@SalesItem.BoxSize stk/colli)</h4>
|
<h4 class="modal-title">@SalesItem.Name @SalesItem.Sku (@SalesItem.BoxSize stk/colli)</h4>
|
||||||
<button type="button" class="btn-close" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"></button>
|
<button type="button" class="btn btn-danger" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"><i class="bi-x-lg"></i></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
@if (SalesItem.Discontinued)
|
@if (SalesItem.Discontinued)
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
{
|
{
|
||||||
<h3 class="modal-title">@Company.Name - Faktura Oversigt</h3>
|
<h3 class="modal-title">@Company.Name - Faktura Oversigt</h3>
|
||||||
}
|
}
|
||||||
<button type="button" class="btn-close" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"></button>
|
<button type="button" class="btn btn-danger" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"><i class="bi-x-lg"></i></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<CustomerInvoiceListComponent OnShowInvoice="@CallInvoiceModal" CompanyId="@Company.CompanyId" InvoiceList="@Invoices"/>
|
<CustomerInvoiceListComponent OnShowInvoice="@CallInvoiceModal" CompanyId="@Company.CompanyId" InvoiceList="@Invoices"/>
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
{
|
{
|
||||||
<h3 class="modal-title">Faktura @Invoice.DocumentNumber</h3>
|
<h3 class="modal-title">Faktura @Invoice.DocumentNumber</h3>
|
||||||
}
|
}
|
||||||
<button type="button" class="btn-close" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"></button>
|
<button type="button" class="btn btn-danger" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"><i class="bi-x-lg"></i></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
@if (!string.IsNullOrWhiteSpace(Invoice.Company.Name))
|
@if (!string.IsNullOrWhiteSpace(Invoice.Company.Name))
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h3 class="modal-title">@Company.Name - Aktivitet oversigt</h3>
|
<h3 class="modal-title">@Company.Name - Aktivitet oversigt</h3>
|
||||||
<button type="button" class="btn-close" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"></button>
|
<button type="button" class="btn btn-danger" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"><i class="bi-x-lg"></i></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
@* activity list *@
|
@* activity list *@
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
<div class="modal-dialog modal-dialog-scrollable modal-fullscreen">
|
<div class="modal-dialog modal-dialog-scrollable modal-fullscreen">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<button type="button" class="btn-close" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"></button>
|
<button type="button" class="btn btn-danger" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"><i class="bi-x-lg"></i></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h3 class="modal-title">@Company.Name - Produkt oversigt</h3>
|
<h3 class="modal-title">@Company.Name - Produkt oversigt</h3>
|
||||||
<button type="button" class="btn-close" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"></button>
|
<button type="button" class="btn btn-danger" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"><i class="bi-x-lg"></i></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
@ -43,17 +43,17 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check form-check-inline">
|
<div class="form-check form-check-inline">
|
||||||
<input class="form-check-input" type="radio" name="sortCol" id="description" value="description"
|
<input class="form-check-input" type="radio" name="sortCol" id="description" value="description"
|
||||||
onclick="@(() => SortProducts(ProductSort.Description))">
|
onclick="@(() => SortProducts(SortColumn.Description))">
|
||||||
<label class="form-check-label" for="description">Navn</label>
|
<label class="form-check-label" for="description">Navn</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check form-check-inline">
|
<div class="form-check form-check-inline">
|
||||||
<input class="form-check-input" type="radio" name="sortCol" id="itemNumber" value="itemNumber"
|
<input class="form-check-input" type="radio" name="sortCol" id="itemNumber" value="itemNumber"
|
||||||
onclick="@(() => SortProducts(ProductSort.Sku))">
|
onclick="@(() => SortProducts(SortColumn.Sku))">
|
||||||
<label class="form-check-label" for="itemNumber">Vare Nr.</label>
|
<label class="form-check-label" for="itemNumber">Vare Nr.</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check form-check-inline">
|
<div class="form-check form-check-inline">
|
||||||
<input class="form-check-input" type="radio" name="sortCol" id="lastInvoiceDate" value="itemDate"
|
<input class="form-check-input" type="radio" name="sortCol" id="lastInvoiceDate" value="itemDate"
|
||||||
onclick="@(() => SortProducts(ProductSort.LastInvoiceDate))" checked>
|
onclick="@(() => SortProducts(SortColumn.LastInvoiceDate))" checked>
|
||||||
<label class="form-check-label" for="lastInvoiceDate">Sidst leveret</label>
|
<label class="form-check-label" for="lastInvoiceDate">Sidst leveret</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -47,7 +47,7 @@ public partial class OfficeCustomerInventoryListOverlay : IDisposable
|
||||||
private bool Descending { get; set; } = true;
|
private bool Descending { get; set; } = true;
|
||||||
private string SearchTerm { get; set; } = "";
|
private string SearchTerm { get; set; } = "";
|
||||||
private List<ProductInventoryItemView> FilteredList { get; set; } = new();
|
private List<ProductInventoryItemView> FilteredList { get; set; } = new();
|
||||||
private ProductSort SortColumn { get; set; } = ProductSort.LastInvoiceDate;
|
private SortColumn SortColumn { get; set; } = SortColumn.LastInvoiceDate;
|
||||||
|
|
||||||
|
|
||||||
protected override void OnInitialized()
|
protected override void OnInitialized()
|
||||||
|
@ -66,7 +66,7 @@ public partial class OfficeCustomerInventoryListOverlay : IDisposable
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void SortProducts(ProductSort column)
|
private void SortProducts(SortColumn column)
|
||||||
{
|
{
|
||||||
Descending = !Descending;
|
Descending = !Descending;
|
||||||
FilteredList = Utils.SortInventory(FilteredList, column, Descending);
|
FilteredList = Utils.SortInventory(FilteredList, column, Descending);
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h4 class="modal-title">@SalesItem.Name @SalesItem.Sku (@SalesItem.BoxSize stk/colli)</h4>
|
<h4 class="modal-title">@SalesItem.Name @SalesItem.Sku (@SalesItem.BoxSize stk/colli)</h4>
|
||||||
<button type="button" class="btn-close" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"></button>
|
<button type="button" class="btn btn-danger" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"><i class="bi-x-lg"></i></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
@if (SalesItem.Discontinued)
|
@if (SalesItem.Discontinued)
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h3 class="modal-title">@Company.Name - Faktura oversigt</h3>
|
<h3 class="modal-title">@Company.Name - Faktura oversigt</h3>
|
||||||
<button type="button" class="btn-close" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"></button>
|
<button type="button" class="btn btn-danger" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"><i class="bi-x-lg"></i></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
@* component listing invoices*@
|
@* component listing invoices*@
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title">Faktura</h5>
|
<h5 class="modal-title">Faktura</h5>
|
||||||
<button type="button" class="btn-close" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"></button>
|
<button type="button" class="btn btn-danger" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"><i class="bi-x-lg"></i></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
@if (!string.IsNullOrWhiteSpace(Invoice.Company.Name))
|
@if (!string.IsNullOrWhiteSpace(Invoice.Company.Name))
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h3 class="modal-title">@Company.Name - Produktoversigt</h3>
|
<h3 class="modal-title">@Company.Name - Produktoversigt</h3>
|
||||||
<button type="button" class="btn-close" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"></button>
|
<button type="button" class="btn btn-danger" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"><i class="bi-x-lg"></i></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<OfficeCustomerInventoryListComponent OnReorderSelected="OnReorderCallback" CompanyId="@Company.CompanyId" Inventory="@Inventory"/>
|
<OfficeCustomerInventoryListComponent OnReorderSelected="OnReorderCallback" CompanyId="@Company.CompanyId" Inventory="@Inventory"/>
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h4 class="modal-title">@SalesItem.Name @SalesItem.Sku (@SalesItem.BoxSize stk/colli)</h4>
|
<h4 class="modal-title">@SalesItem.Name @SalesItem.Sku (@SalesItem.BoxSize stk/colli)</h4>
|
||||||
<button type="button" class="btn-close" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"></button>
|
<button type="button" class="btn btn-danger" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"><i class="bi-x-lg"></i></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
@if (SalesItem.Discontinued)
|
@if (SalesItem.Discontinued)
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title">Pris Katalog</h5>
|
<h5 class="modal-title">Pris Katalog</h5>
|
||||||
<button type="button" class="btn-close" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"></button>
|
<button type="button" class="btn btn-danger" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"><i class="bi-x-lg"></i></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<div class="sticky-top bg-dark rounded-2 p-3">
|
<div class="sticky-top bg-dark rounded-2 p-3">
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h2 class="modal-title">PRODUKT GENNEMGANG</h2>
|
<h2 class="modal-title">PRODUKT GENNEMGANG</h2>
|
||||||
<button type="button" class="btn-close" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"></button>
|
<button type="button" class="btn btn-danger" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"><i class="bi-x-lg"></i></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
@((MarkupString) BodyMessage)
|
@((MarkupString) BodyMessage)
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title">@ProductName</h5>
|
<h5 class="modal-title">@ProductName</h5>
|
||||||
<button type="button" class="btn-close" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"></button>
|
<button type="button" class="btn btn-danger" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"><i class="bi-x-lg"></i></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
@if (!string.IsNullOrWhiteSpace(ProductName))
|
@if (!string.IsNullOrWhiteSpace(ProductName))
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title">@ProductName</h5>
|
<h5 class="modal-title">@ProductName</h5>
|
||||||
<button type="button" class="btn-close" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"></button>
|
<button type="button" class="btn btn-danger" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"><i class="bi-x-lg"></i></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
@if (!string.IsNullOrWhiteSpace(ProductName))
|
@if (!string.IsNullOrWhiteSpace(ProductName))
|
||||||
|
|
|
@ -32,8 +32,8 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<CustomerInventoryListComponent OnReorderSelected="OnReorderCallback" CompanyId="@CompanyId" Inventory="@Inventory"/>
|
<CustomerInventoryListComponent OnReorderSelected="@OnReorderCallback" CompanyId="@CompanyId" Inventory="@Inventory"/>
|
||||||
<CustomerInventoryReorderOverlay OnSelected="@OnSelectedItem" CompanyId="@CompanyId" SalesItem="@SalesItem" @ref="ReorderOverlay"/>
|
<CustomerInventoryReorderOverlay OnSelected="@OnSelectedItem" CompanyId="@CompanyId" SalesItem="@SalesItem" @ref="@ReorderOverlay"/>
|
||||||
|
|
||||||
@if (Working)
|
@if (Working)
|
||||||
{
|
{
|
||||||
|
|
|
@ -76,6 +76,7 @@ public partial class AdvisorCustomerInventoryListPage : IDisposable
|
||||||
ReorderOverlay.Show();
|
ReorderOverlay.Show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private async Task OnSelectedItem(DraftItem draftItem)
|
private async Task OnSelectedItem(DraftItem draftItem)
|
||||||
{
|
{
|
||||||
// add item to order draft
|
// add item to order draft
|
||||||
|
@ -85,6 +86,7 @@ public partial class AdvisorCustomerInventoryListPage : IDisposable
|
||||||
await DraftStateProvider.SaveChangesAsync();
|
await DraftStateProvider.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private async Task FetchProductInventory()
|
private async Task FetchProductInventory()
|
||||||
{
|
{
|
||||||
Inventory = new List<ProductInventoryItemView>();
|
Inventory = new List<ProductInventoryItemView>();
|
||||||
|
@ -94,6 +96,7 @@ public partial class AdvisorCustomerInventoryListPage : IDisposable
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
Interceptor.DisposeEvent();
|
Interceptor.DisposeEvent();
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header text-bg-danger">
|
<div class="modal-header text-bg-danger">
|
||||||
<h2 class="modal-title">Bekræft Sletning</h2>
|
<h2 class="modal-title">Bekræft Sletning</h2>
|
||||||
<button type="button" class="btn-close" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"></button>
|
<button type="button" class="btn btn-danger" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"><i class="bi-x-lg"></i></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
@((MarkupString)BodyMessage)
|
@((MarkupString)BodyMessage)
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h3 class="modal-title">Bekræft Venligst</h3>
|
<h3 class="modal-title">Bekræft Venligst</h3>
|
||||||
<button type="button" class="btn-close" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"></button>
|
<button type="button" class="btn btn-danger" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"><i class="bi-x-lg"></i></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<p class="fw-bold">@BodyMessage</p>
|
<p class="fw-bold">@BodyMessage</p>
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h2 class="modal-title">Bekræft Venligst</h2>
|
<h2 class="modal-title">Bekræft Venligst</h2>
|
||||||
<button type="button" class="btn-close" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"></button>
|
<button type="button" class="btn btn-danger" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"><i class="bi-x-lg"></i></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
@((MarkupString) BodyMessage)
|
@((MarkupString) BodyMessage)
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title">@CompanyName</h5>
|
<h5 class="modal-title">@CompanyName</h5>
|
||||||
<button type="button" class="btn-close" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"></button>
|
<button type="button" class="btn btn-danger" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"><i class="bi-x-lg"></i></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<EditForm Model="SelectedContact" OnValidSubmit="SubmitContact">
|
<EditForm Model="SelectedContact" OnValidSubmit="SubmitContact">
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header bg-info">
|
<div class="modal-header bg-info">
|
||||||
<h5 class="modal-title">Info</h5>
|
<h5 class="modal-title">Info</h5>
|
||||||
<button type="button" class="btn-close" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"></button>
|
<button type="button" class="btn btn-danger" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"><i class="bi-x-lg"></i></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<div class="alert alert-info">
|
<div class="alert alert-info">
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title">CVR opslag</h5>
|
<h5 class="modal-title">CVR opslag</h5>
|
||||||
<button type="button" class="btn-close" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"></button>
|
<button type="button" class="btn btn-danger" @onclick="@Hide" data-bs-dismiss="modal" aria-label="Luk"><i class="bi-x-lg"></i></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<VatNumberInputComponent VatNumber="@ThisVatNumber" OnValidSubmit="GetInfoFromVat"/>
|
<VatNumberInputComponent VatNumber="@ThisVatNumber" OnValidSubmit="GetInfoFromVat"/>
|
||||||
|
|
Loading…
Reference in a new issue