Optimize QuoteIndex

pull/1/head
Sascha 2023-06-29 10:09:17 +07:00
parent 7a97574345
commit e1e51abcbd
13 changed files with 238 additions and 75 deletions

@ -10,42 +10,42 @@
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<WarningsAsErrors/>
<NoWarn/>
<WarningsAsErrors />
<NoWarn />
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<WarningsAsErrors/>
<NoWarn/>
<WarningsAsErrors />
<NoWarn />
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Blazorise.Bootstrap" Version="1.2.2"/>
<PackageReference Include="Blazorise.Components" Version="1.2.2"/>
<PackageReference Include="Blazorise.DataGrid" Version="1.2.2"/>
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.2.2"/>
<PackageReference Include="Blazorise.Icons.Material" Version="1.2.2"/>
<PackageReference Include="Blazorise.LoadingIndicator" Version="1.2.2"/>
<PackageReference Include="Blazorise.Material" Version="1.2.2"/>
<PackageReference Include="Microsoft.AspNetCore.Components.Analyzers" Version="8.0.0-preview.3.23177.8"/>
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="8.0.0-preview.3.23177.8"/>
<PackageReference Include="Microsoft.AspNetCore.Identity" Version="2.2.0"/>
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="8.0.0-preview.3.23177.8"/>
<PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="8.0.0-preview.3.23177.8"/>
<PackageReference Include="Blazorise.Bootstrap" Version="1.2.2" />
<PackageReference Include="Blazorise.Components" Version="1.2.2" />
<PackageReference Include="Blazorise.DataGrid" Version="1.2.2" />
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.2.2" />
<PackageReference Include="Blazorise.Icons.Material" Version="1.2.2" />
<PackageReference Include="Blazorise.LoadingIndicator" Version="1.2.2" />
<PackageReference Include="Blazorise.Material" Version="1.2.2" />
<PackageReference Include="Microsoft.AspNetCore.Components.Analyzers" Version="8.0.0-preview.3.23177.8" />
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="8.0.0-preview.3.23177.8" />
<PackageReference Include="Microsoft.AspNetCore.Identity" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="8.0.0-preview.3.23177.8" />
<PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="8.0.0-preview.3.23177.8" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.0-preview.3.23174.2">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.0-preview.3.23174.2"/>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.0-preview.3.23174.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="8.0.0-preview.3.23174.2">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.18.1"/>
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="8.0.0-preview.3.23206.5"/>
<PackageReference Include="MySql.EntityFrameworkCore" Version="7.0.0"/>
<PackageReference Include="MySqlConnector" Version="2.3.0-beta.2"/>
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="7.0.0"/>
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.18.1" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="8.0.0-preview.3.23206.5" />
<PackageReference Include="MySql.EntityFrameworkCore" Version="7.0.0" />
<PackageReference Include="MySqlConnector" Version="2.3.0-beta.2" />
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="7.0.0" />
</ItemGroup>
<ItemGroup>
@ -58,11 +58,11 @@
</ItemGroup>
<ItemGroup>
<None Include="wwwroot\img\agilentLogo.png"/>
<None Include="wwwroot\img\gremlin.jpg"/>
<None Include="wwwroot\img\gremlin.png"/>
<None Include="wwwroot\img\gremlin.xcf"/>
<None Include="wwwroot\img\signWoitschetzki.png"/>
<None Include="wwwroot\img\agilentLogo.png" />
<None Include="wwwroot\img\gremlin.jpg" />
<None Include="wwwroot\img\gremlin.png" />
<None Include="wwwroot\img\gremlin.xcf" />
<None Include="wwwroot\img\signWoitschetzki.png" />
</ItemGroup>
</Project>

