production v.0.36.1
This commit is contained in:
parent
e6bc4f59dc
commit
19621a8e51
14 changed files with 192 additions and 154 deletions
|
@ -36,12 +36,12 @@
|
|||
<tbody>
|
||||
@foreach (var activity in Activities)
|
||||
{
|
||||
<tr>
|
||||
<tr class="border-bottom">
|
||||
<td class="align-middle"><a href="/office/customers/@activity.Company.CompanyId/orders/@activity.ActivityId">@activity.Company.Name</a></td>
|
||||
<td class="align-middle">@activity.Company.City</td>
|
||||
<td class="align-middle">@activity.Demo</td>
|
||||
<td class="align-middle">@activity.Sales</td>
|
||||
<td class="align-middle">@activity.OfficeNote</td>
|
||||
<td class="align-middle fw-bold">@activity.OfficeNote</td>
|
||||
<td class="align-middle text-end">@($"{activity.SasAmount:N2}")</td>
|
||||
<td class="align-middle text-end">@(activity.StatusTypeEnum == "Quote" ? $"{0:N2}" : $"{activity.OrderAmount:N2}")</td>
|
||||
<td class="align-middle text-center">
|
||||
|
@ -64,12 +64,6 @@
|
|||
</td>
|
||||
</tr>
|
||||
}
|
||||
<tr>
|
||||
<td colspan="5" class="bg-light"></td>
|
||||
<td class="align-middle text-center">Total</td>
|
||||
<td class="align-middle text-end">@Activities.Where(x => x.StatusTypeEnum == "Order").Sum(x => x.OrderAmount)</td>
|
||||
<td colspan="4" class="bg-light"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
}
|
|
@ -26,6 +26,12 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
@if (!string.IsNullOrWhiteSpace(Company.Blocked))
|
||||
{
|
||||
<div class="alert alert-danger">
|
||||
<h4>Ring til kontoret. Denne konto er spærret med kode '@Company.Blocked'</h4>
|
||||
</div>
|
||||
}
|
||||
<div class="row bg-light border-1 border-dark rounded-3 p-3">
|
||||
<div class="col">
|
||||
<h3>@Activity.Name - @Activity.Account</h3>
|
||||
|
|
6
Wonky.Client/Pages/CrmCompanyInvoiceListPage.razor
Normal file
6
Wonky.Client/Pages/CrmCompanyInvoiceListPage.razor
Normal file
|
@ -0,0 +1,6 @@
|
|||
@page "/companies/{CompanyId}/invoices"
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h2>Faktura oversigt</h2>
|
||||
</div>
|
||||
</div>
|
14
Wonky.Client/Pages/CrmCompanyInvoiceListPage.razor.cs
Normal file
14
Wonky.Client/Pages/CrmCompanyInvoiceListPage.razor.cs
Normal file
|
@ -0,0 +1,14 @@
|
|||
using Microsoft.AspNetCore.Components;
|
||||
using Wonky.Client.HttpInterceptors;
|
||||
using Wonky.Client.HttpInterfaces;
|
||||
|
||||
namespace Wonky.Client.Pages;
|
||||
|
||||
public partial class CrmCompanyInvoiceListPage
|
||||
{
|
||||
[Parameter] public string CompanyId { get; set; } = "";
|
||||
[Inject] public ICrmCompanyHttpRepository CompanyRepo { get; set; }
|
||||
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
||||
|
||||
|
||||
}
|
|
@ -21,11 +21,17 @@
|
|||
@attribute [Authorize(Roles = "Advisor")]
|
||||
@page "/companies/{CompanyId}"
|
||||
|
||||
@if (!string.IsNullOrWhiteSpace(_company.Name))
|
||||
@if (!string.IsNullOrWhiteSpace(Company.Name))
|
||||
{
|
||||
@if (!string.IsNullOrWhiteSpace(Company.Blocked))
|
||||
{
|
||||
<div class="alert alert-danger">
|
||||
<h4>Ring til kontoret. Denne konto er spærret med kode '@Company.Blocked'</h4>
|
||||
</div>
|
||||
}
|
||||
<div class="card">
|
||||
<div class="card-header bg-dark text-white">
|
||||
<h3>@_company.Name</h3>
|
||||
<h3>@Company.Name</h3>
|
||||
</div>
|
||||
@if (_dk)
|
||||
{
|
||||
|
@ -70,16 +76,16 @@
|
|||
<tbody>
|
||||
<tr class="align-middle">
|
||||
<th colspan="2">BEMÆRK</th>
|
||||
<td colspan="3">
|
||||
@if (string.IsNullOrWhiteSpace(_company.Note))
|
||||
<td colspan="5">
|
||||
@if (string.IsNullOrWhiteSpace(Company.Note))
|
||||
{
|
||||
<InputText name="note" id="note" class="form-control" @bind-Value="_company.Note"/>
|
||||
<InputText name="note" id="note" class="form-control" @bind-Value="Company.Note"/>
|
||||
}
|
||||
else
|
||||
{
|
||||
<InputText name="note" id="note" class="form-control bg-warning text-black" @bind-Value="_company.Note"/>
|
||||
<InputText name="note" id="note" class="form-control bg-warning text-black" @bind-Value="Company.Note"/>
|
||||
}
|
||||
<ValidationMessage For="@(() => _company.Note)"></ValidationMessage>
|
||||
<ValidationMessage For="@(() => Company.Note)"></ValidationMessage>
|
||||
</td>
|
||||
</tr >
|
||||
<tr class="align-middle">
|
||||
|
@ -90,16 +96,15 @@
|
|||
<DisplayStateComponent StateClass="@_vatState"></DisplayStateComponent>
|
||||
</td>
|
||||
<td>
|
||||
<InputText id="vatNumber" class="form-control" @bind-Value="_company.VatNumber"/>
|
||||
<ValidationMessage For="@(() => _company.VatNumber)"></ValidationMessage>
|
||||
<InputText id="vatNumber" class="form-control" @bind-Value="Company.VatNumber"/>
|
||||
<ValidationMessage For="@(() => Company.VatNumber)"></ValidationMessage>
|
||||
@* <button class="btn btn-warning" type="button" @onclick="CallVatLookupModal">CVR opslag</button> *@
|
||||
</td>
|
||||
<th>
|
||||
Telefon
|
||||
Konto
|
||||
</th>
|
||||
<td>
|
||||
<InputText id="phone" class="form-control" @bind-Value="_company.Phone"/>
|
||||
<ValidationMessage For="@(() => _company.Phone)"></ValidationMessage>
|
||||
<td colspan="3">
|
||||
<input type="text" class="form-control" readonly value="@Company.Account"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="align-middle">
|
||||
|
@ -108,15 +113,15 @@
|
|||
</th>
|
||||
<td></td>
|
||||
<td>
|
||||
<InputText id="name" class="form-control" @bind-Value="_company.Name"/>
|
||||
<ValidationMessage For="@(() => _company.Name)"></ValidationMessage>
|
||||
<InputText id="name" class="form-control" @bind-Value="Company.Name"/>
|
||||
<ValidationMessage For="@(() => Company.Name)"></ValidationMessage>
|
||||
</td>
|
||||
<th>
|
||||
Attention
|
||||
</th>
|
||||
<td>
|
||||
<InputText id="attention" class="form-control" @bind-Value="_company.Attention"/>
|
||||
<ValidationMessage For="@(() => _company.Attention)"></ValidationMessage>
|
||||
<td colspan="3">
|
||||
<InputText id="attention" class="form-control" @bind-Value="Company.Attention"/>
|
||||
<ValidationMessage For="@(() => Company.Attention)"></ValidationMessage>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="align-middle">
|
||||
|
@ -125,15 +130,15 @@
|
|||
</th>
|
||||
<td></td>
|
||||
<td>
|
||||
<InputText id="address1" class="form-control" @bind-Value="_company.Address1"/>
|
||||
<ValidationMessage For="@(() => _company.Address1)"></ValidationMessage>
|
||||
<InputText id="address1" class="form-control" @bind-Value="Company.Address1"/>
|
||||
<ValidationMessage For="@(() => Company.Address1)"></ValidationMessage>
|
||||
</td>
|
||||
<th>
|
||||
Adresse2
|
||||
</th>
|
||||
<td>
|
||||
<InputText id="address2" class="form-control" @bind-Value="_company.Address2"/>
|
||||
<ValidationMessage For="@(() => _company.Address2)"></ValidationMessage>
|
||||
<td colspan="3">
|
||||
<InputText id="address2" class="form-control" @bind-Value="Company.Address2"/>
|
||||
<ValidationMessage For="@(() => Company.Address2)"></ValidationMessage>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="align-middle">
|
||||
|
@ -142,15 +147,15 @@
|
|||
</th>
|
||||
<td></td>
|
||||
<td>
|
||||
<InputText id="zipCode" class="form-control" @bind-Value="_company.ZipCode"/>
|
||||
<ValidationMessage For="@(() => _company.ZipCode)"></ValidationMessage>
|
||||
<InputText id="zipCode" class="form-control" @bind-Value="Company.ZipCode"/>
|
||||
<ValidationMessage For="@(() => Company.ZipCode)"></ValidationMessage>
|
||||
</td>
|
||||
<th>
|
||||
Bynavn
|
||||
</th>
|
||||
<td>
|
||||
<InputText id="city" class="form-control" @bind-Value="_company.City"/>
|
||||
<ValidationMessage For="@(() => _company.City)"></ValidationMessage>
|
||||
<td colspan="3">
|
||||
<InputText id="city" class="form-control" @bind-Value="Company.City"/>
|
||||
<ValidationMessage For="@(() => Company.City)"></ValidationMessage>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="align-middle">
|
||||
|
@ -159,15 +164,22 @@
|
|||
</th>
|
||||
<td></td>
|
||||
<td>
|
||||
<InputText id="email" class="form-control" @bind-Value="_company.Email"/>
|
||||
<ValidationMessage For="@(() => _company.Email)"></ValidationMessage>
|
||||
<InputText id="email" class="form-control" @bind-Value="Company.Email"/>
|
||||
<ValidationMessage For="@(() => Company.Email)"></ValidationMessage>
|
||||
</td>
|
||||
<th>
|
||||
Telefon
|
||||
</th>
|
||||
<td>
|
||||
<InputText id="phone" class="form-control" @bind-Value="Company.Phone"/>
|
||||
<ValidationMessage For="@(() => Company.Phone)"></ValidationMessage>
|
||||
</td>
|
||||
<th>
|
||||
Mobil
|
||||
</th>
|
||||
<td>
|
||||
<InputText id="mobile" class="form-control" @bind-Value="_company.Mobile"/>
|
||||
<ValidationMessage For="@(() => _company.Mobile)"></ValidationMessage>
|
||||
<InputText id="mobile" class="form-control" @bind-Value="Company.Mobile"/>
|
||||
<ValidationMessage For="@(() => Company.Mobile)"></ValidationMessage>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="align-middle">
|
||||
|
@ -184,7 +196,7 @@
|
|||
<th>
|
||||
Besøgt
|
||||
</th>
|
||||
<td>
|
||||
<td colspan="3">
|
||||
<InputDate id="lastVisit" class="form-control" @bind-Value="@_lastVisit"/>
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -194,11 +206,11 @@
|
|||
</th>
|
||||
<td></td>
|
||||
<td>
|
||||
<InputNumber id="interval" class="form-control" @bind-Value="_company.Interval"/>
|
||||
<ValidationMessage For="@(() => _company.Interval)"></ValidationMessage>
|
||||
<InputNumber id="interval" class="form-control" @bind-Value="Company.Interval"/>
|
||||
<ValidationMessage For="@(() => Company.Interval)"></ValidationMessage>
|
||||
</td>
|
||||
<td colspan="2">
|
||||
@if (_company.HasFolded == 1)
|
||||
<td colspan="4">
|
||||
@if (Company.HasFolded == 1)
|
||||
{
|
||||
<button type="button" class="btn btn-info" onclick="@ForceActivity">Aktiver besøg</button>
|
||||
}
|
||||
|
@ -207,20 +219,19 @@
|
|||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div style="display:@(_hideButtons ? "none" : "block")">
|
||||
<div class="card-footer">
|
||||
<div class="row">
|
||||
<div class="row mb-2">
|
||||
<div class="col">
|
||||
<a class="btn btn-light border-dark d-block" href="/companies">Kundeliste</a>
|
||||
<a class="btn btn-light border-dark d-block" href="/companies/@Company.CompanyId/invoices">Faktura</a>
|
||||
</div>
|
||||
<div class="col">
|
||||
<a class="btn btn-light border-dark d-block" href="/companies/@_company.CompanyId/activities">Besøg oversigt</a>
|
||||
<a class="btn btn-light border-dark d-block" href="/companies/@Company.CompanyId/activities">Besøg</a>
|
||||
</div>
|
||||
<div class="col">
|
||||
<a class="btn btn-light border-dark d-block" href="/companies/@_company.CompanyId/h/i">Produktkøb</a>
|
||||
<a class="btn btn-light border-dark d-block" href="/companies/@Company.CompanyId/h/i">Produkter</a>
|
||||
</div>
|
||||
<div class="col d-grid">
|
||||
<button type="submit" class="btn btn-light border-dark d-block" disabled="@_working">Gem</button>
|
||||
<div class="col d-block">
|
||||
<button type="submit" class="btn btn-light border-dark d-block" disabled="@(_working)">Gem</button>
|
||||
</div>
|
||||
<div class="col">
|
||||
<ActivityButton ActionLink="@_actionLink"
|
||||
|
@ -231,7 +242,6 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</EditForm>
|
||||
</div>
|
||||
}
|
||||
|
|
|
@ -46,7 +46,7 @@ public partial class CrmCompanyViewPage : IDisposable
|
|||
[Inject] public HttpInterceptorService _interceptor { get; set; }
|
||||
[Inject] public VatInfoLookupService _vatService { get; set; }
|
||||
[Inject] public ILocalStorageService _storage { get; set; }
|
||||
private CompanyDto _company { get; set; } = new();
|
||||
private CompanyDto Company { get; set; } = new();
|
||||
private EditContext _editContext { get; set; }
|
||||
private List<VirkRegInfo> _vInfos { get; set; } = new();
|
||||
private VirkRegInfo _virkRegInfo { get; set; } = new();
|
||||
|
@ -68,6 +68,7 @@ public partial class CrmCompanyViewPage : IDisposable
|
|||
private bool _dk { get; set; } = true;
|
||||
private int _isDirty { get; set; }
|
||||
private int _vatUpdated { get; set; }
|
||||
private bool _blocked { get; set; } = true;
|
||||
|
||||
private VatLookupDkModal _vatLookupModal { get; set; } = new();
|
||||
|
||||
|
@ -85,32 +86,32 @@ public partial class CrmCompanyViewPage : IDisposable
|
|||
_interceptor.RegisterEvent();
|
||||
_interceptor.RegisterBeforeSendEvent();
|
||||
|
||||
_company = await _companyRepo.GetCompanyById(CompanyId);
|
||||
_orgVat = _company.VatNumber;
|
||||
_company.CountryCode = ux.CountryCode.ToLower();
|
||||
_enableActivity = _company.ValidVat;
|
||||
Company = await _companyRepo.GetCompanyById(CompanyId);
|
||||
_orgVat = Company.VatNumber;
|
||||
Company.CountryCode = ux.CountryCode.ToLower();
|
||||
_enableActivity = Company.ValidVat;
|
||||
// override if canvas which has account property as empty string or "NY"
|
||||
if (_company.Account == "NY" || string.IsNullOrWhiteSpace(_company.Account))
|
||||
if (Company.Account == "NY" || string.IsNullOrWhiteSpace(Company.Account))
|
||||
_enableActivity = 1;
|
||||
|
||||
if (_dk)
|
||||
_vatAddress = PrepareVatAddress(_company);
|
||||
_vatAddress = PrepareVatAddress(Company);
|
||||
|
||||
if (_company.Interval == 0)
|
||||
_company.Interval = 8;
|
||||
if (Company.Interval == 0)
|
||||
Company.Interval = 8;
|
||||
|
||||
_lastVisit = DateTime.Parse(_company.LastVisit);
|
||||
_nextVisit = DateTime.Parse(_company.NextVisit);
|
||||
_lastVisit = DateTime.Parse(Company.LastVisit);
|
||||
_nextVisit = DateTime.Parse(Company.NextVisit);
|
||||
|
||||
if (_lastVisit.Year < 2020)
|
||||
_lastVisit = DateTime.Parse("2020-01-01");
|
||||
|
||||
if (!_company.ValidDateSpan())
|
||||
_nextVisit = _lastVisit.AddDays(_company.Interval * 7);
|
||||
if (!Company.ValidDateSpan())
|
||||
_nextVisit = _lastVisit.AddDays(Company.Interval * 7);
|
||||
|
||||
_visitState = Utils.GetVisitState($"{_nextVisit:yyyy-MM-dd}");
|
||||
_actionLink = $"/companies/{CompanyId}/activities/new"; // used when drawing visit button
|
||||
if(_company.HasFolded == 1)
|
||||
if(Company.HasFolded == 1)
|
||||
{
|
||||
// this is only used if user has selected to show all customers
|
||||
_hasFolded = true;
|
||||
|
@ -120,13 +121,13 @@ public partial class CrmCompanyViewPage : IDisposable
|
|||
else
|
||||
{
|
||||
// simple format validation if CRM indicates invalid vatNumber
|
||||
if (_company.ValidVat == 0 && !string.IsNullOrWhiteSpace(_company.VatNumber))
|
||||
_company.ValidVat = VatUtils.ValidateFormat(_company.CountryCode, _company.VatNumber) ? 1 : 0;
|
||||
if (Company.ValidVat == 0 && !string.IsNullOrWhiteSpace(Company.VatNumber))
|
||||
Company.ValidVat = VatUtils.ValidateFormat(Company.CountryCode, Company.VatNumber) ? 1 : 0;
|
||||
// flags
|
||||
_validVat = _company.ValidVat == 1; // flag set if company has a valid vatNumber
|
||||
_vatState = _company.ValidVat == 1 ? "the-good" : "no-vat"; // assign css class
|
||||
_validVat = Company.ValidVat == 1; // flag set if company has a valid vatNumber
|
||||
_vatState = Company.ValidVat == 1 ? "the-good" : "no-vat"; // assign css class
|
||||
}
|
||||
_editContext = new EditContext(_company);
|
||||
_editContext = new EditContext(Company);
|
||||
_editContext.OnFieldChanged += HandleFieldChanged;
|
||||
_editContext.OnValidationStateChanged += ValidationChanged;
|
||||
}
|
||||
|
@ -137,9 +138,9 @@ public partial class CrmCompanyViewPage : IDisposable
|
|||
}
|
||||
private void HandleFieldChanged(object sender, FieldChangedEventArgs e)
|
||||
{
|
||||
_nextVisit = _lastVisit.AddDays(_company.Interval * 7);
|
||||
_nextVisit = _lastVisit.AddDays(Company.Interval * 7);
|
||||
// simple validation of VAT format
|
||||
if (!VatUtils.ValidateFormat(_company.CountryCode, _company.VatNumber))
|
||||
if (!VatUtils.ValidateFormat(Company.CountryCode, Company.VatNumber))
|
||||
{
|
||||
_formInvalid = true;
|
||||
}
|
||||
|
@ -159,7 +160,7 @@ public partial class CrmCompanyViewPage : IDisposable
|
|||
_editContext.OnFieldChanged -= HandleFieldChanged;
|
||||
_editContext.OnValidationStateChanged -= ValidationChanged;
|
||||
|
||||
_editContext = new EditContext(_company);
|
||||
_editContext = new EditContext(Company);
|
||||
|
||||
_formInvalid = _editContext.Validate();
|
||||
|
||||
|
@ -169,8 +170,9 @@ public partial class CrmCompanyViewPage : IDisposable
|
|||
|
||||
private async Task SubmitUpdate()
|
||||
{
|
||||
_working = true;
|
||||
// simple format validation if CRM indicates invalid vatNumber
|
||||
if (!VatUtils.ValidateFormat(_company.CountryCode, _company.VatNumber))
|
||||
if (!VatUtils.ValidateFormat(Company.CountryCode, Company.VatNumber))
|
||||
{
|
||||
_toast.ShowError($"CVR/VAT/ORG nummer mangler eller er ugyldig.");
|
||||
StateHasChanged();
|
||||
|
@ -178,27 +180,27 @@ public partial class CrmCompanyViewPage : IDisposable
|
|||
}
|
||||
_toast.ShowInfo("Vent venligst ....");
|
||||
//_hideButtons = true;
|
||||
_company.LastVisit = $"{_lastVisit:yyyy-MM-dd}";
|
||||
_company.NextVisit = $"{_nextVisit:yyyy-MM-dd}";
|
||||
_company.IsHidden = 0;
|
||||
Company.LastVisit = $"{_lastVisit:yyyy-MM-dd}";
|
||||
Company.NextVisit = $"{_nextVisit:yyyy-MM-dd}";
|
||||
Company.IsHidden = 0;
|
||||
|
||||
// flag if backend should update ERP system
|
||||
_company.UpdateErpVat = _vatUpdated;
|
||||
Company.UpdateErpVat = _vatUpdated;
|
||||
|
||||
// flag base info has changed
|
||||
_company.IsDirty = _isDirty;
|
||||
Company.IsDirty = _isDirty;
|
||||
|
||||
var success = await _companyRepo.UpdateCompany(CompanyId, _company );
|
||||
var success = await _companyRepo.UpdateCompany(CompanyId, Company );
|
||||
_toast.ShowSuccess("Opdatering er afsendt. Der går nogle minutter inden data er opdateret.");
|
||||
_company = await _companyRepo.GetCompanyById(_company.CompanyId);
|
||||
_company.ValidVat = 1;
|
||||
Company = await _companyRepo.GetCompanyById(Company.CompanyId);
|
||||
Company.ValidVat = 1;
|
||||
_enableActivity = 1;
|
||||
if (_virkRegInfo.States[0].State.ToLower() != "normal")
|
||||
{
|
||||
_company.HasFolded = 1;
|
||||
Company.HasFolded = 1;
|
||||
}
|
||||
StateHasChanged();
|
||||
//_hideButtons = false;
|
||||
_working = false;
|
||||
}
|
||||
|
||||
private async Task GetInfoFromAddress(VatAddress address)
|
||||
|
@ -253,23 +255,23 @@ public partial class CrmCompanyViewPage : IDisposable
|
|||
private void OnSelectedCompany(VirkRegInfo regInfo)
|
||||
{
|
||||
_validVat = regInfo.States[0].State.ToLower() == "normal";
|
||||
_company.HasFolded = _validVat ? 1 : 0;
|
||||
Company.HasFolded = _validVat ? 1 : 0;
|
||||
_enableActivity = _validVat ? 1 : 0;
|
||||
_vatState = regInfo.States[0].State.ToLower() == "normal" ? "the-good" : "the-dead";
|
||||
|
||||
if (regInfo.SyncAll)
|
||||
{
|
||||
_company.VatNumber = _virkRegInfo.VatNumber;
|
||||
_company.Name = _virkRegInfo.Name;
|
||||
_company.Address1 = _virkRegInfo.Address;
|
||||
_company.Address2 = _virkRegInfo.CoName;
|
||||
_company.ZipCode = _virkRegInfo.ZipCode;
|
||||
_company.City = _virkRegInfo.City;
|
||||
Company.VatNumber = _virkRegInfo.VatNumber;
|
||||
Company.Name = _virkRegInfo.Name;
|
||||
Company.Address1 = _virkRegInfo.Address;
|
||||
Company.Address2 = _virkRegInfo.CoName;
|
||||
Company.ZipCode = _virkRegInfo.ZipCode;
|
||||
Company.City = _virkRegInfo.City;
|
||||
_isDirty = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
_company.VatNumber = _virkRegInfo.VatNumber;
|
||||
Company.VatNumber = _virkRegInfo.VatNumber;
|
||||
_vatUpdated = 1;
|
||||
}
|
||||
StateHasChanged();
|
||||
|
@ -279,23 +281,23 @@ public partial class CrmCompanyViewPage : IDisposable
|
|||
{
|
||||
_virkRegInfo = (from x in _vInfos where x.VatNumber == vatNumber select x).First();
|
||||
_validVat = _virkRegInfo.States[0].State.ToLower() == "normal";
|
||||
_company.HasFolded = _validVat ? 1 : 0;
|
||||
Company.HasFolded = _validVat ? 1 : 0;
|
||||
_enableActivity = _validVat ? 1 : 0;
|
||||
_vatState = _virkRegInfo.States[0].State.ToLower() == "normal" ? "the-good" : "the-dead";
|
||||
|
||||
if (syncAll)
|
||||
{
|
||||
_company.VatNumber = _virkRegInfo.VatNumber;
|
||||
_company.Name = _virkRegInfo.Name;
|
||||
_company.Address1 = _virkRegInfo.Address;
|
||||
_company.Address2 = _virkRegInfo.CoName;
|
||||
_company.ZipCode = _virkRegInfo.ZipCode;
|
||||
_company.City = _virkRegInfo.City;
|
||||
Company.VatNumber = _virkRegInfo.VatNumber;
|
||||
Company.Name = _virkRegInfo.Name;
|
||||
Company.Address1 = _virkRegInfo.Address;
|
||||
Company.Address2 = _virkRegInfo.CoName;
|
||||
Company.ZipCode = _virkRegInfo.ZipCode;
|
||||
Company.City = _virkRegInfo.City;
|
||||
_isDirty = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
_company.VatNumber = _virkRegInfo.VatNumber;
|
||||
Company.VatNumber = _virkRegInfo.VatNumber;
|
||||
_vatUpdated = 1;
|
||||
}
|
||||
// empty list
|
||||
|
|
|
@ -86,10 +86,12 @@
|
|||
</button>
|
||||
</th>
|
||||
<td>
|
||||
@* <div style="display:@(_working ? "none" : "block");"> *@
|
||||
<button type="button" class="btn btn-success"
|
||||
@onclick="SubmitReport" disabled="@(_noFigures || _working)">
|
||||
Gem Rapport
|
||||
</button>
|
||||
@* </div> *@
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
|
@ -98,21 +98,24 @@ public partial class CrmReportNewPage : IDisposable
|
|||
|
||||
private async Task ReportSaveConfirmed()
|
||||
{
|
||||
// attempt to eliminate doubled click on submit button
|
||||
if (_working)
|
||||
return;
|
||||
_working = true;
|
||||
|
||||
var result = await CrmReportRepo.PostReport($"{_workDate:yyyy-MM-dd}", _report);
|
||||
// reset km and date confirmation
|
||||
await PrefsService.SetKmMorning(0);
|
||||
await PrefsService.SetDateConfirmed(false);
|
||||
|
||||
_toast.ShowInfo($"Rapport oprettet {_workDate}");
|
||||
_working = false;
|
||||
_navigator.NavigateTo("/home");
|
||||
|
||||
_navigator.NavigateTo($"/sales-reports/view/{_workDate:yyyy-MM-dd}");
|
||||
}
|
||||
|
||||
private void SubmitReport()
|
||||
{
|
||||
// attempt to eliminate doubled click on submit button
|
||||
if (_working)
|
||||
return;
|
||||
|
||||
if (string.IsNullOrWhiteSpace(_report.DayTypeEnum))
|
||||
{
|
||||
_toast.ShowError("Dagtype skal vælges");
|
||||
|
@ -152,7 +155,6 @@ public partial class CrmReportNewPage : IDisposable
|
|||
_prompt = $"Rapport for {_workDate.ToLongDateString()}?";
|
||||
|
||||
_confirmReport.Show();
|
||||
|
||||
}
|
||||
|
||||
private void OnTimeChanged()
|
||||
|
@ -187,11 +189,11 @@ public partial class CrmReportNewPage : IDisposable
|
|||
var data = await CrmReportRepo.InitializeReportData($"{_workDate:yyyy-MM-dd}");
|
||||
if(data.ReportClosed)
|
||||
_navigator.NavigateTo($"/sales-reports/view/{_workDate:yyyy-MM-dd}");
|
||||
_noFigures = false;
|
||||
_report.Figures = data.ReportData;
|
||||
_init = data.ReportData;
|
||||
_activities = data.ReportItems;
|
||||
_report.Figures.KmMorning = _prefs.KmMorning;
|
||||
_noFigures = false;
|
||||
_working = false;
|
||||
}
|
||||
|
||||
|
|
|
@ -35,6 +35,6 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<TaskItemTableComponent TaskItemList="_taskItems" />
|
||||
<TaskItemTableComponent TaskItemList="TaskItems" />
|
||||
</div>
|
||||
</div>
|
|
@ -27,36 +27,36 @@ namespace Wonky.Client.Pages;
|
|||
|
||||
public partial class CrmTaskItemListPage : IDisposable
|
||||
{
|
||||
[Inject] public PreferenceService Prefs { get; set; }
|
||||
[Inject] public PreferenceService PreferenceService { get; set; }
|
||||
[Inject] public ILogger<CrmTaskItemListPage> Logger { get; set; }
|
||||
[Inject] public HttpInterceptorService _interceptor { get; set; }
|
||||
[Inject] public NavigationManager _navigator { get; set; }
|
||||
[Inject] public ICrmTaskItemHttpRepository CrmTaskItemRepo { get; set; }
|
||||
[Inject] public IToastService _toast { get; set; }
|
||||
private Preferences _prefs { get; set; } = new();
|
||||
private string _workDate { get; set; } = $"{DateTime.Now:yyyy-MM-dd}";
|
||||
private bool _reportExist = false;
|
||||
private List<TaskItemDto>? _taskItems { get; set; } = new();
|
||||
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
||||
[Inject] public NavigationManager Navigator { get; set; }
|
||||
[Inject] public ICrmTaskItemHttpRepository TaskItemRepo { get; set; }
|
||||
[Inject] public IToastService Toaster { get; set; }
|
||||
private Preferences Prefs { get; set; } = new();
|
||||
private string WorkDate { get; set; } = $"{DateTime.Now:yyyy-MM-dd}";
|
||||
private bool ReportExist = false;
|
||||
private List<TaskItemDto> TaskItems { get; set; } = new();
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
_prefs = await Prefs.GetPreferences();
|
||||
if(!string.IsNullOrWhiteSpace(_prefs.WorkDate))
|
||||
_workDate = _prefs.WorkDate;
|
||||
Prefs = await PreferenceService.GetPreferences();
|
||||
if(!string.IsNullOrWhiteSpace(Prefs.WorkDate))
|
||||
WorkDate = Prefs.WorkDate;
|
||||
|
||||
_interceptor.RegisterEvent();
|
||||
_interceptor.RegisterBeforeSendEvent();
|
||||
await GetTaskItems(_workDate);
|
||||
Interceptor.RegisterEvent();
|
||||
Interceptor.RegisterBeforeSendEvent();
|
||||
await GetTaskItems(WorkDate);
|
||||
}
|
||||
|
||||
private async Task GetTaskItems(string workDate)
|
||||
{
|
||||
_toast.ShowInfo("Vent nogle sekunder for data");
|
||||
_taskItems = await CrmTaskItemRepo.GetTaskList(workDate);
|
||||
Toaster.ShowInfo("Vent nogle sekunder for data");
|
||||
TaskItems = await TaskItemRepo.GetTaskList(workDate);
|
||||
}
|
||||
public void Dispose()
|
||||
{
|
||||
_interceptor.DisposeEvent();
|
||||
Interceptor.DisposeEvent();
|
||||
}
|
||||
|
||||
}
|
|
@ -19,8 +19,6 @@
|
|||
@attribute [Authorize(Roles = "Advisor")]
|
||||
@page "/tasks/{TaskItemId}"
|
||||
|
||||
@* {"TaskItemId":"","ErpUserId":"","ReferenceId":"","Name":"","Description":"","DueTimestamp":"","TaskTypeEnum":"","Interval":0,"IsCompleted":false,"OverDue":false,"Recurring":false} *@
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3>Opgave</h3>
|
||||
|
|
|
@ -24,8 +24,6 @@ public partial class ConfirmationModal
|
|||
[Parameter] public string BodyMessage { get; set; } = "";
|
||||
[Parameter] public EventCallback OnOkClicked { get; set; }
|
||||
|
||||
|
||||
|
||||
public void Show()
|
||||
{
|
||||
_modalDisplay = "block;";
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
{
|
||||
"appInfo": {
|
||||
"name": "Wonky Client",
|
||||
"version": "0.30.3",
|
||||
"rc": false,
|
||||
"version": "0.36.1",
|
||||
"rc": true,
|
||||
"sandBox": false,
|
||||
"image": "grumpy-coder.png"
|
||||
},
|
||||
"apiConfig": {
|
||||
"innoBaseUrl": "https://app.innotec.dk",
|
||||
"innoBaseUrl": "https://zeta.innotec.dk",
|
||||
"glsTrackUrl": "https://www.gls-group.eu/276-I-PORTAL-WEB/content/GLS/DK01/DA/5004.htm?txtAction=71000&txtRefNo=",
|
||||
"glsId": "",
|
||||
"serviceVirk": "api/v2/services/virk",
|
||||
|
|
|
@ -115,6 +115,12 @@ public class CompanyDto
|
|||
[MaxLength(100, ErrorMessage = "Du kan højst bruge 100 tegn")]
|
||||
public string Attention { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// ERP block state
|
||||
/// </summary>
|
||||
/// <remarks>Empty string - Customer not blocked</remarks>
|
||||
public string Blocked { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Country code ISO
|
||||
/// </summary>
|
||||
|
|
Loading…
Reference in a new issue