wip - sales report

This commit is contained in:
Frede Hundewadt 2022-06-10 13:26:48 +02:00
parent 14e8eba4f0
commit 40f9334e2d
11 changed files with 49 additions and 28 deletions

View file

@ -140,9 +140,8 @@
</div> </div>
</div> </div>
@* Leverings adresse *@ @* Leverings adresse *@
<div class="accordion-item"> <div class="accordion-item" style="@(_poDraft.ActivityStatusEnum == "order" ? "display: block" : "display:none")">
<h2 class="accordion-header" id="deliveryHeader"> <h2 class="accordion-header" id="deliveryHeader">
<button class="accordion-button collapsed bg-light" type="button" <button class="accordion-button collapsed bg-light" type="button"
data-bs-toggle="collapse" data-bs-target="#deliveryBody" data-bs-toggle="collapse" data-bs-target="#deliveryBody"
@ -187,8 +186,8 @@
</div> </div>
</div> </div>
@* Ordder lines *@ @* Order lines *@
<div class="accordion-item"> <div class="accordion-item" style="@(_poDraft.ActivityStatusEnum is "order" or "quote" ? "display: block" : "display:none")">
<h2 class="accordion-header" id="catalogHeader"> <h2 class="accordion-header" id="catalogHeader">
<button class="accordion-button collapsed bg-light" type="button" <button class="accordion-button collapsed bg-light" type="button"
data-bs-toggle="collapse" data-bs-target="#catalogBody" data-bs-toggle="collapse" data-bs-target="#catalogBody"

View file

@ -27,7 +27,7 @@
</div> </div>
<div class="col"> <div class="col">
<h5>Browservalg</h5> <h5>Browservalg</h5>
Bruge en Chrome baseret browser f.eks. Edge, Safari, Vivaldi, Chrome eller Chromium Det anbefales at bruge en Chrome baseret browser f.eks. Edge, Safari, Vivaldi, Chrome eller Chromium
</div> </div>
</div> </div>
<div class="row"> <div class="row">

View file

@ -35,7 +35,8 @@
<tbody> <tbody>
<tr> <tr>
<td> <td>
<select id="dayType" class="col-md-3 form-select" @bind-Value="_reportDto.DayTypeEnum" @bind-Value:event="oninput" @onchange="CheckDayType"> <select id="dayType" class="col-md-3 form-select"
@bind-Value="_reportDto.DayTypeEnum" @bind-Value:event="oninput" @onchange="CheckDayType">
<option value="" selected disabled="">"IKKE VALGT"</option> <option value="" selected disabled="">"IKKE VALGT"</option>
<option value="sales">Salgsdag</option> <option value="sales">Salgsdag</option>
<option value="meeting">Salgsmøde</option> <option value="meeting">Salgsmøde</option>
@ -43,7 +44,6 @@
<option value="supervisor">Supervisor</option> <option value="supervisor">Supervisor</option>
<option value="sickLeave">Sygdom</option> <option value="sickLeave">Sygdom</option>
<option value="leave">Ferie</option> <option value="leave">Ferie</option>
<option value="noReport">Ingen Rapport</option>
</select> </select>
<ValidationMessage For="@(() => _reportDto.DayTypeEnum)"></ValidationMessage> <ValidationMessage For="@(() => _reportDto.DayTypeEnum)"></ValidationMessage>
</td> </td>
@ -59,6 +59,26 @@
</tbody> </tbody>
</table> </table>
</div> </div>
<div class="card-body">
<div class="row">
<div class="form-group row mb-1">
<label for="supervisedBy" class="col-form-label col-md-2">Supervisor</label>
<div class="col-md-4">
<InputText id="supervisedBy" class="form-control" @bind-Value="_reportDto.SupervisedBy"/>
<ValidationMessage For="@(() => _reportDto.SupervisedBy)"></ValidationMessage>
</div>
</div>
</div>
<div class="row">
<div class="form-group row mb-1">
<label for="description" class="col-form-label col-md-2">Beskrivelse</label>
<div class="col-md-4">
<InputTextArea id="description" class="form-control" @bind-Value="_reportDto.Description"/>
<ValidationMessage For="@(() => _reportDto.Description)"></ValidationMessage>
</div>
</div>
</div>
</div>
<div class="card-body"> <div class="card-body">
<table class="table"> <table class="table">
<thead> <thead>

View file

