Gremlin/Gremlin_BlazorServer/Pages/Quotes/QuoteAdd.razor

272 lines
14 KiB
Plaintext

@page "/Quotes/QuoteAdd"
@using Gremlin_BlazorServer.Services
@using Gremlin_BlazorServer.Data.EntityClasses
@using System.Globalization
@using System.Security.Claims;
@using System.Text;
@inject GenericController genericController
@inject NavigationManager navigationManager
@inject HostingService hostingService
@inject IJSRuntime jSRuntime
@inject ILoadingIndicatorService ApplicationLoadingIndicatorService
<AuthorizeView>
<Authorized>
<Div Margin="Margin.Is3"
Border="Border.Dark.OnAll"
Padding="Padding.Is3"
style="box-shadow: 10px 10px #343A40">
<Heading Size="HeadingSize.Is5">Recipient</Heading>
<Paragraph>
<DataGrid TItem="Contact"
Data="@contacts"
SelectedRow="@selectedContact"
SelectedRowChanged="@OnSelectedContactChanged"
Bordered Hoverable Filterable Striped ShowPager Responsive Sortable>
<DataGridCommandColumn/>
<DataGridColumn Field="@nameof(Contact.ContactId)" Caption="ContactId" Sortable Filterable/>
<DataGridColumn Field="@nameof(Contact.AccountId)" Caption="AccountId" Sortable Filterable/>
<DataGridColumn Field="@nameof(Contact.FirstName)" Caption="FirstName" Sortable Filterable/>
<DataGridColumn Field="@nameof(Contact.LastName)" Caption="LastName" Sortable Filterable/>
<DataGridColumn Field="@nameof(Contact.Gender)" Caption="Gender" Sortable Filterable/>
<DataGridColumn Field="@nameof(Contact.EMail)" Caption="EMail" Sortable Filterable/>
<DataGridColumn Field="@nameof(Contact.PhoneNumber)" Caption="PhoneNumber" Sortable Filterable/>
<DataGridColumn Field="@nameof(Contact.SapContactNumber)" Caption="SAPContactNumber" Sortable Filterable/>
</DataGrid>
</Paragraph>
</Div>
<Div Margin="Margin.Is3"
Border="Border.Dark.OnAll"
Padding="Padding.Is3"
style="box-shadow: 10px 10px #343A40">
<Heading Size="HeadingSize.Is5">Quote Details</Heading>
<Paragraph>
<Row>
<Column ColumnSize="ColumnSize.Is4">
<Field>
<FieldLabel ColumnSize="ColumnSize.Is4">Angebotsname</FieldLabel>
<FieldBody ColumnSize="ColumnSize.Is6">
<TextEdit Text="@quote.Description" TextChanged="@OnDescriptionChanged"/>
</FieldBody>
</Field>
<Field>
<FieldLabel ColumnSize="ColumnSize.Is4">Angebotsnummer</FieldLabel>
<FieldBody ColumnSize="ColumnSize.Is6">
<TextEdit Text="@quote.QuotationNumber" TextChanged="@OnQuotationNumberChanged"/>
</FieldBody>
</Field>
<Field>
<FieldLabel ColumnSize="ColumnSize.Is4">Angebotspfad</FieldLabel>
<FieldBody ColumnSize="ColumnSize.Is6">
<TextEdit ReadOnly Text="@quote.Path"/>"
</FieldBody>
</Field>
<Field>
<FieldLabel ColumnSize="ColumnSize.Is4">Gewährleistung (Monate)</FieldLabel>
<FieldBody ColumnSize="ColumnSize.Is6">
<TextEdit Text="@quote.Warranty.ToString()" TextChanged="@OnWarrantyChanged"/>
</FieldBody>
</Field>
<Field>
<FieldLabel ColumnSize="ColumnSize.Is4">Angebotsgültigkeit (Tage)</FieldLabel>
<FieldBody ColumnSize="ColumnSize.Is6">
<TextEdit Text="@quote.ValidFor.ToString()" TextChanged="@OnValidForChanged"/>
</FieldBody>
</Field>
<Field>
<FieldLabel ColumnSize="ColumnSize.Is4">Mehrwertsteuer (%)</FieldLabel>
<FieldBody ColumnSize="ColumnSize.Is6">
<TextEdit Text="@quote.Vat.ToString(CultureInfo.CurrentCulture)" TextChanged="@OnVATChanged"/>
</FieldBody>
</Field>
<Field>
<FieldLabel ColumnSize="ColumnSize.Is4">Versandkosten (%)</FieldLabel>
<FieldBody ColumnSize="ColumnSize.Is6">
<TextEdit Text="@quote.Freight.ToString(CultureInfo.CurrentCulture)"/>
</FieldBody>
</Field>
</Column>
@if (quote.Recipient != null && quote.Recipient.Account != null)
{
<Column ColumnSize="ColumnSize.Is3">
<Field>
<FieldLabel ColumnSize="ColumnSize.Is4">FirstName</FieldLabel>
<FieldBody ColumnSize="ColumnSize.Is6">@quote.Recipient.FirstName</FieldBody>
</Field>
<Field >
<FieldLabel ColumnSize="ColumnSize.Is4">LastName</FieldLabel>
<FieldBody ColumnSize="ColumnSize.Is6">@quote.Recipient.LastName</FieldBody>
</Field>
<Field >
<FieldLabel ColumnSize="ColumnSize.Is4">AccountName</FieldLabel>
<FieldBody ColumnSize="ColumnSize.Is6">@quote.Recipient.Account.AccountName</FieldBody>
</Field>
<Field >
<FieldLabel ColumnSize="ColumnSize.Is4">Street</FieldLabel>
<FieldBody ColumnSize="ColumnSize.Is6">@quote.Recipient.Account.Street</FieldBody>
</Field>
<Field >
<FieldLabel ColumnSize="ColumnSize.Is4">Zip</FieldLabel>
<FieldBody ColumnSize="ColumnSize.Is6">@quote.Recipient.Account.Zip.ToString()</FieldBody>
</Field>
<Field >
<FieldLabel ColumnSize="ColumnSize.Is4">City</FieldLabel>
<FieldBody ColumnSize="ColumnSize.Is6">@quote.Recipient.Account.City</FieldBody>
</Field>
</Column>
}
<Column ColumnSize="ColumnSize.Is2">
<Check TValue="bool" Checked="@quote.IsPriceInformation" CheckedChanged="@OnIsPriceInformationChanged">Preisinformation</Check>
<Check TValue="bool" Checked="@quote.ShowBrutto" CheckedChanged="@OnShowBruttoChanged">Bruttopreise anzeigen</Check>
<Check TValue="bool" Checked="@quote.ShowSinglePrices" CheckedChanged="@OnShowSinglePricesChanged">Einzelpreise ausweisen</Check>
<Check TValue="bool" Checked="@quote.ShowDiscounts" CheckedChanged="@OnShowDiscountsChanged">Discounts ausweisen</Check>
</Column>
<Column ColumnSize="ColumnSize.Is3">
<Field>
<FieldLabel ColumnSize="ColumnSize.Is4">Listenpreis netto</FieldLabel>
<FieldBody ColumnSize="ColumnSize.Is6">
<TextEdit ReadOnly Text="@quote.TotalListprice.ToString("C", CultureInfo.CurrentCulture)"></TextEdit>
</FieldBody>
</Field>
<Field>
<FieldLabel ColumnSize="ColumnSize.Is4">Summe netto</FieldLabel>
<FieldBody ColumnSize="ColumnSize.Is6">
<TextEdit ReadOnly Text="@quote.TotalNet.ToString("C", CultureInfo.CurrentCulture)"></TextEdit>
</FieldBody>
</Field>
<Field>
<FieldLabel ColumnSize="ColumnSize.Is4">Versandkosten</FieldLabel>
<FieldBody ColumnSize="ColumnSize.Is6">
<TextEdit ReadOnly Text="@quote.TotalFreightOnly.ToString("C", CultureInfo.CurrentCulture)"></TextEdit>
</FieldBody>
</Field>
<Field>
<FieldLabel ColumnSize="ColumnSize.Is4">Gesamtsumme netto</FieldLabel>
<FieldBody ColumnSize="ColumnSize.Is6">
<TextEdit ReadOnly Text="@quote.TotalFreight.ToString("C", CultureInfo.CurrentCulture)"></TextEdit>
</FieldBody>
</Field>
<Field>
<FieldLabel ColumnSize="ColumnSize.Is4">Mehrwertsteuer</FieldLabel>
<FieldBody ColumnSize="ColumnSize.Is6">
<TextEdit ReadOnly Text="@quote.TotalVat.ToString("C", CultureInfo.CurrentCulture)"></TextEdit>
</FieldBody>
</Field>
<Field>
<FieldLabel ColumnSize="ColumnSize.Is4">Gesamtsumme brutto</FieldLabel>
<FieldBody ColumnSize="ColumnSize.Is6">
<TextEdit ReadOnly Text="@quote.TotalGross.ToString("C", CultureInfo.CurrentCulture)"></TextEdit>
</FieldBody>
</Field>
</Column>
</Row>
</Paragraph>
</Div>
@if (quote.LineItems != null) {
<Div Margin="Margin.Is3"
Border="Border.Dark.OnAll"
Padding="Padding.Is3"
style="box-shadow: 10px 10px #343A40">
<Heading Size="HeadingSize.Is5">LineItems</Heading>
<Paragraph>
<DataGrid TItem="LineItem"
Data="@quote.LineItems"
Bordered Hoverable Striped ShowPager Responsive>
<DataGridCommandColumn/>
<DataGridColumn Field="@nameof(LineItem.Position)" Caption="Position" />
<DataGridColumn Field="@nameof(LineItem.Amount)" Caption="Amount" />
<DataGridColumn Field="@nameof(LineItem.ProductNumber)" Caption="ProductNumber"/>
<DataGridColumn Field="@nameof(LineItem.OptionNumber)" Caption="OptionNumber"/>
<DataGridColumn Field="@nameof(LineItem.SapShortDescription)" Caption="SapShortDescription" />
<DataGridColumn Field="@nameof(LineItem.CustomDescription)" Caption="CustomDescription" />
<DataGridColumn Field="@nameof(LineItem.ListPrice)" DisplayFormat="{0:C}" DisplayFormatProvider=cultureInfo Caption="ListPrice" />
<DataGridColumn Field="@nameof(LineItem.TotalDiscount)" DisplayFormat="{0:n2}%" Caption="TotalDiscount" />
<DataGridColumn Field="@nameof(LineItem.Total)" DisplayFormat="{0:C}" DisplayFormatProvider=cultureInfo Caption="Total"/>
</DataGrid>
</Paragraph>
</Div>
}
@if (quote.LineItems == null) {
<Div Margin="Margin.Is3"
Border="Border.Dark.OnAll"
Padding="Padding.Is3"
style="box-shadow: 10px 10px #343A40">
<Heading Size="HeadingSize.Is5">Upload PriceSurfer Quote </Heading>
<Paragraph>
<Field>
<FieldLabel>Please select PriceSurfer quote as TSV</FieldLabel>
<FileEdit Filter=".tsv" Changed="@SelectQuoteOnChanged" Written="@SelectQuoteOnWritten" Progressed="@SelectQuoteOnProgressed"/>
</Field>
</Paragraph>
</Div>
}
<Div Margin="Margin.Is3"
Border="Border.Dark.OnAll"
Padding="Padding.Is3"
style="box-shadow: 10px 10px #343A40">
<Heading Size="HeadingSize.Is5">Create Quote</Heading>
<Paragraph>
<Button Color="Color.Primary" Disabled="@lineItemsNotReady" Clicked="@OnCreateTex" Loading="@isCreatingTex">Create Tex from Quote</Button>
<Button Color="Color.Secondary" Disabled="@texNotReady" Clicked="@OnCreatePdf" Loading="@isCreatingPdf">Create Pdf from Tex</Button>
<Button Color="Color.Secondary" Disabled="@pdfNotReady" Clicked="@OnOpenPdfApp">Open Pdf with App</Button>
<Button Color="Color.Secondary" Disabled="@pdfNotReady" Clicked="@OnOpenPdfNewTab">Open Pdf in Tab</Button>
<Button Color="Color.Success" Disabled="@pdfNotReady" Clicked="@OnSave">Save</Button>
<Button Color="Color.Danger" Clicked="@OnCancel">Cancel</Button>
</Paragraph>
</Div>
@if (!pdfNotReady && url != null && debug) {
<Div Margin="Margin.Is3"
Border="Border.Dark.OnAll"
Padding="Padding.Is3"
style="box-shadow: 10px 10px #343A40">
<Heading Size="HeadingSize.Is5">PDF</Heading>
<Paragraph>
<iframe src="/quotes/@url" style="width:50%;height:600px;"></iframe>
</Paragraph>
</Div>
}
@if (quote.Tex != null && debug) {
<Div Margin="Margin.Is3"
Border="Border.Dark.OnAll"
Padding="Padding.Is3"
style="box-shadow: 10px 10px #343A40">
<Heading Size="HeadingSize.Is5">Tex</Heading>
<Paragraph>
<MemoEdit ReadOnly Size="Size.Small" Autosize @bind-Text="@quote.Tex" />
</Paragraph>
</Div>
}
</Authorized>
<NotAuthorized>
<Div Margin="Margin.Is3"
Border="Border.Dark.OnAll"
Padding="Padding.Is3"
style="box-shadow: 10px 10px #343A40">
<Heading Size="HeadingSize.Is3">Authentication Failure!</Heading>
<Paragraph>You're not signed in. Please click on the upper right to either register or log in.</Paragraph>
</Div>
</NotAuthorized>
</AuthorizeView>