From 177fce1fdf331ad1444d9da43bd9a1f48d863b72 Mon Sep 17 00:00:00 2001 From: Piotr Kus Date: Mon, 3 Feb 2025 19:41:35 +0100 Subject: [PATCH] * Added DocType to Edi and CO * Moved SOGrid to Shared and reuse in CO view * Added retrieving of COTranslates to CO --- .../Components/Pages/CustomerOrder.razor | 111 +++++++++++++++--- .../Components/Pages/EdiCustomerOrder.razor | 2 +- .../Components/Pages/ScheduleOrders.razor | 49 ++------ .../Pages/Shared/ScheduleOrdersGrid.razor | 71 +++++++++++ .../Dtos/CustomerOrderDto.cs | 2 + .../Dtos/CustomerOrderLineItemDto.cs | 2 + .../Dtos/EdiCustomerOrderLineItemDto.cs | 1 + .../Entities/CustomerOrderLineItem.cs | 2 + .../Entities/EdiCustomerOrderLineItem.cs | 2 + .../Services/CustomerOrderService.cs | 6 + .../SytelineSaAppDbContext.cs | 2 + 11 files changed, 192 insertions(+), 58 deletions(-) create mode 100644 OrdersManagement/Components/Pages/Shared/ScheduleOrdersGrid.razor diff --git a/OrdersManagement/Components/Pages/CustomerOrder.razor b/OrdersManagement/Components/Pages/CustomerOrder.razor index 6637a61..cf9cbbf 100644 --- a/OrdersManagement/Components/Pages/CustomerOrder.razor +++ b/OrdersManagement/Components/Pages/CustomerOrder.razor @@ -1,13 +1,16 @@ @page "/CustomerOrder/{CustomerOrderId:guid}" @inject CustomerOrderService CustomerOrderService +@inject ScheduleOrderService ScheduleOrderService @using SytelineSaAppEfDataModel.Dtos +@using OrdersManagement.Components.Pages.Shared @inherits LayoutComponentBase -

Zamówienie klienta nr @_customerOrder?.FirstOrDefault()?.CoNum

+

Zamówienie klienta nr @CustomerOrders.FirstOrDefault()?.CoNum

+
- + Numer Zamówienia: @context.CoNum
Numer Zamówienia Klienta: @context.CustPo
@@ -23,7 +26,7 @@
- + Magazyn: @context.Whse
VAT: @context.FrtTaxCode1
@@ -40,6 +43,23 @@

+
+
+ +
+
+
+@if (_isVisible) +{ +
+

Zamówienie DELFOR do zamówienia @CustomerOrders.FirstOrDefault()?.CoNum

+
+
+
+ +
+
+}

Indeksy

