238 lines
10 KiB
Plaintext
238 lines
10 KiB
Plaintext
@page "/EdiCustomerOrders"
|
|
|
|
@attribute [Authorize]
|
|
|
|
@inject EdiCustomerOrderService EdiCustomerOrderService
|
|
@inject NavigationManager NavigationManager
|
|
@inject CustomAuthenticationStateProvider CustomAuthenticationStateProvider
|
|
@using System.Security.Claims
|
|
@using Microsoft.AspNetCore.Authorization
|
|
@using OrdersManagement.Models
|
|
@using SytelineSaAppEfDataModel.Dtos
|
|
@using Syncfusion.Blazor.Grids
|
|
@using Syncfusion.Blazor.Cards
|
|
@using Syncfusion.Blazor.Popups
|
|
@using Syncfusion.Blazor.Buttons
|
|
@using SelectionType = Syncfusion.Blazor.Grids.SelectionType
|
|
@inherits LayoutComponentBase
|
|
|
|
<div class="h-100 d-flex justify-content-center align-items-start">
|
|
<SfCard CssClass="shadow" style="width: 100%; max-width: 1200px;">
|
|
<CardHeader>
|
|
<h3 class="text-primary">Zamówienia Klienta EDI</h3>
|
|
</CardHeader>
|
|
<CardContent>
|
|
<div class="row mb-4">
|
|
<div class="col-md-12 d-flex align-items-center">
|
|
<label for="checked" style="padding: 10px 10px 10px 0">Pokaż wszystkie</label>
|
|
<SfSwitch @bind-Checked="_filter" ValueChange="FilterChanged" TChecked="bool?"
|
|
OnLabel="Pokaż tylko Wysłane do SL" OffLabel="Pokaż wszystkie"/>
|
|
</div>
|
|
</div>
|
|
|
|
@if (_isVisible)
|
|
{
|
|
<div class="row mb-4">
|
|
<div class="col-md-12">
|
|
<SfButton CssClass="btn-primary" @onclick="SendOrderToSyteLine">@_text</SfButton>
|
|
</div>
|
|
</div>
|
|
}
|
|
|
|
<SfGrid @ref="_grid"
|
|
AllowFiltering="true"
|
|
AllowPaging="true"
|
|
AllowSorting="true"
|
|
AllowSelection="true"
|
|
TValue="EdiCustomerOrderDto"
|
|
DataSource="@_ediCustomerOrders"
|
|
EnableAdaptiveUI="true">
|
|
<GridTemplates>
|
|
<DetailTemplate>
|
|
@{
|
|
var order = context as EdiCustomerOrderDto;
|
|
<SfCard CssClass="mb-4">
|
|
<CardContent>
|
|
<div class="row">
|
|
<div class="col">
|
|
<u>Numer zamówienia EDI:</u> <b>@order?.CustomerOrderNumber</b><br/>
|
|
<u>Numer zamówienia Klienta:</u> <b>@order?.CustomerPoNumber</b><br/>
|
|
<u>Numer klienta:</u> <b>@order?.CustomerNumber</b><br/>
|
|
<u>Klient:</u> <b>@order?.CustomerName</b><br/>
|
|
<u>Numer odbiorcy:</u> <b>@(order?.CustomerSequence?.ToString() ?? "N/A")</b><br/>
|
|
<u>Data otrzymania:</u> <b>@(order?.RecivedDate?.ToString("dd.MM.yyyy") ?? "N/A")</b><br/>
|
|
<u>Wysłano do Syteline?:</u> <b>@((order?.Posted?.ToString() ?? "0") == "0" ? "NIE" : "TAK")</b><br/>
|
|
<u>Data wysyłki do Syteline:</u> <b>@(order?.PostedDate?.ToString("dd.MM.yyyy") ?? "N/A")</b><br/>
|
|
<u>Data zamówienia:</u> <b>@(order?.OrderDate?.ToString("dd.MM.yyyy") ?? "N/A")</b><br/>
|
|
</div>
|
|
<div class="col">
|
|
<u>Cena:</u> <b>@(order?.Price?.ToString("F2") ?? "N/A")</b><br/>
|
|
<u>Waga:</u> <b>@(order?.Weight?.ToString("F2") ?? "N/A")</b><br/>
|
|
<u>Magazyn:</u> <b>@order?.Warehouse</b><br/>
|
|
<u>Gate:</u> <b>@order?.Gate</b><br/>
|
|
<u>Kod odbiorcy:</u> <b>@order?.RecipientCode</b><br/>
|
|
<u>Kod wysyłającego:</u> <b>@order?.SenderCode</b><br/>
|
|
<u>Kod sprzedawcy:</u> <b>@order?.SellerCode</b><br/>
|
|
<u>Kod kupującego:</u> <b>@order?.BuyerCode</b><br/>
|
|
<u>Typ dokumentu:</u> <b>@order?.DocType</b><br/>
|
|
</div>
|
|
</div>
|
|
</CardContent>
|
|
</SfCard>
|
|
}
|
|
</DetailTemplate>
|
|
</GridTemplates>
|
|
<GridColumns>
|
|
<GridColumn Field=@nameof(EdiCustomerOrderDto.CustomerOrderNumber) HeaderText="Numer Zamówienia" Width="110"></GridColumn>
|
|
<GridColumn Field=@nameof(EdiCustomerOrderDto.CustomerPoNumber) HeaderText="Zamówienie Klienta" Width="100"></GridColumn>
|
|
<GridColumn Field=@nameof(EdiCustomerOrderDto.CustomerNumber) HeaderText="Numer Klienta" Width="90"></GridColumn>
|
|
<GridColumn Field=@nameof(EdiCustomerOrderDto.CustomerSequence) HeaderText="Odbiorca" Width="80"></GridColumn>
|
|
<GridColumn Field=@nameof(EdiCustomerOrderDto.CreateDate) HeaderText="Data Otrzymania" TextAlign="TextAlign.Center" Width="110"></GridColumn>
|
|
<GridColumn Field=@nameof(EdiCustomerOrderDto.SlOrderNumber) HeaderText="Zamówienie SL" Width="100"></GridColumn>
|
|
<GridColumn Field=@nameof(EdiCustomerOrderDto.SentToSl) HeaderText="Wysłane do SL" TextAlign="TextAlign.Center" Width="80"></GridColumn>
|
|
</GridColumns>
|
|
<GridFilterSettings Type="FilterType.Excel"/>
|
|
<GridPageSettings PageSize="10"/>
|
|
<GridSelectionSettings Mode="SelectionMode.Row" Type="SelectionType.Multiple"/>
|
|
<GridEvents TValue="EdiCustomerOrderDto" OnRecordDoubleClick="OnRowDoubleClick" RowSelected="RowSelected"/>
|
|
</SfGrid>
|
|
|
|
<SfDialog Width="500px" Title="@_text" IsModal="true" @bind-Visible="Visibility" AllowPrerender="true">
|
|
<DialogTemplates>
|
|
<Content>
|
|
@if (_responses.Any(x => x.Status == 1))
|
|
{
|
|
foreach (ResponseModel? response in _responses.Where(x => x.Status == 1))
|
|
{
|
|
<p>Zamówienie EDI @response.Identifier zostało poprawnie zaksięgowane w Zamówieniach klienta pod numerem '@response.ExternalIdentifier'</p>
|
|
}
|
|
}
|
|
@if (_responses.Any(x => x.Status == 0))
|
|
{
|
|
foreach (ResponseModel? response in _responses.Where(x => x.Status == 0))
|
|
{
|
|
<p>Błąd: Zamówienie EDI @response.Identifier nie zostało poprawnie zaksięgowane w Zamówieniach klienta.<br/>Lista błędów:<br/>@response.Message</p>
|
|
}
|
|
}
|
|
</Content>
|
|
</DialogTemplates>
|
|
<DialogButtons>
|
|
<DialogButton Content="OK" IsPrimary="true" OnClick="@HideModal"/>
|
|
</DialogButtons>
|
|
</SfDialog>
|
|
</CardContent>
|
|
<CardFooter>
|
|
<small class="text-muted">FA Krosno Manager © @(DateTime.Now.Year)</small>
|
|
</CardFooter>
|
|
</SfCard>
|
|
</div>
|
|
|
|
@code {
|
|
private bool Visibility { get; set; }
|
|
|
|
private SfGrid<EdiCustomerOrderDto>? _grid;
|
|
|
|
private IEnumerable<EdiCustomerOrderDto> _ediCustomerOrders = [];
|
|
private List<EdiCustomerOrderDto> _selectedEdiCustomerOrders = new();
|
|
|
|
private List<ResponseModel?> _responses = new();
|
|
|
|
private bool _isVisible;
|
|
private bool? _filter = false;
|
|
|
|
private string _text = "Księguj bieżący";
|
|
|
|
protected override async Task OnAfterRenderAsync(bool firstRender)
|
|
{
|
|
if (firstRender)
|
|
{
|
|
ClaimsPrincipal currentUser = CustomAuthenticationStateProvider.GetCurrentUser();
|
|
|
|
if (currentUser.Identity?.IsAuthenticated == false)
|
|
{
|
|
NavigationManager.NavigateTo("/Unauthorized");
|
|
}
|
|
else
|
|
{
|
|
await LoadData();
|
|
}
|
|
}
|
|
}
|
|
|
|
private void OnRowDoubleClick(RecordDoubleClickEventArgs<EdiCustomerOrderDto> obj)
|
|
{
|
|
Guid customerOrderId = obj.RowData.RowPointer;
|
|
|
|
NavigationManager.NavigateTo($"/EdiCustomerOrder/{customerOrderId}");
|
|
}
|
|
|
|
private async Task<bool> SendOrderToSyteLine()
|
|
{
|
|
if (!_selectedEdiCustomerOrders.Any()) return false;
|
|
|
|
_responses = new List<ResponseModel?>();
|
|
|
|
foreach (EdiCustomerOrderDto selectedEdiCustomerOrder in _selectedEdiCustomerOrders)
|
|
{
|
|
ResponseModel? response = await EdiCustomerOrderService.SendOrderToSyteline(selectedEdiCustomerOrder.RowPointer, selectedEdiCustomerOrder.CustomerOrderNumber);
|
|
|
|
if (response.Status == 1)
|
|
{
|
|
response.ExternalIdentifier = selectedEdiCustomerOrder.EdiCustomerOrderTranslates.FirstOrDefault()?.CoCoNum;
|
|
}
|
|
|
|
_responses.Add(response);
|
|
}
|
|
|
|
Visibility = true;
|
|
|
|
await LoadData();
|
|
|
|
_grid?.Refresh();
|
|
|
|
_isVisible = false;
|
|
|
|
return true;
|
|
}
|
|
|
|
private void HideModal()
|
|
{
|
|
Visibility = false;
|
|
}
|
|
|
|
private async Task RowSelected(RowSelectEventArgs<EdiCustomerOrderDto> obj)
|
|
{
|
|
List<EdiCustomerOrderDto> selectedRecords = await _grid.GetSelectedRecordsAsync();
|
|
|
|
_isVisible = false;
|
|
|
|
if (!selectedRecords.Any()) return;
|
|
|
|
_selectedEdiCustomerOrders = selectedRecords;
|
|
_isVisible = _selectedEdiCustomerOrders.Any(x => x.Posted == 0);
|
|
_text = selectedRecords.Count > 1 ? "Księguj zaznaczone" : "Księguj bieżący";
|
|
}
|
|
|
|
private async Task FilterChanged(ChangeEventArgs<bool?> obj)
|
|
{
|
|
_filter = obj.Checked;
|
|
await LoadData();
|
|
_grid?.Refresh();
|
|
}
|
|
|
|
private async Task LoadData()
|
|
{
|
|
_ediCustomerOrders = await EdiCustomerOrderService.GetEdiCustomerOrdersAsync() ?? new List<EdiCustomerOrderDto>();
|
|
|
|
if (_filter == false)
|
|
{
|
|
_ediCustomerOrders = _ediCustomerOrders.Where(x => x.Posted == 0).ToList();
|
|
}
|
|
|
|
_ediCustomerOrders = _ediCustomerOrders.OrderByDescending(x => x.CreateDate).ToList();
|
|
|
|
StateHasChanged();
|
|
}
|
|
|
|
}
|