bump version
This commit is contained in:
parent
a6c965ee24
commit
88c4c22f83
10 changed files with 13 additions and 272 deletions
|
@ -2,8 +2,8 @@ namespace Wonky.Client;
|
||||||
|
|
||||||
public class AppId
|
public class AppId
|
||||||
{
|
{
|
||||||
public string Version { get; set; } = "v0.2.10";
|
public string Version { get; set; } = "0.2.11";
|
||||||
public string Name { get; set; } = "Wonky";
|
public string Name { get; set; } = "WO";
|
||||||
|
|
||||||
public bool IsBeta { get; set; } = false;
|
public bool IsBeta { get; set; } = true;
|
||||||
}
|
}
|
|
@ -24,7 +24,7 @@
|
||||||
@foreach (var company in Companies)
|
@foreach (var company in Companies)
|
||||||
{
|
{
|
||||||
<tr>
|
<tr>
|
||||||
<td><DisplayStateComponent StateClass="@(Utils.GetVisitState(company.NextVisit))"></DisplayStateComponent></td>
|
<td style="width:50px;"><DisplayStateComponent StateClass="@(company.HasFolded == 1 ? "the-dead" : Utils.GetVisitState(company.NextVisit))"></DisplayStateComponent></td>
|
||||||
<td>@company.Name</td>
|
<td>@company.Name</td>
|
||||||
<td>@company.Account</td>
|
<td>@company.Account</td>
|
||||||
<td>@company.City</td>
|
<td>@company.City</td>
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
//
|
//
|
||||||
*@
|
*@
|
||||||
|
|
||||||
<img class="img-fluid float-start state rounded-circle @StateClass mx-3" src="state.png" alt="state"/>
|
<img class="img-fluid float-start rounded-circle state @StateClass mx-3" src="state.png" alt="state"/>
|
||||||
@code{
|
@code{
|
||||||
[Parameter] public string StateClass { get; set; } = "the-ugly";
|
[Parameter] public string StateClass { get; set; } = "the-dead";
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<div class="h2">@(_hasFolded ? @_company.Account : "LUKKET" ) - @_company.Name</div>
|
<div class="h2"><img src="gravestone.png" class="img-fluid" style="float:left;width:48px;height:48px;display:@(_hasFolded ? "block" : "none")" alt="tombstone" /> @_company.Name</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
|
@ -70,7 +70,7 @@
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">Næste besøg</th>
|
<th scope="row">Næste besøg</th>
|
||||||
<td class="state"><DisplayStateComponent StateClass="@(Utils.GetVisitState(_company.NextVisit))"></DisplayStateComponent></td>
|
<td class="state"><DisplayStateComponent StateClass="@(_hasFolded ? "the-dead" : Utils.GetVisitState(_company.NextVisit))"></DisplayStateComponent></td>
|
||||||
<td>@_company.NextVisit</td>
|
<td>@_company.NextVisit</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
|
@ -44,7 +44,6 @@ public partial class CompanyView : IDisposable
|
||||||
|
|
||||||
if(_company.HasFolded == 1)
|
if(_company.HasFolded == 1)
|
||||||
{
|
{
|
||||||
_vatState = "the-dead";
|
|
||||||
_hasFolded = true;
|
_hasFolded = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -1,152 +0,0 @@
|
||||||
@using Wonky.Client.Components
|
|
||||||
@using System.Net.Http.Headers
|
|
||||||
@page "/OrdreKladde"
|
|
||||||
|
|
||||||
@* display product filter options *@
|
|
||||||
<div class="row mb-3">
|
|
||||||
<div class="col">
|
|
||||||
<ItemGroupDropdown OnChanged="SetItemGroup" />
|
|
||||||
</div>
|
|
||||||
<div class="col">
|
|
||||||
<ItemSearchDropdown OnChanged="SetSearchCol" />
|
|
||||||
</div>
|
|
||||||
<div class="col">
|
|
||||||
<SearchPhrase OnChanged="SetSortCol" />
|
|
||||||
</div>
|
|
||||||
<div class="col">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@if (SalesItems.Any())
|
|
||||||
{
|
|
||||||
// display filtered product list
|
|
||||||
<table class="table table-hover table-striped justify-content-center">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th scope="col" style="width: 50%;">Navn</th>
|
|
||||||
<th scope="col" style="width: 30%;" class="text-nowrap">Varenr</th>
|
|
||||||
<th scope="col" style="width: 20%">Stk / Pris</th>
|
|
||||||
<th scope="col"></th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
@foreach (var item in SalesItems)
|
|
||||||
{
|
|
||||||
<tr>
|
|
||||||
<td>@item.Name</td>
|
|
||||||
<td>@item.Sku</td>
|
|
||||||
<td><ul class="list-group">
|
|
||||||
@foreach (var rate in item.Rates)
|
|
||||||
{
|
|
||||||
<li class="list-group-item d-flex justify-content-between align-items-end">
|
|
||||||
<div class="text-sm-start px-2">@rate.Quantity</div>
|
|
||||||
<div class="text-sm-end">@rate.Rate</div>
|
|
||||||
</li>
|
|
||||||
}
|
|
||||||
</ul></td>
|
|
||||||
<td><button class="btn btn-primary" @onclick="@(() => SelectItem(item.ItemId))">Vælg</button></td>
|
|
||||||
</tr>
|
|
||||||
}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
<AppSpinner/>
|
|
||||||
}
|
|
||||||
@* Display draft line *@
|
|
||||||
@if (_selectedItem != null && ShowItem)
|
|
||||||
{
|
|
||||||
<div class="card mb-3 mt-3">
|
|
||||||
<div class="card-header bg-info fw-bold text-white">Kladdelinje</div>
|
|
||||||
<div class="card-body">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col col-md-4 fw-bold">
|
|
||||||
Varenavn
|
|
||||||
</div>
|
|
||||||
<div class="col fw-bold">
|
|
||||||
Varenr
|
|
||||||
</div>
|
|
||||||
<div class="col fw-bold">
|
|
||||||
Antal
|
|
||||||
</div>
|
|
||||||
<div class="col fw-bold">
|
|
||||||
Pris
|
|
||||||
</div>
|
|
||||||
<div class="col">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col col-md-4">
|
|
||||||
@_selectedItem.Name
|
|
||||||
</div>
|
|
||||||
<div class="col">
|
|
||||||
@_selectedItem.Sku
|
|
||||||
</div>
|
|
||||||
<div class="col">
|
|
||||||
<input class="form-control" type="number" @bind-value="@Quantity"/>
|
|
||||||
</div>
|
|
||||||
<div class="col">
|
|
||||||
<input class="form-control" type="number" @bind-value="@Price"/>
|
|
||||||
</div>
|
|
||||||
<div class="col">
|
|
||||||
<button class="btn btn-info" @onclick="@(() => AddItem(_selectedItem))">Læg til</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
}
|
|
||||||
|
|
||||||
@* Display draft lines *@
|
|
||||||
@if (DraftStateProvider != null && DraftStateProvider.Draft.Items.Count > 0)
|
|
||||||
{
|
|
||||||
<div class="card mt-3 mb-3">
|
|
||||||
<div class="card-header bg-success text-white fw-bold">Ordrekladde <span class="draft-expires-msg">(Kladde udløber efter inaktivity i @(DraftStateProvider.Draft.TimeToLiveInSeconds / 60)m)</span></div>
|
|
||||||
<div class="card-body">
|
|
||||||
<table class="table table-hover table-striped justify-content-center">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th scope="col">Navn</th>
|
|
||||||
<th scope="col" class="text-nowrap">Varenr</th>
|
|
||||||
<th scope="col" class="text-end">Antal</th>
|
|
||||||
<th scope="col" class="text-end">Enhedspris</th>
|
|
||||||
<th scope="col" class="text-end">Linjesum</th>
|
|
||||||
<th scope="col"> </th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
@foreach (var cItem in DraftStateProvider.Draft.Items)
|
|
||||||
{
|
|
||||||
<tr>
|
|
||||||
<td>@cItem.Item.Name</td>
|
|
||||||
<td>@cItem.Item.Sku</td>
|
|
||||||
<td class="text-end">@cItem.Quantity</td>
|
|
||||||
<td class="text-end">@cItem.Price</td>
|
|
||||||
<td class="text-end">@cItem.Total</td>
|
|
||||||
<td><button class="btn btn-warning" @onclick="@(() => RemoveItem(@cItem))">Slet</button></td>
|
|
||||||
</tr>
|
|
||||||
}
|
|
||||||
<tr>
|
|
||||||
<td></td>
|
|
||||||
<td></td>
|
|
||||||
<td></td>
|
|
||||||
<td class="text-black text-end fw-bold">Total</td>
|
|
||||||
<td class="text-black text-end fw-bold">@DraftStateProvider.Draft.Total</td>
|
|
||||||
<td></td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
<div class="card-footer">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col">
|
|
||||||
<button class="btn btn-danger" @onclick="@DeleteDraft">Slet kladde</button>
|
|
||||||
</div>
|
|
||||||
<div class="col">
|
|
||||||
<a class="btn btn-success" href="/Companies">Overfør</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
}
|
|
|
@ -1,103 +0,0 @@
|
||||||
using Microsoft.AspNetCore.Components;
|
|
||||||
using Wonky.Client.HttpInterceptors;
|
|
||||||
using Wonky.Client.HttpRepository;
|
|
||||||
using Wonky.Client.Models;
|
|
||||||
using Wonky.Client.Services;
|
|
||||||
using Wonky.Client.Shared;
|
|
||||||
using Wonky.Entity.DTO;
|
|
||||||
using Wonky.Entity.Models;
|
|
||||||
using Wonky.Entity.Requests;
|
|
||||||
|
|
||||||
namespace Wonky.Client.Pages;
|
|
||||||
|
|
||||||
public partial class DraftDocument : IDisposable
|
|
||||||
{
|
|
||||||
[CascadingParameter] DraftStateProvider DraftStateProvider { get; set; }
|
|
||||||
private bool ShowItem;
|
|
||||||
private bool ShowSearchView;
|
|
||||||
private string Quantity = "1";
|
|
||||||
private string Price = "0";
|
|
||||||
private SalesItemDto _selectedItem { get; set; } = new();
|
|
||||||
private List<SalesItemDto> SalesItems { get; set; } = new();
|
|
||||||
private MetaData _meta { get; set; } = new();
|
|
||||||
private CatalogPagingParams _paging { get; set; } = new();
|
|
||||||
private Preferences _prefs { get; set; } = new();
|
|
||||||
[Inject] private ISalesItemHttpRepository ItemRepo { get; set; }
|
|
||||||
[Inject] private ICompanyHttpRepository CompanyRepo { get; set; }
|
|
||||||
[Inject] private HttpInterceptorService Interceptor { get; set; }
|
|
||||||
[Inject] private UserPreferenceService UserPrefs { get; set; }
|
|
||||||
|
|
||||||
protected override async Task OnInitializedAsync()
|
|
||||||
{
|
|
||||||
_prefs = await UserPrefs.GetPreferences();
|
|
||||||
_paging.SearchColumn = _prefs.ItemSearch;
|
|
||||||
Interceptor.RegisterEvent();
|
|
||||||
Interceptor.RegisterBeforeSendEvent();
|
|
||||||
await GetSalesItems();
|
|
||||||
}
|
|
||||||
private async Task GetSalesItems()
|
|
||||||
{
|
|
||||||
_paging.PageSize = 5;
|
|
||||||
var response = await ItemRepo.GetSalesItemsPaged(_paging);
|
|
||||||
SalesItems = response.Items!;
|
|
||||||
_meta = response.MetaData;
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task DeleteDraft()
|
|
||||||
{
|
|
||||||
await DraftStateProvider.DeleteDraftAsync();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SelectItem(string itemId)
|
|
||||||
{
|
|
||||||
ShowItem = true;
|
|
||||||
_selectedItem = (from x in SalesItems where x.ItemId == itemId select x).First();
|
|
||||||
Price = _selectedItem.Rates[0].Rate;
|
|
||||||
Quantity = "1";
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task AddItem(SalesItemDto salesItem)
|
|
||||||
{
|
|
||||||
ShowItem = false;
|
|
||||||
// create a new cart item
|
|
||||||
var item = new DraftItem
|
|
||||||
{
|
|
||||||
Item = salesItem,
|
|
||||||
Quantity = Convert.ToInt32(Quantity),
|
|
||||||
Price = Convert.ToDecimal(Price)
|
|
||||||
};
|
|
||||||
|
|
||||||
// add it to the cart
|
|
||||||
DraftStateProvider.Draft.Items.Add(item);
|
|
||||||
|
|
||||||
// save the item using the CartStateProvider's save method
|
|
||||||
await DraftStateProvider.SaveChangesAsync();
|
|
||||||
}
|
|
||||||
private async Task RemoveItem(DraftItem item)
|
|
||||||
{
|
|
||||||
// remove item
|
|
||||||
DraftStateProvider.Draft.Items.Remove(item);
|
|
||||||
// save the remaining draft
|
|
||||||
await DraftStateProvider.SaveChangesAsync();
|
|
||||||
}
|
|
||||||
private async Task SetItemGroup(string groupFilter)
|
|
||||||
{
|
|
||||||
_paging.PageNumber = 1;
|
|
||||||
_paging.SelectGroup = groupFilter;
|
|
||||||
await GetSalesItems();
|
|
||||||
}
|
|
||||||
private async Task SetSearchCol(string columnName)
|
|
||||||
{
|
|
||||||
_paging.PageNumber = 1;
|
|
||||||
_paging.SearchTerm = "";
|
|
||||||
_paging.SearchColumn = columnName;
|
|
||||||
await GetSalesItems();
|
|
||||||
}
|
|
||||||
private async Task SetSortCol(string searchTerm)
|
|
||||||
{
|
|
||||||
_paging.PageNumber = 1;
|
|
||||||
_paging.SearchTerm = searchTerm;
|
|
||||||
await GetSalesItems();
|
|
||||||
}
|
|
||||||
public void Dispose() => Interceptor.DisposeEvent();
|
|
||||||
}
|
|
|
@ -215,7 +215,7 @@
|
||||||
@if (DraftStateProvider != null && DraftStateProvider.Draft.Items.Count > 0)
|
@if (DraftStateProvider != null && DraftStateProvider.Draft.Items.Count > 0)
|
||||||
{
|
{
|
||||||
<div class="card mt-3 mb-3">
|
<div class="card mt-3 mb-3">
|
||||||
<div class="card-header bg-success text-white fw-bold">Ordrekladde <span class="draft-expires-msg">(Kladde udløber efter @(DraftStateProvider.Draft.TimeToLiveInSeconds / 60)m)s inaktivitet.</span></div>
|
<div class="card-header bg-success text-white fw-bold">Ordrekladde <span class="draft-expires-msg">Kladde udløber efter @(DraftStateProvider.Draft.TimeToLiveInSeconds)m inaktivitet.</span></div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<table class="table table-hover table-striped justify-content-center">
|
<table class="table table-hover table-striped justify-content-center">
|
||||||
<thead>
|
<thead>
|
||||||
|
|
|
@ -48,12 +48,6 @@
|
||||||
<span class="oi oi-list-rich" aria-hidden="true"></span> Priskatalog
|
<span class="oi oi-list-rich" aria-hidden="true"></span> Priskatalog
|
||||||
</NavLink>
|
</NavLink>
|
||||||
</div>
|
</div>
|
||||||
<div class="nav-item px-3">
|
|
||||||
<NavLink class="nav-link" href="/OrdreKladde">
|
|
||||||
<span class="oi oi-list-rich" aria-hidden="true"></span> WIP-ordre
|
|
||||||
</NavLink>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</Authorized>
|
</Authorized>
|
||||||
</AuthorizeView>
|
</AuthorizeView>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
height: 48px;
|
height: 48px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Display visit state classes */
|
/* visit / vat state classes */
|
||||||
.state {
|
.state {
|
||||||
width: 24px;
|
width: 24px;
|
||||||
height: 24px;
|
height: 24px;
|
||||||
|
@ -17,6 +17,9 @@
|
||||||
.tombstone {
|
.tombstone {
|
||||||
background-image: url(../gravestone.png);
|
background-image: url(../gravestone.png);
|
||||||
}
|
}
|
||||||
|
.the-dead {
|
||||||
|
background-color: black;
|
||||||
|
}
|
||||||
.the-draw {
|
.the-draw {
|
||||||
background-color: purple;
|
background-color: purple;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue