done - customer inventory overlay

This commit is contained in:
Frede Hundewadt 2023-01-20 17:21:41 +01:00
parent 2f91e10f32
commit 17f27cad5c
13 changed files with 136 additions and 30 deletions

View file

@ -47,5 +47,5 @@
}
else
{
<div>Venter ...</div>
<div>Ingen data</div>
}

View file

@ -156,19 +156,18 @@ else
</div>
</div>
<div class="row g-2">
<div class="col-sm-4 d-grid mx-auto">
<div class="row g-2 mb-3">
<div class="col-sm-3 d-grid mx-auto">
<button class="btn btn-danger" disabled="@string.IsNullOrWhiteSpace(Activity.ActivityTypeEnum)" @onclick="ShowInvoiceOverlay">Faktura</button>
</div>
<div class="col-sm-4 d-grid mx-auto">
<div class="col-sm-3 d-grid mx-auto">
<button class="btn btn-warning" disabled>Tidl. besøg</button>
</div>
<div class="col-sm-4 d-grid mx-auto">
<button class="btn btn-success" disabled>Produkter</button>
<div class="col-sm-3 d-grid mx-auto">
<button class="btn btn-success" disabled="@string.IsNullOrWhiteSpace(Activity.ActivityTypeEnum)" @onclick="ShowInventoryOverlay">Produkter</button>
</div>
</div>
<div id="this-draft" style="@(Activity.ActivityStatusEnum is "order" or "quote" ? "display: block" : "display:none")">
@* Draft lines in draft -----------------------------------------------------*@
<div class="row">
@ -336,9 +335,15 @@ else
</div>
}
<ConfirmWorkDateModal BodyMessage="@PromptDateConfirm" OnOkClicked="WorkDateConfirmCallback" @ref="ConfirmWorkDateModal"/>
<PriceCatalogModal CountryCode="@Company.CountryCode.ToLower()" OnSelected="PriceListCallback" @ref="PriceCatalogModal"/>
<ConfirmWorkDateModal BodyMessage="@PromptDateConfirm"
OnOkClicked="WorkDateConfirmCallback" @ref="ConfirmWorkDateModal"/>
<PriceCatalogModal CountryCode="@Company.CountryCode.ToLower()"
OnSelected="PriceListCallback" @ref="PriceCatalogModal"/>
<ProductHistoryModal CompanyId="@CompanyId" ItemSku="@SelectedItem.Sku" @ref="HistoryModal"/>
<ProductPriceHistoryModal OnSelected="PriceHistoryCallback" CompanyId="@CompanyId" Sku="@SelectedItem.Sku" @ref="PriceHistoryModal"/>
<ConfirmProductCheckModal BodyMessage="" CompanyId="@CompanyId" Products="CheckList" OnOkClicked="ConfirmProductCheckCallback" @ref="ConfirmProductCheckModal" />
<CustomerInvoiceOverlay CustomerInvoices="CompanyInvoices" @ref="InvoiceOverlay" />
<ProductPriceHistoryModal CompanyId="@CompanyId" Sku="@SelectedItem.Sku"
OnSelected="PriceHistoryCallback" @ref="PriceHistoryModal"/>
<ConfirmProductCheckModal BodyMessage="" CompanyId="@CompanyId" Products="CheckList"
OnOkClicked="ConfirmProductCheckCallback" @ref="ConfirmProductCheckModal" />
<CustomerInvoiceOverlay CustomerInvoices="CompanyInvoices" @ref="InvoiceOverlay" />
<CustomerInventoryOverlay CompanyName="@Company.Name" CompanyId="@CompanyId" CountryCode="@Company.CountryCode"
OnInventorySelected="OnInventoryCallback" Inventory="Inventory" @ref="InventoryOverlay" />

View file