@@ -137,7 +157,8 @@ @context.CoLine - + @context.CoRelease @@ -146,7 +167,8 @@ @context.CustItem - + @context.QtyOrdered @@ -175,8 +197,10 @@ Łączna Ilość Sztuk:@(context.QtyOrdered.ToString("F2") ?? "N/A")
Cena:@(context.Price.ToString("F2") ?? "N/A")
Data Wykonania:@(context.DueDate?.ToString("dd.MM.yyyy") ?? "N/A")
- Data Rejestracji:@(context.ReleaseDate?.ToString("dd.MM.yyyy") ?? "N/A")
+ Data + Rejestracji:@(context.ReleaseDate?.ToString("dd.MM.yyyy") ?? "N/A")
Magazyn:@context.Whse
+ Typ Documentu:@context.Uf_FKR_EDI_ITEM_DocumentType
@@ -203,25 +227,45 @@ @code { [Parameter] public Guid CustomerOrderId { get; set; } - List? _customerOrder { get; set; } - List _customerOrderLines = []; - List _customerOrderLineItems = []; + private List CustomerOrders { get; set; } = []; + private List _customerOrderLines = []; + private List _customerOrderLineItems = []; - List _selectedCustomerOrderLine = []; - List _selectedCustomerOrderLineItem = []; + private IEnumerable? _scheduleOrders; - Grid? _customerOrderLinesGrid; - Grid? _customerOrderLineItemsGrid; + private List _selectedCustomerOrderLine = []; + private List _selectedCustomerOrderLineItem = []; + + private Grid? _customerOrderLinesGrid; + private Grid? _customerOrderLineItemsGrid; private bool _isVisibleCustomerOrderLine; private bool _isVisibleCustomerOrderLineItem; + private Grid _gridRef = new(); + + private bool _isVisible = true; + private string _text = "Pokaż powiązane zamówienia DELFOR"; + protected override async Task OnInitializedAsync() { CustomerOrderDto? customerOrder = await CustomerOrderService.GetCustomerOrderAsync(CustomerOrderId); - _customerOrder = [customerOrder]; - _customerOrderLines = customerOrder?.CustomerOrderLines.ToList() ?? []; + if (customerOrder != null) + { + CustomerOrders = [customerOrder]; + _customerOrderLines = customerOrder.CustomerOrderLines.ToList() ?? []; + } + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await SetGridRef(_gridRef); + StateHasChanged(); + _isVisible = false; + } } private void SelectedCustomerOrderLineChanged(HashSet obj) @@ -236,4 +280,41 @@ _isVisibleCustomerOrderLineItem = obj.Any(); _selectedCustomerOrderLineItem = [obj.FirstOrDefault()]; } + + private async Task ShowLastDelfors() + { + if (_isVisible) + { + _isVisible = false; + _text = "Pokaż powiązane zamówienia DELFOR"; + _scheduleOrders = []; + } + else + { + await _gridRef.RefreshDataAsync(); + StateHasChanged(); + _isVisible = true; + _text = "Ukryj"; + } + } + + private async Task SetGridRef(Grid grid) + { + _gridRef = grid; + } + + private async Task> ScheduleOrdersDataProvider(GridDataProviderRequest request) + { + _scheduleOrders = []; + + IList scheduleOrderDetails = CustomerOrders?.FirstOrDefault()?.EdiCustomerOrderTranslates?.Select(x => x.ScheduleOrderId).Distinct().ToList() ?? []; + + if (scheduleOrderDetails.Any()) + { + _scheduleOrders = await ScheduleOrderService.GetScheduleOrdersAsync() ?? new List(); + _scheduleOrders = _scheduleOrders.Where(x => scheduleOrderDetails.Contains(x.ID)).OrderByDescending(x => x.LastUpdateDate).ToList(); + } + + return await Task.FromResult(request.ApplyTo(_scheduleOrders)); + } } \ No newline at end of file diff --git a/OrdersManagement/Components/Pages/EdiCustomerOrder.razor b/OrdersManagement/Components/Pages/EdiCustomerOrder.razor index c2aefd6..69eb132 100644 --- a/OrdersManagement/Components/Pages/EdiCustomerOrder.razor +++ b/OrdersManagement/Components/Pages/EdiCustomerOrder.razor @@ -166,7 +166,6 @@
- Data Otrzymania:@(context.ReceivedDate?.ToString("dd.MM.yyyy") ?? "N/A")
Numer Zamówienia:@context.CustomerOrderNumber
Linia:@context.CustomerOrderLine
Zwolnienie:@context.CustomerOrderRelease
@@ -177,6 +176,7 @@ Data Wykonania:@(context.DueDate?.ToString("dd.MM.yyyy") ?? "N/A")
Data Rejestracji:@(context.ReleaseDate?.ToString("dd.MM.yyyy") ?? "N/A")
Magazyn:@context.Warehouse
+ Typ Documentu:@context.DocumentType
diff --git a/OrdersManagement/Components/Pages/ScheduleOrders.razor b/OrdersManagement/Components/Pages/ScheduleOrders.razor index 116ca26..ffc4ca7 100644 --- a/OrdersManagement/Components/Pages/ScheduleOrders.razor +++ b/OrdersManagement/Components/Pages/ScheduleOrders.razor @@ -1,52 +1,19 @@ @page "/" +@using OrdersManagement.Components.Pages.Shared @inject ScheduleOrderService ScheduleOrderService -@inject NavigationManager NavigationManager @inherits LayoutComponentBase

Zamówienia DELFOR


