wip
This commit is contained in:
parent
e61318864f
commit
0a834ccda4
27 changed files with 288 additions and 66 deletions
|
@ -30,7 +30,7 @@ namespace Wonky.Client.Components
|
|||
private Confirmation _confirmation = new ();
|
||||
private string _companyId = string.Empty;
|
||||
|
||||
private string VisitState(string nextVisit)
|
||||
private static string VisitState(string nextVisit)
|
||||
{
|
||||
var theUgly = DateTime.Parse(nextVisit);
|
||||
var theBad = theUgly.AddDays(-14);
|
||||
|
@ -38,6 +38,7 @@ namespace Wonky.Client.Components
|
|||
return "the-ugly";
|
||||
return DateTime.Now >= theBad ? "the-bad" : "the-good";
|
||||
}
|
||||
|
||||
private void CallConfirmationModal(string companyId)
|
||||
{
|
||||
_companyId = companyId;
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
//
|
||||
*@
|
||||
|
||||
<img class="img-fluid float-start state rounded-circle @StateClass mx-1" src="state.png" alt="state"/>
|
||||
<img class="img-fluid float-start state rounded-circle @StateClass mx-3" src="state.png" alt="state"/>
|
||||
@code{
|
||||
[Parameter] public string StateClass { get; set; } = "the-ugly";
|
||||
}
|
||||
|
|
|
@ -22,9 +22,9 @@
|
|||
<button class="btn btn-primary text-nowrap" @onclick="GetCvrData" disabled="@CvrInvalid">Vis CVR data</button>
|
||||
</div>
|
||||
<div class="col-md-9">
|
||||
<div style="@(HideMe ? "display:none" : "display:block")">
|
||||
<div class="alert @(CurrentState == "NORMAL" ? "alert-success" : "alert-warning")">
|
||||
<strong>CVR status @CurrentState</strong>
|
||||
<div style="@(_hideMe ? "display:none" : "display:block")">
|
||||
<div class="alert @(_currentState == "NORMAL" ? "alert-success" : "alert-warning")">
|
||||
<strong>CVR status @_currentState</strong>
|
||||
</div>
|
||||
<ul class="list-group list-group-flush small">
|
||||
<li class="list-group-item">@VirkRegInfo.Name</li>
|
||||
|
@ -34,4 +34,4 @@
|
|||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -22,26 +22,24 @@ namespace Wonky.Client.Components;
|
|||
|
||||
public partial class RegInfoCompany
|
||||
{
|
||||
[Inject] public VirkRegistryService VirkRegistryService { get; set; }
|
||||
|
||||
[Inject] public VirkRegistryService VirkRegistryService { get; set; } = null!;
|
||||
[Parameter] public string VatNumber { get; set; } = "";
|
||||
|
||||
private VirkRegInfo VirkRegInfo { get; set; } = new();
|
||||
private bool HideMe = true;
|
||||
private bool _hideMe = true;
|
||||
private bool CvrInvalid => string.IsNullOrEmpty(VatNumber);
|
||||
private VirkParams _VirkParams = new();
|
||||
private string CurrentState = "UKENDT";
|
||||
private readonly VirkParams _virkParams = new();
|
||||
private string _currentState = "";
|
||||
private async Task GetCvrData()
|
||||
{
|
||||
_VirkParams.VatNumber = VatNumber;
|
||||
_virkParams.VatNumber = VatNumber;
|
||||
if (string.IsNullOrWhiteSpace(VirkRegInfo.VatNumber))
|
||||
{
|
||||
var result = await VirkRegistryService.QueryVirkRegistry(_VirkParams);
|
||||
var result = await VirkRegistryService.QueryVirkRegistry(_virkParams);
|
||||
if (result.Any())
|
||||
{
|
||||
CurrentState = VirkRegInfo.States[^1].State;
|
||||
_currentState = VirkRegInfo.States[^1].State;
|
||||
}
|
||||
}
|
||||
HideMe = !HideMe;
|
||||
_hideMe = !_hideMe;
|
||||
}
|
||||
}
|
|
@ -1,4 +1,19 @@
|
|||
|
||||
@*
|
||||
// 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 Affero GNU General Public License as
|
||||
// published by the Free Software Foundation, either version 3 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// Affero GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the Affero GNU General Public License
|
||||
// along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html]
|
||||
//
|
||||
*@
|
||||
<EditForm EditContext="_editAddress" OnValidSubmit="SubmitForm">
|
||||
<DataAnnotationsValidator/>
|
||||
<div class="row">
|
||||
|
|
|
@ -1,3 +1,17 @@
|
|||
// 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 Affero GNU General Public License as
|
||||
// published by the Free Software Foundation, either version 3 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// Affero GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the Affero GNU General Public License
|
||||
// along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html]
|
||||
//
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Microsoft.AspNetCore.Components.Forms;
|
||||
|
|
|
@ -1,3 +1,19 @@
|
|||
@*
|
||||
// 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 Affero GNU General Public License as
|
||||
// published by the Free Software Foundation, either version 3 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// Affero GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the Affero GNU General Public License
|
||||
// along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html]
|
||||
//
|
||||
*@
|
||||
|
||||
<EditForm EditContext="_editVatNumber" OnValidSubmit="SubmitForm">
|
||||
<DataAnnotationsValidator/>
|
||||
|
|
|
@ -1,3 +1,17 @@
|
|||
// 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 Affero GNU General Public License as
|
||||
// published by the Free Software Foundation, either version 3 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// Affero GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the Affero GNU General Public License
|
||||
// along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html]
|
||||
//
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Microsoft.AspNetCore.Components.Forms;
|
||||
|
|
128
Wonky.Client/Helpers/VatUtils.cs
Normal file
128
Wonky.Client/Helpers/VatUtils.cs
Normal file
|
@ -0,0 +1,128 @@
|
|||
namespace Wonky.Client.Helpers;
|
||||
|
||||
public class VatUtils
|
||||
{
|
||||
public static bool CheckVat(string countryCode, string vatNumber)
|
||||
{
|
||||
return countryCode.ToUpperInvariant() switch
|
||||
{
|
||||
"DK" => CheckVatNumberDenmark(vatNumber),
|
||||
"NO" => CheckVatNumberNorway(vatNumber),
|
||||
"SE" => CheckVatNumberSweden(vatNumber),
|
||||
_ => false
|
||||
};
|
||||
}
|
||||
|
||||
private static bool CheckVatNumberNorway(string vatNumber)
|
||||
{
|
||||
// https://wiki.scn.sap.com/wiki/display/CRM/Norway
|
||||
// 12 digits
|
||||
// C1..C8 random 0 to 9
|
||||
// C9 Check MOD11
|
||||
// C10 C11 C12 chars == MVA
|
||||
return vatNumber.Length >= 9 && CheckModolus11(vatNumber.Substring(0, 8));
|
||||
}
|
||||
|
||||
private static bool CheckVatNumberDenmark(string vatNumber)
|
||||
{
|
||||
// https://wiki.scn.sap.com/wiki/display/CRM/Denmark
|
||||
// 8 digits 0 to 9
|
||||
// C1..C7
|
||||
// C8 Modulo 11 check digit
|
||||
// C1 > 0
|
||||
// R = (2*C1 + 7*C2 + 6*C3 + 5*C4 + 4*C5 + 3*C6 + 2*C7 + C8)
|
||||
if ((int)char.GetNumericValue(vatNumber[0]) < 1 || vatNumber.Length > 8)
|
||||
return false;
|
||||
return CheckModolus11(vatNumber);
|
||||
}
|
||||
|
||||
private static bool CheckVatNumberSweden(string vatNumber)
|
||||
{
|
||||
// https://wiki.scn.sap.com/wiki/display/CRM/Sweden
|
||||
// 12 digits 0 to 9
|
||||
// C1 = (10 - (R + C2 + C4 + C6 + C8) modulo 10) modulo 10
|
||||
// R = S1 + S3 + S5 + S7 + S9
|
||||
// Si = int(Ci/5) + (Ci*2) modulo 10)
|
||||
// C11 C12 >= 01 <= 94
|
||||
//
|
||||
// Validate full string using Luhn algoritm
|
||||
// 12 chars
|
||||
if (vatNumber.Length != 12)
|
||||
return false;
|
||||
// validate if number
|
||||
if (!int.TryParse(vatNumber, out var result))
|
||||
return false;
|
||||
//validate char 11 and 12
|
||||
var valid = int.TryParse(vatNumber.Substring(10, 2), out var v2);
|
||||
if(valid && v2 is < 1 or > 94 )
|
||||
return false;
|
||||
// check vatnumber
|
||||
return CheckLuhn(vatNumber);
|
||||
}
|
||||
private static bool CheckModolus11(string number)
|
||||
{
|
||||
int[] factors;
|
||||
switch (number.Length)
|
||||
{
|
||||
case 8:
|
||||
factors = new [] { 2, 7, 6, 5, 4, 3, 2, 1 };
|
||||
break;
|
||||
case 9:
|
||||
factors = new[] { 3, 2, 7, 6, 5, 4, 3, 2, 1 };
|
||||
break;
|
||||
case 10:
|
||||
factors = new[] { 4, 3, 2, 7, 6, 5, 4, 3, 2, 1 };
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
var i = 0;
|
||||
var r = factors.Sum(m => (int)char.GetNumericValue(number[i++]) * m);
|
||||
return r % 11 == 0;
|
||||
}
|
||||
|
||||
private static bool CheckLuhn(string vatNumber)
|
||||
{
|
||||
// https://www.geeksforgeeks.org/luhn-algorithm/
|
||||
|
||||
var nDigits = vatNumber.Length;
|
||||
var nSum = 0;
|
||||
var isSecond = false;
|
||||
for (var i = nDigits - 1; i >= 0; i--)
|
||||
{
|
||||
var d = (int)char.GetNumericValue(vatNumber[i]) - '0';
|
||||
if (isSecond)
|
||||
d *= 2;
|
||||
// We add two digits to handle
|
||||
// cases that make two digits
|
||||
// after doubling
|
||||
nSum += d / 10;
|
||||
nSum += d % 10;
|
||||
|
||||
isSecond = !isSecond;
|
||||
}
|
||||
return (nSum % 10 == 0);
|
||||
}
|
||||
|
||||
private static string AddSelfCheckDigit(string number)
|
||||
{
|
||||
// modulus 11
|
||||
var multi = number.Length;
|
||||
var sum = 0;
|
||||
for (int i = number.Length - 1, multiplier = 2; i >= 0; i--)
|
||||
{
|
||||
sum += (int)char.GetNumericValue(number[i]) * multiplier;
|
||||
if (++multiplier == multi) multiplier = 2;
|
||||
}
|
||||
var validator = (11 - (sum % 11)).ToString();
|
||||
|
||||
validator = validator switch
|
||||
{
|
||||
"11" => "0",
|
||||
"10" => "X",
|
||||
_ => validator
|
||||
};
|
||||
|
||||
return number + validator;
|
||||
}
|
||||
}
|
|
@ -54,7 +54,7 @@ public class CompanyHttpRepository : ICompanyHttpRepository
|
|||
_apiConfig = apiConfig.Value;
|
||||
}
|
||||
|
||||
public async Task<PagingResponse<CompanyDto>> GetCompaniesPaged(PagingParams pagingParameters)
|
||||
public async Task<PagingResponse<CompanyDto>> GetCompaniesPaged(CompanyPagingParams pagingParameters)
|
||||
{
|
||||
var queryString = new Dictionary<string, string>
|
||||
{
|
||||
|
@ -62,40 +62,37 @@ public class CompanyHttpRepository : ICompanyHttpRepository
|
|||
["pageSize"] = pagingParameters.PageSize.ToString(),
|
||||
["searchTerm"] = pagingParameters.SearchTerm,
|
||||
["searchColumn"] = pagingParameters.SearchColumn,
|
||||
["orderBy"] = pagingParameters.OrderBy
|
||||
["orderBy"] = pagingParameters.OrderBy,
|
||||
["isHidden"] = pagingParameters.IsHidden.ToString(),
|
||||
["hasFolder"] = pagingParameters.HasFolded.ToString()
|
||||
};
|
||||
var response = await _client
|
||||
.GetAsync(QueryHelpers.AddQueryString($"{_apiConfig.CrmCompanies}/page", queryString));
|
||||
var response = await _client.GetAsync(QueryHelpers.AddQueryString($"{_apiConfig.CrmCompanies}/page", queryString));
|
||||
|
||||
var content = await response.Content.ReadAsStringAsync();
|
||||
|
||||
var pagingResponse = new PagingResponse<CompanyDto>
|
||||
{
|
||||
Items = JsonSerializer.Deserialize<List<CompanyDto>>(content, _options),
|
||||
MetaData = JsonSerializer.Deserialize<MetaData>(
|
||||
response.Headers.GetValues("X-Pagination").First(), _options)
|
||||
MetaData = JsonSerializer.Deserialize<MetaData>(response.Headers.GetValues("X-Pagination").First(), _options)
|
||||
};
|
||||
return pagingResponse;
|
||||
}
|
||||
|
||||
public async Task<CompanyDto> GetCompanyByAccount(string accountNumber)
|
||||
{
|
||||
var company = await _client.GetFromJsonAsync<CompanyDto>(
|
||||
$"{_apiConfig.CrmCompanies}/account/{accountNumber}");
|
||||
var company = await _client.GetFromJsonAsync<CompanyDto>($"{_apiConfig.CrmCompanies}/account/{accountNumber}");
|
||||
return company ?? new CompanyDto();
|
||||
}
|
||||
|
||||
public async Task<CompanyDto> GetCompanyById(string companyId)
|
||||
{
|
||||
var company = await _client.GetFromJsonAsync<CompanyDto>(
|
||||
$"{_apiConfig.CrmCompanies}{companyId}");
|
||||
var company = await _client.GetFromJsonAsync<CompanyDto>($"{_apiConfig.CrmCompanies}/{companyId}");
|
||||
return company ?? new CompanyDto();
|
||||
}
|
||||
|
||||
public async Task<string> CreateCompany(CompanyDto companyDto)
|
||||
{
|
||||
var response = await _client.PostAsJsonAsync(
|
||||
$"{_apiConfig.CrmCompanies}", companyDto);
|
||||
var response = await _client.PostAsJsonAsync($"{_apiConfig.CrmCompanies}", companyDto);
|
||||
var content = await response.Content.ReadAsStringAsync();
|
||||
var result = JsonSerializer.Deserialize<CompanyDto>(content);
|
||||
return result.CompanyId;
|
||||
|
@ -103,13 +100,11 @@ public class CompanyHttpRepository : ICompanyHttpRepository
|
|||
|
||||
public async Task UpdateCompany(CompanyDto companyDto)
|
||||
{
|
||||
await _client.PutAsJsonAsync(
|
||||
$"{_apiConfig.CrmCompanies}/{companyDto.CompanyId}", companyDto);
|
||||
await _client.PutAsJsonAsync($"{_apiConfig.CrmCompanies}/{companyDto.CompanyId}", companyDto);
|
||||
}
|
||||
|
||||
public async Task DeleteCompany(string companyId)
|
||||
{
|
||||
await _client.DeleteAsync(
|
||||
$"{_apiConfig.CrmCompanies}/{companyId}");
|
||||
await _client.DeleteAsync($"{_apiConfig.CrmCompanies}/{companyId}");
|
||||
}
|
||||
}
|
|
@ -22,7 +22,7 @@ namespace Wonky.Client.HttpRepository;
|
|||
|
||||
public interface ICompanyHttpRepository
|
||||
{
|
||||
Task<PagingResponse<CompanyDto>> GetCompaniesPaged(PagingParams pagingParameters);
|
||||
Task<PagingResponse<CompanyDto>> GetCompaniesPaged(CompanyPagingParams pagingParameters);
|
||||
Task<CompanyDto> GetCompanyByAccount(string accountNumber);
|
||||
Task<CompanyDto> GetCompanyById(string companyId);
|
||||
Task<string> CreateCompany(CompanyDto companyDto);
|
||||
|
|
|
@ -22,6 +22,6 @@ namespace Wonky.Client.HttpRepository;
|
|||
|
||||
public interface ISalesItemHttpRepository
|
||||
{
|
||||
Task<PagingResponse<SalesItemDto>> GetSalesItemsPaged(PagingParams pagingParameters);
|
||||
Task<PagingResponse<SalesItemDto>> GetSalesItemsPaged(CatalogPagingParams pagingParameters);
|
||||
Task<SalesItemDto> GetSalesItem(string id);
|
||||
}
|
|
@ -51,16 +51,16 @@ public class SalesItemHttpRepository : ISalesItemHttpRepository
|
|||
_apiConfig = configuration.Value;
|
||||
}
|
||||
|
||||
public async Task<PagingResponse<SalesItemDto>> GetSalesItemsPaged(PagingParams pagingParameters)
|
||||
public async Task<PagingResponse<SalesItemDto>> GetSalesItemsPaged(CatalogPagingParams pagingParameters)
|
||||
{
|
||||
var queryString = new Dictionary<string, string>
|
||||
{
|
||||
["pageNumber"] = pagingParameters.PageNumber.ToString(),
|
||||
["pageSize"] = pagingParameters.PageSize.ToString(),
|
||||
["searchTerm"] = pagingParameters.SearchTerm,
|
||||
["searchColumn"] = pagingParameters.SearchColumn,
|
||||
["orderBy"] = pagingParameters.OrderBy,
|
||||
["selectGroup"] = pagingParameters.SelectGroup == "0" ? "" : pagingParameters.SelectGroup
|
||||
["searchColumn"] = pagingParameters.SearchColumn,
|
||||
["searchTerm"] = pagingParameters.SearchTerm,
|
||||
["selectGroup"] = pagingParameters.SelectGroup == "0" ? "" : pagingParameters.SelectGroup,
|
||||
};
|
||||
var response = await _client
|
||||
.GetAsync(QueryHelpers.AddQueryString($"{_apiConfig.PriceCatalog}/page", queryString));
|
||||
|
|
|
@ -30,7 +30,7 @@ namespace Wonky.Client.Pages
|
|||
{
|
||||
public List<CompanyDto>? Companies { get; set; } = new();
|
||||
public MetaData? MetaData { get; set; } = new();
|
||||
private PagingParams _paging = new();
|
||||
private CompanyPagingParams _paging = new();
|
||||
private Preferences _preferences { get; set; } = new();
|
||||
[Inject] private UserPreferenceService UserPrefService { get; set; }
|
||||
[Inject] public ICompanyHttpRepository CompanyRepo { get; set; }
|
||||
|
|
|
@ -21,16 +21,16 @@
|
|||
@attribute [Authorize(Roles = "Adviser")]
|
||||
@using Wonky.Client.Components
|
||||
|
||||
@if (_companyDto != null)
|
||||
@if (!string.IsNullOrEmpty(_companyDto.Name))
|
||||
{
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div><DisplayStateComponent StateClass="@RegState"></DisplayStateComponent> CVR status</div>
|
||||
<div>Konto @_companyDto.Account</div>
|
||||
<div>CompanyId @_companyDto.CompanyId</div>
|
||||
<div>EDIT Næste besøg @NextVisit</div>
|
||||
<div>EDIT Næste besøg @NextVisit</div>
|
||||
<div>EDIT Sidst besøgt @LastVisit</div>
|
||||
<div>DB Næste besøg @_companyDto.NextVisit</div>
|
||||
<div>DB Næste besøg @_companyDto.NextVisit</div>
|
||||
<div>DB Sidst besøgt @_companyDto.LastVisit</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
|
@ -105,7 +105,7 @@
|
|||
<div class="form-group row mb-2">
|
||||
<label for="nextVisit" class="col-form-label col-md-2">Næste besøg</label>
|
||||
<div class="col-md-3">
|
||||
<InputDate id="nextVisit" class="form-control" @bind-Value="@(NextVisit)"/>
|
||||
<InputDate id="nextVisit" class="form-control" @bind-Value="@(NextVisit)"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row mb-2">
|
||||
|
@ -116,7 +116,7 @@
|
|||
</div>
|
||||
<div class="row mb-2">
|
||||
<div class="col-md-12 text-right">
|
||||
<button type="submit" class="btn btn-success" >GEM</button>
|
||||
<button type="submit" class="btn btn-success">GEM</button>
|
||||
</div>
|
||||
</div>
|
||||
</EditForm>
|
||||
|
|
|
@ -18,7 +18,6 @@ using Wonky.Client.HttpInterceptors;
|
|||
using Wonky.Client.HttpRepository;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Microsoft.AspNetCore.Components.Forms;
|
||||
using Wonky.Client.Helpers;
|
||||
using Wonky.Client.Models;
|
||||
using Wonky.Client.Services;
|
||||
using Wonky.Entity.DTO;
|
||||
|
@ -54,7 +53,7 @@ public partial class CompanyUpdate : IDisposable
|
|||
Interceptor.RegisterBeforeSendEvent();
|
||||
if(!string.IsNullOrWhiteSpace(_companyDto.VatNumber))
|
||||
await GetInfoFromVat(_companyDto.VatNumber);
|
||||
_companyDto.CompanyId = Squid.DecodeSquid(_companyDto.CompanyId).ToString();
|
||||
//_companyDto.CompanyId = Squid.DecodeSquid(_companyDto.CompanyId).ToString();
|
||||
}
|
||||
|
||||
private async Task Update()
|
||||
|
@ -69,7 +68,7 @@ public partial class CompanyUpdate : IDisposable
|
|||
|
||||
await CompanyRepo.UpdateCompany(_companyDto);
|
||||
ToastService.ShowSuccess($"Godt så. Firma '{_companyDto!.Name}' er opdateret.");
|
||||
Navigation.NavigateTo($"/company/account/{_companyDto.Account}");
|
||||
Navigation.NavigateTo($"/company/id/{_companyDto.CompanyId}");
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -91,17 +90,8 @@ public partial class CompanyUpdate : IDisposable
|
|||
ToastService.ShowError($"CVR nummer '{vatNumber}' findes ikke.");
|
||||
return;
|
||||
}
|
||||
// ToastService.ShowSuccess($"Data for '{vatNumber}' er hentet.");
|
||||
// _virkRegInfo = result[0];
|
||||
// _companyDto.Name = _virkRegInfo.Name;
|
||||
// _companyDto.Address1 = _virkRegInfo.CoName;
|
||||
// _companyDto.Address2 = _virkRegInfo.Address;
|
||||
// _companyDto.ZipCode = _virkRegInfo.ZipCode;
|
||||
// _companyDto.City = _virkRegInfo.City;
|
||||
// _companyDto.VatNumber = _virkRegInfo.VatNumber;
|
||||
}
|
||||
|
||||
|
||||
private async Task GetInfoFromAddress(VatAddress address)
|
||||
{
|
||||
VInfos = await VirkRegistryService.QueryVirkRegistry(
|
||||
|
|
|
@ -35,6 +35,7 @@ public partial class CompanyView : IDisposable
|
|||
private CompanyDto CompanyDto { get; set; } = new ();
|
||||
private VirkRegInfo VirkRegInfo { get; set; } = new();
|
||||
private string VisitState { get; set; } = "the-ugly";
|
||||
private bool ValidCvr { get; set; } = true;
|
||||
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
|
@ -59,6 +60,7 @@ public partial class CompanyView : IDisposable
|
|||
{
|
||||
VisitState = DateTime.Now >= theBad ? "the-bad" : "the-good";
|
||||
}
|
||||
ValidCvr = string.IsNullOrEmpty(CompanyDto.VatNumber) || CompanyDto.VatNumber.Length <= 2;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -20,7 +20,7 @@ public partial class DraftDocument : IDisposable
|
|||
private SalesItemDto _selectedItem { get; set; } = new();
|
||||
private List<SalesItemDto> SalesItems { get; set; } = new();
|
||||
private MetaData _meta { get; set; } = new();
|
||||
private PagingParams _paging { 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; }
|
||||
|
|
|
@ -37,7 +37,7 @@ public partial class PurchaseOrderCreate : IDisposable
|
|||
private EditContext _editContext;
|
||||
private bool _poFormInvalid = true;
|
||||
private MetaData? MetaData { get; set; } = new();
|
||||
private PagingParams _paging = new();
|
||||
private CatalogPagingParams _paging = new();
|
||||
|
||||
|
||||
[Inject] public IToastService ToastService { get; set; }
|
||||
|
|
|
@ -32,7 +32,7 @@ public partial class SalesItemCatalog : IDisposable
|
|||
[Inject] private UserPreferenceService UserPreferenceService { get; set; }
|
||||
private List<SalesItemDto> SalesItemList { get; set; } = new();
|
||||
private MetaData? MetaData { get; set; } = new();
|
||||
private PagingParams _paging = new();
|
||||
private CatalogPagingParams _paging = new();
|
||||
private Preferences _preferences = new();
|
||||
[Inject] public ISalesItemHttpRepository SalesItemRepo { get; set; }
|
||||
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
||||
|
|
|
@ -12,6 +12,8 @@
|
|||
"userInfo": "api/auth/userinfo",
|
||||
"crmCompanies": "api/v2/crm/companies",
|
||||
"priceCatalog": "api/v2/crm/catalog",
|
||||
"cvrLookup": "/api/v2/services/virk"
|
||||
"cvrLookup": "/api/v2/services/virk",
|
||||
"glsTrackUrl": "https://www.gls-group.eu/276-I-PORTAL-WEB/content/GLS/DK01/DA/5004.htm?txtAction=71000&txtRefNo=",
|
||||
"glsId": ""
|
||||
}
|
||||
}
|
|
@ -26,4 +26,6 @@ public class ApiConfig
|
|||
public string UserInfo { get; set; } = "";
|
||||
public string CvrLookup { get; set; } = "";
|
||||
public string TokenPath { get; set; } = "";
|
||||
public string GlsTrackUrl { get; set; } = "";
|
||||
public string GlsId { get; set; } = "";
|
||||
}
|
|
@ -38,4 +38,7 @@ public class CompanyDto
|
|||
public string LastVisit { get; set; } = "";
|
||||
public string NextVisit { get; set; } = "";
|
||||
public int Interval { get; set; } = 8;
|
||||
public int IsHidden { get; set; }
|
||||
public int HasFolded { get; set; }
|
||||
public string CountryCode { get; set; } = "";
|
||||
}
|
8
Wonky.Entity/Models/VirkLifeCycle.cs
Normal file
8
Wonky.Entity/Models/VirkLifeCycle.cs
Normal file
|
@ -0,0 +1,8 @@
|
|||
namespace Wonky.Entity.Models;
|
||||
|
||||
public class VirkLifeCycle
|
||||
{
|
||||
public string LastUpdate { get; set; } = "";
|
||||
public TimeFrame TimeFrame { get; set; } = new();
|
||||
|
||||
}
|
|
@ -26,4 +26,5 @@ public class VirkRegInfo
|
|||
public string City { get; set; } = "";
|
||||
public string ZipCode { get; set; } = "";
|
||||
public List<VirkState> States { get; set; } = new ();
|
||||
public List<VirkLifeCycle> LifeCycles { get; set; } = new ();
|
||||
}
|
|
@ -14,19 +14,18 @@
|
|||
//
|
||||
namespace Wonky.Entity.Requests;
|
||||
|
||||
public class PagingParams
|
||||
public class CatalogPagingParams
|
||||
{
|
||||
private int _pageSize = 5;
|
||||
private const int MaxPageSize = 50;
|
||||
private int _pageSize = 10;
|
||||
public int PageNumber { get; set; } = 1;
|
||||
public int PageSize
|
||||
{
|
||||
get => _pageSize;
|
||||
set => _pageSize = (value > MaxPageSize) ? MaxPageSize : value;
|
||||
}
|
||||
|
||||
public string SearchTerm { get; set; } = "";
|
||||
public string OrderBy { get; set; } = "name";
|
||||
public string SearchColumn { get; set; } = "name";
|
||||
public string SelectGroup { get; set; } = "";
|
||||
public string OrderBy { get; set; } = "name";
|
||||
public string SelectGroup { get; set; } = "";
|
||||
}
|
34
Wonky.Entity/Requests/CompanyPagingParams.cs
Normal file
34
Wonky.Entity/Requests/CompanyPagingParams.cs
Normal file
|
@ -0,0 +1,34 @@
|
|||
// 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 Affero GNU General Public License as
|
||||
// published by the Free Software Foundation, either version 3 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// Affero GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the Affero GNU General Public License
|
||||
// along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html]
|
||||
//
|
||||
namespace Wonky.Entity.Requests;
|
||||
|
||||
public class CompanyPagingParams
|
||||
{
|
||||
private int _pageSize = 5;
|
||||
private const int MaxPageSize = 50;
|
||||
public int PageNumber { get; set; } = 1;
|
||||
public int PageSize
|
||||
{
|
||||
get => _pageSize;
|
||||
set => _pageSize = (value > MaxPageSize) ? MaxPageSize : value;
|
||||
}
|
||||
public string SearchTerm { get; set; } = "";
|
||||
public string SearchColumn { get; set; } = "name";
|
||||
public string OrderBy { get; set; } = "name";
|
||||
public string FromDate { get; set; } = "";
|
||||
public int IsHidden { get; set; }
|
||||
public int HasFolded { get; set; }
|
||||
|
||||
}
|
Loading…
Reference in a new issue