From 0b55511b7e8d4a0b368e0934c6ae2403c64c110f Mon Sep 17 00:00:00 2001 From: Frede Hundewadt Date: Tue, 21 Feb 2023 13:29:10 +0100 Subject: [PATCH] WIP: office create order --- .../Pages/OfficeOrderCreatePage.razor | 7 +- .../Pages/OfficeOrderCreatePage.razor.cs | 69 ++++++++++++++----- 2 files changed, 56 insertions(+), 20 deletions(-) diff --git a/Wonky.Client/Pages/OfficeOrderCreatePage.razor b/Wonky.Client/Pages/OfficeOrderCreatePage.razor index 6bea9a85..9694b24a 100644 --- a/Wonky.Client/Pages/OfficeOrderCreatePage.razor +++ b/Wonky.Client/Pages/OfficeOrderCreatePage.razor @@ -108,7 +108,7 @@ -
+
@* Order lines -----------------------------------------------------*@
@@ -190,9 +190,11 @@
+ @* + *@
@@ -200,7 +202,8 @@ @SelectedItem.Sku - + + @* *@ diff --git a/Wonky.Client/Pages/OfficeOrderCreatePage.razor.cs b/Wonky.Client/Pages/OfficeOrderCreatePage.razor.cs index e2c055ef..6c9af773 100644 --- a/Wonky.Client/Pages/OfficeOrderCreatePage.razor.cs +++ b/Wonky.Client/Pages/OfficeOrderCreatePage.razor.cs @@ -14,6 +14,7 @@ // along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html] // +using System.Globalization; using System.Text.Json; using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Forms; @@ -31,6 +32,8 @@ namespace Wonky.Client.Pages; public partial class OfficeOrderCreatePage : IDisposable { + // -------------------------------------------------------------------- + // injected services [Inject] public ILogger Logger { get; set; } [Inject] public HttpInterceptorService Interceptor { get; set; } [Inject] public ICountryCustomerRepository CustomerRepo { get; set; } @@ -38,11 +41,14 @@ public partial class OfficeOrderCreatePage : IDisposable [Inject] public ICountryReportRepository ReportRepo { get; set; } [Inject] public ISystemUserRepository UserRepo { get; set; } [Inject] public ICountryCatalogRepository Catalog { get; set; } + + // -------------------------------------------------------------------- // parameters [Parameter] public string CompanyId { get; set; } = ""; [Parameter] public string CountryCode { get; set; } = ""; [CascadingParameter] public DraftStateProvider DraftProvider { get; set; } + // -------------------------------------------------------------------- // private variables private readonly JsonSerializerOptions _options = new() {PropertyNameCaseInsensitive = true}; // class objects @@ -62,6 +68,9 @@ public partial class OfficeOrderCreatePage : IDisposable private bool ReportClosed { get; set; } private bool PoFormInvalid { get; set; } = true; private bool Working { get; set; } = true; + + // -------------------------------------------------------------------- + // overlays private PriceCatalogOverlay CatalogOverlay { get; set; } = new(); private ProductHistoryOverlay ProductOverlay { get; set; } = new(); private ProductPriceHistoryOverlay PriceOverlay { get; set; } = new(); @@ -70,10 +79,12 @@ public partial class OfficeOrderCreatePage : IDisposable private CustomerInvoiceListOverlay InvoiceListOverlay { get; set; } = new(); private CustomerInventoryListOverlay InventoryListOverlay { get; set; } = new(); private CustomerActivityListOverlay ActivityListOverlay { get; set; } = new(); + + // -------------------------------------------------------------------- + // lists private List Inventory { get; set; } = new(); private List CheckList { get; set; } = new(); private InvoiceListView CompanyInvoices { get; set; } = new(); - private List Activities { get; set; } = new(); @@ -142,9 +153,40 @@ public partial class OfficeOrderCreatePage : IDisposable Working = false; } - private void CallPriceListModal() + private async Task DeleteDraft() { - CatalogOverlay.Show(); + await DraftProvider.DeleteDraftAsync(); + } + + private async Task RemoveItem(DraftItem item) + { + // remove item + DraftProvider.Draft.Items.Remove(item); + // save the remaining draft + await DraftProvider.SaveChangesAsync(); + } + + private async Task AddItem(SalesItemView salesItem) + { + ShowItem = false; + // create a new cart item + var item = new DraftItem + { + Item = salesItem, + Quantity = Convert.ToInt32(Quantity), + Price = Convert.ToDecimal(Price, CultureInfo.InvariantCulture), + Discount = Convert.ToDecimal(Discount, CultureInfo.InvariantCulture), + }; + // reset internals to initial state + Quantity = "1"; + Price = "0"; + Discount = "0"; + // add it to the cart + DraftProvider.Draft.Items.Add(item); + if(Activity.ActivityStatusEnum != "quote") + Activity.ActivityStatusEnum = "order"; + // save the item using the CartStateProvider's save method + await DraftProvider.SaveChangesAsync(); } private async Task PriceListCallback(SelectedSku sku) @@ -158,7 +200,12 @@ public partial class OfficeOrderCreatePage : IDisposable Quantity = sku.Quantity; StateHasChanged(); } - + + private void CallPriceListModal() + { + CatalogOverlay.Show(); + } + private void ShowInvoiceOverlay() { @@ -177,20 +224,6 @@ public partial class OfficeOrderCreatePage : IDisposable } - private void DeleteDraft() - { - - } - - private void AddItem(SalesItemView item) - { - - } - private void RemoveItem(DraftItem item) - { - - } - private void CreateActivity() {