@ -32,9 +32,6 @@ namespace Wonky.Client.Pages;
public partial class AdvisorActivityCreatePage : IDisposable
{
// Parameters
[CascadingParameter] DraftStateProvider DraftProvider { get; set; }
[Parameter] public string CompanyId { get; set; }
// Services
[Inject] private ILogger<AdvisorActivityCreatePage> Logger { get; set; }
[Inject] private HttpInterceptorService Interceptor { get; set; }
@ -47,6 +44,10 @@ public partial class AdvisorActivityCreatePage : IDisposable
[Inject] private IAdvisorActivityRepository Actitivites { get; set; }
[Inject] private IAdvisorReportRepository Reports { get; set; }
[Inject] private IAdvisorCustomerHistoryRepository HistoryRepo { get; set; }
[CascadingParameter] private DraftStateProvider DraftProvider { get; set; } = new();
[Parameter] public string CompanyId { get; set; }
// variables
private readonly JsonSerializerOptions _options = new() {PropertyNameCaseInsensitive = true};
private SalesItemView SelectedItem { get; set; } = new();
@ -79,6 +80,8 @@ public partial class AdvisorActivityCreatePage : IDisposable
private bool OrgWarning { get; set; }
private CustomerInvoiceOverlay InvoiceOverlay { get; set; }
private InvoiceListView CompanyInvoices { get; set; } = new();
private CustomerInventoryOverlay InventoryOverlay { get; set; } = new();
private List<ProductInventoryView> Inventory { get; set; } = new();
/// <summary>
@ -156,6 +159,23 @@ public partial class AdvisorActivityCreatePage : IDisposable
Working = false;
}
private async Task ShowInventoryOverlay()
{
Logger.LogDebug("ShowInventoryOverlay - wait for inventory");
InventoryOverlay.Show();
Inventory = await HistoryRepo.FetchInventory(CompanyId);
await Task.Delay(500);
}
private async Task OnInventoryCallback(DraftItem item)
{
Activity.ActivityStatusEnum = "order";
DraftProvider.Draft.DraftType = "order";
DraftProvider.Draft.Items.Add(item);
StateHasChanged();
}
private async Task ShowInvoiceOverlay()
{
Logger.LogDebug("ShowInvoiceOverlay - wait for invoices");

View file

@ -16,7 +16,7 @@
*@
@using Wonky.Client.Components
<div class="modal" tabindex="-1" role="dialog" style="display:@_modalDisplay">
<div class="modal-dialog modal-dialog-scrollable modal-fullscreen-lg-down modal-xl modal-lg">
<div class="modal-dialog modal-dialog-scrollable modal-fullscreen">
<div class="modal-content">
<div class="modal-header">
<h2 class="modal-title">PRODUKT GENNEMGANG</h2>

View file

@ -1,5 +1,20 @@
<h3>CustomerInventoryOverlay</h3>
@using Wonky.Client.Components
@code {
}
<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 - Produktoversigt</h3>
<button type="button" class="btn-close" @onclick="Hide" data-bs-dismiss="modal" aria-label="Luk"></button>
</div>
<div class="modal-body">
<CustomerInventoryListComponent OnReorderSelected="OnReorderCallback" CompanyId="@CompanyId" Inventory="@Inventory"/>
</div>
</div>
</div>
</div>
@if (_showBackdrop)
{
<div class="modal-backdrop fade show"></div>
}
<InventoryReorderModal CompanyId="@CompanyId" SalesItem="SalesItem" OnSelected="OnInventorySelected" @ref="ReorderModal" />

View file

@ -1,6 +1,71 @@
namespace Wonky.Client.Overlays;
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;
public partial class CustomerInventoryOverlay
namespace Wonky.Client.Shared;
public partial class CustomerInventoryOverlay : IDisposable
{
[Inject] private HttpInterceptorService Interceptor { get; set; }
[Inject] private ICountryCatalogRepository Catalog { get; set; }
[Inject] private ILogger<CustomerInventoryOverlay> Logger { get; set; }
[Parameter] public string CompanyName { get; set; } = "";
[Parameter] public string CompanyId { get; set; } = "";
[Parameter] public string CountryCode { get; set; } = "";
[Parameter] public List<ProductInventoryView> Inventory { get; set; } = new();
[Parameter] public EventCallback<DraftItem> OnInventorySelected { get; set; }
private string _modalDisplay = "";
private bool _showBackdrop;
private CompanyDto _company { get; set; } = new();
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();
protected override void OnInitialized()
{
Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent();
StateHasChanged();
}
private async Task OnReorderCallback(string sku)
{
SalesItem = await Catalog.GetSalesItemSku(CountryCode.ToLower(), sku);
ReorderModal.Show();
}
private async Task OnSelectedItem(DraftItem draftItem)
{
await OnInventorySelected.InvokeAsync(draftItem);
Hide();
}
public void Show()
{
_modalDisplay = "block;";
_showBackdrop = true;
StateHasChanged();
}
private void Hide()
{
_modalDisplay = "none;";
_showBackdrop = false;
StateHasChanged();
}
public void Dispose()
{
Interceptor.DisposeEvent();
}
}

View file

@ -1,7 +1,7 @@
@using Wonky.Client.Components
<div class="modal" tabindex="-1" role="dialog" style="display:@_modalDisplay">
<div class="modal-dialog modal-dialog-scrollable modal-fullscreen-lg-down modal-xl modal-lg">
<div class="modal-dialog modal-dialog-scrollable modal-fullscreen">
<div class="modal-content">
<div class="modal-header">

View file

@ -17,7 +17,8 @@
@using Wonky.Client.Components
@using Wonky.Client.Helpers
<div class="modal" tabindex="-1" role="dialog" style="display:@_modalDisplay">
<div class="modal-dialog modal-dialog-scrollable modal-fullscreen-lg-down modal-xl modal-lg">
@* <div class="modal-dialog modal-dialog-scrollable modal-fullscreen-lg-down modal-xl modal-lg"> *@
<div class="modal-dialog modal-dialog-scrollable modal-fullscreen">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">@SalesItem.Name @SalesItem.Sku (@SalesItem.BoxSize stk/colli)</h4>

View file

@ -17,7 +17,7 @@
@using Wonky.Client.Components
@using Wonky.Client.Helpers
<div class="modal" tabindex="-1" role="dialog" style="display:@_modalDisplay">
<div class="modal-dialog modal-dialog-scrollable modal-fullscreen-lg-down modal-xl modal-lg">
<div class="modal-dialog modal-dialog-scrollable modal-fullscreen">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Faktura</h5>

View file

@ -17,7 +17,7 @@
@using Wonky.Client.Components
@using Wonky.Client.Helpers
<div class="modal" tabindex="-1" role="dialog" style="display:@_modalDisplay">
<div class="modal-dialog modal-dialog-scrollable modal-fullscreen-lg-down modal-xl modal-lg">
<div class="modal-dialog modal-dialog-scrollable modal-fullscreen">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Pris Katalog</h5>

View file

@ -17,7 +17,7 @@
@using Wonky.Client.Components
@using Wonky.Client.Helpers
<div class="modal" tabindex="-1" role="dialog" style="display:@_modalDisplay">
<div class="modal-dialog modal-dialog-scrollable modal-fullscreen-lg-down modal-xl modal-lg">
<div class="modal-dialog modal-dialog-scrollable modal-fullscreen">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">@ProductName</h5>

View file

@ -17,7 +17,7 @@
@using Wonky.Client.Components
@using Wonky.Client.Helpers
<div class="modal" tabindex="-1" role="dialog" style="display:@_modalDisplay">
<div class="modal-dialog modal-dialog-scrollable modal-fullscreen-lg-down modal-xl modal-lg">
<div class="modal-dialog modal-dialog-scrollable modal-fullscreen">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">@ProductName</h5>

View file

@ -1,14 +1,14 @@
{
"appInfo": {
"name": "Wonky Online",
"version": "0.105.1",
"version": "0.106.3",
"rc": true,
"sandBox": false,
"image": "grumpy-coder.png"
},
"Logging": {
"LogLevel": {
"Default": "Debug",
"Default": "Information",
"System": "Information",
"Microsoft": "Information"
},