diff --git a/Wonky.Client/AuthProviders/AuthStateProvider.cs b/Wonky.Client/AuthProviders/AuthStateProvider.cs index 485f8506..778faa8e 100644 --- a/Wonky.Client/AuthProviders/AuthStateProvider.cs +++ b/Wonky.Client/AuthProviders/AuthStateProvider.cs @@ -48,7 +48,7 @@ namespace Wonky.Client.AuthProviders return _anonymous; // create an authorized user - var userInfo = await _storage.GetItemAsync("_ux"); + var userInfo = await _storage.GetItemAsync("_ux"); if (userInfo == null) return _anonymous; @@ -83,7 +83,7 @@ namespace Wonky.Client.AuthProviders _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", token); // create an authorized user - var userInfo = await _storage.GetItemAsync("_ux"); + var userInfo = await _storage.GetItemAsync("_ux"); var exp = await _storage.GetItemAsync("_ex"); var roles = ExtractRoles(userInfo); var claims = new List @@ -109,7 +109,7 @@ namespace Wonky.Client.AuthProviders NotifyAuthenticationStateChanged(authState); } - private static IEnumerable ExtractRoles(UserInfoDto userInfo) + private static IEnumerable ExtractRoles(UserInfo userInfo) { var roles = new List(); if (userInfo.IsAdmin) diff --git a/Wonky.Client/Components/AppVersion.razor b/Wonky.Client/Components/AppVersion.razor index 53b6620e..4ef36c6c 100644 --- a/Wonky.Client/Components/AppVersion.razor +++ b/Wonky.Client/Components/AppVersion.razor @@ -17,7 +17,7 @@ @Name @Version@if(IsBeta){-beta} @code { - private const string Version = "0.2.23"; + private const string Version = "0.2.24"; private const string Name = "wwo"; private const bool IsBeta = true; } diff --git a/Wonky.Client/Models/Draft.cs b/Wonky.Client/Models/Draft.cs index 7dfbabb6..c23ba095 100644 --- a/Wonky.Client/Models/Draft.cs +++ b/Wonky.Client/Models/Draft.cs @@ -7,6 +7,7 @@ public class DraftItem public int Quantity { get; set; } public SalesItemDto Item { get; set; } public decimal Price { get; set; } + public decimal Discount { get; set; } public decimal Total { @@ -16,7 +17,7 @@ public class DraftItem if (string.IsNullOrWhiteSpace(price)) price = Item.Rates[0].Rate; Price = Convert.ToDecimal(price); - return Price * Quantity; + return (Price - Price * Discount / 100) * Quantity; } } } diff --git a/Wonky.Client/Models/PurchaseOrder.cs b/Wonky.Client/Models/PurchaseOrder.cs index 0e1881a3..288fcb66 100644 --- a/Wonky.Client/Models/PurchaseOrder.cs +++ b/Wonky.Client/Models/PurchaseOrder.cs @@ -21,28 +21,29 @@ namespace Wonky.Client.Models { public class PurchaseOrder { - public int ActivityId { get; set; } + public string ActivityId { get; set; } = ""; public string CrmCompanyKey { get; set; } = ""; - [Required(ErrorMessage = "Sælger skal udfyldes")] public string SalesRep { get; set; } = ""; - [Required(ErrorMessage = "Konto skal udfyldes")] public string Account { get; set; } = ""; - [Required(ErrorMessage = "Navn skal udfyldes")] public string Name { get; set; } = ""; - [Required(ErrorMessage = "Bynavn skal udfyldes")] public string City { get; set; }= ""; - [Required(ErrorMessage = "Postnummer skal udfyldes")] public string ZipCode { get; set; } = ""; - + public string SalesRep { get; set; } = ""; + public string Account { get; set; } = ""; + public string Name { get; set; } = ""; + public string City { get; set; }= ""; + public string ZipCode { get; set; } = ""; [Required(ErrorMessage = "Vælg aktivitet")] public string ActivityType { get; set; } = ""; - public string OurRef { get; set; } = ""; // sales rep + public string OurRef { get; set; } = ""; public string Address { get; set; } = ""; public string Address2 { get; set; } = ""; public string Phone { get; set; } = ""; public string EMail { get; set; } = ""; // Form entries + public bool CheckDate { get; set; } + public DateTime ActivityDate { get; set; } public string Demo { get; set; } = ""; public string VatNumber { get; set; } = ""; public string ReferenceNumber { get; set; } = ""; - public string YourRef { get; set; } = ""; + [MaxLength(255, ErrorMessage = "Du kan højst bruge 255 tegn")]public string YourRef { get; set; } = ""; [MaxLength(255, ErrorMessage = "Du kan højst bruge 255 tegn")] public string OrderMessage { get; set; } = ""; public string CrmNote { get; set; } = ""; - // form entry + // Delivery address form entries public string DlvName { get; set; } = ""; public string DlvAddress1 { get; set; } = ""; public string DlvAddress2 { get; set; } = ""; diff --git a/Wonky.Client/Pages/CompanyCreate.razor.cs b/Wonky.Client/Pages/CompanyCreate.razor.cs index adb89678..2f8f8a1c 100644 --- a/Wonky.Client/Pages/CompanyCreate.razor.cs +++ b/Wonky.Client/Pages/CompanyCreate.razor.cs @@ -54,7 +54,7 @@ namespace Wonky.Client.Pages _editContext = new EditContext(_companyDto); _editContext.OnFieldChanged += HandleFieldChanged; - var ux = await StorageService.GetItemAsync("_ux"); + var ux = await StorageService.GetItemAsync("_ux"); _companyDto.SalesRepId = ux.Id; _companyDto.CountryCode = ux.CountryCode; Interceptor.RegisterEvent(); diff --git a/Wonky.Client/Pages/CompanyList.razor.cs b/Wonky.Client/Pages/CompanyList.razor.cs index 148438f2..0f91fbaa 100644 --- a/Wonky.Client/Pages/CompanyList.razor.cs +++ b/Wonky.Client/Pages/CompanyList.razor.cs @@ -54,18 +54,21 @@ namespace Wonky.Client.Pages private async Task SelectedPage(int page) { + Companies = new List(); _paging.PageNumber = page; await GetCompanies(); } private async Task SetSearchCol(string searchColumn) { + Companies = new List(); _paging.SearchColumn = searchColumn; _paging.PageNumber = 1; await GetCompanies(); } private async Task SetPageSize(string pageSize) { + Companies = new List(); _paging.PageSize = Convert.ToInt32(pageSize); _paging.PageNumber = 1; await GetCompanies(); @@ -73,6 +76,7 @@ namespace Wonky.Client.Pages private async Task SetSearchPhrase(string searchTerm) { + Companies = new List(); _paging.PageNumber = 1; _paging.SearchTerm = searchTerm; await GetCompanies(); @@ -80,12 +84,14 @@ namespace Wonky.Client.Pages private async Task SetSortCol(string orderBy) { + Companies = new List(); _paging.OrderBy = orderBy; await GetCompanies(); } private async Task DeleteCompany(string companyId) { + Companies = new List(); await CompanyRepo.DeleteCompany(companyId); if (_paging.PageNumber > 1 && Companies.Count == 1) _paging.PageNumber--; diff --git a/Wonky.Client/Pages/CrmActivityCreate.razor b/Wonky.Client/Pages/CrmActivityCreate.razor index e8c951be..8e1004ba 100644 --- a/Wonky.Client/Pages/CrmActivityCreate.razor +++ b/Wonky.Client/Pages/CrmActivityCreate.razor @@ -22,7 +22,7 @@ @if (_company != null) {

