wip
This commit is contained in:
parent
d66e65bc50
commit
799354b37b
12 changed files with 146 additions and 128 deletions
|
@ -28,8 +28,8 @@ public partial class CompanySearchDropdown : IDisposable
|
||||||
[Inject] private UserPreferenceService UserPreferenceService { get; set; }
|
[Inject] private UserPreferenceService UserPreferenceService { get; set; }
|
||||||
[Parameter] public EventCallback<string> OnChanged { get; set; }
|
[Parameter] public EventCallback<string> OnChanged { get; set; }
|
||||||
private Dictionary<string, string> Items { get; set; } = new();
|
private Dictionary<string, string> Items { get; set; } = new();
|
||||||
private Preferences _preferences = new();
|
private Preferences _preferences = new();
|
||||||
private string? Selection { get; set; }
|
private string Selection { get; set; } = "name";
|
||||||
protected override async Task OnInitializedAsync()
|
protected override async Task OnInitializedAsync()
|
||||||
{
|
{
|
||||||
UserPreferenceService.OnChange += ProfileServiceOnOnChange;
|
UserPreferenceService.OnChange += ProfileServiceOnOnChange;
|
||||||
|
@ -39,9 +39,7 @@ public partial class CompanySearchDropdown : IDisposable
|
||||||
private async Task OnSelectionChanged(ChangeEventArgs e)
|
private async Task OnSelectionChanged(ChangeEventArgs e)
|
||||||
{
|
{
|
||||||
var val = e.Value.ToString();
|
var val = e.Value.ToString();
|
||||||
if (val == "-1")
|
if (val == "-1") return;
|
||||||
{
|
|
||||||
val = "name"; };
|
|
||||||
await OnChanged.InvokeAsync(val);
|
await OnChanged.InvokeAsync(val);
|
||||||
await UserPreferenceService.SetCompanySearch(val);
|
await UserPreferenceService.SetCompanySearch(val);
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,8 +27,8 @@ namespace Wonky.Client.Components
|
||||||
[Inject] private UserPreferenceService UserPreferenceService { get; set; }
|
[Inject] private UserPreferenceService UserPreferenceService { get; set; }
|
||||||
[Parameter] public EventCallback<string> OnChanged { get; set; }
|
[Parameter] public EventCallback<string> OnChanged { get; set; }
|
||||||
private Dictionary<string, string> Items { get; set; } = new();
|
private Dictionary<string, string> Items { get; set; } = new();
|
||||||
private Preferences _preferences = new();
|
private Preferences _preferences = new();
|
||||||
private string? Selection { get; set; }
|
private string Selection { get; set; } = "name";
|
||||||
protected override async Task OnInitializedAsync()
|
protected override async Task OnInitializedAsync()
|
||||||
{
|
{
|
||||||
UserPreferenceService.OnChange += ProfileServiceOnOnChange;
|
UserPreferenceService.OnChange += ProfileServiceOnOnChange;
|
||||||
|
@ -38,7 +38,7 @@ namespace Wonky.Client.Components
|
||||||
private async Task OnSelectionChanged(ChangeEventArgs e)
|
private async Task OnSelectionChanged(ChangeEventArgs e)
|
||||||
{
|
{
|
||||||
var val = e.Value.ToString();
|
var val = e.Value.ToString();
|
||||||
if (val == "-1") {val = "name";};
|
if (val == "-1") return;
|
||||||
await OnChanged.InvokeAsync(val);
|
await OnChanged.InvokeAsync(val);
|
||||||
await UserPreferenceService.SetCompanySort(val);
|
await UserPreferenceService.SetCompanySort(val);
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,7 @@ public partial class ItemGroupDropdown
|
||||||
private async Task OnSelectionChanged(ChangeEventArgs e)
|
private async Task OnSelectionChanged(ChangeEventArgs e)
|
||||||
{
|
{
|
||||||
var val = e.Value.ToString();
|
var val = e.Value.ToString();
|
||||||
if (val == "-1") {val = "0";};
|
if (val == "-1") return;
|
||||||
await OnChanged.InvokeAsync(val);
|
await OnChanged.InvokeAsync(val);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -36,7 +36,7 @@ public partial class ItemSearchDropdown : IDisposable
|
||||||
private async Task OnSelectChanged(ChangeEventArgs e)
|
private async Task OnSelectChanged(ChangeEventArgs e)
|
||||||
{
|
{
|
||||||
var val = e.Value.ToString();
|
var val = e.Value.ToString();
|
||||||
if (val == "-1") {val = "name";};
|
if (val == "-1") return;
|
||||||
await OnChanged.InvokeAsync(val);
|
await OnChanged.InvokeAsync(val);
|
||||||
await UserPreferenceService.SetItemSearch(val);
|
await UserPreferenceService.SetItemSearch(val);
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,7 +36,7 @@ public partial class ItemSortDropdown : IDisposable
|
||||||
private async Task OnSelectChanged(ChangeEventArgs e)
|
private async Task OnSelectChanged(ChangeEventArgs e)
|
||||||
{
|
{
|
||||||
var val = e.Value.ToString();
|
var val = e.Value.ToString();
|
||||||
if (val == "-1") {val = "name";};
|
if (val == "-1") return;
|
||||||
await OnChanged.InvokeAsync(val);
|
await OnChanged.InvokeAsync(val);
|
||||||
await UserPreferenceService.SetItemSort(val);
|
await UserPreferenceService.SetItemSort(val);
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,7 +38,7 @@ namespace Wonky.Client.Components
|
||||||
private async Task OnSelectChanged(ChangeEventArgs e)
|
private async Task OnSelectChanged(ChangeEventArgs e)
|
||||||
{
|
{
|
||||||
var val = e.Value.ToString();
|
var val = e.Value.ToString();
|
||||||
if (val == "-1") {val = "10";};
|
if (val == "-1") return;
|
||||||
await OnChanged.InvokeAsync(val);
|
await OnChanged.InvokeAsync(val);
|
||||||
await UserPreferenceService.SetPageSize(val);
|
await UserPreferenceService.SetPageSize(val);
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,7 @@ namespace Wonky.Client.Components
|
||||||
|
|
||||||
private void SearchChanged()
|
private void SearchChanged()
|
||||||
{
|
{
|
||||||
_timer = new Timer(1000);
|
_timer = new Timer(500);
|
||||||
_timer.Elapsed += OnTimerElapsed;
|
_timer.Elapsed += OnTimerElapsed;
|
||||||
_timer.AutoReset = false;
|
_timer.AutoReset = false;
|
||||||
_timer.Enabled = true;
|
_timer.Enabled = true;
|
||||||
|
|
|
@ -21,103 +21,123 @@
|
||||||
@attribute [Authorize(Roles = "Adviser")]
|
@attribute [Authorize(Roles = "Adviser")]
|
||||||
|
|
||||||
<h2>Opret firma</h2>
|
<h2>Opret firma</h2>
|
||||||
<div class="row">
|
<div class="card bg-light mb-2">
|
||||||
<div class="col">
|
<div class="card-header">
|
||||||
<VatNumberInputComponent OnValidSubmit="GetInfoFromVat" />
|
CVR data
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="card-body">
|
||||||
<div class="row">
|
<VatNumberInputComponent OnValidSubmit="GetInfoFromVat"/>
|
||||||
<div class="col">
|
</div>
|
||||||
<VatAddressInputComponent OnValidSubmit="GetInfoFromAddress" />
|
<div class="card-body">
|
||||||
@if (VInfos.Any())
|
<VatAddressInputComponent OnValidSubmit="GetInfoFromAddress"/>
|
||||||
|
</div>
|
||||||
|
@if (VInfos.Any())
|
||||||
|
{
|
||||||
|
<div class="card-body">
|
||||||
|
@foreach (var info in VInfos)
|
||||||
{
|
{
|
||||||
@foreach (var info in VInfos)
|
<div class="row mb-2">
|
||||||
{
|
<div class="col">
|
||||||
<div class="row">
|
@info.VatNumber
|
||||||
<div class="col">
|
</div>
|
||||||
@info.VatNumber
|
<div class="col">
|
||||||
</div>
|
@info.Name
|
||||||
<div class="col">
|
</div>
|
||||||
@info.Name
|
<div class="col">
|
||||||
</div>
|
@info.States[^1].State
|
||||||
<div class="col">
|
</div>
|
||||||
@info.States[^1].State
|
<div class="col">
|
||||||
</div>
|
<button class="btn btn-primary" @onclick="@(() => SelectCompany(info.VatNumber))">OVERFØR</button>
|
||||||
<div class="col">
|
</div>
|
||||||
<button class="btn btn-primary" @onclick="@(() => SelectCompany(info.VatNumber))">OVERFØR</button>
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
|
<div class="card bg-light">
|
||||||
<EditForm EditContext="_editContext" OnValidSubmit="Create" class="card card-body bg-light mt-5">
|
<EditForm EditContext="_editContext" OnValidSubmit="Create" class="card-body">
|
||||||
<DataAnnotationsValidator />
|
<DataAnnotationsValidator />
|
||||||
<InputText type="hidden" id="salesRepId" @bind-Value="_companyDto.SalesRepId"/>
|
<InputText type="hidden" id="salesRepId" @bind-Value="_companyDto.SalesRepId"/>
|
||||||
<div class="form-group row mb-2">
|
<table class="table">
|
||||||
<label for="name" class="col-md-2 col-form-label">Firmanavn</label>
|
<thead>
|
||||||
<div class="col-md-10">
|
|
||||||
<InputText id="name" class="form-control" @bind-Value="_companyDto.Name"/>
|
</thead>
|
||||||
<ValidationMessage For="@(() => _companyDto.Name)"></ValidationMessage>
|
<tbody>
|
||||||
</div>
|
<tr>
|
||||||
</div>
|
<th scope="row">Reg.nr.</th>
|
||||||
<div class="form-group row mb-2">
|
<td class="state"><DisplayStateComponent StateClass="@RegState"></DisplayStateComponent></td>
|
||||||
<label for="address1" class="col-md-2 col-form-label">Adresse</label>
|
<td>
|
||||||
<div class="col-md-10">
|
<InputText id="vatNumber" class="form-control" @bind-Value="_companyDto.VatNumber"/>
|
||||||
<InputText id="address1" class="form-control" @bind-Value="_companyDto.Address1"/>
|
</td>
|
||||||
</div>
|
</tr>
|
||||||
</div>
|
<tr>
|
||||||
<div class="form-group row mb-2">
|
<th scope="row">Firmanavn</th>
|
||||||
<label for="address2" class="col-md-2 col-form-label">Adresse2</label>
|
<td></td>
|
||||||
<div class="col-md-10">
|
<td>
|
||||||
<InputText id="address2" class="form-control" @bind-Value="_companyDto.Address2"/>
|
<InputText id="name" class="form-control" @bind-Value="_companyDto.Name"/>
|
||||||
</div>
|
<ValidationMessage For="@(() => _companyDto.Name)"></ValidationMessage>
|
||||||
</div>
|
</td>
|
||||||
<div class="form-group row mb-2">
|
</tr>
|
||||||
<label for="zipCode" class="col-md-2 col-form-label">Postnr</label>
|
<tr>
|
||||||
<div class="col-md-10">
|
<th scope="row">Adresse</th>
|
||||||
<InputText id="zipCode" class="form-control" @bind-Value="_companyDto.ZipCode"/>
|
<td></td>
|
||||||
<ValidationMessage For="@(() => _companyDto.ZipCode)"></ValidationMessage>
|
<td>
|
||||||
</div>
|
<InputText id="address1" class="form-control" @bind-Value="_companyDto.Address1"/>
|
||||||
</div>
|
</td>
|
||||||
<div class="form-group row mb-2">
|
</tr>
|
||||||
<label for="city" class="col-md-2 col-form-label">Bynavn</label>
|
<tr>
|
||||||
<div class="col-md-10">
|
<th scope="row">Adresse2</th>
|
||||||
<InputText id="city" class="form-control" @bind-Value="_companyDto.City"/>
|
<td></td>
|
||||||
<ValidationMessage For="@(() => _companyDto.City)"></ValidationMessage>
|
<td>
|
||||||
</div>
|
<InputText id="address2" class="form-control" @bind-Value="_companyDto.Address2"/>
|
||||||
</div>
|
</td>
|
||||||
<div class="form-group row mb-2">
|
</tr>
|
||||||
<label for="vatNumber" class="col-md-2 col-form-label">Reg.nr.</label>
|
<tr>
|
||||||
<div class="col-md-10">
|
<th scope="row">Postnr</th>
|
||||||
<InputText id="vatNumber" class="form-control" @bind-Value="_companyDto.VatNumber"/>
|
<td></td>
|
||||||
</div>
|
<td>
|
||||||
</div>
|
<InputText id="zipCode" class="form-control" @bind-Value="_companyDto.ZipCode"/>
|
||||||
<div class="form-group row mb-2">
|
<ValidationMessage For="@(() => _companyDto.ZipCode)"></ValidationMessage>
|
||||||
<label for="phone" class="col-md-2 col-form-label">Telefon nummer</label>
|
</td>
|
||||||
<div class="col-md-10">
|
</tr>
|
||||||
<InputText id="phone" class="form-control" @bind-Value="_companyDto.Phone"/>
|
<tr>
|
||||||
</div>
|
<th scope="row">Bynavn</th>
|
||||||
</div>
|
<td></td>
|
||||||
<div class="form-group row mb-2">
|
<td>
|
||||||
<label for="mobile" class="col-md-2 col-form-label">Mobil nummer</label>
|
<InputText id="city" class="form-control" @bind-Value="_companyDto.City"/>
|
||||||
<div class="col-md-10">
|
<ValidationMessage For="@(() => _companyDto.City)"></ValidationMessage>
|
||||||
<InputText id="mobile" class="form-control" @bind-Value="_companyDto.Mobile"/>
|
</td>
|
||||||
</div>
|
</tr>
|
||||||
</div>
|
<tr>
|
||||||
<div class="form-group row mb-2">
|
<th scope="row">Telefon</th>
|
||||||
<label for="email" class="col-md-2 col-form-label">Email</label>
|
<td></td>
|
||||||
<div class="col-md-10">
|
<td>
|
||||||
<InputText id="email" class="form-control" @bind-Value="_companyDto.Email"/>
|
<InputText id="phone" class="form-control" @bind-Value="_companyDto.Phone"/>
|
||||||
</div>
|
</td>
|
||||||
</div>
|
</tr>
|
||||||
<div class="form-group row mb-2">
|
<tr>
|
||||||
<label for="attention" class="col-md-2 col-form-label">Attention</label>
|
<th scope="row">Mobil</th>
|
||||||
<div class="col-md-10">
|
<td></td>
|
||||||
<InputText id="attention" class="form-control" @bind-Value="_companyDto.Attention"/>
|
<td>
|
||||||
</div>
|
<InputText id="mobile" class="form-control" @bind-Value="_companyDto.Mobile"/>
|
||||||
</div>
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="row">Email</th>
|
||||||
|
<td></td>
|
||||||
|
<td>
|
||||||
|
<InputText id="email" class="form-control" @bind-Value="_companyDto.Email"/>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="row">Attention</th>
|
||||||
|
<td></td>
|
||||||
|
<td>
|
||||||
|
<InputText id="attention" class="form-control" @bind-Value="_companyDto.Attention"/>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
<div class="row mb-2">
|
<div class="row mb-2">
|
||||||
<div class="col-md-12 text-right">
|
<div class="col-md-12 text-right">
|
||||||
|
@ -125,3 +145,4 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</EditForm>
|
</EditForm>
|
||||||
|
</div>
|
||||||
|
|
|
@ -34,10 +34,6 @@ namespace Wonky.Client.Pages
|
||||||
{
|
{
|
||||||
public partial class CompanyCreate : IDisposable
|
public partial class CompanyCreate : IDisposable
|
||||||
{
|
{
|
||||||
private CompanyDto _companyDto = new();
|
|
||||||
private VirkRegInfo _virkRegInfo = new();
|
|
||||||
private EditContext _editContext;
|
|
||||||
private bool _formInvalid = true;
|
|
||||||
private List<VirkRegInfo> VInfos { get; set; } = new();
|
private List<VirkRegInfo> VInfos { get; set; } = new();
|
||||||
[Inject] public ICompanyHttpRepository CompanyRepo { get; set; }
|
[Inject] public ICompanyHttpRepository CompanyRepo { get; set; }
|
||||||
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
||||||
|
@ -46,6 +42,11 @@ namespace Wonky.Client.Pages
|
||||||
[Inject] public VirkRegistryService VirkRegistryService { get; set; }
|
[Inject] public VirkRegistryService VirkRegistryService { get; set; }
|
||||||
[Inject] public ILocalStorageService StorageService { get; set; }
|
[Inject] public ILocalStorageService StorageService { get; set; }
|
||||||
[Inject] public NavigationManager Navigation { get; set; }
|
[Inject] public NavigationManager Navigation { get; set; }
|
||||||
|
private CompanyDto _companyDto = new();
|
||||||
|
private VirkRegInfo _virkRegInfo = new();
|
||||||
|
private EditContext _editContext;
|
||||||
|
private bool _formInvalid = true;
|
||||||
|
private string RegState { get; set; } = "";
|
||||||
|
|
||||||
protected override async Task OnInitializedAsync()
|
protected override async Task OnInitializedAsync()
|
||||||
{
|
{
|
||||||
|
@ -75,27 +76,21 @@ namespace Wonky.Client.Pages
|
||||||
}
|
}
|
||||||
private async Task GetInfoFromVat(string vatNumber)
|
private async Task GetInfoFromVat(string vatNumber)
|
||||||
{
|
{
|
||||||
var result = await VirkRegistryService
|
VInfos = await VirkRegistryService
|
||||||
.QueryVirkRegistry(new VirkParams {VatNumber = vatNumber});
|
.QueryVirkRegistry(new VirkParams {VatNumber = vatNumber});
|
||||||
|
|
||||||
if (!result.Any())
|
if (!VInfos.Any())
|
||||||
{
|
{
|
||||||
ToastService.ShowError($"Firma med CVR '{vatNumber}' findes ikke.");
|
ToastService.ShowError($"Firma med CVR '{vatNumber}' findes ikke.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ToastService.ShowSuccess($"Data for '{vatNumber}' er hentet.");
|
ToastService.ShowSuccess($"Data for '{vatNumber}' er hentet.");
|
||||||
_virkRegInfo = result[0];
|
SelectCompany(vatNumber);
|
||||||
_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 void SelectCompany(string vatNumber)
|
private void SelectCompany(string vatNumber)
|
||||||
{
|
{
|
||||||
_virkRegInfo = (from x in VInfos where x.VatNumber == vatNumber select x).First();
|
_virkRegInfo = (from x in VInfos where x.VatNumber == vatNumber select x).First();
|
||||||
|
RegState = _virkRegInfo.States[^1].State == "NORMAL" ? "the-good" : "the-ugly";
|
||||||
_companyDto.Name = _virkRegInfo.Name;
|
_companyDto.Name = _virkRegInfo.Name;
|
||||||
_companyDto.Address1 = _virkRegInfo.CoName;
|
_companyDto.Address1 = _virkRegInfo.CoName;
|
||||||
_companyDto.Address2 = _virkRegInfo.Address;
|
_companyDto.Address2 = _virkRegInfo.Address;
|
||||||
|
|
|
@ -39,13 +39,16 @@ namespace Wonky.Client.Pages
|
||||||
|
|
||||||
protected override async Task OnInitializedAsync()
|
protected override async Task OnInitializedAsync()
|
||||||
{
|
{
|
||||||
|
// set preferences
|
||||||
_preferences = await UserPrefService.GetPreferences();
|
_preferences = await UserPrefService.GetPreferences();
|
||||||
_paging.OrderBy = _preferences.CompanySort;
|
_paging.OrderBy = _preferences.CompanySort;
|
||||||
_paging.SearchColumn = _preferences.CompanySearch;
|
_paging.SearchColumn = _preferences.CompanySearch;
|
||||||
_paging.PageSize = Convert.ToInt32(_preferences.PageSize);
|
_paging.PageSize = Convert.ToInt32(_preferences.PageSize);
|
||||||
|
|
||||||
|
//
|
||||||
Interceptor.RegisterEvent();
|
Interceptor.RegisterEvent();
|
||||||
Interceptor.RegisterBeforeSendEvent();
|
Interceptor.RegisterBeforeSendEvent();
|
||||||
|
// get companies
|
||||||
await GetCompanies();
|
await GetCompanies();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,14 +57,7 @@ namespace Wonky.Client.Pages
|
||||||
_paging.PageNumber = page;
|
_paging.PageNumber = page;
|
||||||
await GetCompanies();
|
await GetCompanies();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task GetCompanies()
|
|
||||||
{
|
|
||||||
var pagingResponse = await CompanyRepo.GetCompaniesPaged(_paging);
|
|
||||||
Companies = pagingResponse.Items;
|
|
||||||
MetaData = pagingResponse.MetaData;
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task SetSearchCol(string searchColumn)
|
private async Task SetSearchCol(string searchColumn)
|
||||||
{
|
{
|
||||||
_paging.SearchColumn = searchColumn;
|
_paging.SearchColumn = searchColumn;
|
||||||
|
@ -95,6 +91,14 @@ namespace Wonky.Client.Pages
|
||||||
_paging.PageNumber--;
|
_paging.PageNumber--;
|
||||||
await GetCompanies();
|
await GetCompanies();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async Task GetCompanies()
|
||||||
|
{
|
||||||
|
var pagingResponse = await CompanyRepo.GetCompaniesPaged(_paging);
|
||||||
|
Companies = pagingResponse.Items;
|
||||||
|
MetaData = pagingResponse.MetaData;
|
||||||
|
}
|
||||||
|
|
||||||
public void Dispose() => Interceptor.DisposeEvent();
|
public void Dispose() => Interceptor.DisposeEvent();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,7 +67,7 @@ public partial class CompanyUpdate : IDisposable
|
||||||
{
|
{
|
||||||
await CompanyRepo.UpdateCompany(_companyDto);
|
await CompanyRepo.UpdateCompany(_companyDto);
|
||||||
ToastService.ShowSuccess($"Godt så. Firma '{_companyDto!.Name}' er opdateret.");
|
ToastService.ShowSuccess($"Godt så. Firma '{_companyDto!.Name}' er opdateret.");
|
||||||
Navigation.NavigateTo($"/company/account{_companyDto.Account}");
|
Navigation.NavigateTo($"/company/account/{_companyDto.Account}");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
<td colspan="2">@CompanyDto.ZipCode</td>
|
<td colspan="2">@CompanyDto.ZipCode</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">Postnummer</th>
|
<th scope="row">Bynavn</th>
|
||||||
<td colspan="2">@CompanyDto.City</td>
|
<td colspan="2">@CompanyDto.City</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
|
Loading…
Reference in a new issue