overlay customer activity list view and single view
This commit is contained in:
parent
709ca5d90b
commit
fc0682c747
39 changed files with 411 additions and 122 deletions
|
@ -38,7 +38,7 @@
|
|||
@foreach (var activity in ActivityList)
|
||||
{
|
||||
<tr>
|
||||
<td class="align-middle"><a class="btn btn-outline-info text-black d-block" href="/advisor/customers/@activity.Company.CompanyId/orders/@activity.ActivityId">@activity.Company.Name</a></td>
|
||||
<td class="align-middle"><a href="/advisor/customers/@activity.Company.CompanyId/orders/@activity.ActivityId">@activity.Company.Name</a></td>
|
||||
<td class="align-middle">@activity.Company.City</td>
|
||||
<td class="align-middle">@activity.Demo</td>
|
||||
<td class="align-middle">@activity.Sales</td>
|
||||
|
|
75
Wonky.Client/Components/CustomerVisitListComponent.razor
Normal file
75
Wonky.Client/Components/CustomerVisitListComponent.razor
Normal file
|
@ -0,0 +1,75 @@
|
|||
@*
|
||||
// Copyright (C) 2022 FCS Frede's Computer Services.
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as
|
||||
// published by the Free Software Foundation, either version 3 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html]
|
||||
//
|
||||
*@
|
||||
|
||||
<div class="list-group">
|
||||
<div class="list-group-item">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h4>Dato</h4>
|
||||
</div>
|
||||
<div class="col">
|
||||
<h4>Demo</h4>
|
||||
</div>
|
||||
<div class="col">
|
||||
<h4>Salg</h4>
|
||||
</div>
|
||||
<div class="col">
|
||||
<h4>Ordre Note</h4>
|
||||
</div>
|
||||
<div class="col">
|
||||
<h4>Ordre Note</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@if (Activities.Any())
|
||||
{
|
||||
@foreach (var activity in Activities)
|
||||
{
|
||||
<div class="list-group-item list-group-item-action" style="cursor: pointer" @onclick="() => ShowVisitOverlay(activity.ActivityId)">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
@activity.OrderDate
|
||||
</div>
|
||||
<div class="col">
|
||||
@activity.Demo
|
||||
</div>
|
||||
<div class="col">
|
||||
@activity.Sales
|
||||
</div>
|
||||
<div class="col">
|
||||
@activity.OfficeNote
|
||||
</div>
|
||||
<div class="col">
|
||||
@activity.CrmNote
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="list-group-item">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
Ingen data
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
|
||||
<CustomerActivityViewModalOverlay ReportItem="Activity" @ref="ActivityViewOverlay"/>
|
41
Wonky.Client/Components/CustomerVisitListComponent.razor.cs
Normal file
41
Wonky.Client/Components/CustomerVisitListComponent.razor.cs
Normal file
|
@ -0,0 +1,41 @@
|
|||
// Copyright (C) 2022 FCS Frede's Computer Services.
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as
|
||||
// published by the Free Software Foundation, either version 3 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html]
|
||||
//
|
||||
|
||||
using System.Globalization;
|
||||
using System.Runtime.InteropServices;
|
||||
using Blazored.LocalStorage;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Wonky.Client.HttpInterfaces;
|
||||
using Wonky.Client.Models;
|
||||
using Wonky.Client.Shared;
|
||||
using Wonky.Entity.DTO;
|
||||
using Wonky.Entity.Views;
|
||||
|
||||
namespace Wonky.Client.Components;
|
||||
|
||||
public partial class CustomerVisitListComponent
|
||||
{
|
||||
[Parameter] public List<ReportItemView> Activities { get; set; } = new();
|
||||
private CustomerActivityViewModalOverlay ActivityViewOverlay { get; set; } = new();
|
||||
|
||||
private ReportItemView Activity { get; set; } = new();
|
||||
|
||||
private void ShowVisitOverlay(string activityId)
|
||||
{
|
||||
Activity = Activities.First(x => x.ActivityId == activityId);
|
||||
ActivityViewOverlay.Show();
|
||||
}
|
||||
|
||||
}
|
|
@ -22,7 +22,7 @@
|
|||
<thead>
|
||||
<tr>
|
||||
<th class="p-0" colspan="4">
|
||||
<div class="bg-light text-dark border border-1 rounded-3 pt-3 mb-2">
|
||||
<div class="alert d-print-block border border-1 border-dark pt-3 mb-2">
|
||||
<h2 class="fw-bold text-center">@ReportItem.Company.Name</h2>
|
||||
@if (ReportItem.Express)
|
||||
{
|
||||
|
@ -134,10 +134,10 @@
|
|||
</table>
|
||||
@if (!string.IsNullOrWhiteSpace(@ReportItem.OfficeNote))
|
||||
{
|
||||
<div class="alert alert-dark d-print-block">
|
||||
<h4 class="text-center">
|
||||
<div class="alert d-print-block border border-1 border-dark">
|
||||
<p class="text-center h4">
|
||||
@ReportItem.OfficeNote
|
||||
</h4>
|
||||
</p>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
@attribute [Authorize(Roles = "Advisor")]
|
||||
@page "/advisor/customers/{CompanyId}/activities/new"
|
||||
|
||||
<PageTitle>Rådgiver Opret Aktivetet for @Company.Name</PageTitle>
|
||||
<PageTitle>Ny aktivitet - @Company.Name</PageTitle>
|
||||
|
||||
<div class="row bg-dark text-white rounded-2 mb-2 py-2 align-items-center">
|
||||
<div class="col">
|
||||
|
@ -161,7 +161,8 @@ else
|
|||
<button class="btn btn-danger" disabled="@string.IsNullOrWhiteSpace(Activity.ActivityTypeEnum)" @onclick="ShowInvoiceOverlay">Faktura</button>
|
||||
</div>
|
||||
<div class="col-sm-3 d-grid mx-auto">
|
||||
<button class="btn btn-warning" disabled>Tidl. besøg</button>
|
||||
<button class="btn btn-warning" disabled="@string.IsNullOrWhiteSpace(Activity.ActivityTypeEnum)" @onclick="ShowVisitOverlay">Tidl. besøg</button>
|
||||
@* <button class="btn btn-warning" disabled @onclick="ShowVisitOverlay">Tidl. besøg</button> *@
|
||||
</div>
|
||||
<div class="col-sm-3 d-grid mx-auto">
|
||||
<button class="btn btn-success" disabled="@string.IsNullOrWhiteSpace(Activity.ActivityTypeEnum)" @onclick="ShowInventoryOverlay">Produkter</button>
|
||||
|
@ -335,21 +336,23 @@ else
|
|||
</div>
|
||||
}
|
||||
|
||||
<ConfirmWorkDateOverlay BodyMessage="@PromptDateConfirm"
|
||||
<ConfirmWorkDateModalOverlay BodyMessage="@PromptDateConfirm"
|
||||
OnOkClicked="WorkDateConfirmCallback" @ref="WorkDateOverlay"/>
|
||||
|
||||
<PriceCatalogOverlay CountryCode="@Company.CountryCode.ToLower()"
|
||||
<PriceCatalogModalOverlay CountryCode="@Company.CountryCode.ToLower()"
|
||||
OnSelected="PriceListCallback" @ref="CatalogOverlay"/>
|
||||
|
||||
<ProductHistoryOverlay CompanyId="@CompanyId" ItemSku="@SelectedItem.Sku" @ref="ProductOverlay"/>
|
||||
<ProductHistoryModalOverlay CompanyId="@CompanyId" ItemSku="@SelectedItem.Sku" @ref="ProductOverlay"/>
|
||||
|
||||
<ProductPriceHistoryModal CompanyId="@CompanyId" Sku="@SelectedItem.Sku"
|
||||
OnSelected="PriceHistoryCallback" @ref="PriceOverlay"/>
|
||||
|
||||
<ConfirmProductCheckOverlay BodyMessage="" CompanyId="@CompanyId" Products="CheckList"
|
||||
<ConfirmProductCheckModalOverlay BodyMessage="" CompanyId="@CompanyId" Products="CheckList"
|
||||
OnOkClicked="ConfirmProductCheckCallback" @ref="ProductCheckOverlay" />
|
||||
|
||||
<CustomerInvoiceOverlay CustomerInvoices="CompanyInvoices" @ref="InvoiceOverlay" />
|
||||
<CustomerInvoiceModalOverlay CustomerInvoices="CompanyInvoices" @ref="InvoiceOverlay" />
|
||||
|
||||
<CustomerInventoryOverlay CompanyName="@Company.Name" CompanyId="@CompanyId" CountryCode="@Company.CountryCode"
|
||||
OnInventorySelected="OnInventoryCallback" Inventory="Inventory" @ref="InventoryOverlay" />
|
||||
<CustomerInventoryModalOverlay CompanyName="@Company.Name" CompanyId="@CompanyId" CountryCode="@Company.CountryCode"
|
||||
OnInventorySelected="OnInventoryCallback" Inventory="Inventory" @ref="InventoryOverlay" />
|
||||
|
||||
<CustomerActivityListModalOverlay Activities="Activities" CompanyName="@Company.Name" @ref="ActivityListOverlay" />
|
|
@ -39,10 +39,10 @@ public partial class AdvisorActivityCreatePage : IDisposable
|
|||
[Inject] private IToastService Toaster { get; set; }
|
||||
[Inject] private NavigationManager Navigator { get; set; }
|
||||
[Inject] private ILocalStorageService Storage { get; set; }
|
||||
[Inject] private ICountryCatalogRepository Catalog { get; set; }
|
||||
[Inject] private IAdvisorCustomerRepository Companies { get; set; }
|
||||
[Inject] private IAdvisorActivityRepository Actitivites { get; set; }
|
||||
[Inject] private IAdvisorReportRepository Reports { get; set; }
|
||||
[Inject] private ICountryCatalogRepository CatalogRepo { get; set; }
|
||||
[Inject] private IAdvisorCustomerRepository CompanyRepo { get; set; }
|
||||
[Inject] private IAdvisorActivityRepository ActivityRepo { get; set; }
|
||||
[Inject] private IAdvisorReportRepository ReportRepo { get; set; }
|
||||
[Inject] private IAdvisorCustomerHistoryRepository HistoryRepo { get; set; }
|
||||
|
||||
[CascadingParameter] private DraftStateProvider DraftProvider { get; set; } = new();
|
||||
|
@ -71,18 +71,20 @@ public partial class AdvisorActivityCreatePage : IDisposable
|
|||
private string PromptDateConfirm { get; set; } = "";
|
||||
|
||||
// OVERLAY PAGES
|
||||
private PriceCatalogOverlay CatalogOverlay { get; set; } = new();
|
||||
private ProductHistoryOverlay ProductOverlay { get; set; } = new();
|
||||
private PriceCatalogModalOverlay CatalogOverlay { get; set; } = new();
|
||||
private ProductHistoryModalOverlay ProductOverlay { get; set; } = new();
|
||||
private ProductPriceHistoryModal PriceOverlay { get; set; } = new();
|
||||
private ConfirmWorkDateOverlay WorkDateOverlay { get; set; } = new();
|
||||
private ConfirmProductCheckOverlay ProductCheckOverlay { get; set; } = new();
|
||||
private CustomerInvoiceOverlay InvoiceOverlay { get; set; } = new();
|
||||
private CustomerInventoryOverlay InventoryOverlay { get; set; } = new();
|
||||
|
||||
private ConfirmWorkDateModalOverlay WorkDateOverlay { get; set; } = new();
|
||||
private ConfirmProductCheckModalOverlay ProductCheckOverlay { get; set; } = new();
|
||||
private CustomerInvoiceModalOverlay InvoiceOverlay { get; set; } = new();
|
||||
private CustomerInventoryModalOverlay InventoryOverlay { get; set; } = new();
|
||||
private CustomerActivityListModalOverlay ActivityListOverlay { get; set; } = new();
|
||||
private List<ProductInventoryView> Inventory { get; set; } = new();
|
||||
private List<ProductInventoryView> CheckList { get; set; } = new();
|
||||
private InvoiceListView CompanyInvoices { get; set; } = new();
|
||||
|
||||
private List<ReportItemView> Activities { get; set; } = new();
|
||||
|
||||
|
||||
private string ButtonText { get; set; } = "Gem besøg";
|
||||
private bool OrgWarning { get; set; }
|
||||
|
@ -103,7 +105,7 @@ public partial class AdvisorActivityCreatePage : IDisposable
|
|||
// User Info
|
||||
SalesRep = await Storage.GetItemAsync<UserInfoView>("_xu");
|
||||
// Fetch Customer from http
|
||||
Company = await Companies.GetCompanyById(CompanyId);
|
||||
Company = await CompanyRepo.GetCompanyById(CompanyId);
|
||||
if (Company.HasFolded == 1)
|
||||
// Company has shutdown activities
|
||||
Activity.OrderMessage = "BEMÆRK: CVR nummer er ophørt.";
|
||||
|
@ -143,7 +145,7 @@ public partial class AdvisorActivityCreatePage : IDisposable
|
|||
// Initialize date variable
|
||||
SelectedDate = string.IsNullOrWhiteSpace(UserPrefs.WorkDate) ? DateTime.Now : DateTime.Parse(UserPrefs.WorkDate);
|
||||
// raise flag if report is closed
|
||||
ReportClosed = await Reports.ReportExist($"{SelectedDate:yyyy-MM-dd}");
|
||||
ReportClosed = await ReportRepo.ReportExist($"{SelectedDate:yyyy-MM-dd}");
|
||||
// Ask for confirmation of date
|
||||
Logger.LogDebug("Preferences.DateConfirmed => {}", UserPrefs.DateConfirmed);
|
||||
if (!UserPrefs.DateConfirmed)
|
||||
|
@ -162,6 +164,17 @@ public partial class AdvisorActivityCreatePage : IDisposable
|
|||
Working = false;
|
||||
}
|
||||
|
||||
private async Task ShowVisitOverlay()
|
||||
{
|
||||
Logger.LogDebug("ShowInventoryOverlay - wait for visits");
|
||||
|
||||
ActivityListOverlay.Show();
|
||||
|
||||
Activities = await ActivityRepo.GetCustomerActivities(CompanyId);
|
||||
|
||||
await Task.Delay(500);
|
||||
}
|
||||
|
||||
private async Task ShowInventoryOverlay()
|
||||
{
|
||||
Logger.LogDebug("ShowInventoryOverlay - wait for inventory");
|
||||
|
@ -169,6 +182,7 @@ public partial class AdvisorActivityCreatePage : IDisposable
|
|||
InventoryOverlay.Show();
|
||||
|
||||
Inventory = await HistoryRepo.FetchInventory(CompanyId);
|
||||
|
||||
await Task.Delay(500);
|
||||
}
|
||||
|
||||
|
@ -313,7 +327,7 @@ public partial class AdvisorActivityCreatePage : IDisposable
|
|||
/// <param name="workDate"></param>
|
||||
private async Task WorkDateComponentCallback(string workDate)
|
||||
{
|
||||
ReportClosed = await Reports.ReportExist(workDate);
|
||||
ReportClosed = await ReportRepo.ReportExist(workDate);
|
||||
SelectedDate = DateTime.Parse(workDate);
|
||||
Activity.ActivityDate = workDate;
|
||||
}
|
||||
|
@ -335,7 +349,7 @@ public partial class AdvisorActivityCreatePage : IDisposable
|
|||
// get selected item
|
||||
if (string.IsNullOrWhiteSpace(sku.ItemId))
|
||||
return;
|
||||
SelectedItem = await Catalog.GetSalesItemId(SalesRep.CountryCode.ToLower(), sku.ItemId);
|
||||
SelectedItem = await CatalogRepo.GetSalesItemId(SalesRep.CountryCode.ToLower(), sku.ItemId);
|
||||
ShowItem = true;
|
||||
Price = sku.Rate;
|
||||
Quantity = sku.Quantity;
|
||||
|
@ -412,7 +426,7 @@ public partial class AdvisorActivityCreatePage : IDisposable
|
|||
{
|
||||
Company.Phone = Activity.Phone;
|
||||
Activity.OrderMessage = $"Telefonnr. opdateret.\n{Activity.OrderMessage}";
|
||||
await Companies.UpdateErpData(Company.CompanyId, Company);
|
||||
await CompanyRepo.UpdateErpData(Company.CompanyId, Company);
|
||||
}
|
||||
// begin assembling activity
|
||||
Activity.ActivityDate = $"{SelectedDate:yyyy-MM-dd}";
|
||||
|
@ -448,7 +462,7 @@ public partial class AdvisorActivityCreatePage : IDisposable
|
|||
// debug logging
|
||||
Logger.LogDebug("CrmNewActivityPage => \n {}", JsonSerializer.Serialize(Activity));
|
||||
// post to api
|
||||
var result = await Actitivites.CreateActivity(Activity);
|
||||
var result = await ActivityRepo.CreateActivity(Activity);
|
||||
// debug logging
|
||||
Logger.LogDebug("ApiResponseView => \n {}", JsonSerializer.Serialize(result));
|
||||
// show result message
|
||||
|
|
|
@ -36,63 +36,7 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="list-group">
|
||||
<div class="list-group-item">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h4>Dato</h4>
|
||||
</div>
|
||||
<div class="col">
|
||||
<h4>Demo</h4>
|
||||
</div>
|
||||
<div class="col">
|
||||
<h4>Salg</h4>
|
||||
</div>
|
||||
<div class="col">
|
||||
<h4>Note /Kontor</h4>
|
||||
</div>
|
||||
<div class="col">
|
||||
<h4>Note /Selv</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if (Activities.Any())
|
||||
{
|
||||
@foreach (var activity in Activities)
|
||||
{
|
||||
<div class="list-group-item">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
@activity.OrderDate
|
||||
</div>
|
||||
<div class="col">
|
||||
@activity.Demo
|
||||
</div>
|
||||
<div class="col">
|
||||
@activity.Sales
|
||||
</div>
|
||||
<div class="col">
|
||||
@activity.OfficeNote
|
||||
</div>
|
||||
<div class="col">
|
||||
@activity.CrmNote
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="list-group-item">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
Ingen data
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
<CustomerVisitListComponent Activities="Activities" />
|
||||
}
|
||||
@if (Working)
|
||||
{
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
|
||||
<CustomerInventoryListComponent OnReorderSelected="OnReorderCallback" CompanyId="@CompanyId" Inventory="@Inventory"/>
|
||||
|
||||
<InventoryReorderModal OnSelected="@OnSelectedItem" CompanyId="@CompanyId" SalesItem="@SalesItem" @ref="ReorderModal"/>
|
||||
<InventoryReorderModalOverlay OnSelected="@OnSelectedItem" CompanyId="@CompanyId" SalesItem="@SalesItem" @ref="InventoryOverlay"/>
|
||||
|
||||
@if (Working)
|
||||
{
|
||||
|
|
|
@ -44,7 +44,7 @@ public partial class AdvisorCustomerInventoryListPage : IDisposable
|
|||
private CompanyDto Company { get; set; } = new();
|
||||
private bool Working { get; set; } = true;
|
||||
private SalesItemView SalesItem { get; set; } = new();
|
||||
private InventoryReorderModal ReorderModal { get; set; } = new();
|
||||
private InventoryReorderModalOverlay InventoryOverlay { get; set; } = new();
|
||||
private List<ProductInventoryView> Inventory { get; set; } = new();
|
||||
|
||||
|
||||
|
@ -65,7 +65,7 @@ public partial class AdvisorCustomerInventoryListPage : IDisposable
|
|||
{
|
||||
// fetch item from http repo
|
||||
SalesItem = await Catalog.GetSalesItemSku(Company.CountryCode.ToLower(), sku);
|
||||
ReorderModal.Show();
|
||||
InventoryOverlay.Show();
|
||||
}
|
||||
|
||||
private async Task OnSelectedItem(DraftItem draftItem)
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<CustomerInvoiceListComponent OnShowInvoice="CallInvoiceModal" CompanyId="@_companyId" InvoiceList="@CompanyInvoices.Invoices"/>
|
||||
<InvoiceViewModal CompanyId="@_companyId" InvoiceId="@InvoiceId" @ref="InvoiceView" />
|
||||
<InvoiceViewModalOverlay CompanyId="@_companyId" InvoiceId="@InvoiceId" @ref="InvoiceView" />
|
||||
}
|
||||
|
||||
@if (Working)
|
||||
|
|
|
@ -23,7 +23,7 @@ public partial class AdvisorCustomerInvoiceListPage : IDisposable
|
|||
[Inject] private ILogger<AdvisorCustomerInvoiceListPage> Logger { get; set; }
|
||||
private InvoiceListView CompanyInvoices { get; set; } = new();
|
||||
private CompanyDto Company { get; set; } = new();
|
||||
private InvoiceViewModal InvoiceView { get; set; } = new();
|
||||
private InvoiceViewModalOverlay InvoiceView { get; set; } = new();
|
||||
private string InvoiceId { get; set; } = "";
|
||||
private bool Working { get; set; }
|
||||
private bool AllSet { get; set; }
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="report-main d-print-grid">
|
||||
<div class="report-main d-print-table">
|
||||
@if (!string.IsNullOrWhiteSpace(Report.ReportData.DayTypeEnum))
|
||||
{
|
||||
<PageTitle>@Report.ReportData.Name</PageTitle>
|
||||
|
|
|
@ -225,4 +225,4 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<PriceCatalogOverlay OnSelected="PriceListCallback" @ref="PriceCatalog"/>
|
||||
<PriceCatalogModalOverlay OnSelected="PriceListCallback" @ref="CatalogOverlay"/>
|
|
@ -59,7 +59,7 @@ public partial class OfficeCustomerCreatePhoneOrderPage : IDisposable
|
|||
private bool ReportClosed { get; set; }
|
||||
private bool PoFormInvalid { get; set; } = true;
|
||||
private bool Working { get; set; }
|
||||
private PriceCatalogOverlay PriceCatalog { get; set; } = new();
|
||||
private PriceCatalogModalOverlay CatalogOverlay { get; set; } = new();
|
||||
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
|
@ -126,7 +126,7 @@ public partial class OfficeCustomerCreatePhoneOrderPage : IDisposable
|
|||
|
||||
private void CallPriceListModal()
|
||||
{
|
||||
PriceCatalog.Show();
|
||||
CatalogOverlay.Show();
|
||||
}
|
||||
|
||||
private async Task PriceListCallback(SelectedSku sku)
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
{
|
||||
<PageTitle>@Report.ReportData.Name</PageTitle>
|
||||
<div class="row">
|
||||
<div class="col text-center align-content-center">
|
||||
<div class="alert border border-1 border-dark text-center align-content-center">
|
||||
<h3>@Report.ReportData.Name</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
</div>
|
||||
<div class="col-sm-6 d-grid">
|
||||
<AuthorizeView Roles="Admin,Office">
|
||||
<button class="btn btn-primary" type="button" @onclick="Print"><i class="bi-printer"></i> Udskriv</button>
|
||||
<button class="btn btn-primary" type="button" @onclick="OfficePrint"><i class="bi-printer"></i> Udskriv</button>
|
||||
</AuthorizeView>
|
||||
<AuthorizeView Roles="Advisor">
|
||||
<button class="btn btn-primary" type="button" @onclick="Print"><i class="bi-printer"></i> Udskriv</button>
|
||||
|
|
|
@ -32,8 +32,10 @@
|
|||
<div class="report-main d-print-table">
|
||||
<PageTitle>@Report.ReportData.Name</PageTitle>
|
||||
<div class="row">
|
||||
<div class="col text-center align-content-center">
|
||||
<h3>@Report.ReportData.Name</h3>
|
||||
<div class="col">
|
||||
<div class="alert border border-2 border-dark text-center align-content-center">
|
||||
<h3>@Report.ReportData.Name</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
|
|
|
@ -18,7 +18,7 @@ using Wonky.Entity.Views;
|
|||
|
||||
namespace Wonky.Client.Shared;
|
||||
|
||||
public partial class ConfirmProductCheckOverlay
|
||||
public partial class ConfirmProductCheckModalOverlay
|
||||
{
|
||||
private string _modalDisplay = "";
|
||||
private bool _showBackdrop;
|
|
@ -17,7 +17,7 @@ using Microsoft.AspNetCore.Components;
|
|||
|
||||
namespace Wonky.Client.Shared;
|
||||
|
||||
public partial class ConfirmWorkDateOverlay
|
||||
public partial class ConfirmWorkDateModalOverlay
|
||||
{
|
||||
private string _modalDisplay = "";
|
||||
private bool _showBackdrop;
|
19
Wonky.Client/Shared/CustomerActivityListModalOverlay.razor
Normal file
19
Wonky.Client/Shared/CustomerActivityListModalOverlay.razor
Normal file
|
@ -0,0 +1,19 @@
|
|||
@using Wonky.Client.Components
|
||||
|
||||
<div class="modal" tabindex="-1" role="dialog" style="display:@_modalDisplay">
|
||||
<div class="modal-dialog modal-dialog-scrollable modal-fullscreen">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h3 class="modal-title">@CompanyName - Aktivitet oversigt</h3>
|
||||
<button type="button" class="btn-close" @onclick="Hide" data-bs-dismiss="modal" aria-label="Luk"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<CustomerVisitListComponent Activities="Activities"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@if (_showBackdrop)
|
||||
{
|
||||
<div class="modal-backdrop fade show"></div>
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
using System.Text.Json;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Wonky.Client.HttpInterceptors;
|
||||
using Wonky.Client.HttpInterfaces;
|
||||
using Wonky.Client.Models;
|
||||
using Wonky.Client.Shared;
|
||||
using Wonky.Entity.DTO;
|
||||
using Wonky.Entity.Views;
|
||||
|
||||
namespace Wonky.Client.Shared;
|
||||
|
||||
public partial class CustomerActivityListModalOverlay
|
||||
{
|
||||
[Parameter] public string CompanyName { get; set; } = "";
|
||||
[Parameter] public List<ReportItemView> Activities { get; set; } = new();
|
||||
|
||||
private string _modalDisplay = "";
|
||||
private bool _showBackdrop;
|
||||
|
||||
public void Show()
|
||||
{
|
||||
_modalDisplay = "block;";
|
||||
_showBackdrop = true;
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
private void Hide()
|
||||
{
|
||||
_modalDisplay = "none;";
|
||||
_showBackdrop = false;
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
}
|
109
Wonky.Client/Shared/CustomerActivityViewModalOverlay.razor
Normal file
109
Wonky.Client/Shared/CustomerActivityViewModalOverlay.razor
Normal file
|
@ -0,0 +1,109 @@
|
|||
@*
|
||||
// Copyright (C) 2022 FCS Frede's Computer Services.
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as
|
||||
// published by the Free Software Foundation, either version 3 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html]
|
||||
//
|
||||
*@
|
||||
|
||||
<div class="modal" tabindex="-1" role="dialog" style="display:@_modalDisplay">
|
||||
<div class="modal-dialog modal-dialog-scrollable modal-fullscreen">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="btn-close" @onclick="Hide" data-bs-dismiss="modal" aria-label="Luk"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="card-title mb-2">
|
||||
<h3>Besøg - @ReportItem.Company.Name</h3>
|
||||
</div>
|
||||
<div class="row g-3">
|
||||
<label for="date" class="col-form-label-sm col-sm-1">Dato</label>
|
||||
<div class="col-sm-3">
|
||||
<input id="date" class="form-control" type="text" value="@(DateTime.Parse(ReportItem.CreateTimestamp).ToShortDateString())" readonly/>
|
||||
</div>
|
||||
|
||||
<label for="account" class="col-form-label-sm col-sm-1">Konto</label>
|
||||
<div class="col-sm-3">
|
||||
<input id="account" class="form-control" type="text" value="@ReportItem.Company.Account" readonly/>
|
||||
</div>
|
||||
|
||||
<label for="vatNumber" class="col-form-label-sm col-sm-1">Cvr Org</label>
|
||||
<div class="col-sm-3">
|
||||
<input id="vatNumber" class="form-control" type="text" value="@ReportItem.Company.VatNumber" readonly/>
|
||||
</div>
|
||||
|
||||
<label for="eSalesNumber" class="col-form-label-sm col-sm-1">EOrdre</label>
|
||||
<div class="col-sm-3">
|
||||
<input id="eSalesNumber" class="form-control" type="text" value="@ReportItem.ESalesNumber" readonly/>
|
||||
</div>
|
||||
|
||||
<label for="ourRef" class="col-form-label-sm col-sm-1">Vor Ref.</label>
|
||||
<div class="col-sm-3">
|
||||
<input id="ourRef" class="form-control" type="text" value="@ReportItem.OurRef" readonly/>
|
||||
</div>
|
||||
<hr/>
|
||||
<label for="referenceNumber" class="col-form-label-sm col-sm-1">Rekv.</label>
|
||||
<div class="col-sm-3">
|
||||
<input id="referenceNumber" class="form-control" type="text" value="@ReportItem.ReferenceNumber" readonly/>
|
||||
</div>
|
||||
|
||||
<label for="yourRef" class="col-form-label-sm col-sm-1">Kunde Ref.</label>
|
||||
<div class="col-sm-7">
|
||||
<input id="yourRef" class="form-control" type="text" value="@ReportItem.YourRef" readonly/>
|
||||
</div>
|
||||
|
||||
<label for="officeNote" class="col-form-label-sm col-sm-1">Ordre Note</label>
|
||||
<div class="col-sm-5">
|
||||
<textarea id="officeNote" class="form-control" value="@ReportItem.OfficeNote" readonly=""/>
|
||||
</div>
|
||||
|
||||
<label for="crmNote" class="col-form-label-sm col-sm-1">Crm Note</label>
|
||||
<div class="col-sm-5">
|
||||
<textarea id="crmNote" class="form-control" value="@ReportItem.CrmNote" readonly=""/>
|
||||
</div>
|
||||
<hr/>
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Varenr</th>
|
||||
<th scope="col">Beskrivelse</th>
|
||||
<th class="text-end" scope="col">Antal</th>
|
||||
<th class="text-end" scope="col">Pris</th>
|
||||
<th class="text-end" scope="col">Rabat</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (var line in ReportItem.Lines)
|
||||
{
|
||||
<tr>
|
||||
<td>@line.Sku</td>
|
||||
<td>@line.Description</td>
|
||||
<td class="text-end">@line.Quantity</td>
|
||||
<td class="text-end">@line.Price</td>
|
||||
<td class="text-end">@line.Discount</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@if (_showBackdrop)
|
||||
{
|
||||
<div class="modal-backdrop fade show"></div>
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
// Copyright (C) 2022 FCS Frede's Computer Services.
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as
|
||||
// published by the Free Software Foundation, either version 3 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html]
|
||||
//
|
||||
|
||||
using System.Text.Json;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Wonky.Client.HttpInterceptors;
|
||||
using Wonky.Client.HttpInterfaces;
|
||||
using Wonky.Client.HttpRepository;
|
||||
using Wonky.Client.Models;
|
||||
using Wonky.Client.Services;
|
||||
using Wonky.Entity.Requests;
|
||||
using Wonky.Entity.Views;
|
||||
|
||||
namespace Wonky.Client.Shared;
|
||||
|
||||
public partial class CustomerActivityViewModalOverlay
|
||||
{
|
||||
[Parameter] public ReportItemView ReportItem { get; set; } = new();
|
||||
private string _modalDisplay = "";
|
||||
private bool _showBackdrop;
|
||||
|
||||
public void Show()
|
||||
{
|
||||
_modalDisplay = "block;";
|
||||
_showBackdrop = true;
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
private void Hide()
|
||||
{
|
||||
_modalDisplay = "none;";
|
||||
_showBackdrop = false;
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
}
|
|
@ -17,4 +17,4 @@
|
|||
{
|
||||
<div class="modal-backdrop fade show"></div>
|
||||
}
|
||||
<InventoryReorderModal CompanyId="@CompanyId" SalesItem="SalesItem" OnSelected="OnInventorySelected" @ref="ReorderModal" />
|
||||
<InventoryReorderModalOverlay CompanyId="@CompanyId" SalesItem="SalesItem" OnSelected="OnInventorySelected" @ref="InventoryOverlay" />
|
|
@ -9,11 +9,11 @@ using Wonky.Entity.Views;
|
|||
|
||||
namespace Wonky.Client.Shared;
|
||||
|
||||
public partial class CustomerInventoryOverlay : IDisposable
|
||||
public partial class CustomerInventoryModalOverlay : IDisposable
|
||||
{
|
||||
[Inject] private HttpInterceptorService Interceptor { get; set; }
|
||||
[Inject] private ICountryCatalogRepository Catalog { get; set; }
|
||||
[Inject] private ILogger<CustomerInventoryOverlay> Logger { get; set; }
|
||||
[Inject] private ILogger<CustomerInventoryModalOverlay> Logger { get; set; }
|
||||
|
||||
[Parameter] public string CompanyName { get; set; } = "";
|
||||
[Parameter] public string CompanyId { get; set; } = "";
|
||||
|
@ -28,7 +28,7 @@ public partial class CustomerInventoryOverlay : IDisposable
|
|||
private List<ProductInventoryView> _inventory { get; set; } = new();
|
||||
private DraftItem DraftItem { get; set; } = new();
|
||||
private SalesItemView SalesItem { get; set; } = new();
|
||||
private InventoryReorderModal ReorderModal { get; set; } = new();
|
||||
private InventoryReorderModalOverlay InventoryOverlay { get; set; } = new();
|
||||
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
|
@ -40,7 +40,7 @@ public partial class CustomerInventoryOverlay : IDisposable
|
|||
private async Task OnReorderCallback(string sku)
|
||||
{
|
||||
SalesItem = await Catalog.GetSalesItemSku(CountryCode.ToLower(), sku);
|
||||
ReorderModal.Show();
|
||||
InventoryOverlay.Show();
|
||||
}
|
||||
|
||||
private async Task OnSelectedItem(DraftItem draftItem)
|
|
@ -16,7 +16,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<CustomerInvoiceListComponent OnShowInvoice="@CallInvoiceModal" CompanyId="@Company.CompanyId" InvoiceList="@Invoices"/>
|
||||
<InvoiceViewModal CompanyId="@Company.CompanyId" InvoiceId="@InvoiceId" @ref="InvoiceView" />
|
||||
<InvoiceViewModalOverlay CompanyId="@Company.CompanyId" InvoiceId="@InvoiceId" @ref="InvoiceView" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -6,12 +6,12 @@ using Wonky.Entity.Views;
|
|||
|
||||
namespace Wonky.Client.Shared;
|
||||
|
||||
public partial class CustomerInvoiceOverlay
|
||||
public partial class CustomerInvoiceModalOverlay
|
||||
{
|
||||
[Parameter] public InvoiceListView CustomerInvoices { get; set; } = new();
|
||||
|
||||
[Inject] private ILogger<CustomerInvoiceOverlay> Logger { get; set; }
|
||||
private InvoiceViewModal InvoiceView { get; set; } = new();
|
||||
[Inject] private ILogger<CustomerInvoiceModalOverlay> Logger { get; set; }
|
||||
private InvoiceViewModalOverlay InvoiceView { get; set; } = new();
|
||||
private string InvoiceId { get; set; } = "";
|
||||
private string _modalDisplay = "";
|
||||
private bool _showBackdrop;
|
|
@ -25,7 +25,7 @@ using Wonky.Entity.Views;
|
|||
|
||||
namespace Wonky.Client.Shared;
|
||||
|
||||
public partial class InventoryReorderModal
|
||||
public partial class InventoryReorderModalOverlay
|
||||
{
|
||||
[Parameter] public string CompanyId { get; set; } = "";
|
||||
[Parameter] public SalesItemView SalesItem { get; set; } = new();
|
|
@ -25,7 +25,7 @@ using Wonky.Entity.Views;
|
|||
|
||||
namespace Wonky.Client.Shared;
|
||||
|
||||
public partial class InvoiceViewModal : IDisposable
|
||||
public partial class InvoiceViewModalOverlay : IDisposable
|
||||
{
|
||||
[Parameter] public string CompanyId { get; set; } = "";
|
||||
[Parameter] public string InvoiceId { get; set; } = "";
|
||||
|
@ -45,7 +45,6 @@ public partial class InvoiceViewModal : IDisposable
|
|||
Invoice = await HistoryRepo.FetchInvoice(CompanyId, InvoiceId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void Show()
|
||||
{
|
|
@ -24,7 +24,7 @@ using Wonky.Entity.Views;
|
|||
|
||||
namespace Wonky.Client.Shared;
|
||||
|
||||
public partial class PriceCatalogOverlay : IDisposable
|
||||
public partial class PriceCatalogModalOverlay : IDisposable
|
||||
{
|
||||
[Parameter] public string CountryCode { get; set; } = "";
|
||||
[Parameter] public EventCallback<SelectedSku> OnSelected { get; set; }
|
|
@ -24,7 +24,7 @@ using Wonky.Entity.Views;
|
|||
|
||||
namespace Wonky.Client.Shared;
|
||||
|
||||
public partial class ProductHistoryOverlay
|
||||
public partial class ProductHistoryModalOverlay
|
||||
{
|
||||
// [Parameter] public EventCallback<decimal> OnSelected { get; set; }
|
||||
[Parameter] public string CompanyId { get; set; } = "";
|
|
@ -1,14 +1,14 @@
|
|||
{
|
||||
"appInfo": {
|
||||
"name": "Wonky Online",
|
||||
"version": "0.108.1",
|
||||
"version": "0.110.1",
|
||||
"rc": true,
|
||||
"sandBox": false,
|
||||
"image": "grumpy-coder.png"
|
||||
},
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Default": "Debug",
|
||||
"System": "Information",
|
||||
"Microsoft": "Information"
|
||||
},
|
||||
|
|
|
@ -15,15 +15,16 @@
|
|||
}
|
||||
.report-main {
|
||||
font-size: 10px;
|
||||
page-break-before: always;
|
||||
page-break-after: always;
|
||||
break-before: page;
|
||||
break-after: page;
|
||||
break-inside: avoid;
|
||||
page-break-after: always;
|
||||
height: 280mm;
|
||||
/*min-height: 280mm;*/
|
||||
border: initial;
|
||||
border-radius: initial;
|
||||
box-shadow: initial;
|
||||
margin: 0;
|
||||
margin: auto;
|
||||
width: initial;
|
||||
-webkit-print-color-adjust: exact;
|
||||
color-adjust: exact;
|
||||
|
|
Loading…
Reference in a new issue