toggle edit in customer view/edit page
This commit is contained in:
parent
1a0255a14a
commit
41eccd64bf
32 changed files with 1523 additions and 1483 deletions
|
@ -26,8 +26,8 @@ using Wonky.Entity.Views;
|
|||
|
||||
#pragma warning disable CS8618
|
||||
|
||||
namespace Wonky.Client.Components
|
||||
{
|
||||
namespace Wonky.Client.Components;
|
||||
|
||||
public partial class AdvisorCustomerListComponent
|
||||
{
|
||||
[Parameter] public List<CompanyDto> CompanyList { get; set; } = new();
|
||||
|
@ -53,4 +53,3 @@ namespace Wonky.Client.Components
|
|||
InformationModal.Show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,8 +17,8 @@ using System.Timers;
|
|||
using Microsoft.AspNetCore.Components;
|
||||
using Timer = System.Timers.Timer;
|
||||
|
||||
namespace Wonky.Client.Components
|
||||
{
|
||||
namespace Wonky.Client.Components;
|
||||
|
||||
public partial class CatalogSearchPhraseComponent
|
||||
{
|
||||
private Timer Timer { get; set; } = new();
|
||||
|
@ -48,4 +48,3 @@ namespace Wonky.Client.Components
|
|||
Timer.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,8 +19,8 @@ using Wonky.Client.Services;
|
|||
using Timer = System.Timers.Timer;
|
||||
#pragma warning disable CS8618
|
||||
|
||||
namespace Wonky.Client.Components
|
||||
{
|
||||
namespace Wonky.Client.Components;
|
||||
|
||||
public partial class CustomerSearchPhraseComponent
|
||||
{
|
||||
private Timer InputTimer { get; set; } = new();
|
||||
|
@ -63,4 +63,3 @@ namespace Wonky.Client.Components
|
|||
OnChanged.InvokeAsync(SearchTerm);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,8 +20,8 @@ using Microsoft.AspNetCore.Components;
|
|||
using Wonky.Client.Services;
|
||||
#pragma warning disable CS8618
|
||||
|
||||
namespace Wonky.Client.Components
|
||||
{
|
||||
namespace Wonky.Client.Components;
|
||||
|
||||
public partial class CustomerSortComponent : IDisposable
|
||||
{
|
||||
[Inject] public ILocalStorageService Storage { get; set; }
|
||||
|
@ -53,5 +53,3 @@ namespace Wonky.Client.Components
|
|||
ProfileService.OnChange -= ProfileServiceOnOnChange;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -27,8 +27,8 @@ using Utils = Wonky.Client.Helpers.Utils;
|
|||
|
||||
#pragma warning disable CS8618
|
||||
|
||||
namespace Wonky.Client.Components
|
||||
{
|
||||
namespace Wonky.Client.Components;
|
||||
|
||||
public partial class OfficeCountryCustomerListComponent
|
||||
{
|
||||
// ******************************************************
|
||||
|
@ -100,4 +100,3 @@ namespace Wonky.Client.Components
|
|||
SelectedCompany = CompanyList.First(x => x.CompanyId == companyId);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -20,35 +20,37 @@ using Microsoft.AspNetCore.Components;
|
|||
using Wonky.Client.Services;
|
||||
#pragma warning disable CS8618
|
||||
|
||||
namespace Wonky.Client.Components
|
||||
{
|
||||
namespace Wonky.Client.Components;
|
||||
|
||||
public partial class PageSizeComponent : IDisposable
|
||||
{
|
||||
[Inject] public ILocalStorageService Storage { get; set; }
|
||||
[Inject] public UserProfileService ProfileService { get; set; }
|
||||
[Parameter] public EventCallback<string> OnChanged { get; set; }
|
||||
private Dictionary<string, string> Items { get; set; } = new();
|
||||
private UserProfile _profiles = new();
|
||||
private string PageSize { get; set; } = "";
|
||||
private UserProfile Profile { get; set; } = new();
|
||||
private string PageSize { get; set; }
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
ProfileService.OnChange += ProfileServiceOnOnChange;
|
||||
_profiles = await ProfileService.GetProfile();
|
||||
PageSize = _profiles.PageSize;
|
||||
Profile = await ProfileService.GetProfile();
|
||||
PageSize = Profile.PageSize;
|
||||
}
|
||||
|
||||
private async Task OnSelectChanged(ChangeEventArgs e)
|
||||
{
|
||||
var val = e.Value.ToString();
|
||||
var val = e.Value?.ToString();
|
||||
if (val == "-1") return;
|
||||
var cVal = Convert.ToInt32(val);
|
||||
if (cVal > 50) val = "50"; // mitigate variable manipulation
|
||||
await OnChanged.InvokeAsync(val);
|
||||
await ProfileService.SetPageSize(val);
|
||||
}
|
||||
|
||||
private void ProfileServiceOnOnChange(UserProfile newUserProfile)
|
||||
{
|
||||
_profiles = newUserProfile;
|
||||
Profile = newUserProfile;
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
|
@ -57,4 +59,3 @@ namespace Wonky.Client.Components
|
|||
ProfileService.OnChange -= ProfileServiceOnOnChange;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,8 +19,8 @@ using Microsoft.AspNetCore.Components;
|
|||
using Wonky.Client.Features;
|
||||
using Wonky.Entity.Requests;
|
||||
|
||||
namespace Wonky.Client.Components
|
||||
{
|
||||
namespace Wonky.Client.Components;
|
||||
|
||||
public partial class PaginationComponent
|
||||
{
|
||||
[Parameter] public MetaData MetaData { get; set; } = new();
|
||||
|
@ -59,4 +59,3 @@ namespace Wonky.Client.Components
|
|||
await SelectedPage.InvokeAsync(link.Page);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -21,8 +21,8 @@ using Wonky.Client.HttpRepository;
|
|||
using Wonky.Client.Shared;
|
||||
using Wonky.Entity.DTO;
|
||||
|
||||
namespace Wonky.Client.Components
|
||||
{
|
||||
namespace Wonky.Client.Components;
|
||||
|
||||
public partial class TaskItemTableComponent
|
||||
{
|
||||
[Parameter] public List<TaskItemDto> TaskItemList { get; set; } = new();
|
||||
|
@ -74,4 +74,3 @@ namespace Wonky.Client.Components
|
|||
await OnDeleteTask.InvokeAsync(_taskItemIdToDelete);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
|
||||
|
||||
using System.Globalization;
|
||||
using System.Text.Json;
|
||||
using Blazored.LocalStorage;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Microsoft.AspNetCore.Components.Forms;
|
||||
|
@ -69,8 +70,8 @@ public partial class WorkDateComponent : IDisposable
|
|||
/// <param name="e"></param>
|
||||
private async Task OnDateChanged(ChangeEventArgs e)
|
||||
{
|
||||
var x = DateTime.TryParse(e.Value.ToString(), out var setDate);
|
||||
if (x)
|
||||
if (string.IsNullOrWhiteSpace(e.Value.ToString())) return;
|
||||
if (DateTime.TryParse(e.Value.ToString(), out var setDate))
|
||||
{
|
||||
await UserProfile.SetWorkDate(setDate);
|
||||
await OnChangedCallback.InvokeAsync($"{setDate:yyyy-MM-dd}");
|
||||
|
|
|
@ -26,8 +26,8 @@
|
|||
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace Wonky.Client.Helpers
|
||||
{
|
||||
namespace Wonky.Client.Helpers;
|
||||
|
||||
/// <summary>
|
||||
/// Squid is guid string shortened and url safe
|
||||
/// </summary>
|
||||
|
@ -359,4 +359,3 @@ namespace Wonky.Client.Helpers
|
|||
return oGuid == Guid.Empty ? Empty : new Squid(oGuid);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -23,8 +23,8 @@ using Wonky.Client.Services;
|
|||
using Microsoft.AspNetCore.Components;
|
||||
using Toolbelt.Blazor;
|
||||
|
||||
namespace Wonky.Client.HttpInterceptors
|
||||
{
|
||||
namespace Wonky.Client.HttpInterceptors;
|
||||
|
||||
public class HttpInterceptorService
|
||||
{
|
||||
private readonly HttpClientInterceptor _interceptor;
|
||||
|
@ -122,5 +122,3 @@ namespace Wonky.Client.HttpInterceptors
|
|||
// throw new HttpResponseException(message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -16,8 +16,8 @@
|
|||
|
||||
using System.Runtime.Serialization;
|
||||
|
||||
namespace Wonky.Client.HttpInterceptors
|
||||
{
|
||||
namespace Wonky.Client.HttpInterceptors;
|
||||
|
||||
[Serializable]
|
||||
public class HttpResponseException : Exception
|
||||
{
|
||||
|
@ -38,4 +38,3 @@ namespace Wonky.Client.HttpInterceptors
|
|||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
<div class="row g-3">
|
||||
<label for="date" class="col-form-label-sm col-sm-1">Dato</label>
|
||||
<div class="col-sm-3">
|
||||
<input id="date" class="form-control" type="text" value="@(DateTime.Parse(ReportItem.CreateTimestamp).ToShortDateString())" readonly/>
|
||||
<input id="date" class="form-control" type="text" value="@ReportItem.CreateTimestamp" readonly/>
|
||||
</div>
|
||||
|
||||
<label for="account" class="col-form-label-sm col-sm-1">Konto</label>
|
||||
|
|
|
@ -49,7 +49,6 @@
|
|||
<h3>Der kan ikke oprettes besøg når der findes rapport for @SelectedDate.ToShortDateString()</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -360,7 +359,9 @@ else
|
|||
***************** Confirm product check overlay button *****************************
|
||||
***************** Continue by submitton order to erp *****************************
|
||||
*@
|
||||
<button type="button" class="btn btn-warning" @onclick="CallConfirmCheckOverlay" disabled="@(PoFormInvalid || Working)"><i class="bi-cloud-arrow-up"></i> @ButtonText</button>
|
||||
<button type="button" class="btn btn-warning" @onclick="CallConfirmCheckOverlay" disabled="@(PoFormInvalid || Working)">
|
||||
<i class="bi-cloud-arrow-up"></i> @ButtonText
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
@ -382,4 +383,3 @@ else
|
|||
|
||||
<CustomerInventoryListOverlay CompanyName="@Company.Name" CompanyId="@CompanyId" CountryCode="@Company.CountryCode"
|
||||
OnSelected="OnInventoryCallback" Inventory="Inventory" @ref="InventoryListOverlay"/>
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
|
||||
// Copyright (C) 2022 FCS Frede's Computer Services.
|
||||
// Copyright (C) 2022 FCS Frede's Computer Services.
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as
|
||||
// published by the Free Software Foundation, either version 3 of the
|
||||
|
@ -30,6 +29,7 @@ using Wonky.Client.Services;
|
|||
using Wonky.Client.Shared;
|
||||
using Wonky.Entity.DTO;
|
||||
using Wonky.Entity.Views;
|
||||
|
||||
#pragma warning disable CS8618
|
||||
|
||||
namespace Wonky.Client.Pages;
|
||||
|
@ -49,18 +49,22 @@ public partial class AdvisorActivityCreatePage : IDisposable
|
|||
[Inject] public IAdvisorActivityRepository ActivityRepo { get; set; }
|
||||
[Inject] public IAdvisorReportRepository ReportRepo { get; set; }
|
||||
[Inject] public IAdvisorCustomerHistoryRepository HistoryRepo { get; set; }
|
||||
[Inject] public IUserInfoService UserInfoService { get; set; }
|
||||
|
||||
[Inject] public IUserInfoService UserService { get; set; }
|
||||
|
||||
// *************************************************************
|
||||
// Parameters
|
||||
[CascadingParameter] private DraftStateProvider DraftProvider { get; set; } = new();
|
||||
|
||||
[Parameter] public string CompanyId { get; set; } = "";
|
||||
|
||||
// *************************************************************
|
||||
// Variables
|
||||
private readonly JsonSerializerOptions _options = new() { PropertyNameCaseInsensitive = true };
|
||||
private SalesItemView SelectedItem { get; set; } = new();
|
||||
private UserProfile UserProfile { get; set; } = new();
|
||||
private ActivityDto Activity { get; set; } = new();
|
||||
private CompanyDto Company = new();
|
||||
private CompanyDto Company { get; set; } = new();
|
||||
private EditContext? ActivityContext { get; set; }
|
||||
private bool PoFormInvalid { get; set; } = true;
|
||||
private bool ShowItem { get; set; }
|
||||
|
@ -78,7 +82,9 @@ public partial class AdvisorActivityCreatePage : IDisposable
|
|||
private string PromptDateConfirm { get; set; } = "";
|
||||
private string ButtonText { get; set; } = "Gem besøg";
|
||||
private bool OrgWarning { get; set; }
|
||||
|
||||
private const string PromptDemoForgotten = "Har du glemt demo?";
|
||||
|
||||
// *************************************************************
|
||||
// Overlays
|
||||
private PriceCatalogOverlay CatalogOverlay { get; set; } = new();
|
||||
|
@ -88,7 +94,9 @@ public partial class AdvisorActivityCreatePage : IDisposable
|
|||
private ProductCheckConfirmationOverlay ConfirmationCheckOverlay { get; set; } = new();
|
||||
private CustomerInvoiceListOverlay InvoiceListOverlay { get; set; } = new();
|
||||
private CustomerInventoryListOverlay InventoryListOverlay { get; set; } = new();
|
||||
|
||||
private CustomerActivityListOverlay ActivityListOverlay { get; set; } = new();
|
||||
|
||||
// *************************************************************
|
||||
// Lists
|
||||
private List<ProductInventoryView> Inventory { get; set; } = new();
|
||||
|
@ -110,11 +118,11 @@ public partial class AdvisorActivityCreatePage : IDisposable
|
|||
// User Preferences
|
||||
UserProfile = await ProfileService.GetProfile();
|
||||
// User Info
|
||||
SalesRep = await UserInfoService.GetUserInfo();
|
||||
SalesRep = await UserService.GetUserInfo();
|
||||
// Fetch Customer from http
|
||||
Company = await CompanyRepo.GetCompanyById(CompanyId);
|
||||
if (Company.HasFolded == 1)
|
||||
// Company has shutdown activities
|
||||
// Company has shut down
|
||||
Activity.OrderMessage = "BEMÆRK: CVR nummer er ophørt.";
|
||||
|
||||
// variable to validate if customer needs phone number update
|
||||
|
@ -150,7 +158,10 @@ public partial class AdvisorActivityCreatePage : IDisposable
|
|||
Activity.DlvZipCode = Company.ZipCode;
|
||||
Activity.DlvCity = Company.City;
|
||||
// Initialize date variable
|
||||
SelectedDate = string.IsNullOrWhiteSpace(UserProfile.WorkDate) ? DateTime.Now : DateTime.Parse(UserProfile.WorkDate);
|
||||
Logger.LogDebug("AdvisorActivityCreatePage => DateTime parser => {}", UserProfile.WorkDate);
|
||||
SelectedDate = string.IsNullOrWhiteSpace(UserProfile.WorkDate)
|
||||
? DateTime.Now
|
||||
: DateTime.Parse(UserProfile.WorkDate);
|
||||
// raise flag if report is closed
|
||||
ReportClosed = await ReportRepo.ReportExist($"{SelectedDate:yyyy-MM-dd}");
|
||||
// Ask for confirmation of date
|
||||
|
@ -160,6 +171,7 @@ public partial class AdvisorActivityCreatePage : IDisposable
|
|||
PromptDateConfirm = $"Aktiviteter oprettes med dato {SelectedDate.ToShortDateString()}. Er dette OK?";
|
||||
ConfirmWorkDate.Show();
|
||||
}
|
||||
|
||||
// Lines may already have been added from the company inventory page
|
||||
if (DraftProvider.Draft.DraftType == "order")
|
||||
{
|
||||
|
@ -168,6 +180,7 @@ public partial class AdvisorActivityCreatePage : IDisposable
|
|||
Activity.ActivityStatusEnum = "order";
|
||||
PoFormInvalid = false;
|
||||
}
|
||||
|
||||
Working = false;
|
||||
}
|
||||
|
||||
|
@ -218,7 +231,8 @@ public partial class AdvisorActivityCreatePage : IDisposable
|
|||
var iDate = await Storage.GetItemAsStringAsync($"{CompanyId}-iDate");
|
||||
|
||||
// if we have a list and iDate was today return the list
|
||||
if (!string.IsNullOrWhiteSpace(storage) && (!string.IsNullOrWhiteSpace(iDate) && DateTime.Parse(iDate.Replace("\"", "")) >= DateTime.Now))
|
||||
if (!string.IsNullOrWhiteSpace(storage) && (!string.IsNullOrWhiteSpace(iDate) &&
|
||||
DateTime.Parse(iDate.Replace("\"", "")) >= DateTime.Now))
|
||||
{
|
||||
Logger.LogDebug("fetching invoices from storage");
|
||||
Logger.LogDebug("storage contains <= {}", storage);
|
||||
|
@ -242,7 +256,8 @@ public partial class AdvisorActivityCreatePage : IDisposable
|
|||
if (OrgWarning)
|
||||
return;
|
||||
OrgWarning = true;
|
||||
if (Company.CountryCode.ToLower() == "se" && VatUtils.SanitizeVatNumber(Activity.VatNumber).Length < 10 && Activity.ActivityStatusEnum == "order")
|
||||
if (Company.CountryCode.ToLower() == "se" && VatUtils.SanitizeVatNumber(Activity.VatNumber).Length < 10 &&
|
||||
Activity.ActivityStatusEnum == "order")
|
||||
{
|
||||
Toaster.ShowWarning("Org nummer er ufuldstændig. Skal opdateres før bestilling kan sendes. ", "ADVARSEL");
|
||||
}
|
||||
|
@ -275,7 +290,9 @@ public partial class AdvisorActivityCreatePage : IDisposable
|
|||
{
|
||||
Working = true;
|
||||
// pop a message
|
||||
Toaster.ShowError("Produkt gennemgang mangler. Vent mens produkt oversigt indlæses. Gå ikke væk fra siden!", "Produkt check ...");
|
||||
Toaster.ShowError(
|
||||
"Produkt gennemgang mangler. Vent mens produkt oversigt indlæses. Gå ikke væk fra siden!",
|
||||
"Produkt check ...");
|
||||
// product inventory has not been updated
|
||||
// send rpc call to sync ERP to CRM
|
||||
Toaster.ShowInfo("Vent mens data synkroniseres ...", "ERP til CRM ...");
|
||||
|
@ -314,8 +331,8 @@ public partial class AdvisorActivityCreatePage : IDisposable
|
|||
{
|
||||
item.Check = false;
|
||||
}
|
||||
await Storage.SetItemAsync($"{CompanyId}-products", CheckList);
|
||||
|
||||
await Storage.SetItemAsync($"{CompanyId}-products", CheckList);
|
||||
}
|
||||
|
||||
private async Task WorkDateConfirmCallback()
|
||||
|
@ -376,6 +393,7 @@ public partial class AdvisorActivityCreatePage : IDisposable
|
|||
Toaster.ShowError("Kunde adresse er ufuldstændig.");
|
||||
return;
|
||||
}
|
||||
|
||||
// validate org number
|
||||
// - this is a required input
|
||||
// - must validate according to country rules.
|
||||
|
@ -384,6 +402,7 @@ public partial class AdvisorActivityCreatePage : IDisposable
|
|||
Toaster.ShowError("Firma registreringsnummer er ikke korrekt.");
|
||||
return;
|
||||
}
|
||||
|
||||
// validate input according to status
|
||||
switch (Activity.ActivityStatusEnum)
|
||||
{
|
||||
|
@ -400,6 +419,7 @@ public partial class AdvisorActivityCreatePage : IDisposable
|
|||
Toaster.ShowError("Ved tilbud skal en gyldig email adresse angives.");
|
||||
return;
|
||||
}
|
||||
|
||||
// raise working flag
|
||||
Working = true;
|
||||
|
||||
|
@ -412,6 +432,7 @@ public partial class AdvisorActivityCreatePage : IDisposable
|
|||
Activity.OrderMessage = $"Telefonnr. opdateret.\n{Activity.OrderMessage}";
|
||||
await CompanyRepo.UpdateErpData(Company.CompanyId, Company);
|
||||
}
|
||||
|
||||
// begin assembling activity
|
||||
Activity.ActivityDate = $"{SelectedDate:yyyy-MM-dd}";
|
||||
Activity.OurRef = Activity.ActivityTypeEnum switch
|
||||
|
@ -443,6 +464,7 @@ public partial class AdvisorActivityCreatePage : IDisposable
|
|||
.ToList();
|
||||
Activity.Lines = lines;
|
||||
}
|
||||
|
||||
// debug logging
|
||||
Logger.LogDebug("CrmNewActivityPage => \n {}", JsonSerializer.Serialize(Activity));
|
||||
// post to api
|
||||
|
@ -458,6 +480,7 @@ public partial class AdvisorActivityCreatePage : IDisposable
|
|||
Navigator.NavigateTo($"/advisor/customers");
|
||||
return;
|
||||
}
|
||||
|
||||
// lower working flag
|
||||
Working = false;
|
||||
// show error message
|
||||
|
@ -507,7 +530,8 @@ public partial class AdvisorActivityCreatePage : IDisposable
|
|||
|
||||
private void HandleFieldChanged(object sender, FieldChangedEventArgs e)
|
||||
{
|
||||
Logger.LogDebug("ActivityNewPage => HandleFieldChanged => ActivityStatusEnum <= '{}'", Activity.ActivityStatusEnum);
|
||||
Logger.LogDebug("ActivityNewPage => HandleFieldChanged => ActivityStatusEnum <= '{}'",
|
||||
Activity.ActivityStatusEnum);
|
||||
DraftProvider.Draft.DraftType = Activity.ActivityStatusEnum;
|
||||
if (Activity.ActivityStatusEnum == "noSale")
|
||||
{
|
||||
|
@ -532,6 +556,7 @@ public partial class AdvisorActivityCreatePage : IDisposable
|
|||
PoFormInvalid = true;
|
||||
return;
|
||||
}
|
||||
|
||||
PoFormInvalid = !ActivityContext.Validate();
|
||||
StateHasChanged();
|
||||
}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
// Copyright (C) 2022 FCS Frede's Computer Services.
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as
|
||||
|
@ -14,6 +13,7 @@
|
|||
// along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html]
|
||||
//
|
||||
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Text.Json;
|
||||
using Blazored.Toast.Services;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
|
@ -21,6 +21,7 @@ using Wonky.Client.HttpInterceptors;
|
|||
using Wonky.Client.HttpRepository;
|
||||
using Wonky.Client.Services;
|
||||
using Wonky.Entity.Views;
|
||||
|
||||
#pragma warning disable CS8618
|
||||
|
||||
namespace Wonky.Client.Pages;
|
||||
|
@ -45,7 +46,9 @@ public partial class AdvisorActivityTodayListPage : IDisposable
|
|||
Interceptor.RegisterEvent();
|
||||
Interceptor.RegisterBeforeSendEvent();
|
||||
UserProfile = await ProfileService.GetProfile();
|
||||
SelectedDate = string.IsNullOrWhiteSpace(UserProfile.WorkDate) ? DateTime.Now : DateTime.Parse(UserProfile.WorkDate);
|
||||
SelectedDate = string.IsNullOrWhiteSpace(UserProfile.WorkDate)
|
||||
? DateTime.Now
|
||||
: DateTime.Parse(UserProfile.WorkDate);
|
||||
ReportExist = await ReportRepo.ReportExist($"{SelectedDate:yyyy-MM-dd}");
|
||||
await GetActivities($"{SelectedDate:yyyy-MM-dd}");
|
||||
Working = false;
|
||||
|
@ -68,5 +71,4 @@ public partial class AdvisorActivityTodayListPage : IDisposable
|
|||
{
|
||||
Interceptor.DisposeEvent();
|
||||
}
|
||||
|
||||
}
|
|
@ -23,7 +23,6 @@
|
|||
@page "/advisor/customers/{CompanyId}/quotes/{OrderId}"
|
||||
|
||||
<PageTitle>@ReportItem.Company.Name @ReportItem.OrderDate</PageTitle>
|
||||
@* <ReportItemComponent ReportItem="@_item" /> *@
|
||||
|
||||
<table class="table table-sm table-striped d-print-table">
|
||||
<thead>
|
||||
|
@ -124,7 +123,9 @@
|
|||
{
|
||||
<tr>
|
||||
<td colspan="4"></td>
|
||||
<td colspan="2"><h5 class="fw-bold text-center"><i class="bi-lightning-charge the-fast" style="font-size: 2rem;"></i> HASTER</h5></td>
|
||||
<td colspan="2">
|
||||
<h5 class="fw-bold text-center"><i class="bi-lightning-charge the-fast" style="font-size: 2rem;"></i> HASTER</h5>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
// Copyright (C) 2022 FCS Frede's Computer Services.
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as
|
||||
|
@ -22,6 +21,7 @@ using Wonky.Client.HttpInterceptors;
|
|||
using Wonky.Client.HttpRepository;
|
||||
using Wonky.Entity.DTO;
|
||||
using Wonky.Entity.Views;
|
||||
|
||||
#pragma warning disable CS8618
|
||||
|
||||
namespace Wonky.Client.Pages;
|
||||
|
@ -42,6 +42,7 @@ public partial class AdvisorActivityViewEditPage : IDisposable
|
|||
private int GraceTime { get; set; } = 60;
|
||||
private bool Working { get; set; } = true;
|
||||
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
Interceptor.RegisterEvent();
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
// Copyright (C) 2022 FCS Frede's Computer Services.
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as
|
||||
|
@ -20,6 +19,7 @@ using Wonky.Client.HttpInterceptors;
|
|||
using Wonky.Client.HttpRepository;
|
||||
using Wonky.Entity.DTO;
|
||||
using Wonky.Entity.Views;
|
||||
|
||||
#pragma warning disable CS8618
|
||||
|
||||
namespace Wonky.Client.Pages;
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
//
|
||||
|
||||
using System.Text.Json;
|
||||
using System.Xml;
|
||||
using Blazored.LocalStorage;
|
||||
using Blazored.Toast.Services;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
|
@ -27,11 +26,11 @@ using Wonky.Client.Services;
|
|||
using Wonky.Client.Shared;
|
||||
using Wonky.Entity.DTO;
|
||||
using Wonky.Entity.Models;
|
||||
using Wonky.Entity.Views;
|
||||
|
||||
#pragma warning disable CS8618
|
||||
|
||||
namespace Wonky.Client.Pages
|
||||
{
|
||||
namespace Wonky.Client.Pages;
|
||||
|
||||
public partial class AdvisorCustomerCreatePage : IDisposable
|
||||
{
|
||||
[Inject] public IToastService Toaster { get; set; }
|
||||
|
@ -185,4 +184,3 @@ namespace Wonky.Client.Pages
|
|||
CompanyContext.OnValidationStateChanged -= ValidationChanged;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -34,20 +34,23 @@
|
|||
<div class="col-sm-2">
|
||||
<PageSizeComponent OnChanged="SetPageSize"/>
|
||||
</div>
|
||||
<div class="col-sm-3">
|
||||
<div class="col-sm-2 mx-auto">
|
||||
<button type button class="btn btn-warning @(ShowFolded ? "active" : "")"
|
||||
data-bs-toggle="button" aria-pressed="@ShowFolded" @onclick="OnFoldedClick">
|
||||
@ButtonFoldedText
|
||||
</button>
|
||||
<button type button class="btn btn-warning @(@ShowHidden ? "active" : "")"
|
||||
data-bs-toggle="button" aria-pressed="@ShowHidden" @onclick="OnHiddenClick">
|
||||
@ButtonHiddenText
|
||||
data-bs-toggle="button" aria-pressed="@ShowFolded" @onclick="ToggleFolded">
|
||||
@ToggleFoldedText
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-sm-7">
|
||||
<div class="col-sm-2 mx-auto">
|
||||
<button type button class="btn btn-warning @(@ShowHidden ? "active" : "")"
|
||||
data-bs-toggle="button" aria-pressed="@ShowHidden" @onclick="ToggleHidden">
|
||||
@ToggleHiddenText
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-sm-5">
|
||||
<PaginationComponent MetaData="PageData" Spread="2" SelectedPage="SelectedPage"/>
|
||||
</div>
|
||||
<div class="col-sm-2 text-end">
|
||||
<div class="col-sm-1">@* placeholder *@</div>
|
||||
<div class="col-sm-2 mx-auto">
|
||||
<a class="btn btn-success text-nowrap" href="/advisor/customers/new">Opret kunde <i class="bi-plus"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -59,4 +62,3 @@
|
|||
{
|
||||
<WorkingThreeDots/>
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
// Copyright (C) 2022 FCS Frede's Computer Services.
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as
|
||||
|
@ -22,10 +21,11 @@ using Wonky.Client.Services;
|
|||
using Wonky.Entity.DTO;
|
||||
using Wonky.Entity.Requests;
|
||||
using Wonky.Entity.Views;
|
||||
|
||||
#pragma warning disable CS8618
|
||||
|
||||
namespace Wonky.Client.Pages
|
||||
{
|
||||
namespace Wonky.Client.Pages;
|
||||
|
||||
public partial class AdvisorCustomerListPage : IDisposable
|
||||
{
|
||||
[Inject] public ILocalStorageService Storage { get; set; }
|
||||
|
@ -36,58 +36,59 @@ namespace Wonky.Client.Pages
|
|||
[Inject] public IUserInfoService UserInfoService { get; set; }
|
||||
|
||||
private List<CompanyDto> CompanyList { get; set; } = new();
|
||||
private UserProfile Profiles { get; set; } = new();
|
||||
private UserManagerEditView XUserInfo { get; set; } = new();
|
||||
private UserProfile Profile { get; set; } = new();
|
||||
private UserManagerEditView UserInfo { get; set; } = new();
|
||||
private string SavedSearch { get; set; } = "";
|
||||
private bool Working { get; set; } = true;
|
||||
private MetaData PageData { get; set; } = new();
|
||||
private CustomerPaging Paging { get; set; } = new();
|
||||
private string ButtonFoldedText { get; set; } = "Vis Ophørte";
|
||||
private string ToggleFoldedText { get; set; } = "Vis Lukkede";
|
||||
private bool ShowFolded { get; set; }
|
||||
private string ButtonHiddenText { get; set; } = "Vis Skjulte";
|
||||
private string ToggleHiddenText { get; set; } = "Inkl. Skjulte";
|
||||
private bool ShowHidden { get; set; }
|
||||
|
||||
protected override void OnParametersSet()
|
||||
{
|
||||
Interceptor.RegisterEvent();
|
||||
Interceptor.RegisterBeforeSendEvent();
|
||||
|
||||
}
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
// set preferences
|
||||
Profiles = await ProfileService.GetProfile();
|
||||
XUserInfo = await UserInfoService.GetUserInfo();
|
||||
Paging.OrderBy = Profiles.CompanySort;
|
||||
Paging.SearchColumn = Profiles.CompanySearch;
|
||||
Paging.PageSize = Convert.ToInt32(Profiles.PageSize);
|
||||
Profile = await ProfileService.GetProfile();
|
||||
UserInfo = await UserInfoService.GetUserInfo();
|
||||
Paging.OrderBy = Profile.CompanySort;
|
||||
Paging.SearchColumn = Profile.CompanySearch;
|
||||
Paging.PageSize = Convert.ToInt32(Profile.PageSize);
|
||||
Paging.HasFolded = ShowFolded ? 1 : 0;
|
||||
|
||||
// load saved search
|
||||
SavedSearch = string.IsNullOrWhiteSpace(Profiles.CompanyFilterPhrase) ? "" : Profiles.CompanyFilterPhrase;
|
||||
SavedSearch = string.IsNullOrWhiteSpace(Profile.CompanyFilterPhrase) ? "" : Profile.CompanyFilterPhrase;
|
||||
Paging.SearchTerm = SavedSearch;
|
||||
|
||||
|
||||
// get companies
|
||||
await FetchCustomers();
|
||||
Working = false;
|
||||
}
|
||||
|
||||
private async Task OnFoldedClick()
|
||||
private async Task ToggleFolded()
|
||||
{
|
||||
Working = true;
|
||||
ShowFolded = !ShowFolded;
|
||||
ButtonFoldedText = ShowFolded ? "Vis Aktive" : "Vis Ophørte";
|
||||
ToggleFoldedText = ShowFolded ? "Normal Visning" : "Vis Lukkede";
|
||||
CompanyList = new List<CompanyDto>();
|
||||
Paging.PageNumber = 1;
|
||||
Paging.HasFolded = ShowFolded ? 1 : 0;
|
||||
await FetchCustomers();
|
||||
}
|
||||
|
||||
private async Task OnHiddenClick()
|
||||
private async Task ToggleHidden()
|
||||
{
|
||||
Working = true;
|
||||
ShowHidden = !ShowHidden;
|
||||
ButtonHiddenText = ShowHidden ? "Vis Normale" : "Vis skjulte";
|
||||
ToggleHiddenText = ShowHidden ? "Normal Visning" : "Inkl. Skjulte";
|
||||
CompanyList = new List<CompanyDto>();
|
||||
Paging.PageNumber = 1;
|
||||
Paging.IsHidden = ShowHidden ? 1 : 0;
|
||||
|
@ -108,6 +109,7 @@ namespace Wonky.Client.Pages
|
|||
Paging.PageNumber = 1;
|
||||
await FetchCustomers();
|
||||
}
|
||||
|
||||
private async Task SetPageSize(string pageSize)
|
||||
{
|
||||
CompanyList = new List<CompanyDto>();
|
||||
|
@ -163,6 +165,3 @@ namespace Wonky.Client.Pages
|
|||
|
||||
public void Dispose() => Interceptor.DisposeEvent();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -36,85 +36,86 @@
|
|||
// erp context
|
||||
<EditForm EditContext="ErpContext">
|
||||
<DataAnnotationsValidator/>
|
||||
<div class="row g-3">
|
||||
<div class="row g-1">
|
||||
@* Company Name *@
|
||||
<label for="name" class="col-sm-1 col-form-label-sm">Navn</label>
|
||||
<div class="col-sm-5">
|
||||
<InputText id="name" class="form-control" @bind-Value="Company.Name"/>
|
||||
<InputText id="name" class="form-control" @bind-Value="Company.Name" readonly="@(ErpEditDisabled)"/>
|
||||
<ValidationMessage For="@(() => Company.Name)"></ValidationMessage>
|
||||
</div>
|
||||
@* Company Attention *@
|
||||
<label for="attention" class="col-sm-1 col-form-label-sm">Att.</label>
|
||||
<div class="col-sm-5">
|
||||
<InputText id="attention" class="form-control" @bind-Value="Company.Attention"/>
|
||||
<InputText id="attention" class="form-control" @bind-Value="Company.Attention" readonly="@(ErpEditDisabled)"/>
|
||||
<ValidationMessage For="@(() => Company.Attention)"></ValidationMessage>
|
||||
</div>
|
||||
@* Address 1 *@
|
||||
<label for="address1" class="col-sm-1 col-form-label-sm">Adresse</label>
|
||||
<div class="col-sm-5">
|
||||
<InputText id="address1" class="form-control" @bind-Value="Company.Address1"/>
|
||||
<InputText id="address1" class="form-control" @bind-Value="Company.Address1" readonly="@(ErpEditDisabled)"/>
|
||||
<ValidationMessage For="@(() => Company.Address1)"></ValidationMessage>
|
||||
</div>
|
||||
@* Address 2 *@
|
||||
<label for="address2" class="col-sm-1 col-form-label-sm">Adresse</label>
|
||||
<div class="col-sm-5">
|
||||
<InputText id="address2" class="form-control" @bind-Value="Company.Address2"/>
|
||||
<InputText id="address2" class="form-control" @bind-Value="Company.Address2" readonly="@(ErpEditDisabled)"/>
|
||||
<ValidationMessage For="@(() => Company.Address2)"></ValidationMessage>
|
||||
</div>
|
||||
@* Post Code *@
|
||||
<label for="zipCode" class="col-sm-1 col-form-label-sm">PostNr</label>
|
||||
<div class="col-sm-2">
|
||||
<InputText id="zipCode" class="form-control" @bind-Value="Company.ZipCode"/>
|
||||
<InputText id="zipCode" class="form-control" @bind-Value="Company.ZipCode" readonly="@(ErpEditDisabled)"/>
|
||||
<ValidationMessage For="@(() => Company.ZipCode)"></ValidationMessage>
|
||||
</div>
|
||||
@* City Name *@
|
||||
<label for="city" class="col-sm-1 col-form-label-sm">Bynavn</label>
|
||||
<div class="col-sm-8">
|
||||
<InputText id="city" class="form-control" @bind-Value="Company.City"/>
|
||||
<InputText id="city" class="form-control" @bind-Value="Company.City" readonly="@(ErpEditDisabled)"/>
|
||||
<ValidationMessage For="@(() => Company.City)"></ValidationMessage>
|
||||
</div>
|
||||
@* Phone *@
|
||||
<label for="phone" class="col-sm-1 col-form-label-sm">Telefon</label>
|
||||
<div class="col-sm-3">
|
||||
<InputText id="phone" class="form-control" @bind-Value="Company.Phone"/>
|
||||
<div class="col-sm-2">
|
||||
<InputText id="phone" class="form-control" @bind-Value="Company.Phone" readonly="@(ErpEditDisabled)"/>
|
||||
<ValidationMessage For="@(() => Company.Phone)"></ValidationMessage>
|
||||
</div>
|
||||
@* Mobile *@
|
||||
<label for="mobile" class="col-sm-1 col-form-label-sm">Mobil</label>
|
||||
<div class="col-sm-3">
|
||||
<InputText id="mobile" class="form-control" @bind-Value="Company.Mobile"/>
|
||||
<div class="col-sm-2">
|
||||
<InputText id="mobile" class="form-control" @bind-Value="Company.Mobile" readonly="@(ErpEditDisabled)"/>
|
||||
<ValidationMessage For="@(() => Company.Mobile)"></ValidationMessage>
|
||||
</div>
|
||||
<div class="col-sm-4 d-grid mx-auto">
|
||||
<button type="button" class="btn btn-danger" @onclick="ToggleVisibility">@ToggleButtonText</button>
|
||||
</div>
|
||||
@* Email *@
|
||||
<label for="email" class="col-sm-1 col-form-label-sm">Epost</label>
|
||||
<div class="col-sm-5">
|
||||
<InputText id="email" class="form-control" @bind-Value="Company.Email"/>
|
||||
<InputText id="email" class="form-control" @bind-Value="Company.Email" readonly="@(ErpEditDisabled)"/>
|
||||
<ValidationMessage For="@(() => Company.Email)"></ValidationMessage>
|
||||
</div>
|
||||
<div class="col-sm-3 d-grid mx-auto">
|
||||
<button type="button" class="btn btn-primary d-block" disabled="@(Company.HasFolded == 0 || Company.Name == "ERROR")" onclick="@ForceActivity">Aktiver besøg</button>
|
||||
<div class="col-sm-4">@* ---- placeholder --- *@</div>
|
||||
<div class="col-sm-2 d-grid mx-auto">
|
||||
<button type="button" class="btn btn-edit" @onclick="ToggleErpEdit"><i class="bi-pencil"></i> STAM data</button>
|
||||
</div>
|
||||
<div class="col-sm-3 d-grid mx-auto">
|
||||
<button type="button" class="btn btn-danger d-block" onclick="@UpdateErpData" disabled="@(Working || Company.Name == "ERROR")"><i class="bi-cloud-arrow-up"></i> STAM data </button>
|
||||
<button type="button" class="btn btn-primary d-block" disabled="@(Company.HasFolded == 0 || Company.Name == "ERROR")" @onclick="ForceActivity">Aktiver besøg</button>
|
||||
</div>
|
||||
<div class="col-sm-3 d-grid mx-auto">
|
||||
<button type="button" class="btn btn-danger d-block" onclick="@UpdateErpData" disabled="@(Working || Company.Name == "ERROR" || ErpEditDisabled)"><i class="bi-cloud-arrow-up"></i> STAM data </button>
|
||||
</div>
|
||||
|
||||
<hr class="mb-3"/>
|
||||
<div class="row">
|
||||
@* vat number*@
|
||||
<label for="vatNumber" class="col-sm-2 col-form-label-sm">CVR/Org nr.</label>
|
||||
<div class="col-sm-4">
|
||||
<label for="vatNumber" class="col-sm-1 col-form-label-sm">CVR/Org nr.</label>
|
||||
<div class="col-sm-3">
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">
|
||||
<DisplayStateComponent StateClass="@VatState"/>
|
||||
</span>
|
||||
<InputText id="vatNumber" class="form-control" @bind-Value="Company.VatNumber"/>
|
||||
<InputText id="vatNumber" class="form-control" @bind-Value="Company.VatNumber" readonly="@(VatEditDisabled)"/>
|
||||
<ValidationMessage For="@(() => Company.VatNumber)"></ValidationMessage>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-2 d-grid mx-auto">
|
||||
<button type="button" class="btn btn-edit" @onclick="ToggleVatEdit"><i class="bi-pencil"></i> Moms/Org Nr.</button>
|
||||
</div>
|
||||
|
||||
@* vat lookup *@
|
||||
<div class="col-sm-3 d-grid mx-auto">
|
||||
@switch (CountryCode)
|
||||
|
@ -132,7 +133,7 @@
|
|||
</div>
|
||||
@* save vat number *@
|
||||
<div class="col-sm-3 d-grid mx-auto">
|
||||
<button type="button" class="btn btn-warning d-block" @onclick="UpdateVatNumber"><i class="bi-cloud-arrow-up"></i> Moms/Org Nr.</button>
|
||||
<button type="button" class="btn btn-warning d-block" @onclick="UpdateVatNumber" disabled="@(VatEditDisabled)"><i class="bi-cloud-arrow-up"></i> Moms/Org Nr.</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -240,6 +241,11 @@
|
|||
<InputTextArea id="crmNotes" class="form-control" @bind-Value="Company.CrmNotes"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row pt-3">
|
||||
<div class="col-sm-3 d-grid">
|
||||
<button type="button" class="btn btn-danger" @onclick="ToggleVisibility">@ToggleButtonText</button>
|
||||
</div>
|
||||
</div>
|
||||
</EditForm>
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
// Copyright (C) 2022 FCS Frede's Computer Services.
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as
|
||||
|
@ -28,7 +27,7 @@ using Wonky.Client.Services;
|
|||
using Wonky.Client.Shared;
|
||||
using Wonky.Entity.DTO;
|
||||
using Wonky.Entity.Models;
|
||||
using Wonky.Entity.Views;
|
||||
|
||||
#pragma warning disable CS8618
|
||||
|
||||
namespace Wonky.Client.Pages;
|
||||
|
@ -63,6 +62,8 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
private string ActionLink { get; set; } = "";
|
||||
private bool Working { get; set; } = true;
|
||||
private bool CountryIsDk { get; set; } = true;
|
||||
private bool ErpEditDisabled { get; set; } = true;
|
||||
private bool VatEditDisabled { get; set; } = true;
|
||||
private List<ContactDto> Contacts { get; set; } = new();
|
||||
private VatLookupDkModal VatLookupPopup { get; set; } = new();
|
||||
private ContactDto SelectedContact { get; set; } = new();
|
||||
|
@ -96,7 +97,8 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
Company = await CustomerRepo.GetCompanyById(CompanyId);
|
||||
|
||||
Logger.LogDebug("company => {}", JsonSerializer.Serialize(Company));
|
||||
ToggleButtonText = Company.IsHidden == 0 ? "Skjul kunde" : "Vis kunde";
|
||||
// toggle view button text
|
||||
ToggleButtonText = Company.IsHidden == 0 ? "Udelad kunde i oversigt" : "Brug Normal Visning";
|
||||
CurrentVat = Company.VatNumber;
|
||||
Company.CountryCode = UserInfo.CountryCode.ToLower();
|
||||
// internal flag
|
||||
|
@ -137,6 +139,7 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
// vat state css class
|
||||
VatState = Company.ValidVat == 1 ? "the-good" : "no-vat"; // assign css class
|
||||
}
|
||||
|
||||
// create search address from address
|
||||
if (CountryIsDk)
|
||||
CompanyVatAddress = PrepareVatAddress(Company);
|
||||
|
@ -149,13 +152,25 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
await RequestErpUpdate();
|
||||
}
|
||||
|
||||
private void ToggleErpEdit()
|
||||
{
|
||||
ErpEditDisabled = !ErpEditDisabled;
|
||||
}
|
||||
|
||||
private void ToggleVatEdit()
|
||||
{
|
||||
VatEditDisabled = !VatEditDisabled;
|
||||
}
|
||||
|
||||
private async Task ToggleVisibility()
|
||||
{
|
||||
Company.IsHidden = Company.IsHidden == 0 ? 1 : 0;
|
||||
ToggleButtonText = Company.IsHidden == 0 ? "Skjul kunde" : "Vis kunde";
|
||||
// toggle view button text
|
||||
ToggleButtonText = Company.IsHidden == 0 ? "Udelad kunde i oversigt" : "Brug Normal Visning";
|
||||
Logger.LogDebug("ToggleVisibility => Company.IsHidden == {}", Company.IsHidden);
|
||||
await CustomerRepo.UpdateCrmData(CompanyId, Company);
|
||||
}
|
||||
|
||||
private async Task RequestErpUpdate()
|
||||
{
|
||||
if (Working)
|
||||
|
@ -206,6 +221,7 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
Company.ZipCode = regInfo.ZipCode;
|
||||
Company.City = regInfo.City;
|
||||
}
|
||||
|
||||
Company.VatNumber = regInfo.VatNumber;
|
||||
}
|
||||
|
||||
|
@ -247,6 +263,7 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
// send put request to backend
|
||||
await AdvisorContactRepo.UpdateContact(contact);
|
||||
}
|
||||
|
||||
// reset selected contact
|
||||
SelectedContact = new ContactDto();
|
||||
// reload contacts from backend
|
||||
|
@ -290,6 +307,7 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
Company = result;
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
Working = false;
|
||||
Toaster.ClearAll();
|
||||
}
|
||||
|
@ -302,6 +320,7 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
{
|
||||
if (Working)
|
||||
return;
|
||||
ErpEditDisabled = true;
|
||||
Working = true;
|
||||
Toaster.ShowInfo("Vent venligst ...", "OPDATERER STAM DATA");
|
||||
var result = await CustomerRepo.UpdateErpData(CompanyId, Company);
|
||||
|
@ -310,6 +329,7 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
Company = result;
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
Working = false;
|
||||
Toaster.ClearAll();
|
||||
}
|
||||
|
@ -326,8 +346,10 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
Toaster.ShowError($"Moms Nummer ugyldigt");
|
||||
return;
|
||||
}
|
||||
|
||||
if (Working)
|
||||
return;
|
||||
VatEditDisabled = true;
|
||||
Working = true;
|
||||
Toaster.ShowInfo("Vent venligst ...", "OPDATERER MOMS NUMMER");
|
||||
var result = await CustomerRepo.UpdateCompanyVat(CompanyId, Company.VatNumber);
|
||||
|
@ -336,6 +358,7 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
Company = result;
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
Toaster.ClearAll();
|
||||
Working = false;
|
||||
}
|
||||
|
@ -359,6 +382,7 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
HouseNumber = Regex.Replace(model.Address1[pos1..], "[^0-9]", "").Trim()
|
||||
};
|
||||
}
|
||||
|
||||
// process address2
|
||||
var pos2 = model.Address2.IndexOfAny(digits);
|
||||
if (pos2 > 0)
|
||||
|
@ -370,6 +394,7 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
HouseNumber = Regex.Replace(model.Address2[pos2..], "[^0-9]", "").Trim()
|
||||
};
|
||||
}
|
||||
|
||||
// return empty model
|
||||
return new VatAddress();
|
||||
}
|
||||
|
@ -398,6 +423,7 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
ValidVat = true;
|
||||
EnableActivity = 1;
|
||||
}
|
||||
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
|
|
|
@ -16,8 +16,8 @@
|
|||
|
||||
using Microsoft.AspNetCore.Components;
|
||||
|
||||
namespace Wonky.Client.Pages
|
||||
{
|
||||
namespace Wonky.Client.Pages;
|
||||
|
||||
public partial class ErrorReportPage
|
||||
{
|
||||
[Parameter]
|
||||
|
@ -25,4 +25,3 @@ namespace Wonky.Client.Pages
|
|||
|
||||
[Parameter] public string ErrorDescription { get; set; } = "";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,8 +24,8 @@ using Wonky.Entity.Requests;
|
|||
using Wonky.Entity.Views;
|
||||
#pragma warning disable CS8618
|
||||
|
||||
namespace Wonky.Client.Pages
|
||||
{
|
||||
namespace Wonky.Client.Pages;
|
||||
|
||||
public partial class OfficeCountryCustomerListPage : IDisposable
|
||||
{
|
||||
[Parameter] public string CountryCode { get; set; } = "";
|
||||
|
@ -141,6 +141,3 @@ namespace Wonky.Client.Pages
|
|||
|
||||
public void Dispose() => Interceptor.DisposeEvent();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -24,8 +24,8 @@ using Wonky.Entity.Configuration;
|
|||
using Wonky.Entity.DTO;
|
||||
using Wonky.Entity.Views;
|
||||
|
||||
namespace Wonky.Client.Services
|
||||
{
|
||||
namespace Wonky.Client.Services;
|
||||
|
||||
public class AuthenticationService : IAuthenticationService
|
||||
{
|
||||
private readonly JsonSerializerOptions _options = new() { PropertyNameCaseInsensitive = true };
|
||||
|
@ -142,5 +142,3 @@ namespace Wonky.Client.Services
|
|||
return userInfo ?? new UserManagerEditView();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -17,8 +17,8 @@
|
|||
using Wonky.Entity.DTO;
|
||||
using Wonky.Entity.Views;
|
||||
|
||||
namespace Wonky.Client.Services
|
||||
{
|
||||
namespace Wonky.Client.Services;
|
||||
|
||||
public interface IAuthenticationService
|
||||
{
|
||||
Task<AuthResponseView> Login(CredentialDto credentials);
|
||||
|
@ -26,5 +26,3 @@ namespace Wonky.Client.Services
|
|||
Task<string> RefreshToken();
|
||||
Task<UserManagerEditView> UserInfo(bool write = false);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -22,8 +22,8 @@ using Wonky.Client.Services;
|
|||
using Wonky.Entity.DTO;
|
||||
using Wonky.Entity.Views;
|
||||
|
||||
namespace Wonky.Client.Shared
|
||||
{
|
||||
namespace Wonky.Client.Shared;
|
||||
|
||||
public class AuthStateProvider : AuthenticationStateProvider
|
||||
{
|
||||
private readonly HttpClient _client;
|
||||
|
@ -103,5 +103,3 @@ namespace Wonky.Client.Shared
|
|||
NotifyAuthenticationStateChanged(authState);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"appInfo": {
|
||||
"name": "Wonky Online",
|
||||
"version": "0.117.1",
|
||||
"version": "0.118.0",
|
||||
"rc": true,
|
||||
"sandBox": false,
|
||||
"image": "grumpy-coder.png"
|
||||
|
@ -19,7 +19,7 @@
|
|||
}
|
||||
},
|
||||
"apiConfig": {
|
||||
"baseUrl": "https://dev.innotec.dk",
|
||||
"baseUrl": "https://zeta.innotec.dk",
|
||||
"catalog": "api/v2/catalog/country",
|
||||
"crmCustomers": "api/v2/crm/companies",
|
||||
"crmInventoryExt": "history/inventory",
|
||||
|
|
Loading…
Reference in a new issue