@_purchaseOrder.Name

- +
@* Section for activity header *@ @@ -38,27 +38,32 @@ aria-labelledby="activityHeader" data-bs-parent="#crmActivity">
- -
- + +
+
- - -
+
- -
+
+ + +
+
+
+ +
- -
+ + +
@@ -69,13 +74,6 @@
-
- -
- - -
-
@@ -91,7 +89,7 @@
- +
@@ -188,10 +186,9 @@ - - - - + + + @@ -207,13 +204,11 @@
  • @rate.Quantity
    @rate.Rate
    +
  • } - } @@ -243,6 +238,9 @@
    Pris
    +
    + Rabat +
    @@ -260,6 +258,9 @@
    +
    + +
    @@ -336,9 +337,9 @@
    Tilbage - - - + + +
    diff --git a/Wonky.Client/Pages/CrmActivityCreate.razor.cs b/Wonky.Client/Pages/CrmActivityCreate.razor.cs index 2ca629b6..0bcf03b9 100644 --- a/Wonky.Client/Pages/CrmActivityCreate.razor.cs +++ b/Wonky.Client/Pages/CrmActivityCreate.razor.cs @@ -13,9 +13,6 @@ // along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html] // -using System; -using System.Collections.Generic; -using System.Threading.Tasks; using Blazored.LocalStorage; using Blazored.Toast.Services; using Wonky.Client.Helpers; @@ -33,12 +30,6 @@ namespace Wonky.Client.Pages; public partial class CrmActivityCreate : IDisposable { - private SalesItemDto _selectedItem { get; set; } = new(); - private List SalesItems { get; set; } = new(); - private MetaData _meta { get; set; } = new(); - private Preferences _prefs { get; set; } = new(); - [Parameter] public string CompanyId { get; set; } - [CascadingParameter] DraftStateProvider DraftStateProvider { get; set; } [Inject] private ISalesItemHttpRepository ItemRepo { get; set; } [Inject] private ICompanyHttpRepository CompanyRepo { get; set; } [Inject] private HttpInterceptorService Interceptor { get; set; } @@ -47,7 +38,12 @@ public partial class CrmActivityCreate : IDisposable [Inject] public NavigationManager NavigationManager { get; set; } [Inject] public ILocalStorageService StorageService { get; set; } [Inject] public ISalesItemHttpRepository SalesItemRepo { get; set; } - + [Parameter] public string CompanyId { get; set; } + [CascadingParameter] DraftStateProvider DraftStateProvider { get; set; } + private SalesItemDto _selectedItem { get; set; } = new(); + private List SalesItems { get; set; } = new(); + private MetaData _meta { get; set; } = new(); + private Preferences _prefs { get; set; } = new(); private PurchaseOrder _purchaseOrder = new (); private CompanyDto _company = new(); private EditContext _editContext; @@ -58,7 +54,7 @@ public partial class CrmActivityCreate : IDisposable private bool ShowSearchView; private string Quantity = "1"; private string Price = "0"; - private DateTime ActivityDate { get; set; } + private string Discount = "0"; protected override async Task OnInitializedAsync() { @@ -67,13 +63,14 @@ public partial class CrmActivityCreate : IDisposable _prefs = await UserPrefs.GetPreferences(); _paging.SearchColumn = _prefs.ItemSearch; await GetSalesItems(); - var ux = await StorageService.GetItemAsync("_ux"); + var ux = await StorageService.GetItemAsync("_ux"); _company = await CompanyRepo.GetCompanyById(CompanyId); _editContext = new EditContext(_purchaseOrder); _editContext.OnFieldChanged += HandleFieldChanged; // set up indexdb identification - _purchaseOrder.ActivityId = Utils.GetHashFromNow(); + _purchaseOrder.ActivityId = CompanyId; + _purchaseOrder.CrmCompanyKey = CompanyId; // permanent identifications _purchaseOrder.SalesRep = ux.Adviser; @@ -101,12 +98,12 @@ public partial class CrmActivityCreate : IDisposable await DraftStateProvider.DeleteDraftAsync(); } - private void SelectItem(string itemId) + private void SelectItem(string itemId, string quantity, string price) { ShowItem = true; _selectedItem = (from x in SalesItems where x.ItemId == itemId select x).First(); - Price = _selectedItem.Rates[0].Rate; - Quantity = "1"; + Price = price; + Quantity = quantity; } private async Task AddItem(SalesItemDto salesItem) @@ -133,12 +130,14 @@ public partial class CrmActivityCreate : IDisposable } private async Task SetItemGroup(string groupFilter) { + SalesItems = new List(); _paging.PageNumber = 1; _paging.SelectGroup = groupFilter; await GetSalesItems(); } private async Task SetSearchCol(string columnName) { + SalesItems = new List(); _paging.PageNumber = 1; _paging.SearchTerm = ""; _paging.SearchColumn = columnName; @@ -146,6 +145,7 @@ public partial class CrmActivityCreate : IDisposable } private async Task SetSortCol(string searchTerm) { + SalesItems = new List(); _paging.PageNumber = 1; _paging.SearchTerm = searchTerm; await GetSalesItems(); diff --git a/Wonky.Client/Pages/SalesItemCatalog.razor.cs b/Wonky.Client/Pages/SalesItemCatalog.razor.cs index b4b35cbf..50b60019 100644 --- a/Wonky.Client/Pages/SalesItemCatalog.razor.cs +++ b/Wonky.Client/Pages/SalesItemCatalog.razor.cs @@ -52,6 +52,7 @@ public partial class SalesItemCatalog : IDisposable private async Task SelectedPage(int page) { + SalesItemList = new List(); _paging.PageNumber = page; await GetSalesItems(); } @@ -65,6 +66,7 @@ public partial class SalesItemCatalog : IDisposable private async Task SetPageSize(string pageSize) { + SalesItemList = new List(); _paging.PageSize = Convert.ToInt32(pageSize); _paging.PageNumber = 1; await GetSalesItems(); @@ -72,18 +74,21 @@ public partial class SalesItemCatalog : IDisposable private async Task SetItemGroup(string groupFilter) { + SalesItemList = new List(); _paging.PageNumber = 1; _paging.SelectGroup = groupFilter; await GetSalesItems(); } private async Task SetSearchCol(string columnName) { + SalesItemList = new List(); _paging.PageNumber = 1; _paging.SearchColumn = columnName; await GetSalesItems(); } private async Task SetSearchPhrase(string searchTerm) { + SalesItemList = new List(); _paging.PageNumber = 1; _paging.SearchTerm = searchTerm; await GetSalesItems(); @@ -91,6 +96,7 @@ public partial class SalesItemCatalog : IDisposable private async Task SetSortCol(string orderBy) { + SalesItemList = new List(); _paging.OrderBy = orderBy; await GetSalesItems(); } diff --git a/Wonky.Client/Services/AuthenticationService.cs b/Wonky.Client/Services/AuthenticationService.cs index 2608ac2b..c3106813 100644 --- a/Wonky.Client/Services/AuthenticationService.cs +++ b/Wonky.Client/Services/AuthenticationService.cs @@ -140,14 +140,14 @@ namespace Wonky.Client.Services _client.DefaultRequestHeaders.Authorization = null; } - public async Task UserInfo(bool write = false) + public async Task UserInfo(bool write = false) { var infoResponse = await _client.GetAsync(_apiConfig.Value.UserInfo); var infoContent = await infoResponse.Content.ReadAsStringAsync(); - var userInfo = JsonSerializer.Deserialize(infoContent, _options); + var userInfo = JsonSerializer.Deserialize(infoContent, _options); if(write) await _localStorage.SetItemAsync("_ux", userInfo); - return userInfo ?? new UserInfoDto(); + return userInfo ?? new UserInfo(); } } diff --git a/Wonky.Client/Services/IAuthenticationService.cs b/Wonky.Client/Services/IAuthenticationService.cs index 4c63df81..7f9d623c 100644 --- a/Wonky.Client/Services/IAuthenticationService.cs +++ b/Wonky.Client/Services/IAuthenticationService.cs @@ -24,7 +24,7 @@ namespace Wonky.Client.Services Task Login(UserAuthenticationDto userAuth); Task Logout(); Task RefreshToken(); - Task UserInfo(bool write = false); + Task UserInfo(bool write = false); } } diff --git a/Wonky.Entity/DTO/UserInfoDto.cs b/Wonky.Entity/DTO/UserInfo.cs similarity index 98% rename from Wonky.Entity/DTO/UserInfoDto.cs rename to Wonky.Entity/DTO/UserInfo.cs index e8f9148a..d42363ee 100644 --- a/Wonky.Entity/DTO/UserInfoDto.cs +++ b/Wonky.Entity/DTO/UserInfo.cs @@ -17,7 +17,7 @@ using System.Text.Json.Serialization; namespace Wonky.Entity.DTO; -public class UserInfoDto +public class UserInfo { [JsonPropertyName("Id")] public string Id { get; set; } = ""; [JsonPropertyName("adviser")] public string Adviser { get; set; } = "";
    NavnVarenrStk / PrisNavnVarenrStk / Pris
    - -