report with orders - v.0.8.102-beta
This commit is contained in:
parent
f7675bec06
commit
dfcb9ddbb8
9 changed files with 207 additions and 75 deletions
108
Wonky.Client/Components/ReportItemComponent.razor
Normal file
108
Wonky.Client/Components/ReportItemComponent.razor
Normal file
|
@ -0,0 +1,108 @@
|
|||
@using Wonky.Entity.Views
|
||||
|
||||
<div class="report-page row d-print-block">
|
||||
<div class="col">
|
||||
<div class="alert bg-dark text-white">
|
||||
<h2 class="text-center fw-bold">BESTILLING</h2>
|
||||
</div>
|
||||
<table class="table table-striped table-bordered d-print-table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th scope="row">Dato</th>
|
||||
<td>@ReportItem.OrderDate</td>
|
||||
<th scope="row">Konto</th>
|
||||
<td>@ReportItem.Company.Account</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="col">Telefon</th>
|
||||
<td>@ReportItem.Company.Phone</td>
|
||||
<th scope="col">Køber</th>
|
||||
<td>@ReportItem.YourRef</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="col">CVR/VAT</th>
|
||||
<td>@ReportItem.Company.VatNumber</td>
|
||||
<th scope="col">Rekvisition</th>
|
||||
<td>@ReportItem.ReferenceNumber</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="col">Navn</th>
|
||||
<td>@ReportItem.Company.Name</td>
|
||||
<th scope="col">Lev.Navn</th>
|
||||
<td>@ReportItem.DlvName</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="col">Adresse</th>
|
||||
<td>@ReportItem.Company.Address1</td>
|
||||
<th scope="col">Lev.Adresse</th>
|
||||
<td>@ReportItem.DlvAddress1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="col">Adresse</th>
|
||||
<td>@ReportItem.Company.Address2</td>
|
||||
<th scope="col">Lev.Adresse</th>
|
||||
<td>@ReportItem.DlvAddress2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="col">Postnr By</th>
|
||||
<td>@ReportItem.Company.ZipCode @ReportItem.Company.City</td>
|
||||
<th scope="col">Lev.Postnr By</th>
|
||||
<td>@ReportItem.DlvZipCity</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="row mb-2">
|
||||
<div class="col">
|
||||
<div class="alert alert-light">
|
||||
<h3 class="text-center fw-bold">Ordre linjer</h3>
|
||||
</div>
|
||||
<table class="table table-striped table-bordered d-print-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Antal</th>
|
||||
<th scope="col">Varnr</th>
|
||||
<th scope="col">Beskrivelse</th>
|
||||
<th class="text-end" scope="col">Pris</th>
|
||||
<th class="text-end" scope="col">R%</th>
|
||||
<th class="text-end" scope="col">Beløb</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (var line in ReportItem.Lines)
|
||||
{
|
||||
<tr>
|
||||
<td>@line.Quantity</td>
|
||||
<td>@line.Sku</td>
|
||||
<td>@line.Description</td>
|
||||
<td class="text-end">@($"{line.Price:N2}")</td>
|
||||
<td class="text-end">@($"{line.Discount:N2}")</td>
|
||||
<td class="text-end">@($"{line.LineSum:N2}")</td>
|
||||
</tr>
|
||||
}
|
||||
<tr>
|
||||
<td colspan="4"></td>
|
||||
<td>Ordresum</td>
|
||||
<td class="text-end">@ReportItem.OrderAmount</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="alert alert-dark">
|
||||
<h4 class="text-center">
|
||||
@ReportItem.OfficeNote
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@code{
|
||||
|
||||
[Parameter]
|
||||
public ReportItemView ReportItem { get; set; } = new();
|
||||
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
@using Wonky.Entity.Views
|
||||
|
||||
<div class="report-item">
|
||||
|
||||
</div>
|
||||
|
||||
@code{
|
||||
|
||||
[Parameter]
|
||||
public ReportItemView ReportItem { get; set; } = new();
|
||||
|
||||
}
|
|
@ -20,10 +20,9 @@
|
|||
@page "/admin/users/advisers/{CountryCode}/{UserId}/reports/{ReportDate}"
|
||||
@attribute [Authorize(Roles = "Admin")]
|
||||
|
||||
@if (SalesReport != null)
|
||||
@if (Report != null)
|
||||
{
|
||||
<PageTitle>@SalesReport.ReportData.Name</PageTitle>
|
||||
|
||||
<PageTitle>@Report.ReportData.Name</PageTitle>
|
||||
<div class="alert alert-dark">
|
||||
<div class="row">
|
||||
<div class="col-md-6 d-print-none align-content-center">
|
||||
|
@ -39,31 +38,42 @@
|
|||
<button class="btn btn-warning" type="button" onclick="window.print();">Print</button>
|
||||
</div>
|
||||
<div class="col d-none d-print-block text-end align-content-center">
|
||||
<h2>@SalesReport.ReportData.Name</h2>
|
||||
<h2>@Report.ReportData.Name</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="w-75">
|
||||
<ReportSummaryComponent ReportData="SalesReport.ReportData"></ReportSummaryComponent>
|
||||
<ReportSummaryComponent ReportData="Report.ReportData"></ReportSummaryComponent>
|
||||
</div>
|
||||
<div class="w-25">
|
||||
<ReportDistanceLedgerComponent ReportData="SalesReport.ReportData"></ReportDistanceLedgerComponent>
|
||||
<ReportDistanceLedgerComponent ReportData="Report.ReportData"></ReportDistanceLedgerComponent>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ActivityTableComponent Activities="SalesReport.ReportItems"></ActivityTableComponent>
|
||||
<ActivityTableComponent Activities="Report.ReportItems"></ActivityTableComponent>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ReportActivityLedgerComponent ReportData="SalesReport.ReportData"></ReportActivityLedgerComponent>
|
||||
<ReportActivityLedgerComponent ReportData="Report.ReportData"></ReportActivityLedgerComponent>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="page-break d-print-block"></div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<AppSpinner/>
|
||||
<AppSpinner></AppSpinner>
|
||||
}
|
||||
@if (_items.Any())
|
||||
{
|
||||
@foreach (var item in _items)
|
||||
{
|
||||
<div class="report-page d-print-block">
|
||||
<ReportItemComponent ReportItem="@item"></ReportItemComponent>
|
||||
</div>
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -35,7 +35,8 @@ public partial class AdminSalesReportView : IDisposable
|
|||
/// <summary>
|
||||
/// Report to render
|
||||
/// </summary>
|
||||
private ReportView SalesReport { get; set; }
|
||||
private ReportView Report { get; set; }
|
||||
private List<ReportItemView> _items { get; set; }
|
||||
|
||||
protected override async Task OnParametersSetAsync()
|
||||
{
|
||||
|
@ -53,8 +54,9 @@ public partial class AdminSalesReportView : IDisposable
|
|||
{
|
||||
if(workDate != ReportDate)
|
||||
_navigator.NavigateTo($"/admin/users/advisers/{CountryCode}/{UserId}/reports/{workDate}");
|
||||
SalesReport = new ReportView();
|
||||
SalesReport = await GetUserReport(UserId, workDate);
|
||||
Report = new ReportView();
|
||||
Report = await GetUserReport(UserId, workDate);
|
||||
_items = Report.ReportItems.Where(x => x.OrderAmount > 0).ToList();
|
||||
}
|
||||
/// <summary>
|
||||
/// Get report for user with entity Id for work date
|
||||
|
@ -64,7 +66,7 @@ public partial class AdminSalesReportView : IDisposable
|
|||
/// <returns></returns>
|
||||
private async Task<ReportView> GetUserReport(string userId, string workDate)
|
||||
{
|
||||
return SalesReport = await _reportRepo.GetReport(userId, workDate);
|
||||
return Report = await _reportRepo.GetReport(userId, workDate);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
|
|
|
@ -20,43 +20,59 @@
|
|||
@page "/sales-reports/view/{ReportDate}"
|
||||
@attribute [Authorize(Roles = "Adviser,Admin,Supervisor")]
|
||||
|
||||
<PageTitle>@_report.ReportData.Name</PageTitle>
|
||||
|
||||
<div class="alert alert-dark">
|
||||
@if (_report != null)
|
||||
{
|
||||
<PageTitle>@_report.ReportData.Name</PageTitle>
|
||||
<div class="alert alert-dark">
|
||||
<div class="row">
|
||||
<div class="col-md-6 d-print-none align-content-center">
|
||||
@if (!string.IsNullOrWhiteSpace(ReportDate))
|
||||
{
|
||||
<h2 class="workDate">@DateTime.Parse(ReportDate).ToLongDateString()</h2>
|
||||
}
|
||||
</div>
|
||||
<div class="col col-md-4 d-print-none align-content-center">
|
||||
<WorkDateComponent SelectedDate="@ReportDate" OnChanged="GetReport"></WorkDateComponent>
|
||||
</div>
|
||||
<div class="col col-md-1 d-print-none align-content-center">
|
||||
<button class="btn btn-warning" type="button" onclick="window.print();">Print</button>
|
||||
</div>
|
||||
<div class="col d-none d-print-block text-end align-content-center">
|
||||
<h2>@_report.ReportData.Name</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6 d-print-none align-content-center">
|
||||
@if (!string.IsNullOrWhiteSpace(ReportDate))
|
||||
{
|
||||
<h2 class="workDate">@DateTime.Parse(ReportDate).ToLongDateString()</h2>
|
||||
}
|
||||
<div class="w-75">
|
||||
<ReportSummaryComponent ReportData="_report.ReportData"></ReportSummaryComponent>
|
||||
</div>
|
||||
<div class="col col-md-4 d-print-none align-content-center">
|
||||
<WorkDateComponent SelectedDate="@ReportDate" OnChanged="GetReport"></WorkDateComponent>
|
||||
</div>
|
||||
<div class="col col-md-1 d-print-none align-content-center">
|
||||
<button class="btn btn-warning" type="button" onclick="window.print();">Print</button>
|
||||
</div>
|
||||
<div class="col d-none d-print-block text-end align-content-center">
|
||||
<h2>@_report.ReportData.Name</h2>
|
||||
<div class="w-25">
|
||||
<ReportDistanceLedgerComponent ReportData="_report.ReportData"></ReportDistanceLedgerComponent>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="w-75">
|
||||
<ReportSummaryComponent ReportData="_report.ReportData"></ReportSummaryComponent>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ActivityTableComponent Activities="_report.ReportItems"></ActivityTableComponent>
|
||||
</div>
|
||||
</div>
|
||||
<div class="w-25">
|
||||
<ReportDistanceLedgerComponent ReportData="_report.ReportData"></ReportDistanceLedgerComponent>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ReportActivityLedgerComponent ReportData="_report.ReportData"></ReportActivityLedgerComponent>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ActivityTableComponent Activities="_report.ReportItems"></ActivityTableComponent>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ReportActivityLedgerComponent ReportData="_report.ReportData"></ReportActivityLedgerComponent>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="page-break d-print-block"></div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<AppSpinner></AppSpinner>
|
||||
}
|
||||
@if (_items.Any())
|
||||
{
|
||||
@foreach (var item in _items)
|
||||
{
|
||||
<div class="report-page d-print-block">
|
||||
<ReportItemComponent ReportItem="@item"></ReportItemComponent>
|
||||
</div>
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@ public partial class SalesReportView
|
|||
[Inject] private IReportHttpRepository _reportRepo { get; set; }
|
||||
[Inject] private NavigationManager _navigator { get; set; }
|
||||
private ReportView _report { get; set; } = new();
|
||||
private List<ReportItemView> _items { get; set; } = new ();
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
|
@ -25,5 +26,6 @@ public partial class SalesReportView
|
|||
if(workDate != ReportDate)
|
||||
_navigator.NavigateTo($"/sales-reports/view/{workDate}");
|
||||
_report = await _reportRepo.GetReport(workDate);
|
||||
_items = _report.ReportItems.Where(x => x.OrderAmount > 0).ToList();
|
||||
}
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"appInfo": {
|
||||
"name": "Wonky Client",
|
||||
"version": "0.8.101",
|
||||
"version": "0.8.102",
|
||||
"isBeta": true,
|
||||
"image": "grumpy-coder.png"
|
||||
},
|
||||
|
|
|
@ -14,19 +14,10 @@
|
|||
.content {
|
||||
padding: 0;
|
||||
}
|
||||
.page {
|
||||
font-size: 10px;
|
||||
border: initial;
|
||||
border-radius: initial;
|
||||
box-shadow: initial;
|
||||
margin: 0;
|
||||
min-height: initial;
|
||||
page-break-after: always;
|
||||
width: initial;
|
||||
-webkit-print-color-adjust: exact;
|
||||
color-adjust: exact;
|
||||
.page-break {
|
||||
page-break-before: always;
|
||||
}
|
||||
.report-item {
|
||||
.report-page {
|
||||
font-size: 10px;
|
||||
border: initial;
|
||||
border-radius: initial;
|
||||
|
|
|
@ -9,7 +9,7 @@ public class ReportItemView
|
|||
/// <summary>
|
||||
/// Lines
|
||||
/// </summary>
|
||||
public List<ReportItemView> Lines { get; set; } = new();
|
||||
public List<ReportItemLine> Lines { get; set; } = new();
|
||||
/// <summary>
|
||||
/// Closed sale
|
||||
/// </summary>
|
||||
|
@ -58,5 +58,20 @@ public class ReportItemView
|
|||
/// Status type enum as string
|
||||
/// </summary>
|
||||
public string StatusTypeEnum { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Customer deliver name
|
||||
/// </summary>
|
||||
public string DlvName { get; set; } = "";
|
||||
/// <summary>
|
||||
/// Customer delivery address line 1
|
||||
/// </summary>
|
||||
public string DlvAddress1 { get; set; } = "";
|
||||
/// <summary>
|
||||
/// Customer delivery address line 2
|
||||
/// </summary>
|
||||
public string DlvAddress2 { get; set; } = "";
|
||||
/// <summary>
|
||||
/// Customer delivery post code and city name
|
||||
/// </summary>
|
||||
public string DlvZipCity { get; set; } = "";
|
||||
}
|
Loading…
Reference in a new issue