-
- - - - - @context.OrderID - - - @context.PONum - - - @context.RecipientCode - - - @context.PurchaserCode - - - @context.LastUpdateDate - - - @context.DocType - - - -
+ @code { - Grid? _grid; private IEnumerable? _scheduleOrders; + + private Grid _gridRef; private async Task> ScheduleOrdersDataProvider(GridDataProviderRequest request) { @@ -56,11 +23,9 @@ return await Task.FromResult(request.ApplyTo(_scheduleOrders)); } - - private void OnRowDoubleClick(GridRowEventArgs obj) + + private async Task SetGridRef(Grid grid) { - int scheduleOrderId = obj.Item.ID; - - NavigationManager.NavigateTo($"/ScheduleOrder/{scheduleOrderId}"); + _gridRef = grid; } } diff --git a/OrdersManagement/Components/Pages/Shared/ScheduleOrdersGrid.razor b/OrdersManagement/Components/Pages/Shared/ScheduleOrdersGrid.razor new file mode 100644 index 0000000..733f801 --- /dev/null +++ b/OrdersManagement/Components/Pages/Shared/ScheduleOrdersGrid.razor @@ -0,0 +1,71 @@ +@inject NavigationManager NavigationManager +@inherits LayoutComponentBase + +
+ + + + + @context.OrderID + + + @context.PONum + + + @context.RecipientCode + + + @context.PurchaserCode + + + @context.LastUpdateDate + + + @context.DocType + + + +
+ +@code { + [Parameter] + public required Func, Task>> DataProvider { get; set; } + + [Parameter] + public required Func, Task> PassGridRef { get; set; } + + [Parameter] + public required int PageSize { get; set; } + + private Grid _grid { get; set; } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await PassGridRef(_grid); + } + } + + private async Task> LoadData(GridDataProviderRequest request) + { + return await DataProvider.Invoke(request); + } + + private void OnRowDoubleClick(GridRowEventArgs obj) + { + int scheduleOrderId = obj.Item.ID; + + NavigationManager.NavigateTo($"/ScheduleOrder/{scheduleOrderId}"); + } +} \ No newline at end of file diff --git a/SytelineSaAppEfDataModel/Dtos/CustomerOrderDto.cs b/SytelineSaAppEfDataModel/Dtos/CustomerOrderDto.cs index 8ad2f31..994928d 100644 --- a/SytelineSaAppEfDataModel/Dtos/CustomerOrderDto.cs +++ b/SytelineSaAppEfDataModel/Dtos/CustomerOrderDto.cs @@ -123,5 +123,7 @@ public string TranslatedStatus => TranslateStatus(Stat); public IEnumerable CustomerOrderLines { get; set; } = new List(); + + public IEnumerable EdiCustomerOrderTranslates { get; set; } = new List(); } } diff --git a/SytelineSaAppEfDataModel/Dtos/CustomerOrderLineItemDto.cs b/SytelineSaAppEfDataModel/Dtos/CustomerOrderLineItemDto.cs index e4af2ba..db6c27e 100644 --- a/SytelineSaAppEfDataModel/Dtos/CustomerOrderLineItemDto.cs +++ b/SytelineSaAppEfDataModel/Dtos/CustomerOrderLineItemDto.cs @@ -130,6 +130,8 @@ namespace SytelineSaAppEfDataModel.Dtos public string Uf_Status { get; set; } public string Uf_FKR_EDI_ITEM_PalletCode { get; set; } + public string Uf_FKR_EDI_ITEM_DocumentType { get; set; } + public string TranslatedStatus => TranslateStatus(Stat); } } diff --git a/SytelineSaAppEfDataModel/Dtos/EdiCustomerOrderLineItemDto.cs b/SytelineSaAppEfDataModel/Dtos/EdiCustomerOrderLineItemDto.cs index 61f9640..cc85648 100644 --- a/SytelineSaAppEfDataModel/Dtos/EdiCustomerOrderLineItemDto.cs +++ b/SytelineSaAppEfDataModel/Dtos/EdiCustomerOrderLineItemDto.cs @@ -108,6 +108,7 @@ namespace SytelineSaAppEfDataModel.Dtos public string PalletCode { get; set; } public string PalletNumber { get; set; } + public string DocumentType { get; set; } public string TranslatedStatus => TranslateStatus(Status); } } diff --git a/SytelineSaAppEfDataModel/Entities/CustomerOrderLineItem.cs b/SytelineSaAppEfDataModel/Entities/CustomerOrderLineItem.cs index b9994da..0758d47 100644 --- a/SytelineSaAppEfDataModel/Entities/CustomerOrderLineItem.cs +++ b/SytelineSaAppEfDataModel/Entities/CustomerOrderLineItem.cs @@ -129,5 +129,7 @@ namespace SytelineSaAppEfDataModel.Entities public string Uf_LOC_159_DestinationPoint { get; set; } public string Uf_Status { get; set; } public string Uf_FKR_EDI_ITEM_PalletCode { get; set; } + + public string Uf_FKR_EDI_ITEM_DocumentType { get; set; } } } diff --git a/SytelineSaAppEfDataModel/Entities/EdiCustomerOrderLineItem.cs b/SytelineSaAppEfDataModel/Entities/EdiCustomerOrderLineItem.cs index 0e4f289..86c2a9e 100644 --- a/SytelineSaAppEfDataModel/Entities/EdiCustomerOrderLineItem.cs +++ b/SytelineSaAppEfDataModel/Entities/EdiCustomerOrderLineItem.cs @@ -107,5 +107,7 @@ namespace SytelineSaAppEfDataModel.Entities public string NewStatus { get; set; } public string PalletCode { get; set; } public string PalletNumber { get; set; } + + public string DocumentType { get; set; } } } diff --git a/SytelineSaAppEfDataModel/Services/CustomerOrderService.cs b/SytelineSaAppEfDataModel/Services/CustomerOrderService.cs index 6e8e786..616ec7b 100644 --- a/SytelineSaAppEfDataModel/Services/CustomerOrderService.cs +++ b/SytelineSaAppEfDataModel/Services/CustomerOrderService.cs @@ -33,6 +33,12 @@ namespace SytelineSaAppEfDataModel.Services .Where(x => x.CoNum == customerOrder.CoNum && x.CoLine == customerOrderLine.CoLine) .Select(x => mapper.Map(x)).ToListAsync(); } + + IList ediCustomerOrderTranslates = await context.EdiCustomerOrderTranslates + .Where(x => x.CoCoNum == customerOrder.CoNum) + .Select(x => mapper.Map(x)).ToListAsync(); + + customerOrder.EdiCustomerOrderTranslates = ediCustomerOrderTranslates; return customerOrder; } diff --git a/SytelineSaAppEfDataModel/SytelineSaAppDbContext.cs b/SytelineSaAppEfDataModel/SytelineSaAppDbContext.cs index a8dd03c..536841b 100644 --- a/SytelineSaAppEfDataModel/SytelineSaAppDbContext.cs +++ b/SytelineSaAppEfDataModel/SytelineSaAppDbContext.cs @@ -276,6 +276,7 @@ namespace SytelineSaAppEfDataModel entity.Property(e => e.NewStatus).IsRequired(false).HasColumnName("Uf_Status").HasMaxLength(50); entity.Property(e => e.PalletCode).IsRequired(false).HasColumnName("Uf_pci_code").HasMaxLength(1); entity.Property(e => e.PalletNumber).IsRequired(false).HasColumnName("Uf_FKR_EDI_ITEM_PalletCode").HasMaxLength(50); + entity.Property(e => e.DocumentType).IsRequired(false).HasColumnName("Uf_FKR_EDI_ITEM_DocType").HasMaxLength(50); }); modelBuilder.Entity(entity => @@ -622,6 +623,7 @@ namespace SytelineSaAppEfDataModel entity.Property(e => e.Uf_LOC_159_DestinationPoint).HasColumnName("Uf_LOC_159_DestinationPoint").HasMaxLength(50).IsRequired(false); entity.Property(e => e.Uf_Status).HasColumnName("Uf_Status").HasMaxLength(50).IsRequired(false); entity.Property(e => e.Uf_FKR_EDI_ITEM_PalletCode).HasColumnName("Uf_FKR_EDI_ITEM_PalletCode").HasMaxLength(50).IsRequired(false); + entity.Property(e => e.Uf_FKR_EDI_ITEM_DocumentType).IsRequired(false).HasColumnName("Uf_FKR_EDI_ITEM_DocType").HasMaxLength(50); }); modelBuilder.Entity(entity =>