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
|
||||
{
|
||||
<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")
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
// /// <summary>
|
||||
// /// Show Incomplete Organization Number Warning
|
||||
// /// </summary>
|
||||
// private async Task ShowOrgWarning()
|
||||
// {
|
||||
// if (_kanvas)
|
||||
// {
|
||||
// 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;
|
||||
}
|
||||
// // 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>
|
||||
|
|
Loading…
Reference in a new issue