FIX: address and vat number validation is only for order or quote
This commit is contained in:
parent
17949dfffe
commit
323a1404c6
2 changed files with 85 additions and 70 deletions
|
@ -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")
|
||||||
{
|
{
|
||||||
|
|
|
@ -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>
|
||||||
|
|
Loading…
Reference in a new issue