wip - admin print report with orders
This commit is contained in:
parent
9d161671a0
commit
831959c258
34 changed files with 334 additions and 293 deletions
|
@ -19,13 +19,13 @@
|
|||
{
|
||||
<table class="table table-bordered d-print-table table-striped">
|
||||
<thead>
|
||||
<tr class="bg-black opacity-75 text-white border-bottom">
|
||||
<tr class="bg-dark text-white opacity-75 border-bottom">
|
||||
<th scope="col">Kunde</th>
|
||||
<th scope0="col">Bynavn</th>
|
||||
<th scope="col">Bynavn</th>
|
||||
<th scope="col">Demo</th>
|
||||
<th scope="col">Salg</th>
|
||||
<th scope="col">Notat</th>
|
||||
<th></th>
|
||||
<th scope="col">Note</th>
|
||||
<th class="text-end" scope="col">sas</th>
|
||||
<th class="text-end" scope="col">Beløb</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
@ -33,14 +33,20 @@
|
|||
@foreach (var activity in Activities)
|
||||
{
|
||||
<tr>
|
||||
<td>@activity.ViewCompany.Name, @activity.ViewCompany.ZipCity</td>
|
||||
<td>@activity.Company.Name</td>
|
||||
<td>@activity.Company.City</td>
|
||||
<td>@activity.Demo</td>
|
||||
<td>@activity.SalesResume</td>
|
||||
<td>@activity.Sales</td>
|
||||
<td>@activity.OfficeNote</td>
|
||||
<td class="text-end">@activity.</td>
|
||||
<td class="text-end">@(activity.Closed ? @activity.OrderAmount : 0)</td>
|
||||
<td class="text-end">@activity.SasAmount</td>
|
||||
<td class="text-end">@(activity.StatusTypeEnum == "Quote" ? 0 : activity.OrderAmount)</td>
|
||||
</tr>
|
||||
}
|
||||
<tr>
|
||||
<td colspan="5"></td>
|
||||
<td class="text-end">Total</td>
|
||||
<td class="text-end">@Activities.Sum(x => x.OrderAmount)</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
}
|
|
@ -5,5 +5,5 @@ namespace Wonky.Client.Components;
|
|||
|
||||
public partial class ActivityTableComponent
|
||||
{
|
||||
[Parameter] public List<ActivityReportView> Activities { get; set; }
|
||||
[Parameter] public List<ActivityListItemView> Activities { get; set; }
|
||||
}
|
|
@ -14,6 +14,6 @@
|
|||
// along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html]
|
||||
//
|
||||
*@
|
||||
<div>
|
||||
<img class="spinner pe-3" src="loader.gif" alt="Venter på svar ..."/> Afventer server ...
|
||||
<div class="spinner-border text-warning" role="status">
|
||||
<span class="visually-hidden">Loading...</span>
|
||||
</div>
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
<thead>
|
||||
<tr class="bg-dark text-white opacity-75 border-bottom">
|
||||
<th></th>
|
||||
<th class="text-center" colspan="2" scope="col">Dagens Demo @(Report.NewDemoCount + Report.RecallDemoCount)</th>
|
||||
<th class="text-center" colspan="2" scope="col">Dagens Demo @(ReportData.NewDemoCount + ReportData.RecallDemoCount)</th>
|
||||
<th class="text-center border-end" colspan="2" scope="col">Dagens Resultat</th>
|
||||
<th class="text-center" colspan="4" scope="col">Måneds Resultat</th>
|
||||
</tr>
|
||||
|
@ -38,47 +38,47 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<th scope="row">N</th>
|
||||
<td class="text-end">@Report.NewVisitCount</td>
|
||||
<td class="text-end">@Report.NewDemoCount</td>
|
||||
<td class="text-end">@Report.NewSaleCount</td>
|
||||
<td class="text-end border-end">@Report.NewTurnover</td>
|
||||
<td class="text-end">@Report.NewVisitCountMonth</td>
|
||||
<td class="text-end">@Report.NewDemoCountMonth</td>
|
||||
<td class="text-end">@Report.NewSaleCountMonth</td>
|
||||
<td class="text-end">@Report.NewTurnoverMonth</td>
|
||||
<td class="text-end">@ReportData.NewVisitCount</td>
|
||||
<td class="text-end">@ReportData.NewDemoCount</td>
|
||||
<td class="text-end">@ReportData.NewSaleCount</td>
|
||||
<td class="text-end border-end">@ReportData.NewTurnover</td>
|
||||
<td class="text-end">@ReportData.NewVisitCountMonth</td>
|
||||
<td class="text-end">@ReportData.NewDemoCountMonth</td>
|
||||
<td class="text-end">@ReportData.NewSaleCountMonth</td>
|
||||
<td class="text-end">@ReportData.NewTurnoverMonth</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">R</th>
|
||||
<td class="text-end">@Report.RecallVisitCount</td>
|
||||
<td class="text-end">@Report.RecallDemoCount</td>
|
||||
<td class="text-end">@Report.RecallSaleCount</td>
|
||||
<td class="text-end border-end">@Report.RecallTurnover</td>
|
||||
<td class="text-end">@Report.RecallVisitCountMonth</td>
|
||||
<td class="text-end">@Report.RecallDemoCountMonth</td>
|
||||
<td class="text-end">@Report.RecallSaleCountMonth</td>
|
||||
<td class="text-end">@Report.RecallTurnoverMonth</td>
|
||||
<td class="text-end">@ReportData.RecallVisitCount</td>
|
||||
<td class="text-end">@ReportData.RecallDemoCount</td>
|
||||
<td class="text-end">@ReportData.RecallSaleCount</td>
|
||||
<td class="text-end border-end">@ReportData.RecallTurnover</td>
|
||||
<td class="text-end">@ReportData.RecallVisitCountMonth</td>
|
||||
<td class="text-end">@ReportData.RecallDemoCountMonth</td>
|
||||
<td class="text-end">@ReportData.RecallSaleCountMonth</td>
|
||||
<td class="text-end">@ReportData.RecallTurnoverMonth</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">SAS</th>
|
||||
<td class="bg-light"></td>
|
||||
<td class="bg-light"></td>
|
||||
<td class="text-end">@Report.SasCount</td>
|
||||
<td class="text-end border-end">@Report.SasTurnover</td>
|
||||
<td class="text-end">@ReportData.SasCount</td>
|
||||
<td class="text-end border-end">@ReportData.SasTurnover</td>
|
||||
<td class="bg-light"></td>
|
||||
<td class="bg-light"></td>
|
||||
<td class="text-end">@Report.SasCountMonth</td>
|
||||
<td class="text-end">@Report.SasTurnoverMonth</td>
|
||||
<td class="text-end">@ReportData.SasCountMonth</td>
|
||||
<td class="text-end">@ReportData.SasTurnoverMonth</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">TOTAL</th>
|
||||
<td class="text-end">@Report.TotalVisitCount</td>
|
||||
<td class="text-end">@Report.TotalDemoCount</td>
|
||||
<td class="text-end">@Report.TotalSaleCount</td>
|
||||
<td class="text-end border-end">@Report.TotalTurnover</td>
|
||||
<td class="text-end">@Report.TotalVisitCountMonth</td>
|
||||
<td class="text-end">@Report.TotalDemoCountMonth</td>
|
||||
<td class="text-end">@Report.TotalSaleCountMonth</td>
|
||||
<td class="text-end">@Report.TotalTurnoverMonth</td>
|
||||
<td class="text-end">@ReportData.TotalVisitCount</td>
|
||||
<td class="text-end">@ReportData.TotalDemoCount</td>
|
||||
<td class="text-end">@ReportData.TotalSaleCount</td>
|
||||
<td class="text-end border-end">@ReportData.TotalTurnover</td>
|
||||
<td class="text-end">@ReportData.TotalVisitCountMonth</td>
|
||||
<td class="text-end">@ReportData.TotalDemoCountMonth</td>
|
||||
<td class="text-end">@ReportData.TotalSaleCountMonth</td>
|
||||
<td class="text-end">@ReportData.TotalTurnoverMonth</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
@ -6,5 +6,5 @@ namespace Wonky.Client.Components;
|
|||
public partial class ReportActivityLedgerComponent
|
||||
{
|
||||
[Parameter]
|
||||
public NgSalesReport Report { get; set; }
|
||||
public SalesReportDataViewModel ReportData { get; set; }
|
||||
}
|
|
@ -17,35 +17,36 @@
|
|||
|
||||
<table class="table table-bordered table-striped d-print-table">
|
||||
<thead>
|
||||
<tr class="bg-dark text-white opacity-75 border-bottom-0">
|
||||
<th scope="col">
|
||||
Km Aften
|
||||
</th>
|
||||
<th scope="col">
|
||||
Km Morgen
|
||||
</th>
|
||||
<th scope="col">
|
||||
Km Kørt Dag
|
||||
</th>
|
||||
<th scope="col">
|
||||
Km Kørt Md.
|
||||
</th>
|
||||
<th scope="col">
|
||||
Km Privat
|
||||
</th>
|
||||
<th scope="col">
|
||||
Km Privat Md.
|
||||
<tr class="bg-dark text-white opacity-75 border-bottom">
|
||||
<th colspan="2">
|
||||
Km regnskab
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>@Report.KmEvening</td>
|
||||
<td>@Report.KmMorning</td>
|
||||
<td>@Report.Distance</td>
|
||||
<td>@Report.DistanceMonth</td>
|
||||
<td>@Report.DistancePrivate</td>
|
||||
<td>@Report.DistancePrivateMonth</td>
|
||||
<th scope="row">Km Aften</th>
|
||||
<td>@ReportData.KmEvening</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Km Morgen</th>
|
||||
<td>@ReportData.KmMorning</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Km Kørt Dag</th>
|
||||
<td>@ReportData.Distance</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Km Kørt Md.</th>
|
||||
<td>@ReportData.DistanceMonth</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Km Privat</th>
|
||||
<td>@ReportData.DistancePrivate</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Km Privat Md.</th>
|
||||
<td>@ReportData.DistancePrivateMonth</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
@ -6,6 +6,6 @@ namespace Wonky.Client.Components;
|
|||
public partial class ReportDistanceLedgerComponent
|
||||
{
|
||||
[Parameter]
|
||||
public NgSalesReport Report { get; set; }
|
||||
public SalesReportDataViewModel ReportData { get; set; }
|
||||
|
||||
}
|
|
@ -17,16 +17,46 @@
|
|||
|
||||
<table class="table table-bordered table-striped d-print-table">
|
||||
<thead>
|
||||
<tr class="bg-black text-white opacity-75 border-bottom">
|
||||
<th class="w-50" scope="col">Beskrivelse</th>
|
||||
<th scope="col">Medkørende Supervisor</th>
|
||||
<tr class="bg-dark text-white opacity-75 border-bottom">
|
||||
<th colspan="2">
|
||||
Rapport
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>@Report.Description</td>
|
||||
<td>@Report.SupervisedBy</td>
|
||||
<th scope="row">Beskrivelse</th>
|
||||
<td>@ReportData.Description</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Supervisor</th>
|
||||
<td>@ReportData.SupervisedBy</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Dagtype</th>
|
||||
<td>
|
||||
@{
|
||||
switch (ReportData.DayTypeEnum)
|
||||
{
|
||||
case "Sales":
|
||||
<span>Salgsdag: @ReportData.SalesDayNumber</span>
|
||||
break;
|
||||
case "SickLeave":
|
||||
<span>Sygdom</span>
|
||||
break;
|
||||
case "Office":
|
||||
<span>Kontordag</span>
|
||||
break;
|
||||
case "Meeting":
|
||||
<span>Salgsmøde</span>
|
||||
break;
|
||||
case "Leave":
|
||||
<span>Ferie</span>
|
||||
break;
|
||||
}
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
|
|
@ -6,6 +6,6 @@ namespace Wonky.Client.Components;
|
|||
public partial class ReportSummaryComponent
|
||||
{
|
||||
[Parameter]
|
||||
public NgSalesReport Report { get; set; }
|
||||
public SalesReportDataViewModel ReportData { get; set; }
|
||||
|
||||
}
|
|
@ -35,9 +35,9 @@ public class AdminReportHttpRepository : IAdminReportHttpRepository
|
|||
return await _client.GetFromJsonAsync<List<NgSalesReportListView>>($"{_apiConfig.AdminAdviserUri}/{userId}/reports");
|
||||
}
|
||||
|
||||
public async Task<NgSalesReportView> GetReport(string userId, string workDate)
|
||||
public async Task<SalesReportViewModel> GetReport(string userId, string workDate)
|
||||
{
|
||||
return await _client.GetFromJsonAsync<NgSalesReportView>($"{_apiConfig.AdminAdviserUri}/{userId}/reports/{workDate}");
|
||||
return await _client.GetFromJsonAsync<SalesReportViewModel>($"{_apiConfig.AdminAdviserUri}/{userId}/reports/{workDate}");
|
||||
|
||||
}
|
||||
}
|
|
@ -7,5 +7,5 @@ namespace Wonky.Client.HttpRepository;
|
|||
public interface IAdminReportHttpRepository
|
||||
{
|
||||
Task<List<NgSalesReportListView>> GetReports(string userId);
|
||||
Task<NgSalesReportView> GetReport(string userId, string workDate);
|
||||
Task<SalesReportViewModel> GetReport(string userId, string workDate);
|
||||
}
|
|
@ -8,7 +8,7 @@ public interface IReportHttpRepository
|
|||
{
|
||||
Task<bool> ReportExist(string workDate);
|
||||
Task<List<NgSalesReportListView>> GetReports();
|
||||
Task<NgSalesReportView> GetReport(string workDate);
|
||||
Task<SalesReportViewModel> GetReport(string workDate);
|
||||
Task<ReportInitDto> InitializeReportData(string workDate);
|
||||
Task<ApiResponseView> PostReport(string workDate, ReportDto reportDto);
|
||||
}
|
|
@ -38,13 +38,13 @@ public class ReportHttpRepository :IReportHttpRepository
|
|||
{
|
||||
var result =
|
||||
await _client
|
||||
.GetFromJsonAsync<ReportClosedView>($"{_apiConfig.ReportUri}/exist/{workDate}");
|
||||
.GetFromJsonAsync<SalesReportClosedView>($"{_apiConfig.ReportUri}/exist/{workDate}");
|
||||
return result.ReportClosed;
|
||||
}
|
||||
|
||||
public async Task<NgSalesReportView> GetReport(string workDate)
|
||||
public async Task<SalesReportViewModel> GetReport(string workDate)
|
||||
{
|
||||
return await _client.GetFromJsonAsync<NgSalesReportView>($"{_apiConfig.ReportUri}/{workDate}");
|
||||
return await _client.GetFromJsonAsync<SalesReportViewModel>($"{_apiConfig.ReportUri}/{workDate}");
|
||||
|
||||
}
|
||||
public async Task<ReportInitDto> InitializeReportData(string workDate)
|
||||
|
|
|
@ -52,7 +52,7 @@
|
|||
<div class="col-md-4">
|
||||
<InputSelect id="statusType" class="form-select" @bind-Value="@_draft.ActivityStatusEnum">
|
||||
<option value="noSale" selected>Ingen salg</option>
|
||||
@if (!string.IsNullOrEmpty(_draft.VatNumber) && string.IsNullOrWhiteSpace(_draft.Address1))
|
||||
@if (!string.IsNullOrEmpty(_draft.VatNumber) && !string.IsNullOrWhiteSpace(_draft.Address1))
|
||||
{
|
||||
<option value="order">Bestilling</option>
|
||||
<option value="quote">Tilbud</option>
|
||||
|
@ -118,21 +118,27 @@
|
|||
</h2>
|
||||
<div id="catalogBody" class="accordion-collapse collapse" aria-labelledby="catalogHeader" data-bs-parent="#crmActivity">
|
||||
<div class="accordion-body">
|
||||
@* Order draft lines *@
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
Kladdelinjer <span class="mx-2 draft-expires-msg">Global kladde (udløber efter @(DraftStateProvider.Draft.TimeToLiveInSeconds / 60)m inaktivitet)</span>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table table-hover table-striped justify-content-center">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
@* Order draft lines *@
|
||||
<table class="table table-hover table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="bg-dark text-white">
|
||||
<th scope="col" colspan="6">
|
||||
Ordrekladde <span class="mx-2 draft-expires-msg">Global kladde (udløber efter @(DraftStateProvider.Draft.TimeToLiveInSeconds / 60)m inaktivitet)</span>
|
||||
</th>
|
||||
<th scope="col" class="text-end">
|
||||
<button type="button" class="btn btn-danger btn-sm" @onclick="@DeleteDraft" disabled="@(DraftStateProvider.Draft.Items.Count == 0)">Slet kladde</button>
|
||||
</th>
|
||||
</tr>
|
||||
<tr class="bg-dark opacity-75 text-white">
|
||||
<th scope="col">Navn</th>
|
||||
<th scope="col" class="text-nowrap">Varenr</th>
|
||||
<th scope="col" class="text-end">Antal</th>
|
||||
<th scope="col" class="text-end">Enhedspris</th>
|
||||
<th scope="col" class="text-end">Linjesum</th>
|
||||
<th scope="col"> </th>
|
||||
<th scope="col" class="text-end">SAS</th>
|
||||
<th scope="col"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -146,119 +152,102 @@
|
|||
<td class="text-end">@cItem.Quantity</td>
|
||||
<td class="text-end">@cItem.Price</td>
|
||||
<td class="text-end">@cItem.LineTotal</td>
|
||||
<td>
|
||||
<td class="text-center">
|
||||
<input type="checkbox" checked="@cItem.Sas" disabled/>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" class="btn btn-warning" @onclick="@(() => RemoveItem(@cItem))">Slet</button>
|
||||
<td class="text-end">
|
||||
<button type="button" class="btn btn-danger" @onclick="@(() => RemoveItem(@cItem))">Slet Linje</button>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="text-black text-end fw-bold">Total</td>
|
||||
<td class="text-black text-end fw-bold">@DraftStateProvider.Draft.Total</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
}
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="text-black text-end fw-bold">Total</td>
|
||||
<td class="text-black text-end fw-bold">@DraftStateProvider.Draft.Total</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<button type="button" class="btn btn-danger" @onclick="@DeleteDraft" disabled="@(DraftStateProvider.Draft.Items.Count == 0)">
|
||||
Slet kladde
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@* draft line *@
|
||||
@if (_selectedItem != null && ShowItem)
|
||||
{
|
||||
<div class="card mb-3 mt-3">
|
||||
<div class="card-header bg-dark fw-bold text-white">Kladdelinje</div>
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col col-md-4 fw-bold">
|
||||
Varenavn
|
||||
</div>
|
||||
<div class="col fw-bold">
|
||||
Varenr
|
||||
</div>
|
||||
<div class="col fw-bold">
|
||||
Antal
|
||||
</div>
|
||||
<div class="col fw-bold">
|
||||
Pris
|
||||
</div>
|
||||
<div class="col">
|
||||
Rabat
|
||||
</div>
|
||||
<div class="col">
|
||||
SAS
|
||||
</div>
|
||||
<div class="col">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col col-md-4">
|
||||
@_selectedItem.Name
|
||||
</div>
|
||||
<div class="col">
|
||||
@_selectedItem.Sku
|
||||
</div>
|
||||
<div class="col">
|
||||
<input type="number" class="form-control" @bind-value="@Quantity"/>
|
||||
</div>
|
||||
<div class="col">
|
||||
<input type="number" class="form-control" @bind-value="@Price"/>
|
||||
</div>
|
||||
<div class="col">
|
||||
<input type="number" class="form-control" @bind-value="@Discount"/>
|
||||
</div>
|
||||
<div class="col">
|
||||
<input type="checkbox" class="form-check" @bind-value="@Sas"/>
|
||||
</div>
|
||||
<div class="col">
|
||||
<button type="button" class="btn btn-info" @onclick="@(() => AddItem(_selectedItem))">Læg til</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
@* draft line *@
|
||||
@if (_selectedItem != null && ShowItem)
|
||||
{
|
||||
<table id="draft-line" class="table table-bordered">
|
||||
<thead>
|
||||
<tr class="bg-dark text-white">
|
||||
<th scope="col" colspan="6">Kladdelinje</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="col">Antal</th>
|
||||
<th scope="col">Pris</th>
|
||||
<th scope="col">Rabat</th>
|
||||
<th scope="col">SAS</th>
|
||||
<th scope="col">Varenr.</th>
|
||||
<th scope="col"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<input type="number" class="form-control" @bind-value="@Quantity"/>
|
||||
</td>
|
||||
<td>
|
||||
<input type="number" class="form-control" @bind-value="@Price"/>
|
||||
</td>
|
||||
<td>
|
||||
<input type="number" class="form-control" @bind-value="@Discount"/>
|
||||
</td>
|
||||
<td>
|
||||
<input type="checkbox" class="form-check" @bind-value="@Sas"/>
|
||||
</td>
|
||||
<td>@_selectedItem.Sku</td>
|
||||
<td>
|
||||
<button type="button" class="btn btn-warning text-nowrap d-block" @onclick="@(() => AddItem(_selectedItem))">@_selectedItem.Name</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
@* catalog *@
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="row mb-2">
|
||||
<div class="col">
|
||||
<ItemGroupComponent OnChanged="SetItemGroup"/>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
@* catalog *@
|
||||
<div class="sticky-top bg-success bg-opacity-50 rounded-2 px-3 pt-3">
|
||||
<div class="row mb-2">
|
||||
<div class="col">
|
||||
<ItemGroupComponent OnChanged="SetItemGroup"/>
|
||||
</div>
|
||||
<div class="col">
|
||||
<ItemSearchComponent OnChanged="SetSearchCol"/>
|
||||
</div>
|
||||
<div class="col">
|
||||
<SearchPhraseComponent OnChanged="SetSearchPhrase"/>
|
||||
</div>
|
||||
<div class="col">
|
||||
<ItemSortComponent OnChanged="SetSortCol"/>
|
||||
</div>
|
||||
<div class="col">
|
||||
<PageSizeComponent OnChanged="SetPageSize"></PageSizeComponent>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<ItemSearchComponent OnChanged="SetSearchCol"/>
|
||||
</div>
|
||||
<div class="col">
|
||||
<SearchPhraseComponent OnChanged="SetSearchPhrase"/>
|
||||
</div>
|
||||
<div class="col">
|
||||
<ItemSortComponent OnChanged="SetSortCol"/>
|
||||
</div>
|
||||
<div class="col">
|
||||
<PageSizeComponent OnChanged="SetPageSize"></PageSizeComponent>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<PaginationComponent MetaData="_metaData" Spread="2" SelectedPage="SelectedPage"></PaginationComponent>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<PaginationComponent MetaData="_metaData" Spread="2" SelectedPage="SelectedPage"></PaginationComponent>
|
||||
</div>
|
||||
</div>
|
||||
@if (_caltalog.Any())
|
||||
@if (_catalog.Any())
|
||||
{
|
||||
<table class="table table-hover table-striped justify-content-center">
|
||||
<thead>
|
||||
<tr class="bg-black bg-opacity-50 text-white rounded-2">
|
||||
<tr class="bg-dark bg-opacity-50 text-white rounded-2">
|
||||
<th scope="col">Navn</th>
|
||||
<th scope="col" class="text-nowrap">Varenr</th>
|
||||
<th scope="col" class="text-nowrap">Fork</th>
|
||||
|
@ -266,7 +255,7 @@
|
|||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (var item in _caltalog)
|
||||
@foreach (var item in _catalog)
|
||||
{
|
||||
<tr>
|
||||
<td>@item.Name</td>
|
||||
|
@ -279,9 +268,9 @@
|
|||
<li class="list-group-item d-flex justify-content-between align-items-end">
|
||||
<div class="text-sm-start px-2">@rate.Quantity</div>
|
||||
<div class="text-sm-end">@rate.Rate</div>
|
||||
<button type="button" class="btn btn-primary btn-sm" @onclick="@(() => SelectItem(item.ItemId, rate.Quantity, rate.Rate))">
|
||||
<a class="btn btn-primary" href="#draft-line" @onclick="@(() => SelectItem(item.ItemId, rate.Quantity, rate.Rate))">
|
||||
Vælg
|
||||
</button>
|
||||
</a>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
|
@ -293,7 +282,7 @@
|
|||
}
|
||||
else
|
||||
{
|
||||
<AppSpinner/>
|
||||
<div>Der er ingen data</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -50,7 +50,7 @@ public partial class ActivityVisitNew : IDisposable
|
|||
// variables
|
||||
private readonly JsonSerializerOptions? _options = new JsonSerializerOptions{PropertyNameCaseInsensitive = true};
|
||||
private SalesItemView _selectedItem { get; set; } = new();
|
||||
private List<SalesItemView> _caltalog { get; set; } = new();
|
||||
private List<SalesItemView> _catalog { get; set; } = new();
|
||||
private MetaData _metaData { get; set; } = new();
|
||||
private Preferences _prefs { get; set; } = new();
|
||||
private ActivityDto _draft { get; set; } = new();
|
||||
|
@ -194,7 +194,7 @@ public partial class ActivityVisitNew : IDisposable
|
|||
private void SelectItem(string itemId, string quantity, string price)
|
||||
{
|
||||
ShowItem = true;
|
||||
_selectedItem = (from x in _caltalog where x.ItemId == itemId select x).First();
|
||||
_selectedItem = (from x in _catalog where x.ItemId == itemId select x).First();
|
||||
Price = price;
|
||||
Quantity = quantity;
|
||||
}
|
||||
|
@ -230,14 +230,14 @@ public partial class ActivityVisitNew : IDisposable
|
|||
}
|
||||
private async Task SetItemGroup(string groupFilter)
|
||||
{
|
||||
_caltalog = new List<SalesItemView>();
|
||||
_catalog = new List<SalesItemView>();
|
||||
_paging.PageNumber = 1;
|
||||
_paging.SelectGroup = groupFilter;
|
||||
await GetSalesItems();
|
||||
}
|
||||
private async Task SetSearchCol(string columnName)
|
||||
{
|
||||
_caltalog = new List<SalesItemView>();
|
||||
_catalog = new List<SalesItemView>();
|
||||
_paging.PageNumber = 1;
|
||||
_paging.SearchTerm = "";
|
||||
_paging.SearchColumn = columnName;
|
||||
|
@ -245,27 +245,27 @@ public partial class ActivityVisitNew : IDisposable
|
|||
}
|
||||
private async Task SetSortCol(string orderBy)
|
||||
{
|
||||
_caltalog = new List<SalesItemView>();
|
||||
_catalog = new List<SalesItemView>();
|
||||
_paging.OrderBy = orderBy;
|
||||
await GetSalesItems();
|
||||
}
|
||||
private async Task SetSearchPhrase(string searchTerm)
|
||||
{
|
||||
_caltalog = new List<SalesItemView>();
|
||||
_catalog = new List<SalesItemView>();
|
||||
_paging.PageNumber = 1;
|
||||
_paging.SearchTerm = searchTerm;
|
||||
await GetSalesItems();
|
||||
}
|
||||
private async Task SelectedPage(int page)
|
||||
{
|
||||
_caltalog = new List<SalesItemView>();
|
||||
_catalog = new List<SalesItemView>();
|
||||
_paging.PageNumber = page;
|
||||
await GetSalesItems();
|
||||
}
|
||||
|
||||
private async Task SetPageSize(string pageSize)
|
||||
{
|
||||
_caltalog = new List<SalesItemView>();
|
||||
_catalog = new List<SalesItemView>();
|
||||
_paging.PageSize = Convert.ToInt32(pageSize);
|
||||
_paging.PageNumber = 1;
|
||||
await GetSalesItems();
|
||||
|
@ -274,7 +274,7 @@ public partial class ActivityVisitNew : IDisposable
|
|||
private async Task GetSalesItems()
|
||||
{
|
||||
var response = await _itemRepo.GetSalesItemsPaged(_paging);
|
||||
_caltalog = response.Items!;
|
||||
_catalog = response.Items!;
|
||||
_metaData = response.MetaData;
|
||||
}
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
@page "/admin/users/advisers/{CountryCode}/{UserId}/reports/{ReportDate}"
|
||||
@attribute [Authorize(Roles = "Admin")]
|
||||
|
||||
<PageTitle>@_report.Report.Name</PageTitle>
|
||||
<PageTitle>@_report.ReportData.Name</PageTitle>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header bg-dark text-white">
|
||||
|
@ -31,19 +31,32 @@
|
|||
<h2 class="workDate">@DateTime.Parse(ReportDate).ToLongDateString()</h2>
|
||||
}
|
||||
</div>
|
||||
<div class="col d-print-none justify-content-center">
|
||||
<WorkDateComponent OnChanged="GetReport"></WorkDateComponent>
|
||||
</div>
|
||||
<div class="col col-sm-1 d-print-none">
|
||||
<button class="btn btn-warning" type="button" onclick="window.print();">Print</button>
|
||||
</div>
|
||||
<div class="col d-none d-print-block text-end">
|
||||
<h3>@_report.Report.Name</h3>
|
||||
<h3>@_report.ReportData.Name</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<ReportSummaryComponent Report="_report.Report"></ReportSummaryComponent>
|
||||
<ActivityTableComponent Activities="_report.Activities"></ActivityTableComponent>
|
||||
<div class="row">
|
||||
<div class="col w-75">
|
||||
<ReportSummaryComponent ReportData="_report.ReportData"></ReportSummaryComponent>
|
||||
</div>
|
||||
<div class="col w-25">
|
||||
<ReportDistanceLedgerComponent ReportData="_report.ReportData"></ReportDistanceLedgerComponent>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ActivityTableComponent Activities="_report.Activities"></ActivityTableComponent>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ReportActivityLedgerComponent ReportData="_report.ReportData"></ReportActivityLedgerComponent>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -11,24 +11,21 @@ public partial class AdminSalesReportView
|
|||
[Parameter] public string UserId { get; set; } = "";
|
||||
[Parameter] public string CountryCode { get; set; } = "";
|
||||
[Inject] private IAdminReportHttpRepository _reportRepo { get; set; }
|
||||
private NgSalesReportView _report { get; set; } = new();
|
||||
private SalesReportViewModel _report { get; set; } = new();
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
protected override async Task OnParametersSetAsync()
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(ReportDate))
|
||||
{
|
||||
await GetReport(ReportDate);
|
||||
}
|
||||
await GetReport(ReportDate);
|
||||
}
|
||||
|
||||
private async Task GetReport(string workDate)
|
||||
{
|
||||
ReportDate = workDate;
|
||||
_report = new NgSalesReportView();
|
||||
_report = new SalesReportViewModel();
|
||||
_report = await GetUserReport(UserId, workDate);
|
||||
}
|
||||
|
||||
private async Task<NgSalesReportView> GetUserReport(string userId, string workDate)
|
||||
private async Task<SalesReportViewModel> GetUserReport(string userId, string workDate)
|
||||
{
|
||||
return _report = await _reportRepo.GetReport(userId, workDate);
|
||||
}
|
||||
|
|
|
@ -24,13 +24,13 @@
|
|||
<div class="card">
|
||||
<div class="card-header bg-dark text-white rounded-2">
|
||||
<div class="row">
|
||||
<div class="col justify-content-center">
|
||||
<div class="col-md-6 justify-content-center">
|
||||
<h3 class="workDate">@(_workDate.ToLongDateString())</h3>
|
||||
</div>
|
||||
<div class="col justify-content-center">
|
||||
<div class="col-md-4 justify-content-center">
|
||||
<WorkDateComponent OnChanged="SetWorkDate"></WorkDateComponent>
|
||||
</div>
|
||||
<div class="col justify-content-center">
|
||||
<div class="col-md-2 justify-content-center">
|
||||
@if (_working)
|
||||
{
|
||||
<AppSpinner></AppSpinner>
|
||||
|
@ -222,28 +222,32 @@
|
|||
<table class="table">
|
||||
<thead>
|
||||
<tr class="bg-black opacity-75 text-white">
|
||||
<th scope="col">Besøg</th>
|
||||
<th scope="col">Kunde</th>
|
||||
<th scope="col">Bynavn</th>
|
||||
<th scope="col">Demo</th>
|
||||
<th scope="col">Salg</th>
|
||||
<th></th>
|
||||
<th class="text-end" scope="col">Beløb</th>
|
||||
<th scope="col">Note</th>
|
||||
<th scope="col" class="text-end">sas</th>
|
||||
<th scope="col" class="text-end">Beløb</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (var activity in _activities)
|
||||
{
|
||||
<tr>
|
||||
<td>@activity.ViewCompany.Name - @activity.ViewCompany.ZipCity</td>
|
||||
<td>@activity.Company.Name</td>
|
||||
<td>@activity.Company.City</td>
|
||||
<td>@activity.Demo</td>
|
||||
<td>@activity.SalesResume</td>
|
||||
<td class="align-content-end">@activity.OrderAmount</td>
|
||||
<td>@activity.Sales</td>
|
||||
<td>@activity.OfficeNote</td>
|
||||
<td class="text-end">@activity.SasAmount</td>
|
||||
<td class="text-end">@activity.OrderAmount</td>
|
||||
</tr>
|
||||
}
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>Total</td>
|
||||
<td class="align-content-end">@_report.Figures.TotalTurnover</td>
|
||||
<td colspan="5"></td>
|
||||
<td class="text-end">Total</td>
|
||||
<td class="text-end">@_activities.Sum(x => x.OrderAmount)</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
@ -40,7 +40,7 @@ public partial class SalesReportNew : IDisposable
|
|||
[Inject] private IToastService _toast { get; set; }
|
||||
private EditContext _editContext { get; set; }
|
||||
private ReportDto _report { get; set; } = new();
|
||||
private List<ActivityViewReport> _activities { get; set; } = new();
|
||||
private List<ActivityListItemView> _activities { get; set; } = new();
|
||||
private ReportFiguresDto _init { get; set; }
|
||||
private Preferences _prefs { get; set; } = new();
|
||||
private bool _formInvalid = true;
|
||||
|
@ -118,6 +118,7 @@ public partial class SalesReportNew : IDisposable
|
|||
checkOut = new DateTime(_workDate.Year, _workDate.Month, _workDate.Day, _checkOut.Hour, _checkOut.Minute, 0);
|
||||
}
|
||||
|
||||
_report.SalesDayNumber = _report.DayTypeEnum == "sales" ? _report.Figures.SalesDayCount + 1 : 0;
|
||||
_report.FromDateTime = checkIn.ToString("yyyy-MM-dd'T'HH:mm:ss", CultureInfo.InvariantCulture);
|
||||
_report.ToDateTime = checkOut.ToString("yyyy-MM-dd'T'HH:mm:ss", CultureInfo.InvariantCulture);
|
||||
|
||||
|
@ -151,7 +152,7 @@ public partial class SalesReportNew : IDisposable
|
|||
_noFigures = true;
|
||||
_report.Figures = new ReportFiguresDto();
|
||||
_init = new ReportFiguresDto();
|
||||
_activities = new List<ActivityViewReport>();
|
||||
_activities = new List<ActivityListItemView>();
|
||||
_report.Figures.KmEvening = 0;
|
||||
_report.Figures.KmMorning = 0;
|
||||
_report.Figures.Distance = 0;
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
@page "/sales-reports/view/{ReportDate}"
|
||||
@attribute [Authorize(Roles = "Adviser,Admin,Supervisor")]
|
||||
|
||||
<PageTitle>@_report.Report.Name</PageTitle>
|
||||
<PageTitle>@_report.ReportData.Name</PageTitle>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header bg-dark text-white">
|
||||
|
@ -38,12 +38,20 @@
|
|||
<button class="btn btn-warning" type="button" onclick="window.print();">Print</button>
|
||||
</div>
|
||||
<div class="col d-none d-print-block text-end">
|
||||
<h3>@_report.Report.Name</h3>
|
||||
<h3>@_report.ReportData.Name</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<ReportSummaryComponent Report="_report.Report"></ReportSummaryComponent>
|
||||
<div class="row">
|
||||
<div class="col w-75">
|
||||
<ReportSummaryComponent ReportData="_report.ReportData"></ReportSummaryComponent>
|
||||
</div>
|
||||
<div class="col w-25">
|
||||
<ReportDistanceLedgerComponent ReportData="_report.ReportData"></ReportDistanceLedgerComponent>
|
||||
</div>
|
||||
</div>
|
||||
<ActivityTableComponent Activities="_report.Activities"></ActivityTableComponent>
|
||||
<ReportActivityLedgerComponent ReportData="_report.ReportData"></ReportActivityLedgerComponent>
|
||||
</div>
|
||||
</div>
|
|
@ -9,7 +9,7 @@ public partial class SalesReportView
|
|||
{
|
||||
[Parameter] public string ReportDate { get; set; }
|
||||
[Inject] private IReportHttpRepository _reportRepo { get; set; }
|
||||
private NgSalesReportView _report { get; set; } = new();
|
||||
private SalesReportViewModel _report { get; set; } = new();
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
|
@ -22,7 +22,7 @@ public partial class SalesReportView
|
|||
private async Task GetReport(string workDate)
|
||||
{
|
||||
ReportDate = workDate;
|
||||
_report = new NgSalesReportView();
|
||||
_report = new SalesReportViewModel();
|
||||
_report = await _reportRepo.GetReport(workDate);
|
||||
}
|
||||
}
|
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"appInfo": {
|
||||
"name": "Wonky Client",
|
||||
"version": "0.8.80",
|
||||
"version": "0.8.83",
|
||||
"isBeta": true,
|
||||
"image": "grumpy-coder.png"
|
||||
},
|
||||
"apiConfig": {
|
||||
"innoBaseUrl": "https://app.innotec.dk",
|
||||
"innoBaseUrl": "https://dev.innotec.dk",
|
||||
"glsTrackUrl": "https://www.gls-group.eu/276-I-PORTAL-WEB/content/GLS/DK01/DA/5004.htm?txtAction=71000&txtRefNo=",
|
||||
"glsId": "",
|
||||
"virkUrl": "api/v2/services/virk",
|
||||
|
|
|
@ -10,6 +10,11 @@ public class ReportDto
|
|||
/// <remarks>System generated</remarks>
|
||||
public string Name { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Sales day counter
|
||||
/// </summary>
|
||||
public int SalesDayNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Report description
|
||||
/// </summary>
|
||||
|
|
|
@ -5,7 +5,7 @@ public class ReportFiguresDto
|
|||
/// <summary>
|
||||
/// Sales day number
|
||||
/// </summary>
|
||||
public int SalesDayNumber { get; set; }
|
||||
public int SalesDayCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Distance today
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using Wonky.Entity.Models;
|
||||
using Wonky.Entity.Views;
|
||||
|
||||
namespace Wonky.Entity.DTO;
|
||||
|
||||
|
@ -17,6 +18,6 @@ public class ReportInitDto
|
|||
/// <summary>
|
||||
/// List of activities for report
|
||||
/// </summary>
|
||||
public List<ActivityViewReport> Activities { get; set; }
|
||||
public List<ActivityListItemView> Activities { get; set; }
|
||||
|
||||
}
|
7
Wonky.Entity/Views/ActivityCompanyView.cs
Normal file
7
Wonky.Entity/Views/ActivityCompanyView.cs
Normal file
|
@ -0,0 +1,7 @@
|
|||
namespace Wonky.Entity.Views;
|
||||
|
||||
public class ActivityCompanyView
|
||||
{
|
||||
public string Name { get; set; } = "";
|
||||
public string City { get; set; } = "";
|
||||
}
|
|
@ -1,13 +1,16 @@
|
|||
using Wonky.Entity.Views;
|
||||
namespace Wonky.Entity.Views;
|
||||
|
||||
namespace Wonky.Entity.DTO;
|
||||
|
||||
public class ActivityViewReport
|
||||
public class ActivityListItemView
|
||||
{
|
||||
/// <summary>
|
||||
/// Company Info in listing
|
||||
/// </summary>
|
||||
public ActivityViewCompany ViewCompany { get; set; } = new();
|
||||
public ActivityCompanyView Company { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Processing note to office
|
||||
/// </summary>
|
||||
public string OfficeNote { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Total amount
|
||||
|
@ -49,6 +52,11 @@ public class ActivityViewReport
|
|||
/// </summary>
|
||||
public string VisitTypeEnum { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Status type enum as string
|
||||
/// </summary>
|
||||
public string StatusTypeEnum { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Demonstration
|
||||
/// </summary>
|
||||
|
@ -57,6 +65,6 @@ public class ActivityViewReport
|
|||
/// <summary>
|
||||
/// Sales resume
|
||||
/// </summary>
|
||||
public string SalesResume { get; set; } = "";
|
||||
public string Sales { get; set; } = "";
|
||||
}
|
||||
|
|
@ -3,5 +3,5 @@ namespace Wonky.Entity.Views;
|
|||
public class ActivityListReportView
|
||||
{
|
||||
public bool ReportClosed { get; set; }
|
||||
public List<ActivityReportView> Activities { get; set; } = new();
|
||||
public List<ActivityListItemView> Activities { get; set; } = new();
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
namespace Wonky.Entity.Views;
|
||||
|
||||
public class ActivityReportView
|
||||
{
|
||||
public ActivityViewCompany ViewCompany { get; set; } = new();
|
||||
public string SalesHeadId { get; set; } = "";
|
||||
public string OfficeNote { get; set; } = "";
|
||||
public string StatusTypeEnum { get; set; } = "";
|
||||
public bool Closed { get; set; }
|
||||
public string OrderDate { get; set; } = "";
|
||||
public string ReferenceNumber { get; set; } = "";
|
||||
public string YourRef { get; set; } = "";
|
||||
public decimal OrderAmount { get; set; }
|
||||
public decimal SasAmount { get; set; }
|
||||
public string VisitTypeEnum { get; set; } = "";
|
||||
public string Demo { get; set; } = "";
|
||||
public string SalesResume { get; set; } = "";
|
||||
}
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
namespace Wonky.Entity.Views;
|
||||
|
||||
public class ActivityViewCompany
|
||||
{
|
||||
public string CompanyId { get; set; } = "";
|
||||
public string Account { get; set; } = "";
|
||||
public string Name { get; set; } = "";
|
||||
public string ZipCity { get; set; } = "";
|
||||
public string Phone { get; set; } = "";
|
||||
public string VatNumber { get; set; } = "";
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
namespace Wonky.Entity.Views;
|
||||
|
||||
public class NgSalesReportView
|
||||
{
|
||||
public NgSalesReport Report { get; set; } = new();
|
||||
public List<ActivityReportView> Activities { get; set; } = new ();
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
namespace Wonky.Entity.Views;
|
||||
|
||||
public class ReportClosedView
|
||||
public class SalesReportClosedView
|
||||
{
|
||||
public bool ReportClosed { get; set; }
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
namespace Wonky.Entity.Views;
|
||||
|
||||
public class NgSalesReport
|
||||
public class SalesReportDataViewModel
|
||||
{
|
||||
public string ReportId { get; set; } = "";
|
||||
public string ErpUserId { get; set; } = "";
|
||||
|
@ -8,10 +8,11 @@ public class NgSalesReport
|
|||
public string SupervisedBy { get; set; } = "";
|
||||
public string Description { get; set; } = "";
|
||||
public string DayTypeEnum { get; set; } = "";
|
||||
public long ReportDate { get; set; }
|
||||
public long FromDateTime { get; set; }
|
||||
public long ToDateTime { get; set; }
|
||||
public string ReportDate { get; set; } = "";
|
||||
public string FromDateTime { get; set; } = "";
|
||||
public string ToDateTime { get; set; } = "";
|
||||
public bool Closed { get; set; }
|
||||
public int SalesDayNumber { get; set; }
|
||||
// workday
|
||||
public int NewVisitCount { get; set; }
|
||||
public int RecallVisitCount { get; set; }
|
7
Wonky.Entity/Views/SalesReportViewModel.cs
Normal file
7
Wonky.Entity/Views/SalesReportViewModel.cs
Normal file
|
@ -0,0 +1,7 @@
|
|||
namespace Wonky.Entity.Views;
|
||||
|
||||
public class SalesReportViewModel
|
||||
{
|
||||
public SalesReportDataViewModel ReportData { get; set; } = new();
|
||||
public List<ActivityListItemView> Activities { get; set; } = new ();
|
||||
}
|
Loading…
Reference in a new issue