* Moved SOGrid to Shared and reuse in CO view * Added retrieving of COTranslates to CO
320 lines
14 KiB
Plaintext
320 lines
14 KiB
Plaintext
@page "/CustomerOrder/{CustomerOrderId:guid}"
|
|
|
|
@inject CustomerOrderService CustomerOrderService
|
|
@inject ScheduleOrderService ScheduleOrderService
|
|
@using SytelineSaAppEfDataModel.Dtos
|
|
@using OrdersManagement.Components.Pages.Shared
|
|
@inherits LayoutComponentBase
|
|
|
|
<h3>Zamówienie klienta nr @CustomerOrders.FirstOrDefault()?.CoNum</h3>
|
|
<br/>
|
|
<div class="row">
|
|
<div class="col">
|
|
<SortableList TItem="CustomerOrderDto" Data="CustomerOrders" Class="bg-light">
|
|
<ItemTemplate>
|
|
<u>Numer Zamówienia:</u> <b>@context.CoNum</b><br/>
|
|
<u>Numer Zamówienia Klienta:</u> <b>@context.CustPo</b><br/>
|
|
<u>Klient:</u> <b>@context.CustNum</b><br/>
|
|
<u>Numer Odbiorcy:</u> <b>@context.CustSeq</b><br/>
|
|
<u>Kontakt:</u> <b>@context.Contact</b><br/>
|
|
<u>Telefon:</u> <b>@context.Phone</b><br/>
|
|
<u>Data Zamówienia:</u> <b>@context.OrderDate.ToString("yyyy-MM-dd HH:mm:ss")</b><br/>
|
|
<u>Warunki:</u> <b>@context.TermsCode</b><br/>
|
|
<u>Wartość Brutto:</u> <b>@(context.Price?.ToString("F2") ?? "N/A")</b><br/>
|
|
<u>Status:</u> <b>@context.TranslatedStatus</b><br/>
|
|
</ItemTemplate>
|
|
</SortableList>
|
|
</div>
|
|
<div class="col">
|
|
<SortableList TItem="CustomerOrderDto" Data="CustomerOrders" Class="bg-light">
|
|
<ItemTemplate>
|
|
<u>Magazyn:</u> <b>@context.Whse</b><br/>
|
|
<u>VAT:</u> <b>@context.FrtTaxCode1</b><br/>
|
|
<u>Typ Odbiorcy:</u> <b>@context.EndUserType</b><br/>
|
|
<u>Kurs Wymiany:</u> <b>@(context.ExchRate?.ToString("F4") ?? "N/A")</b><br/>
|
|
<u>Gate:</u> <b>@context.Uf_FKR_EDI_Gate</b><br/>
|
|
<u>RecipientCode:</u> <b>@context.Uf_FKR_EDI_RecipientCode</b><br/>
|
|
<u>SelletCode:</u> <b>@context.Uf_FKR_EDI_SellerCode</b><br/>
|
|
<u>SenderCode:</u> <b>@context.Uf_FKR_EDI_SenderCode</b><br/>
|
|
<u>BuyerCode:</u> <b>@context.Uf_FKR_EDI_BuyerCode</b><br/>
|
|
<u>Typ Dokumentu:</u> <b>@context.Uf_DocType</b><br/>
|
|
</ItemTemplate>
|
|
</SortableList>
|
|
</div>
|
|
</div>
|
|
<br/>
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<Button Color="ButtonColor.Primary" @onclick="ShowLastDelfors">@_text</Button>
|
|
</div>
|
|
</div>
|
|
<br/>
|
|
@if (_isVisible)
|
|
{
|
|
<div class="row">
|
|
<h3>Zamówienie DELFOR do zamówienia @CustomerOrders.FirstOrDefault()?.CoNum</h3>
|
|
</div>
|
|
<br/>
|
|
<div class="row">
|
|
<ScheduleOrdersGrid PageSize="5" PassGridRef="SetGridRef" DataProvider="ScheduleOrdersDataProvider"></ScheduleOrdersGrid>
|
|
</div>
|
|
<br/>
|
|
}
|
|
<div class="row">
|
|
<h3>Indeksy</h3>
|
|
</div>
|
|
<div class="row">
|
|
<Grid @ref="_customerOrderLinesGrid"
|
|
TItem="CustomerOrderLineDto"
|
|
Class="table table-hover table-bordered table-striped"
|
|
Data="_customerOrderLines"
|
|
AllowFiltering="true"
|
|
Responsive="true"
|
|
AllowPaging="true"
|
|
PageSize="10"
|
|
AllowSelection="true"
|
|
AllowRowClick="true"
|
|
SelectionMode="GridSelectionMode.Single"
|
|
SelectedItemsChanged="SelectedCustomerOrderLineChanged">
|
|
<GridColumns>
|
|
<GridColumn TItem="CustomerOrderLineDto" HeaderText="Linia" PropertyName="CoLine">
|
|
@context.CoLine
|
|
</GridColumn>
|
|
<GridColumn TItem="CustomerOrderLineDto" HeaderText="Pozycja" PropertyName="Item">
|
|
@context.Item
|
|
</GridColumn>
|
|
<GridColumn TItem="CustomerOrderLineDto" HeaderText="Pozycja Klienta" PropertyName="CustItem">
|
|
@context.CustItem
|
|
</GridColumn>
|
|
<GridColumn TItem="CustomerOrderLineDto" HeaderText="Opis" PropertyName="Description">
|
|
@context.Description
|
|
</GridColumn>
|
|
<GridColumn TItem="CustomerOrderLineDto" HeaderText="Ilość" TextAlignment="Alignment.End"
|
|
PropertyName="BlanketQty">
|
|
@context.BlanketQty
|
|
</GridColumn>
|
|
<GridColumn TItem="CustomerOrderLineDto" HeaderText="J/M" PropertyName="UM">
|
|
@context.UM
|
|
</GridColumn>
|
|
<GridColumn TItem="CustomerOrderLineDto" HeaderText="Cena" PropertyName="ContPrice">
|
|
@context.ContPrice
|
|
</GridColumn>
|
|
<GridColumn TItem="CustomerOrderLineDto" HeaderText="Status" PropertyName="TranslatedStatus">
|
|
@context.TranslatedStatus
|
|
</GridColumn>
|
|
</GridColumns>
|
|
</Grid>
|
|
</div>
|
|
@if (_isVisibleCustomerOrderLine)
|
|
{
|
|
<div class="row">
|
|
<h3>Szczegóły</h3>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col">
|
|
<SortableList TItem="CustomerOrderLineDto" Data="_selectedCustomerOrderLine">
|
|
<ItemTemplate>
|
|
<u>Numer zamówienia:</u> <b>@context.CoNum</b><br/>
|
|
<u>Linia:</u> <b>@context.CoLine</b><br/>
|
|
<u>Pozycja:</u> <b>@context.Item</b><br/>
|
|
<u>Pozycja Klienta:</u> <b>@context.CustItem</b><br/>
|
|
<u>Opis:</u> <b>@context.Description</b><br/>
|
|
<u>Łączna Ilość:</u> <b>@context.BlanketQty.ToString("F2")</b><br/>
|
|
<u>Status:</u> <b>@context.TranslatedStatus</b><br/>
|
|
</ItemTemplate>
|
|
</SortableList>
|
|
</div>
|
|
<div class="col">
|
|
<SortableList TItem="CustomerOrderLineDto" Data="_selectedCustomerOrderLine">
|
|
<ItemTemplate>
|
|
<u>Cena:</u> <b>@(context.ContPrice?.ToString("F2") ?? "N/A")</b><br/>
|
|
<u>Ważne Od:</u> <b>@(context.EffDate?.ToString("dd.MM.yyyy") ?? "N/A")</b><br/>
|
|
<u>J/M:</u> <b>@context.UM</b><br/>
|
|
<u>BoxType:</u> <b>@context.Uf_FKR_EDI_BLN_BoxType</b><br/>
|
|
<u>Address:</u> <b>@context.Uf_FKR_EDI_BLN_Address</b><br/>
|
|
<u>FinalDestination:</u> <b>@context.Uf_FKR_EDI_BLN_FinalDestination</b><br/>
|
|
<u>QtyPerBox:</u> <b>@(context.Uf_FKR_EDI_BLN_QtyPerBox?.ToString() ?? "N/A")</b>
|
|
</ItemTemplate>
|
|
</SortableList>
|
|
</div>
|
|
</div>
|
|
<br/>
|
|
<h3>Harmonogramy</h3>
|
|
<div class="row">
|
|
<Grid @ref="_customerOrderLineItemsGrid"
|
|
TItem="CustomerOrderLineItemDto"
|
|
Class="table table-hover table-bordered table-striped"
|
|
Data="_customerOrderLineItems"
|
|
AllowFiltering="true"
|
|
Responsive="true"
|
|
AllowPaging="true"
|
|
PageSize="10"
|
|
AllowSelection="true"
|
|
AllowRowClick="true"
|
|
SelectionMode="GridSelectionMode.Single"
|
|
SelectedItemsChanged="SelectedCustomerOrderLineItemChanged">
|
|
<GridColumns>
|
|
<GridColumn TItem="CustomerOrderLineItemDto" HeaderText="Linia" PropertyName="CustomerOrderLine">
|
|
@context.CoLine
|
|
</GridColumn>
|
|
<GridColumn TItem="CustomerOrderLineItemDto" HeaderText="Zwolnienie"
|
|
PropertyName="CustomerOrderRelease">
|
|
@context.CoRelease
|
|
</GridColumn>
|
|
<GridColumn TItem="CustomerOrderLineItemDto" HeaderText="Pozycja" PropertyName="Item">
|
|
@context.Item
|
|
</GridColumn>
|
|
<GridColumn TItem="CustomerOrderLineItemDto" HeaderText="Pozycja" PropertyName="CustomerItem">
|
|
@context.CustItem
|
|
</GridColumn>
|
|
<GridColumn TItem="CustomerOrderLineItemDto" HeaderText="Łączna Ilość" TextAlignment="Alignment.End"
|
|
PropertyName="QtyOrdered">
|
|
@context.QtyOrdered
|
|
</GridColumn>
|
|
<GridColumn TItem="CustomerOrderLineItemDto" HeaderText="Data Wykonania" PropertyName="DueDate">
|
|
@context.DueDate?.ToString("dd.MM.yyyy")
|
|
</GridColumn>
|
|
<GridColumn TItem="CustomerOrderLineItemDto" HeaderText="Status" PropertyName="TranslatedStatus">
|
|
@context.TranslatedStatus
|
|
</GridColumn>
|
|
</GridColumns>
|
|
</Grid>
|
|
</div>
|
|
@if (_isVisibleCustomerOrderLineItem)
|
|
{
|
|
<div class="row">
|
|
<h3>Szczegóły</h3>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col">
|
|
<SortableList TItem="CustomerOrderLineItemDto" Data="_selectedCustomerOrderLineItem">
|
|
<ItemTemplate>
|
|
<u>Numer Zamówienia:</u> <b>@context.CoNum</b><br/>
|
|
<u>Linia:</u> <b>@context.CoLine</b><br/>
|
|
<u>Zwolnienie:</u> <b>@context.CoRelease</b><br/>
|
|
<u>Pozycja:</u> <b>@context.Item</b><br/>
|
|
<u>Pozycja Klienta:</u> <b>@context.CustItem</b><br/>
|
|
<u>Łączna Ilość Sztuk:</u> <b>@(context.QtyOrdered.ToString("F2") ?? "N/A")</b><br/>
|
|
<u>Cena:</u> <b>@(context.Price.ToString("F2") ?? "N/A")</b><br/>
|
|
<u>Data Wykonania:</u> <b>@(context.DueDate?.ToString("dd.MM.yyyy") ?? "N/A")</b><br/>
|
|
<u>Data
|
|
Rejestracji:</u> <b>@(context.ReleaseDate?.ToString("dd.MM.yyyy") ?? "N/A")</b><br/>
|
|
<u>Magazyn:</u> <b>@context.Whse</b><br/>
|
|
<u>Typ Documentu:</u> <b>@context.Uf_FKR_EDI_ITEM_DocumentType</b><br/>
|
|
</ItemTemplate>
|
|
</SortableList>
|
|
</div>
|
|
<div class="col">
|
|
<SortableList TItem="CustomerOrderLineItemDto" Data="_selectedCustomerOrderLineItem">
|
|
<ItemTemplate>
|
|
<u>Kod VAT:</u> <b>@context.TaxCode1</b><br/>
|
|
<u>J/M:</u> <b>@context.UM</b><br/>
|
|
<u>Numer Klienta:</u> <b>@context.CoCustNum</b><br/>
|
|
<u>Opis:</u> <b>@context.Description</b><br/>
|
|
<u>Status:</u> <b>@context.TranslatedStatus</b><br/>
|
|
<u>RoutingCode:</u> <b>@context.Uf_FKR_EDI_ITEM_RoutingCode</b><br/>
|
|
<u>DeliveryCallNumber:</u> <b>@context.Uf_FKR_EDI_ITEM_DeliveryCallNum</b><br/>
|
|
<u>UnloadingPoint:</u> <b>@context.Uf_LOC_11_UnloadingPoint</b><br/>
|
|
<u>DestinationPoint:</u> <b>@context.Uf_LOC_159_DestinationPoint</b><br/>
|
|
<u>PalletCode:</u> <b>@context.Uf_FKR_EDI_ITEM_PalletCode</b><br/>
|
|
</ItemTemplate>
|
|
</SortableList>
|
|
</div>
|
|
</div>
|
|
}
|
|
}
|
|
|
|
@code {
|
|
[Parameter] public Guid CustomerOrderId { get; set; }
|
|
|
|
private List<CustomerOrderDto> CustomerOrders { get; set; } = [];
|
|
private List<CustomerOrderLineDto> _customerOrderLines = [];
|
|
private List<CustomerOrderLineItemDto> _customerOrderLineItems = [];
|
|
|
|
private IEnumerable<ScheduleOrderDto>? _scheduleOrders;
|
|
|
|
private List<CustomerOrderLineDto?> _selectedCustomerOrderLine = [];
|
|
private List<CustomerOrderLineItemDto?> _selectedCustomerOrderLineItem = [];
|
|
|
|
private Grid<CustomerOrderLineDto>? _customerOrderLinesGrid;
|
|
private Grid<CustomerOrderLineItemDto>? _customerOrderLineItemsGrid;
|
|
|
|
private bool _isVisibleCustomerOrderLine;
|
|
private bool _isVisibleCustomerOrderLineItem;
|
|
|
|
private Grid<ScheduleOrderDto> _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);
|
|
|
|
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<CustomerOrderLineDto> obj)
|
|
{
|
|
_isVisibleCustomerOrderLine = obj.Any();
|
|
_selectedCustomerOrderLine = [obj.FirstOrDefault()];
|
|
_customerOrderLineItems = obj.FirstOrDefault()?.CustomerOrderLineItems.ToList() ?? [];
|
|
}
|
|
|
|
private void SelectedCustomerOrderLineItemChanged(HashSet<CustomerOrderLineItemDto> obj)
|
|
{
|
|
_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<ScheduleOrderDto> grid)
|
|
{
|
|
_gridRef = grid;
|
|
}
|
|
|
|
private async Task<GridDataProviderResult<ScheduleOrderDto>> ScheduleOrdersDataProvider(GridDataProviderRequest<ScheduleOrderDto> request)
|
|
{
|
|
_scheduleOrders = [];
|
|
|
|
IList<int> scheduleOrderDetails = CustomerOrders?.FirstOrDefault()?.EdiCustomerOrderTranslates?.Select(x => x.ScheduleOrderId).Distinct().ToList() ?? [];
|
|
|
|
if (scheduleOrderDetails.Any())
|
|
{
|
|
_scheduleOrders = await ScheduleOrderService.GetScheduleOrdersAsync() ?? new List<ScheduleOrderDto>();
|
|
_scheduleOrders = _scheduleOrders.Where(x => scheduleOrderDetails.Contains(x.ID)).OrderByDescending(x => x.LastUpdateDate).ToList();
|
|
}
|
|
|
|
return await Task.FromResult(request.ApplyTo(_scheduleOrders));
|
|
}
|
|
} |