WIP: office create order

This commit is contained in:
Frede Hundewadt 2023-02-21 13:29:10 +01:00
parent 3f0e293b41
commit 0b55511b7e
2 changed files with 56 additions and 20 deletions

View file

@ -108,7 +108,7 @@
</div>
</div>
<div id="this-draft" style="@(Activity.ActivityStatusEnum is "order" or "quote" ? "display: block" : "display:none")">
<div id="this-draft" >
@* Order lines -----------------------------------------------------*@
<div class="row">
<div class="col">
@ -190,9 +190,11 @@
<td class="align-middle">
<div class="input-group">
<input type="number" class="form-control" @bind-value="@Price"/>
@*
<button class="btn btn-warning" type="button" @onclick="CallPriceHistoryModal">
<i class="bi-list-ul"></i>
</button>
*@
</div>
</td>
<td class="align-middle">
@ -200,7 +202,8 @@
</td>
<td class="align-middle">@SelectedItem.Sku</td>
<td class="align-middle">
<button type="button" class="btn btn-primary text-nowrap d-block" @onclick="@(() => AddItem(SelectedItem))">BESTIL @SelectedItem.Name</button>
<button type="button" class="btn btn-primary d-block text-sm-center" @onclick="@(() => AddItem(SelectedItem))">@Quantity stk. @SelectedItem.Name</button>
@* <button type="button" class="btn btn-primary text-nowrap d-block" @onclick="@(() => AddItem(SelectedItem))">BESTIL @SelectedItem.Name</button> *@
</td>
</tr>
</tbody>

View file

@ -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<OfficeOrderCreatePage> 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<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();
@ -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()
{