Gremlin/Gremlin_BlazorServer/Pages/Quotes/Index.razor

107 lines
7.1 KiB
Plaintext

@page "/Quotes/Index"
@using Gremlin_BlazorServer.Data.EntityClasses;
@using Gremlin_BlazorServer.Services;
@using System.Globalization;
@inject QuoteService QuoteService
<Divider DividerType="DividerType.TextContent" Text="Quotes"/>
<NavLink class="nav-link" href="Quotes/Add">
<span class="oi oi-plus" aria-hidden="true">Create New Quote</span>
</NavLink>
<DataGrid TItem="Quote" Data="@quotes" SelectedRow="@selectedQuote" SelectedRowChanged="@OnSelectedQuoteChanged" ShowPager Bordered Hoverable Sortable Filterable Striped Responsive>
<DataGridCommandColumn />
<DataGridColumn Field="@nameof(Quote.QuoteId)" Caption="#" Filterable Sortable/>
<DataGridColumn Field="@nameof(Quote.QuotationNumber)" Caption="QuotationNumber" Filterable Sortable/>
<DataGridColumn Field="@nameof(Quote.QuotationDate)" Caption="Date" Filterable Sortable/>
<DataGridColumn Field="@nameof(Quote.ValidUntil)" Caption="ValidUntil" Filterable Sortable/>
<DataGridColumn Field="@nameof(Quote.TotalNet)" Caption="TotalNet" DisplayFormat="{0:C}" DisplayFormatProvider=cultureInfo Filterable Sortable/>
<DataGridColumn Field="@nameof(Quote.TotalGross)" Caption="TotalGross" DisplayFormat="{0:C}" DisplayFormatProvider=cultureInfo Filterable Sortable/>
<DataGridColumn Field="@nameof(Quote.QuoteContains3Pp)" Caption="3PP" Filterable Sortable/>
<DataGridColumn Field="@nameof(Quote.QuoteContainsRb)" Caption="RB" Filterable Sortable/>
</DataGrid>
<Divider DividerType="DividerType.TextContent" Text="Quote Details"/>
<Row>
<Column ColumnSize="ColumnSize.Is4">
<Fields>
<Field Horizontal><FieldLabel ColumnSize="ColumnSize.Is4">Angebotsname:</FieldLabel><FieldBody ColumnSize="ColumnSize.Is6"><TextEdit Text="@selectedQuote.Description"/></FieldBody></Field>
<Field Horizontal><FieldLabel ColumnSize="ColumnSize.Is4">Angebotsnummer:</FieldLabel><FieldBody ColumnSize="ColumnSize.Is6"><TextEdit Text="@selectedQuote.QuotationNumber"/></FieldBody></Field>
<Field Horizontal><FieldLabel ColumnSize="ColumnSize.Is4">Angebotspfad:</FieldLabel><FieldBody ColumnSize="ColumnSize.Is6">@selectedQuote.Path</FieldBody></Field>
<Field Horizontal><FieldLabel ColumnSize="ColumnSize.Is4">Gewährleistung (Monate):</FieldLabel><FieldBody ColumnSize="ColumnSize.Is6">@selectedQuote.Warranty</FieldBody></Field>
<Field Horizontal><FieldLabel ColumnSize="ColumnSize.Is4">Angebotsgültigkeit (Tage):</FieldLabel><FieldBody ColumnSize="ColumnSize.Is6"><TextEdit Text="@selectedQuote.ValidFor.ToString()"/></FieldBody></Field>
<Field Horizontal><FieldLabel ColumnSize="ColumnSize.Is4">Mehrwertsteuer (%):</FieldLabel><FieldBody ColumnSize="ColumnSize.Is6"><TextEdit Text="@selectedQuote.Vat.ToString(CultureInfo.CurrentCulture)"/></FieldBody></Field>
<Field Horizontal><FieldLabel ColumnSize="ColumnSize.Is4">Versandkosten (%):</FieldLabel><FieldBody ColumnSize="ColumnSize.Is6"><TextEdit Text="@selectedQuote.Freight.ToString(CultureInfo.CurrentCulture)" /></FieldBody></Field>
</Fields>
</Column>
<Column ColumnSize="ColumnSize.Is3">
<Fields>
<Field Horizontal><FieldLabel ColumnSize="ColumnSize.Is4">Empfänger Nachname:</FieldLabel><FieldBody ColumnSize="ColumnSize.Is6"><TextEdit Text="@selectedQuote.Recipient.LastName"/></FieldBody></Field>
</Fields>
</Column>
<Column ColumnSize="ColumnSize.Is2">
<Check TValue="bool" ReadOnly Checked="@selectedQuote.IsPriceInformation">Preisinformation</Check>
<Check TValue="bool" ReadOnly Checked="@selectedQuote.ShowBrutto">Bruttopreise anzeigen</Check>
<Check TValue="bool" ReadOnly Checked="@selectedQuote.ShowSinglePrices">Einzelpreise ausweisen</Check>
<Check TValue="bool" ReadOnly Checked="@selectedQuote.ShowDiscounts">Discounts ausweisen</Check>
</Column>
<Column ColumnSize="ColumnSize.Is3">
<Field Horizontal><FieldLabel ColumnSize="ColumnSize.Is4">Listenpreis netto:</FieldLabel><FieldBody ColumnSize="ColumnSize.Is6"><TextEdit ReadOnly Text="@selectedQuote.TotalListprice.ToString("C", CultureInfo.CurrentCulture)"></TextEdit></FieldBody></Field>
<Field Horizontal><FieldLabel ColumnSize="ColumnSize.Is4">Summe netto:</FieldLabel><FieldBody ColumnSize="ColumnSize.Is6"><TextEdit ReadOnly Text="@selectedQuote.TotalNet.ToString("C", CultureInfo.CurrentCulture)"></TextEdit></FieldBody></Field>
<Field Horizontal><FieldLabel ColumnSize="ColumnSize.Is4">Versandkosten:</FieldLabel><FieldBody ColumnSize="ColumnSize.Is6"><TextEdit ReadOnly Text="@selectedQuote.TotalFreightOnly.ToString("C", CultureInfo.CurrentCulture)"></TextEdit></FieldBody></Field>
<Field Horizontal><FieldLabel ColumnSize="ColumnSize.Is4">Gesamtsumme netto:</FieldLabel><FieldBody ColumnSize="ColumnSize.Is6"><TextEdit ReadOnly Text="@selectedQuote.TotalFreight.ToString("C", CultureInfo.CurrentCulture)"></TextEdit></FieldBody></Field>
<Field Horizontal><FieldLabel ColumnSize="ColumnSize.Is4">Mehrwertsteuer:</FieldLabel><FieldBody ColumnSize="ColumnSize.Is6"><TextEdit ReadOnly Text="@selectedQuote.TotalVat.ToString("C", CultureInfo.CurrentCulture)"></TextEdit></FieldBody></Field>
<Field Horizontal><FieldLabel ColumnSize="ColumnSize.Is4">Gesamtsumme brutto:</FieldLabel><FieldBody ColumnSize="ColumnSize.Is6"><TextEdit ReadOnly Text="@selectedQuote.TotalGross.ToString("C", CultureInfo.CurrentCulture)"></TextEdit></FieldBody></Field>
</Column>
</Row>
<Divider DividerType="DividerType.TextContent" Text="Line Items"/>
<DataGrid
TItem="LineItem"
Data="@lineItemsInSelectedQuote"
Bordered
Hoverable
Sortable
Striped
Responsive>
<DataGridCommandColumn />
<DataGridColumn Field="@nameof(LineItem.Position)" Caption="#"/>
<DataGridColumn Field="@nameof(LineItem.Amount)" Caption="Amount" Editable />
<DataGridColumn Field="@nameof(LineItem.ProductNumber)" Caption="ProductNumber" Editable />
<DataGridColumn Field="@nameof(LineItem.OptionNumber)" Caption="OptionNumber" Editable />
<DataGridColumn Field="@nameof(LineItem.ProductLine)" Caption="ProductLine" Editable />
<DataGridColumn Field="@nameof(LineItem.ListPrice)" Caption="ListPrice" DisplayFormat="{0:C}" DisplayFormatProvider=cultureInfo Editable />
<DataGridColumn Field="@nameof(LineItem.TotalDiscount)" Caption="TotalDiscount" DisplayFormat="{0:C}" DisplayFormatProvider=cultureInfo Editable />
<DataGridColumn Field="@nameof(LineItem.Total)" Caption="Total" DisplayFormat="{0:C}" DisplayFormatProvider=cultureInfo Editable />
</DataGrid>
@code {
public string SearchQuote = "";
readonly CultureInfo cultureInfo = new("de-DE");
Quote selectedQuote = new();
List<LineItem> lineItemsInSelectedQuote = new();
List<Quote> quotes = new();
protected override async Task OnInitializedAsync()
{
quotes = await Task.Run(() => QuoteService.GetAllQuotesAsync());
await OnSelectedQuoteChanged(quotes.LastOrDefault() ?? new());
await base.OnInitializedAsync();
}
private async Task OnSelectedQuoteChanged(Quote _selectedQuote)
{
lineItemsInSelectedQuote = await QuoteService.GetLineItemsAsync(_selectedQuote);
this.selectedQuote = _selectedQuote;
}
}