FIX: address and vat number validation is only for order or quote

This commit is contained in:
Frede Hundewadt 2023-06-13 10:15:13 +02:00
parent 17949dfffe
commit 323a1404c6
2 changed files with 85 additions and 70 deletions

View file

@ -81,7 +81,8 @@ else
else
{
<option value="noSale">Ingen salg</option>
@if (!string.IsNullOrEmpty(Activity.VatNumber) && !string.IsNullOrWhiteSpace(Activity.Address1) && Company.HasFolded == 0)
/*@if (!string.IsNullOrEmpty(Activity.VatNumber) && !string.IsNullOrWhiteSpace(Activity.Address1) && Company.HasFolded == 0)*/
@if (!string.IsNullOrEmpty(Activity.VatNumber) && !string.IsNullOrWhiteSpace(Activity.Address1))
{
@if (DraftProvider.Draft.DraftType == "order")
{

View file

@ -175,9 +175,9 @@ public partial class AdvisorActivityCreatePage : IDisposable
/*
* debug loggin
*/
Logger.LogDebug("company.segment = {}", Company.Segment);
Logger.LogDebug("activity.segment = {}", Activity.Segment);
Logger.LogDebug("AdvisorActivityCreatePage => DateTime parser => {}", UserPreference.WorkDate);
// Logger.LogDebug("company.segment = {}", Company.Segment);
// Logger.LogDebug("activity.segment = {}", Activity.Segment);
// Logger.LogDebug("AdvisorActivityCreatePage => DateTime parser => {}", UserPreference.WorkDate);
/*
* set selected date
*/
@ -189,7 +189,7 @@ public partial class AdvisorActivityCreatePage : IDisposable
ReportClosed = await ReportRepo.ReportExist($"{SelectedDate:yyyy-MM-dd}");
// Ask for confirmation of date
Logger.LogDebug("Preferences.DateConfirmed => {}", UserPreference.DateConfirmed);
// Logger.LogDebug("Preferences.DateConfirmed => {}", UserPreference.DateConfirmed);
if (!UserPreference.DateConfirmed)
{
PromptDateConfirm = $"Aktiviteter oprettes med dato {SelectedDate.ToShortDateString()}. Er dette OK?";
@ -391,68 +391,82 @@ public partial class AdvisorActivityCreatePage : IDisposable
/// </summary>
private async Task CreateActivity()
{
// avoid duplication
if (Working)
{
/*
* prevent duped activies
*/
return;
}
// working flag is raised after the following validations
Logger.LogDebug("view kanvas activity => {}", JsonSerializer.Serialize(Activity));
switch (_kanvas)
{
// validate customer address1
// - this is a required input
case false when string.IsNullOrWhiteSpace(Activity.Address1):
/*
* validate customer address1 is required when Activity is order or quote
*/
case false when string.IsNullOrWhiteSpace(Activity.Address1) && Activity.ActivityStatusEnum is "order" or "quote":
Toaster.ShowError("Kunde adresse er ufuldstændig.");
return;
// validate org number
// - this is a required input
// - must validate according to country rules.
case false when !VatUtils.ValidateFormat(Company.CountryCode, Activity.VatNumber):
/*
* valid OrganisationNumber is required when Activity is order or quote
*/
case false when !VatUtils.ValidateFormat(Company.CountryCode, Activity.VatNumber) && Activity.ActivityStatusEnum is "order" or "quote":
Toaster.ShowError("Firma registreringsnummer er ikke korrekt.");
return;
}
// validate input according to status
switch (Activity.ActivityStatusEnum)
{
// don't accept order with no lines
/*
* don't accept Draft with no Items
*/
case "order" when DraftProvider.Draft.Items.Count == 0:
Toaster.ShowError("Ved bestilling skal der være en eller flere linjer i kladden.");
return;
// phone number is required if first time customer
/*
* phone number is required if first time customer
*/
case "order" when Company.Account.StartsWith("NY") && string.IsNullOrWhiteSpace(Activity.Phone):
Toaster.ShowError("Ved bestilling til ny kunde skal telefon nummer angives.");
return;
// verify email address is a valid address
/*
* verify email address is a valid address
*/
case "quote" when !Utils.IsValidEmail(Activity.Email):
Toaster.ShowError("Ved tilbud skal en gyldig email adresse angives.");
return;
}
// every checks
// raise working flag
/*
* set Workgin flag (prevents other actions while working)
*/
Working = true;
// reset selected item
// begin assembling activity
/*
* reset local variable
*/
SelectedItem = new SalesItemView();
// activity date
/*
* ensure date is SelectedDate
*/
Activity.ActivityDate = $"{SelectedDate:yyyy-MM-dd}";
// activity type
/*
* Generate OurRef from activity type and user FirstName
*/
Activity.OurRef = Activity.ActivityTypeEnum switch
{
"phone" => $"T:{SalesRep.FirstName}",
"onSite" => $"B:{SalesRep.FirstName}",
_ => ""
};
// if express add 'E' to ourRef
if (Activity.Express)
{
/*
* add `E` to indicate express
*/
Activity.OurRef = $"E{Activity.OurRef}";
}
// begin lines
/*
* generate lines from draft
*/
Activity.Lines = new List<ActivityLineDto>();
var ln = 0;
if (DraftProvider.Draft.Items.Count != 0)
@ -473,25 +487,27 @@ public partial class AdvisorActivityCreatePage : IDisposable
.ToList();
Activity.Lines = lines;
}
// debug logging
Logger.LogDebug("CrmNewActivityPage => \n {}", JsonSerializer.Serialize(Activity));
// post to api
/*
* send reqeust
*/
var result = await ActivityRepo.CreateActivity(Activity);
// debug logging
Logger.LogDebug("ApiResponseView => \n {}", JsonSerializer.Serialize(result));
// show result message
if (result.IsSuccess)
{
/*
* show result message
*/
Toaster.ShowSuccess($"{result.Message}");
await DeleteDraft();
Navigator.NavigateTo($"/advisor/customers");
return;
}
// lower working flag
/*
* remove flag
*/
Working = false;
// show error message
/*
* show error message
*/
Toaster.ShowError(result.Message);
}
@ -505,37 +521,35 @@ public partial class AdvisorActivityCreatePage : IDisposable
}
/// <summary>
/// Show Incomplete Organization Number Warning
/// </summary>
private async Task ShowOrgWarning()
{
if (_kanvas)
{
return;
}
// if (OrgWarning)
// {
// return;
// }
// OrgWarning = true;
if (Company.CountryCode.ToLower() == "se"
&& Utils.StringToDigits(Activity.VatNumber).Length < 10
&& Activity.ActivityStatusEnum == "order")
{
Toaster.ShowWarning("Org nummer er ufuldstændig. Skal opdateres før bestilling kan sendes.");
Toaster.ShowInfo("Vent mens vi soger at finde de manglende cifre ...");
var result = await OrgService.GetPersonalOrgNumber(Activity.Name);
if (!string.IsNullOrWhiteSpace(result.PersonalId))
{
Activity.VatNumber = result.PersonalId;
Toaster.ShowSuccess($"Org nummer for {result.CompanyName} er fundet at være {result.PersonalId}.");
}
}
// OrgWarning = false;
}
// /// <summary>
// /// Show Incomplete Organization Number Warning
// /// </summary>
// private async Task ShowOrgWarning()
// {
// if (_kanvas)
// {
// return;
// }
// // if (OrgWarning)
// // {
// // return;
// // }
// // OrgWarning = true;
// if (Company.CountryCode.ToLower() == "se"
// && Utils.StringToDigits(Activity.VatNumber).Length < 10
// && Activity.ActivityStatusEnum == "order")
// {
// // Toaster.ShowWarning("Org nummer er ufuldstændig. Skal opdateres før bestilling kan sendes.");
// // Toaster.ShowInfo("Vent mens vi soger at finde de manglende cifre ...");
// var result = await OrgService.GetPersonalOrgNumber(Activity.Name);
// if (!string.IsNullOrWhiteSpace(result.PersonalId))
// {
// Activity.VatNumber = result.PersonalId;
// Toaster.ShowSuccess($"Org nummer for {result.CompanyName} er fundet at være {result.PersonalId}.");
// }
// }
// // OrgWarning = false;
// }
/// <summary>