@ -30,7 +30,7 @@ public partial class SalesReport
[Inject] private UserPreferenceService UserPrefs { get; set; } [Inject] private UserPreferenceService UserPrefs { get; set; }
[Inject] private IActivityHttpRepository ActivityRepo { get; set; } [Inject] private IActivityHttpRepository ActivityRepo { get; set; }
private EditContext _editContext { get; set; } private EditContext _editContext { get; set; }
private ActivityReportDto _reportDto = new(); private ReportDto _reportDto = new();
private Preferences _prefs { get; set; } = new(); private Preferences _prefs { get; set; } = new();
private bool _formInvalid = true; private bool _formInvalid = true;
private List<ReportActivity>? Activities { get; set; } = new(); private List<ReportActivity>? Activities { get; set; } = new();
@ -72,13 +72,13 @@ public partial class SalesReport
{ {
} }
private async Task GetActivities() private async Task GetActivities()
{ {
Activities = null; Activities = null;
await UserPrefs.SetWorkDate(_reportDto.CheckIn); await UserPrefs.SetWorkDate(_reportDto.CheckIn);
Activities = await ActivityRepo Activities = await ActivityRepo
.GetActivities($"{_reportDto.CheckIn:yyyy-MM-dd}") .GetActivities($"{_reportDto.CheckIn:yyyy-MM-dd}");
;
} }
public void Dispose() public void Dispose()

View file

@ -51,7 +51,7 @@ public class VatInfoLookupService
["houseNumber"] = $"{query.HouseNumber}", ["houseNumber"] = $"{query.HouseNumber}",
["zipCode"] = $"{query.ZipCode}" ["zipCode"] = $"{query.ZipCode}"
}; };
var endpoint = QueryHelpers.AddQueryString(_config.BrRegEndpoint, queryString); var endpoint = QueryHelpers.AddQueryString(_config.VirkEndpoint, queryString);
var response = await _client.GetAsync(endpoint); var response = await _client.GetAsync(endpoint);
var content = await response.Content.ReadAsStringAsync(); var content = await response.Content.ReadAsStringAsync();
var jsonResult = JsonSerializer.Deserialize<List<VirkRegInfo>>(content, _options); var jsonResult = JsonSerializer.Deserialize<List<VirkRegInfo>>(content, _options);
@ -64,7 +64,7 @@ public class VatInfoLookupService
return result.Count == 0 ? _noData : result; return result.Count == 0 ? _noData : result;
} }
public async Task<List<VirkRegInfo>> QueryNoVatRegistry(string vatNumber) public async Task<List<VirkRegInfo>> QueryBrRegistry(string vatNumber)
{ {
var queryString = new Dictionary<string, string> var queryString = new Dictionary<string, string>
{ {
@ -85,7 +85,7 @@ public class VatInfoLookupService
return result.Count == 0 ? _noData : result; return result.Count == 0 ? _noData : result;
} }
public async Task<List<VirkRegInfo>> QueryViesVatRegistry(string vatNumber) public async Task<List<VirkRegInfo>> QueryViesRegistry(string vatNumber)
{ {
var queryString = new Dictionary<string, string> var queryString = new Dictionary<string, string>
{ {

View file

@ -8,7 +8,7 @@
}, },
"appInfo": { "appInfo": {
"name": "Wonky Client", "name": "Wonky Client",
"version": "0.3.8", "version": "0.4.3",
"isBeta": true, "isBeta": true,
"image": "grumpy-coder.png" "image": "grumpy-coder.png"
}, },
@ -18,11 +18,12 @@
"userInfo": "api/auth/userinfo", "userInfo": "api/auth/userinfo",
"customerEndpoint": "api/v2/crm/companies", "customerEndpoint": "api/v2/crm/companies",
"catalogEndpoint": "api/v2/crm/catalog", "catalogEndpoint": "api/v2/crm/catalog",
"dkEndpointVat": "api/v2/services/virk", "virkEndpoint": "api/v2/services/virk",
"noEndpointVat": "api/v2/services/brReg", "brRegEndpoint": "api/v2/services/brReg",
"seEndpointVat": "api/v2/services/vies", "viesEndpoint": "api/v2/services/vies",
"glsTrackUrl": "https://www.gls-group.eu/276-I-PORTAL-WEB/content/GLS/DK01/DA/5004.htm?txtAction=71000&txtRefNo=", "glsTrackUrl": "https://www.gls-group.eu/276-I-PORTAL-WEB/content/GLS/DK01/DA/5004.htm?txtAction=71000&txtRefNo=",
"glsId": "", "glsId": "",
"activityEndpoint": "api/v2/crm/salesReps/sales" "activityEndpoint": "api/v2/crm/salesReps/sales",
"reportEndpoint": "api/v2/crm/salesReps/reports"
} }
} }

