127 lines
8.6 KiB
Plaintext
127 lines
8.6 KiB
Plaintext
@page "/Quotes/QuoteIndex"
|
|
|
|
@using Gremlin_BlazorServer.Data.EntityClasses;
|
|
@using Gremlin_BlazorServer.Services;
|
|
@using System.Globalization;
|
|
|
|
@inject GenericController genericController
|
|
@inject NavigationManager navigationManager
|
|
|
|
<h1>Quotes</h1>
|
|
|
|
<Button Color="Color.Primary" Clicked="@OnCreateNewQuote">Create New Quote</Button>
|
|
|
|
<AuthorizeView>
|
|
<Authorized>
|
|
@if (quotes != null)
|
|
{
|
|
<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>
|
|
}
|
|
else
|
|
{
|
|
<h3>Loading...</h3>
|
|
}
|
|
|
|
<h2>Quote Details</h2>
|
|
@if (selectedQuote != null)
|
|
{
|
|
<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.ToString(CultureInfo.CurrentCulture)</FieldBody></Field>
|
|
<Field Horizontal><FieldLabel ColumnSize="ColumnSize.Is4">Angebotsgültigkeit (Tage):</FieldLabel><FieldBody ColumnSize="ColumnSize.Is6"><TextEdit Text="@selectedQuote.ValidFor.ToString(CultureInfo.CurrentCulture)"/></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>lineItemsInSelectedQuote
|
|
|
|
<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>
|
|
<h2>Line Items</h2>
|
|
@if (lineItemsInSelectedQuote != null)
|
|
{
|
|
<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>
|
|
}
|
|
else
|
|
{
|
|
<h3>Loading...</h3>
|
|
}
|
|
}
|
|
else
|
|
{
|
|
<h3>Loading...</h3>
|
|
}
|
|
</Authorized>
|
|
<NotAuthorized>
|
|
<h3>Authentication Failure!</h3>
|
|
<p>You're not signed in. Please click on the upper right to either register or log in.</p>
|
|
</NotAuthorized>
|
|
</AuthorizeView>
|
|
|
|
@code {
|
|
private Task<AuthenticationState>? authenticationStateTask { get; set; }
|
|
private IList<Quote>? quotes;
|
|
private Quote? selectedQuote;
|
|
//private Contact? recipient;
|
|
private IList<LineItem>? lineItemsInSelectedQuote;
|
|
private readonly CultureInfo cultureInfo = new("de-DE");
|
|
|
|
protected override Task OnInitializedAsync()
|
|
{
|
|
quotes = genericController.GetAll<Quote>("Recipient");
|
|
return Task.CompletedTask;
|
|
}
|
|
|
|
private void OnSelectedQuoteChanged(Quote sQ)
|
|
{
|
|
selectedQuote = null;
|
|
//recipient = genericController.Get<Contact>(contact => contact == sQ.Recipient, "Account");
|
|
lineItemsInSelectedQuote = genericController.GetAll<LineItem>(lineItem => lineItem.Quote == sQ);
|
|
selectedQuote = sQ;
|
|
}
|
|
|
|
private void OnCreateNewQuote() => navigationManager.NavigateTo("Quotes/QuoteAdd");
|
|
} |