@ -43,14 +43,14 @@ public partial class CustomDescriptions {
StateHasChanged();
}
private async Task OnRowInsertedAsync(SavedRowItem<CustomDescription, Dictionary<string, object>> customDescription) {
CustomDescription newCustomDescription = await ResolveCustomDescriptionAsync(customDescription.Item);
private static async Task OnRowInsertedAsync(SavedRowItem<CustomDescription, Dictionary<string, object>> customDescription) {
CustomDescription newCustomDescription = ResolveCustomDescriptionAsync(customDescription.Item);
int count = await GenericController.InsertAsync(newCustomDescription);
Console.WriteLine($"Inserted {count} properties for new custom description {newCustomDescription.ProductNumber}#{newCustomDescription.OptionNumber}: {newCustomDescription.Heading}");
}
private async Task OnRowUpdatedAsync(SavedRowItem<CustomDescription, Dictionary<string, object>> customDescription) {
CustomDescription newCustomDescription = await ResolveCustomDescriptionAsync(customDescription.Item);
private static async Task OnRowUpdatedAsync(SavedRowItem<CustomDescription, Dictionary<string, object>> customDescription) {
CustomDescription newCustomDescription = ResolveCustomDescriptionAsync(customDescription.Item);
int count = await GenericController.UpdateAsync(customDescription.Item);
Console.WriteLine($"Updated {count} properties for custom description {newCustomDescription.ProductNumber}#{newCustomDescription.OptionNumber}: {newCustomDescription.Heading}");
}
@ -60,7 +60,7 @@ public partial class CustomDescriptions {
Console.WriteLine($"Removed {count} properties and custom description {customDescription.ProductNumber}#{customDescription.OptionNumber}: {customDescription.Heading}");
}
private static async Task<CustomDescription> ResolveCustomDescriptionAsync(CustomDescription newCustomDescription) {
private static CustomDescription ResolveCustomDescriptionAsync(CustomDescription newCustomDescription) {
// IList<Product> products = await GenericController.GetAllAsync<Product>(p => p.ProductNumber == newCustomDescription.ProductNumber);
// if (products is not null && products.Count > 0)
// newCustomDescription.ProductId = products[0].ProductId;

@ -1,9 +1,7 @@
@page "/Quotes/QuoteIndex"
@using Gremlin_BlazorServer.Services
@using Gremlin_BlazorServer.Data.EntityClasses
@using System.Globalization
@inject GenericController GenericController
@inject NavigationManager NavigationManager
<AuthorizeView>
@ -17,10 +15,19 @@
<Paragraph>
<Button Color="Color.Primary" Clicked="@OnCreateNewQuote">Create New Quote</Button>
@if (quotes != null) {
<DataGrid TItem="Quote" Data="@quotes" SelectedRow="@selectedQuote" SelectedRowChanged="@OnSelectedQuoteChanged" ShowPager Bordered Hoverable Sortable Filterable Striped Responsive>
<DataGrid TItem="Quote"
Data="@quotes"
SelectedRow="@selectedQuote"
SelectedRowChanged="@OnSelectedQuoteChanged"
Sortable
SortMode="DataGridSortMode.Multiple"
ShowPager Bordered Hoverable Filterable Striped Responsive>
<DataGridCommandColumn/>
<DataGridColumn Field="@nameof(Quote.QuoteId)" Caption="QuoteId" Filterable Sortable/>
<DataGridColumn Field="@nameof(Quote.QuoteId)" Caption="QuoteId" Filterable Sortable SortDirection="SortDirection.Descending"/>
<DataGridColumn Field="@nameof(Quote.QuotationNumber)" Caption="QuotationNumber" Filterable Sortable/>
<DataGridColumn Field="@nameof(Quote.RecipientId)" Caption="RecipientId" Filterable Sortable/>
<DataGridColumn Field="@nameof(Quote.SalesRepId)" Caption="SalesRepId" Filterable Sortable/>
<DataGridColumn Field="@nameof(Quote.Description)" Caption="Description" 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/>
@ -79,7 +86,7 @@
</Field>
</Column>
@if (selectedQuote.Recipient != null && selectedQuote.Recipient.Account != null) {
@if (selectedQuote.Recipient is {Account: not null }) {
<Column ColumnSize="ColumnSize.Is3">
<Field>
<FieldLabel ColumnSize="ColumnSize.Is4">FirstName</FieldLabel>

@ -66,17 +66,15 @@ Zweifaller Str. 120
\end{tabular}
\vspace{1cm}\par
Sehr geehrter Herr Weber,\par
nachfolgend erhalten Sie Ihr gewünschtes Angebot über ein(e) 7010C.\\
nachfolgend erhalten Sie Ihr gewünschtes Angebot über ein(e) 5977C.\\
Es umfasst im Einzelnen:
\begin{itemize}
\item Kollisionszelle (\#1)
\item Installationsvorbereitung (\#2)
\item 7010C GC QQQ (\#3)
\item 5977C MSD mit HES (\#1)
\begin{itemize}
\item Ölfreie Vorpumpe IDP-10 (\#4)
\item Konfig für 8890 (\#5)
\item GC/MSD HES zum Anschluss an ein 8890 GC (\#2)
\item Ölfreie Vorpumpe IDP3 (\#3)
\end{itemize}
\item Zusätzliche Installationszeit (\#6)
\item Zusätzliche Installationszeit (\#4)
\end{itemize}
Für Rückfragen und Änderungswünsche stehe ich Ihnen gerne zur Verfügung.\par
Mit freundlichen Grüßen\\
@ -87,12 +85,10 @@ Mit freundlichen Grüßen\\
\begin{longtable}
{| cp{0.595\textwidth} crr |} \hline
\textbf{\#} & \textbf{Produktbeschreibung} (Produktnummer) & \textbf{Menge} & \textbf{Discount} & \textbf{Preis}\\ \hline \endhead
1 &\textbf{Kollisionszelle} (G3479A)\newline Kollisionszelle für QQQ- und QToF-Massenspektrometer.\newline Listenpreis: \SI{4371}{\sieuro}&1&\SI{45}{\%}&\SI{2404,05}{\sieuro}\\
2 &\textbf{Installationsvorbereitung} (G3391A)\newline Paket zur Installationsvorbereitung für MSDs.\newline Listenpreis: \SI{54}{\sieuro}&1&\SI{45}{\%}&\SI{29,7}{\sieuro}\\
3 &\textbf{7010C GC QQQ} (G7012CA)\newline 7010C Quadrupol MS/MS-EI-Paket.\newline Inkl. High Efficiency-EI-Quelle, MassHunter-Software, PC, 1 Jahr telefonischer Software-Support, Installation, Einweisung und 3-tägigem Anwendertraining in Waldbronn.\newline Listenpreis: \SI{284548}{\sieuro}&1&\SI{45}{\%}&\SI{156501,4}{\sieuro}\\
4 &\textbf{Ölfreie Vorpumpe IDP-10} (G7012CA\#999)\newline IDP-10\newline Listenpreis: \SI{4001}{\sieuro}&1&\SI{99,99999}{\%}&\SI{0}{\sieuro}\\
5 &\textbf{Konfig für 8890} (G7012CA\#245)\newline \newline Listenpreis: \SI{-2484}{\sieuro}&1&\SI{45}{\%}&\SI{-1366,2}{\sieuro}\\
6 &\textbf{Zusätzliche Installationszeit} (H5949A)\newline Für .\newline Nur in Verbindung mit einer Geräteinstallation, stundenbasierter Preis.\newline Listenpreis: \SI{288}{\sieuro}&8&\SI{20}{\%}&\SI{1843,2}{\sieuro}\\
1 &\textbf{5977C MSD mit HES} (G7079CA)\newline 5977C High Efficiency Source Single Quad MSD Turbo EI-Paket. \newline Inkl. HES-EI-Quelle, MassHunter-Software mit zweiter Datenanalyselizenz, Workstation-PC und Softwarewartungsvertrag.\newline Listenpreis: \SI{131709}{\sieuro}&1&\SI{45}{\%}&\SI{72439,95}{\sieuro}\\
2 &\textbf{GC/MSD HES zum Anschluss an ein 8890 GC} (G7079CA\#245)\newline \newline Listenpreis: \SI{0}{\sieuro}&1&\SI{45}{\%}&\SI{0}{\sieuro}\\
3 &\textbf{Ölfreie Vorpumpe IDP3} (G7079CA\#999)\newline Standardvorpumpe durch ölfreie Scrollpumpe IDP3 ersetzen: leiser, vibrationsarm, ölfrei, einfach zu warten, günstigere Betriebskosten.\newline Listenpreis: \SI{2277}{\sieuro}&1&\SI{45}{\%}&\SI{1252,35}{\sieuro}\\
4 &\textbf{Zusätzliche Installationszeit} (H5949A)\newline Für .\newline Nur in Verbindung mit einer Geräteinstallation, stundenbasierter Preis.\newline Listenpreis: \SI{288}{\sieuro}&8&\SI{20}{\%}&\SI{1843,2}{\sieuro}\\
\hline
\end{longtable}
\end{center}
@ -102,9 +98,9 @@ Mit freundlichen Grüßen\\
\begin{tabular}{|rr|}
\hline
\textbf{Summe netto} & \SI{159412,15}{\sieuro}\\
\textbf{Versand und Bereitstellungskosten (3\%)} & \SI{2650}{\sieuro}\\
\textbf{Gesamtsumme netto} & \SI{162062,15}{\sieuro}\\
\textbf{Summe netto} & \SI{75535,50}{\sieuro}\\
\textbf{Versand und Bereitstellungskosten (3\%)} & \SI{2266,065}{\sieuro}\\
\textbf{Gesamtsumme netto} & \SI{77801,565}{\sieuro}\\
\hline
\end{tabular}

@ -0,0 +1,5 @@
# Part Number Opt PL Description Qty Price EUR Breaks EUR Uplift % Total Discount % Net EUR Total EUR Sales Discount YA9% Contractual Discount Y99% Promotion Discount Y07% Demo Discount Y04% PH Code PH Description YMax
1 G7079CA BZ 5977C HES MSD Turbo EI-Paket 1 131709 0 0 45 72439.95 72439.95 45 0 0 0 ISG310G310 GCMS SQ Bundle
2 G7079CA 245 BZ GC/MSD HES FUER 8890 GC 1 0 0 0 45 0 0 45 0 0 0
3 G7079CA 999 BZ OELFREIE IDP3-SCROLLPUMPE ERSETZEN 1 2277 0 0 45 1252.35 1252.35 45 0 0 0
4 H5949A 74 Ergaenzende Inst., Arbeitsaufwand 1 Std. 8 288 0 0 20 230.4 1843.2 20 0 0 0 XG PrCatgry XG
1 # Part Number Opt PL Description Qty Price EUR Breaks EUR Uplift % Total Discount % Net EUR Total EUR Sales Discount YA9% Contractual Discount Y99% Promotion Discount Y07% Demo Discount Y04% PH Code PH Description YMax
2 1 G7079CA BZ 5977C HES MSD Turbo EI-Paket 1 131709 0 0 45 72439.95 72439.95 45 0 0 0 ISG310G310 GCMS SQ Bundle
3 2 G7079CA 245 BZ GC/MSD HES FUER 8890 GC 1 0 0 0 45 0 0 45 0 0 0
4 3 G7079CA 999 BZ OELFREIE IDP3-SCROLLPUMPE ERSETZEN 1 2277 0 0 45 1252.35 1252.35 45 0 0 0
5 4 H5949A 74 Ergaenzende Inst., Arbeitsaufwand 1 Std. 8 288 0 0 20 230.4 1843.2 20 0 0 0 XG PrCatgry XG

@ -1,7 +0,0 @@
# Part Number Opt PL Description Qty Price EUR Breaks EUR Uplift % Total Discount % Net EUR Total EUR Sales Discount YA9% Contractual Discount Y99% Promotion Discount Y07% Demo Discount Y04% PH Code PH Description YMax
1 G3479A AZ Kollisionszelle fuer MS/MS 1 4371 0 0 45 2404.05 2404.05 45 0 0 0 ISG100G190 GC Accessories
2 G3391A BZ Package zur Installationsvorbereitung 1 54 0 0 45 29.7 29.7 45 0 0 0 ISG300G390 MSD Accessories
3 G7012CA BZ 7010C Quadrupol-MS/MS EI-Paket 1 284548 0 0 45 156501.4 156501.4 45 0 0 0 ISG330G311 GCMS QQQ Bundle
4 G7012CA 999 BZ Trockenlaufende (Scroll-)Ersatzpumpe 1 4001 0 0 99.99999 0 0 99.99999 0 0 0
5 G7012CA 245 BZ MS fuer 8890 GC 1 -2484 0 0 45 -1366.2 -1366.2 45 0 0 0
6 H5949A 74 Ergaenzende Inst., Arbeitsaufwand 1 Std. 8 288 0 0 20 230.4 1843.2 20 0 0 0 XG PrCatgry XG
1 # Part Number Opt PL Description Qty Price EUR Breaks EUR Uplift % Total Discount % Net EUR Total EUR Sales Discount YA9% Contractual Discount Y99% Promotion Discount Y07% Demo Discount Y04% PH Code PH Description YMax
2 1 G3479A AZ Kollisionszelle fuer MS/MS 1 4371 0 0 45 2404.05 2404.05 45 0 0 0 ISG100G190 GC Accessories
3 2 G3391A BZ Package zur Installationsvorbereitung 1 54 0 0 45 29.7 29.7 45 0 0 0 ISG300G390 MSD Accessories
4 3 G7012CA BZ 7010C Quadrupol-MS/MS EI-Paket 1 284548 0 0 45 156501.4 156501.4 45 0 0 0 ISG330G311 GCMS QQQ Bundle
5 4 G7012CA 999 BZ Trockenlaufende (Scroll-)Ersatzpumpe 1 4001 0 0 99.99999 0 0 99.99999 0 0 0
6 5 G7012CA 245 BZ MS fuer 8890 GC 1 -2484 0 0 45 -1366.2 -1366.2 45 0 0 0
7 6 H5949A 74 Ergaenzende Inst., Arbeitsaufwand 1 Std. 8 288 0 0 20 230.4 1843.2 20 0 0 0 XG PrCatgry XG

@ -17,7 +17,7 @@
\usepackage{{enumitem}}
\usepackage{{fp, xstring, spreadtab, numprint}}
\DeclareSIUnit{{\sieuro}}{{\mbox{{\euro}}}}
\rohead{DE-83PE89-623-244}
\rohead{DE-83PE89-623-247}
\cfoot{Seite \thepage/\pageref{LastPage}}
\sisetup{round-integer-to-decimal,round-precision=2,round-mode=places}
\newcommand{\produkttitel}[1]{\textsc{#1}}
@ -43,7 +43,7 @@
\multirow{4}{*}{
\begin{tabular}{|ll|}
\hline
\textbf{Angebotsnummer:}&DE-83PE89-623-244\\
\textbf{Angebotsnummer:}&DE-83PE89-623-247\\
Angebotdatum:&\today\\
Angebotsgültigkeit:&60 Tage\\\textbf{Ansprechpartner:}&Sascha Woitschetzki\\
Telefon: &+49 208 74129134\\
@ -69,12 +69,12 @@ Sehr geehrter Herr Weber,\par
nachfolgend erhalten Sie Ihr gewünschtes Angebot über ein(e) 7010C.\\
Es umfasst im Einzelnen:
\begin{itemize}
\item Kollisionszelle fuer MS/MS (\#1)
\item Kollisionszelle (\#1)
\item Installationsvorbereitung (\#2)
\item 7010C Quadrupol-MS/MS EI-Paket (\#3)
\item 7010C GC QQQ (\#3)
\begin{itemize}
\item Trockenlaufende (Scroll-)Ersatzpumpe (\#4)
\item MS fuer 8890 GC (\#5)
\item Ölfreie Vorpumpe IDP-10 (\#4)
\item Konfig für 8890 (\#5)
\end{itemize}
\item Zusätzliche Installationszeit (\#6)
\end{itemize}
@ -87,12 +87,12 @@ Mit freundlichen Grüßen\\
\begin{longtable}
{| cp{0.595\textwidth} crr |} \hline
\textbf{\#} & \textbf{Produktbeschreibung} (Produktnummer) & \textbf{Menge} & \textbf{Discount} & \textbf{Preis}\\ \hline \endhead
1 &\textbf{Kollisionszelle fuer MS/MS} (G3479A)\newline \newline Listenpreis: \SI{4371}{\sieuro}&1&\SI{45}{\%}&\SI{2404.05}{\sieuro}\\
2 &\textbf{Installationsvorbereitung} (G3391A)\newline Paket zur Installationsvorbereitung für MSDs.\newline Listenpreis: \SI{54}{\sieuro}&1&\SI{45}{\%}&\SI{29.7}{\sieuro}\\
3 &\textbf{7010C Quadrupol-MS/MS EI-Paket} (G7012CA)\newline \newline Listenpreis: \SI{284548}{\sieuro}&1&\SI{45}{\%}&\SI{156501.4}{\sieuro}\\
4 &\textbf{Trockenlaufende (Scroll-)Ersatzpumpe} (G7012CA\#999)\newline \newline Listenpreis: \SI{4001}{\sieuro}&1&\SI{99.99999}{\%}&\SI{0}{\sieuro}\\
5 &\textbf{MS fuer 8890 GC} (G7012CA\#245)\newline \newline Listenpreis: \SI{-2484}{\sieuro}&1&\SI{45}{\%}&\SI{-1366.2}{\sieuro}\\
6 &\textbf{Zusätzliche Installationszeit} (H5949A)\newline Für .\newline Nur in Verbindung mit einer Geräteinstallation, stundenbasierter Preis.\newline Listenpreis: \SI{288}{\sieuro}&8&\SI{20}{\%}&\SI{1843.2}{\sieuro}\\
1 &\textbf{Kollisionszelle} (G3479A)\newline Kollisionszelle für QQQ- und QToF-Massenspektrometer.\newline Listenpreis: \SI{4371}{\sieuro}&1&\SI{45}{\%}&\SI{2404,05}{\sieuro}\\
2 &\textbf{Installationsvorbereitung} (G3391A)\newline Paket zur Installationsvorbereitung für MSDs.\newline Listenpreis: \SI{54}{\sieuro}&1&\SI{45}{\%}&\SI{29,7}{\sieuro}\\
3 &\textbf{7010C GC QQQ} (G7012CA)\newline 7010C Quadrupol MS/MS-EI-Paket.\newline Inkl. High Efficiency-EI-Quelle, MassHunter-Software, PC, 1 Jahr telefonischer Software-Support, Installation, Einweisung und 3-tägigem Anwendertraining in Waldbronn.\newline Listenpreis: \SI{284548}{\sieuro}&1&\SI{45}{\%}&\SI{156501,4}{\sieuro}\\
4 &\textbf{Ölfreie Vorpumpe IDP-10} (G7012CA\#999)\newline IDP-10\newline Listenpreis: \SI{4001}{\sieuro}&1&\SI{99,99999}{\%}&\SI{0}{\sieuro}\\
5 &\textbf{Konfig für 8890} (G7012CA\#245)\newline \newline Listenpreis: \SI{-2484}{\sieuro}&1&\SI{45}{\%}&\SI{-1366,2}{\sieuro}\\
6 &\textbf{Zusätzliche Installationszeit} (H5949A)\newline Für .\newline Nur in Verbindung mit einer Geräteinstallation, stundenbasierter Preis.\newline Listenpreis: \SI{288}{\sieuro}&8&\SI{20}{\%}&\SI{1843,2}{\sieuro}\\
\hline
\end{longtable}
\end{center}
@ -102,9 +102,9 @@ Mit freundlichen Grüßen\\
\begin{tabular}{|rr|}
\hline
\textbf{Summe netto} & \SI{159412.15}{\sieuro}\\
\textbf{Versand und Bereitstellungskosten (3\%)} & \SI{3000}{\sieuro}\\
\textbf{Gesamtsumme netto} & \SI{162412.15}{\sieuro}\\
\textbf{Summe netto} & \SI{159412,15}{\sieuro}\\
\textbf{Versand und Bereitstellungskosten (3\%)} & \SI{2650}{\sieuro}\\
\textbf{Gesamtsumme netto} & \SI{162062,15}{\sieuro}\\
\hline
\end{tabular}

@ -0,0 +1,149 @@
\documentclass[a4paper,ngerman,parskip,10pt]{scrlttr2}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage[hidelinks]{hyperref}
\usepackage[left=2cm, right=2cm, top=2cm, bottom=2cm]{geometry}
\usepackage[table]{xcolor}
\usepackage[right]{{eurosym}}
\usepackage[locale=DE]{{siunitx}}
\usepackage{{scrlayer-scrpage}}
\usepackage{{lastpage}}
\usepackage{{graphicx}}
\usepackage{{multirow}}
\usepackage{{longtable}}
\usepackage{{enumitem}}
\usepackage{{fp, xstring, spreadtab, numprint}}
\DeclareSIUnit{{\sieuro}}{{\mbox{{\euro}}}}
\rohead{DE-83PE89-623-246}
\cfoot{Seite \thepage/\pageref{LastPage}}
\sisetup{round-integer-to-decimal,round-precision=2,round-mode=places}
\newcommand{\produkttitel}[1]{\textsc{#1}}
\renewcommand{\arraystretch}{1.2}
\definecolor{AgilentBlau}{HTML}{0085d5}
\setlist{noitemsep}
\begin{document}
\begin{tabular}{p{0.4\hsize}p{0.5\hsize}}
\multirow{4}{*}{\includegraphics[width=0.9\hsize]{agilentLogo.png}}
&\normalsize{Agilent Technologies Deutschland GmbH}\\
&\normalsize{Life Sciences \& Chemical Analysis}\\
&\normalsize{Hewlett-Packard-Str. 8}\\
&\normalsize{D-76337 Waldbronn}
\end{tabular}
\par
\begin{flushright}
\colorbox{AgilentBlau}{\textcolor{white}{\textsc{\Huge{Angebot}}}}
\end{flushright}
\begin{tabular}{p{0.4\hsize}p{0.6\hsize}}
&
\multirow{4}{*}{
\begin{tabular}{|ll|}
\hline
\textbf{Angebotsnummer:}&DE-83PE89-623-246\\
Angebotdatum:&\today\\
Angebotsgültigkeit:&60 Tage\\\textbf{Ansprechpartner:}&Sascha Woitschetzki\\
Telefon: &+49 208 74129134\\
Mobil:&+49 163 9681131\\
E-Mail:&\href{mailto:sascha.woitschetzki@non.agilent.com}{sascha.woitschetzki@non.agilent.com}\\
\textbf{Auftragsannahme:}&\href{mailto:salesservices\_germany@agilent.com}{salesservices\_germany@agilent.com}\\
\hline
\end{tabular}
}\\
Herr Rolf Weber
\\
DALLI-WERKE GmbH \& Co KG
\\
Zweifaller Str. 120
\\
52224 Stolberg
\\
&\\
&\\
\end{tabular}
\vspace{1cm}\par
Sehr geehrter Herr Weber,\par
nachfolgend erhalten Sie Ihr gewünschtes Angebot über ein(e) 8890+7010C.\\
Es umfasst im Einzelnen:
\begin{itemize}
\item Autosampler mit 16 Probenplätzen (\#1)
\item 8890 Gaschromatograph (\#2)
\begin{itemize}
\item S/SL-Einlass (\#3)
\item Anschluss für MSD (\#4)
\item Anschluss für MSD (\#5)
\item PSD Modul (\#6)
\item Kollisionszelle (\#7)
\item Gespülter Verbinder (\#8)
\end{itemize}
\item Installationsvorbereitung (\#9)
\item 7010C GC QQQ (\#10)
\begin{itemize}
\item Ölfreie Vorpumpe IDP-10 (\#11)
\item Konfig für 8890 (\#12)
\end{itemize}
\end{itemize}
Für Rückfragen und Änderungswünsche stehe ich Ihnen gerne zur Verfügung.\par
Mit freundlichen Grüßen\\
\includegraphics[width = 5cm]{signWoitschetzki.png}
\vspace{1cm} \\
\begin{center}
\begin{longtable}
{| cp{0.595\textwidth} crr |} \hline
\textbf{\#} & \textbf{Produktbeschreibung} (Produktnummer) & \textbf{Menge} & \textbf{Discount} & \textbf{Preis}\\ \hline \endhead
1 &\textbf{Automatischer Probengeber 7693A} (G4513A)\newline Zur Injektion flüssiger Proben, 16 Probenplätze, Befestigungsstift, Parkhalterung für den GC, 10 µl-Spritze und Lösemittelflaschen.\newline Listenpreis: \SI{9476}{\sieuro}&2&\SI{45}{\%}&\SI{10423,6}{\sieuro}\\
2 &\textbf{8890 Gaschromatograph} (G3540A)\newline Agilent 8890 GC\newline Ofen bis 450 °C, Kühlen von 450 auf 50 °C in unter 4 Min., bis zu 2 Inlets und 4 Detektoren. Elektronische Druck- und Flusskontrolle (EPC; 0-99 psi, 0.001 psi Genauigkeit), retention time locking (RTL).\newline Listenpreis: \SI{20258}{\sieuro}&1&\SI{45}{\%}&\SI{11141,9}{\sieuro}\\
3 &\textbf{S/SL-Einlass} (G3540A\#112)\newline Split/Splitless-Einlasssystem für Kapillarsäulen mit elektronischer Drucksteuerung (EPC), max. 100 psi.\newline Listenpreis: \SI{5144}{\sieuro}&2&\SI{45}{\%}&\SI{5658,4}{\sieuro}\\
4 &\textbf{Anschluss für MSD} (G3540A\#201)\newline Linksseitig, Frontposition.\newline Listenpreis: \SI{2494}{\sieuro}&1&\SI{45}{\%}&\SI{1371,7}{\sieuro}\\
5 &\textbf{Anschluss für MSD} (G3540A\#201)\newline Linksseitig, Frontposition.\newline Listenpreis: \SI{2494}{\sieuro}&1&\SI{45}{\%}&\SI{1371,7}{\sieuro}\\
6 &\textbf{PSD Modul} (G3540A\#310)\newline Pressure Switching Device für CFT Pneumatic Switching. Mit aktiver Bleed-Line für eine präzise Steuerung kleiner Gasflüsse und Reduzierung des Gasverbrauchs bei hohen Flüssen.\newline Listenpreis: \SI{3419}{\sieuro}&1&\SI{45}{\%}&\SI{1880,45}{\sieuro}\\
7 &\textbf{Kollisionszelle} (G3540A\#313)\newline Kollisionszelle für QQQ- und QToF-Massenspektrometer.\newline Listenpreis: \SI{3419}{\sieuro}&1&\SI{45}{\%}&\SI{1880,45}{\sieuro}\\
8 &\textbf{Gespülter Verbinder} (G3540A\#880)\newline Purged Union, Backflush Ready (vorinstalliert ab Werk).\newline Listenpreis: \SI{2456}{\sieuro}&1&\SI{45}{\%}&\SI{1350,8}{\sieuro}\\
9 &\textbf{Installationsvorbereitung} (G3391A)\newline Paket zur Installationsvorbereitung für MSDs.\newline Listenpreis: \SI{54}{\sieuro}&1&\SI{45}{\%}&\SI{29,7}{\sieuro}\\
10 &\textbf{7010C GC QQQ} (G7012CA)\newline 7010C Quadrupol MS/MS-EI-Paket.\newline Inkl. High Efficiency-EI-Quelle, MassHunter-Software, PC, 1 Jahr telefonischer Software-Support, Installation, Einweisung und 3-tägigem Anwendertraining in Waldbronn.\newline Listenpreis: \SI{284548}{\sieuro}&1&\SI{45}{\%}&\SI{156501,4}{\sieuro}\\
11 &\textbf{Ölfreie Vorpumpe IDP-10} (G7012CA\#999)\newline IDP-10\newline Listenpreis: \SI{4001}{\sieuro}&1&\SI{99,99999}{\%}&\SI{0}{\sieuro}\\
12 &\textbf{Konfig für 8890} (G7012CA\#245)\newline \newline Listenpreis: \SI{-2484}{\sieuro}&1&\SI{45}{\%}&\SI{-1366,2}{\sieuro}\\
\hline
\end{longtable}
\end{center}
\vspace{-2cm}
\begin{flushright}
\begin{tabular}{|rr|}
\hline
\textbf{Summe netto} & \SI{190243,90}{\sieuro}\\
\textbf{Versand und Bereitstellungskosten (3\%)} & \SI{2650}{\sieuro}\\
\textbf{Gesamtsumme netto} & \SI{192893,90}{\sieuro}\\
\hline
\end{tabular}
\end{flushright}
Der Betrag versteht sich zzgl. der gesetzlichen Steuern.\\
Diese werden im Rechnungszeitraum auf der Rechnung gesondert ausgewiesen.\\
Zahlungsbedingungen: 30 Tage netto ab Rechnungsdatum.\\
Incoterm (2010) für Lieferungen innerhalb Deutschlands: DDP.
\begin{small}
\textbf{Gewährleistung:}\\
Die Gewährleistung für Zubehör und Ersatzteilprodukte und für Analytik-Hardwareprodukte beträgt 12 Monate.
\textbf{Hinweis:}\\
Für den Verkauf der in diesem Angebot aufgeführten Standard-Produkte und -Services gelten die aktuellen \emph{Agilent Geschäftsbedingungen} und alle sonstigen anwendbaren Zusatzbedingungen sowie zusätzliche Bedingungen, soweit darauf hier Bezug genommen wird. Soweit Produkte oder Services nach speziellen Kundenanforderungen hergestellt, konfiguriert oder angepasst werden, gelten für den Verkauf aller in diesem Angebot aufgeführten Produkte und Services die aktuellen \emph{Agilent Geschäftsbedingungen für kundenspezifische Produkte} und alle sonstigen anwendbaren Zusatzbedingungen sowie zusätzliche Bedingungen, soweit darauf hier Bezug genommen wird. Eine Kopie der maßgeblichen Bedingungen ist entweder beigefügt oder wurde Ihnen bereits zur Verfügung gestellt. Sollten Sie keine Kopie erhalten haben oder eine weitere Kopie benötigen, setzen Sie sich bitte mit uns in Verbindung. Soweit Sie mit Agilent eine gesonderte Vereinbarung getroffen haben, die den Verkauf der in diesem Angebot aufgeführten Produkte und Services umfasst, sind die Bestimmungen dieser Vereinbarung anwendbar. Abweichende oder ergänzende Vereinbarungen, insbesondere widersprechende Geschäftsbedingungen, sind nur gültig, wenn sie ausdrücklich schriftlich vereinbart worden sind. Die angegebenen Daten zur Verfügbarkeit von Produkten und Services sind vorläufig. Die tatsächlichen Lieferzeiten bzw. Lieferperioden werden Ihnen bei Auftragsbestätigung mitgeteilt. Waren, Technologien oder Software, die aus den Vereinigten Staaten von Amerika (\emph{USA}) oder anderen exportierenden Ländern ausgeführt werden, unterliegen den Ausfuhrbestimmungen der USA sowie anderer Rechtsordnungen. Bei Ausfuhr ist der Kunde dafür verantwortlich, dass die anwendbaren Ausfuhrbestimmungen eingehalten werden.
\end{small}
\begin{scriptsize}
Agilent Technologies Deutschland GmbH, Hewlett-Packard-Str. 8, D-76337 Waldbronn\\
Telefon +49 (0)7243-602-0\\
USt.-IdNr.: DE812729296, WEEE-Reg.-Nr. DE 86631749\\
Sitz der Gesellschaft: Waldbronn Amtsgericht Mannheim, HRB 723782\\
Geschäftsführer: Dr. Andreas Kistner (Vorsitzender der Geschäftsführung), Armin Jehle, Norbert Sabatzki, Dr. Knut Wintergerst\\
\href{www.agilent.com}{www.agilent.com}
\end{scriptsize}
\end{document}

@ -0,0 +1,13 @@
# Part Number Opt PL Description Qty Price EUR Breaks EUR Uplift % Total Discount % Net EUR Total EUR Sales Discount YA9% Contractual Discount Y99% Promotion Discount Y07% Demo Discount Y04% PH Code PH Description YMax
1 G4513A AZ 7693A automatischer Probengeber 2 9476 0 0 45 5211.8 10423.6 45 0 0 0 ISG100G141 Autosampler
2 G3540A AZ Agilent 8890 GC-System Kundenspezifisch 1 20258 0 0 45 11141.9 11141.9 45 0 0 0 ISG100G111 6890 GC system
3 G3540A 112 AZ 8890 100 psi Split/Splitless-Einlasszub. 2 5144 0 0 45 2829.2 5658.4 45 0 0 0
4 G3540A 201 AZ MSD-Interface 1 2494 0 0 45 1371.7 1371.7 45 0 0 0
5 G3540A 201 AZ MSD-Interface 1 2494 0 0 45 1371.7 1371.7 45 0 0 0
6 G3540A 310 AZ PSD-Modul f. CFT Pneum. Umschaltung 1 3419 0 0 45 1880.45 1880.45 45 0 0 0
7 G3540A 313 AZ Kollisionszelle fuer MS/MS 1 3419 0 0 45 1880.45 1880.45 45 0 0 0
8 G3540A 880 AZ CFT-Verbindungsstueck, gespuelt (mittig) 1 2456 0 0 45 1350.8 1350.8 45 0 0 0
9 G3391A BZ Package zur Installationsvorbereitung 1 54 0 0 45 29.7 29.7 45 0 0 0 ISG300G390 MSD Accessories
10 G7012CA BZ 7010C Quadrupol-MS/MS EI-Paket 1 284548 0 0 45 156501.4 156501.4 45 0 0 0 ISG330G311 GCMS QQQ Bundle
11 G7012CA 999 BZ Trockenlaufende (Scroll-)Ersatzpumpe 1 4001 0 0 99.99999 0 0 99.99999 0 0 0
12 G7012CA 245 BZ MS fuer 8890 GC 1 -2484 0 0 45 -1366.2 -1366.2 45 0 0 0
1 # Part Number Opt PL Description Qty Price EUR Breaks EUR Uplift % Total Discount % Net EUR Total EUR Sales Discount YA9% Contractual Discount Y99% Promotion Discount Y07% Demo Discount Y04% PH Code PH Description YMax
2 1 G4513A AZ 7693A automatischer Probengeber 2 9476 0 0 45 5211.8 10423.6 45 0 0 0 ISG100G141 Autosampler
3 2 G3540A AZ Agilent 8890 GC-System Kundenspezifisch 1 20258 0 0 45 11141.9 11141.9 45 0 0 0 ISG100G111 6890 GC system
4 3 G3540A 112 AZ 8890 100 psi Split/Splitless-Einlasszub. 2 5144 0 0 45 2829.2 5658.4 45 0 0 0
5 4 G3540A 201 AZ MSD-Interface 1 2494 0 0 45 1371.7 1371.7 45 0 0 0
6 5 G3540A 201 AZ MSD-Interface 1 2494 0 0 45 1371.7 1371.7 45 0 0 0
7 6 G3540A 310 AZ PSD-Modul f. CFT Pneum. Umschaltung 1 3419 0 0 45 1880.45 1880.45 45 0 0 0
8 7 G3540A 313 AZ Kollisionszelle fuer MS/MS 1 3419 0 0 45 1880.45 1880.45 45 0 0 0
9 8 G3540A 880 AZ CFT-Verbindungsstueck, gespuelt (mittig) 1 2456 0 0 45 1350.8 1350.8 45 0 0 0
10 9 G3391A BZ Package zur Installationsvorbereitung 1 54 0 0 45 29.7 29.7 45 0 0 0 ISG300G390 MSD Accessories
11 10 G7012CA BZ 7010C Quadrupol-MS/MS EI-Paket 1 284548 0 0 45 156501.4 156501.4 45 0 0 0 ISG330G311 GCMS QQQ Bundle
12 11 G7012CA 999 BZ Trockenlaufende (Scroll-)Ersatzpumpe 1 4001 0 0 99.99999 0 0 99.99999 0 0 0
13 12 G7012CA 245 BZ MS fuer 8890 GC 1 -2484 0 0 45 -1366.2 -1366.2 45 0 0 0