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 else
{ {
<option value="noSale">Ingen salg</option> <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") @if (DraftProvider.Draft.DraftType == "order")
{ {

View file

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