View file

@ -24,11 +24,12 @@ public class ApiConfig
public string ImageUpload { get; set; } = ""; public string ImageUpload { get; set; } = "";
public string UserRegistration { get; set; } = ""; public string UserRegistration { get; set; } = "";
public string UserInfo { get; set; } = ""; public string UserInfo { get; set; } = "";
public string VirkEndpoint { get; set; } = "";
public string BrRegEndpoint { get; set; } = ""; public string BrRegEndpoint { get; set; } = "";
public string NoEndpointVat { get; set; } = "";
public string ViesEndpoint { get; set; } = ""; public string ViesEndpoint { get; set; } = "";
public string TokenPath { get; set; } = ""; public string TokenPath { get; set; } = "";
public string GlsTrackUrl { get; set; } = ""; public string GlsTrackUrl { get; set; } = "";
public string GlsId { get; set; } = ""; public string GlsId { get; set; } = "";
public string ActivityEndpoint { get; set; } = ""; public string ActivityEndpoint { get; set; } = "";
public string ReportEndpoint { get; set; } = "";
} }

View file

@ -35,6 +35,7 @@ namespace Wonky.Entity.DTO
public string SalesRep { get; set; } = ""; public string SalesRep { get; set; } = "";
[Required(ErrorMessage = "Vælg aktivitetstype")] public string ActivityTypeEnum { get; set; } = ""; [Required(ErrorMessage = "Vælg aktivitetstype")] public string ActivityTypeEnum { get; set; } = "";
[Required(ErrorMessage = "Vælg status for besøg ")] public string ActivityStatusEnum { get; set; } = ""; [Required(ErrorMessage = "Vælg status for besøg ")] public string ActivityStatusEnum { get; set; } = "";
public string VisitTypeEnum { get; set; } = "recall";
public bool CheckDate { get; set; } public bool CheckDate { get; set; }
[Required] public string ActivityDate { get; set; } = ""; [Required] public string ActivityDate { get; set; } = "";
[MaxLength(50, ErrorMessage = "Du kan højst bruge 50 tegn")] public string Demo { get; set; } = ""; [MaxLength(50, ErrorMessage = "Du kan højst bruge 50 tegn")] public string Demo { get; set; } = "";

View file

@ -2,13 +2,12 @@ using System.ComponentModel.DataAnnotations;
namespace Wonky.Entity.DTO; namespace Wonky.Entity.DTO;
public class ActivityReportDto public class ReportDto
{ {
[Required(ErrorMessage = "Dato skal angives")] public DateTime ActivityDate { get; set; }
[Required(ErrorMessage = "Dagtype skal angives")] public string DayTypeEnum { get; set; } = ""; [Required(ErrorMessage = "Dagtype skal angives")] public string DayTypeEnum { get; set; } = "";
[MaxLength(100, ErrorMessage = "Du kan højst bruge 100 tegn")] public string SupervisedBy { get; set; } = "";
[MaxLength(1000, ErrorMessage = "Du kan højst bruge 1000 tegn")] public string Description { get; set; } = ""; [MaxLength(1000, ErrorMessage = "Du kan højst bruge 1000 tegn")] public string Description { get; set; } = "";
// [MaxLength(100, ErrorMessage = "Du kan højst bruge 100 tegn")] public string SupervisedBy { get; set; } = "";
// Date interval (used for leave, sickLeave and work hours
public DateTime CheckIn { get; set; } public DateTime CheckIn { get; set; }
public DateTime CheckOut { get; set; } public DateTime CheckOut { get; set; }
// workday // workday

View file

@ -2,7 +2,7 @@ namespace Wonky.Entity.Models;
public class ReportActivity public class ReportActivity
{ {
public Visitcompany Company { get; set; } public VisitCompany Company { get; set; }
public string SalesHeadId { get; set; } = ""; public string SalesHeadId { get; set; } = "";
public bool Closed { get; set; } public bool Closed { get; set; }
public string OrderDate { get; set; } = ""; public string OrderDate { get; set; } = "";
@ -14,7 +14,7 @@ public class ReportActivity
public string SalesResume { get; set; } = ""; public string SalesResume { get; set; } = "";
} }
public class Visitcompany public class VisitCompany
{ {
public string CompanyId { get; set; } = ""; public string CompanyId { get; set; } = "";
public string Account { get; set; } = ""; public string Account { get; set; } = "";