Added sheet / logic part 10,11 HAZ arrival/departure

This commit is contained in:
Daniel Schick 2025-01-29 20:36:32 +01:00
parent 082266f47c
commit 40b9fff121
8 changed files with 1248 additions and 19 deletions

View File

@ -185,6 +185,9 @@ namespace ENI2
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.text7CrewDeparture, MessageGroupControlType = typeof(CrewDepartureControl), ImagePath = "Resources/departure_worker.png" }); this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.text7CrewDeparture, MessageGroupControlType = typeof(CrewDepartureControl), ImagePath = "Resources/departure_worker.png" });
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.text8PassengerArrival, MessageGroupControlType = typeof(PassengerPreArrivalControl), ImagePath = "Resources/arrival_user.png" }); this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.text8PassengerArrival, MessageGroupControlType = typeof(PassengerPreArrivalControl), ImagePath = "Resources/arrival_user.png" });
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.text9PassengerDeparture, MessageGroupControlType = typeof(PassengerDepartureControl), ImagePath = "Resources/departure_user.png" }); this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.text9PassengerDeparture, MessageGroupControlType = typeof(PassengerDepartureControl), ImagePath = "Resources/departure_user.png" });
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.text10DangerousCargoArrival, MessageGroupControlType = typeof(DangerousCargoControl), ImagePath = "Resources/sign_warning_radiation.png" });
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.text11DangerousCargoDeparture, MessageGroupControlType = typeof(DangerousCargoControl), ImagePath = "Resources/sign_warning_radiation.png" });
} }
this.listBoxMessages.ItemsSource = this._listBoxList; this.listBoxMessages.ItemsSource = this._listBoxList;
@ -267,6 +270,8 @@ namespace ENI2
// Spezial-Balkon für die Wiederverwendung von HAZD / HAZA als ein Control (es tut mir leid :D) // Spezial-Balkon für die Wiederverwendung von HAZD / HAZA als ein Control (es tut mir leid :D)
if (mg.MessageGroupName.Equals(Properties.Resources.textDGDeparture)) if (mg.MessageGroupName.Equals(Properties.Resources.textDGDeparture))
((DangerousGoodsDetailControl)detailControl).IsDeparture = true; ((DangerousGoodsDetailControl)detailControl).IsDeparture = true;
if (mg.MessageGroupName.Equals(Properties.Resources.text11DangerousCargoDeparture))
((DangerousCargoControl)detailControl).IsDeparture = true;
detailControl.Core = Core; detailControl.Core = Core;
detailControl.Messages = _messages; detailControl.Messages = _messages;
detailControl.LockedByOtherUser = this.LockedByOtherUser; detailControl.LockedByOtherUser = this.LockedByOtherUser;

View File

@ -326,23 +326,6 @@ namespace ENI2.DetailViewControls
#endregion #endregion
/// <summary>
/// Beim Hinzufügen der allerersten Gefahrgutposition sollen die Flags vorbelegt werden
/// </summary>
void SetHAZGlobalFlags()
{
HAZ haz = this.IsDeparture ? this.hazd : this.haza;
int totalCount = haz.MARPOLPositions.Count + haz.IMDGPositions.Count + haz.IGCPositions.Count + haz.IBCPositions.Count + haz.IMSBCPositions.Count;
if(totalCount == 1)
{
if (!(this.checkBoxDangerousGoodsOnBoard.IsChecked ?? false)) this.checkBoxDangerousGoodsOnBoard.IsChecked = true;
if (this.checkBoxMoUBaltic.IsChecked ?? true) this.checkBoxMoUBaltic.IsChecked = false;
haz.NoDPGOnBoardOnArrival = false;
haz.MOUBaltic = false;
}
}
#region MARPOL datagrid handlers #region MARPOL datagrid handlers
private void DataGridMARPOLItems_DeleteRequested(DatabaseEntity obj) private void DataGridMARPOLItems_DeleteRequested(DatabaseEntity obj)
@ -898,5 +881,26 @@ namespace ENI2.DetailViewControls
#endregion #endregion
#region private methods
/// <summary>
/// Beim Hinzufügen der allerersten Gefahrgutposition sollen die Flags vorbelegt werden
/// </summary>
void SetHAZGlobalFlags()
{
HAZ haz = this.IsDeparture ? this.hazd : this.haza;
int totalCount = haz.MARPOLPositions.Count + haz.IMDGPositions.Count + haz.IGCPositions.Count + haz.IBCPositions.Count + haz.IMSBCPositions.Count;
if (totalCount == 1)
{
if (!(this.checkBoxDangerousGoodsOnBoard.IsChecked ?? false)) this.checkBoxDangerousGoodsOnBoard.IsChecked = true;
if (this.checkBoxMoUBaltic.IsChecked ?? true) this.checkBoxMoUBaltic.IsChecked = false;
haz.NoDPGOnBoardOnArrival = false;
haz.MOUBaltic = false;
}
}
#endregion
} }
} }

View File

@ -499,6 +499,9 @@
<Compile Include="SheetDisplayControls\CrewPreArrivalControl.xaml.cs"> <Compile Include="SheetDisplayControls\CrewPreArrivalControl.xaml.cs">
<DependentUpon>CrewPreArrivalControl.xaml</DependentUpon> <DependentUpon>CrewPreArrivalControl.xaml</DependentUpon>
</Compile> </Compile>
<Compile Include="SheetDisplayControls\DangerousCargoControl.xaml.cs">
<DependentUpon>DangerousCargoControl.xaml</DependentUpon>
</Compile>
<Compile Include="SheetDisplayControls\PassengerDepartureControl.xaml.cs"> <Compile Include="SheetDisplayControls\PassengerDepartureControl.xaml.cs">
<DependentUpon>PassengerDepartureControl.xaml</DependentUpon> <DependentUpon>PassengerDepartureControl.xaml</DependentUpon>
</Compile> </Compile>
@ -838,6 +841,10 @@
<SubType>Designer</SubType> <SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
</Page> </Page>
<Page Include="SheetDisplayControls\DangerousCargoControl.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="SheetDisplayControls\PassengerDepartureControl.xaml"> <Page Include="SheetDisplayControls\PassengerDepartureControl.xaml">
<SubType>Designer</SubType> <SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>

View File

@ -830,6 +830,69 @@ namespace ENI2.Properties {
} }
} }
/// <summary>
/// Looks up a localized string similar to 10.3 IGC data (on arrival), if applicable.
/// </summary>
public static string text10_3IGCData {
get {
return ResourceManager.GetString("text10.3IGCData", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 10.1 General.
/// </summary>
public static string text101General {
get {
return ResourceManager.GetString("text101General", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 10.2 IBC data (on arrival), if applicable.
/// </summary>
public static string text102IBCData {
get {
return ResourceManager.GetString("text102IBCData", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 10.3 IGC data (on arrival), if applicable.
/// </summary>
public static string text103IGCData {
get {
return ResourceManager.GetString("text103IGCData", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 10.4 IMSBC data (on arrival), if applicable.
/// </summary>
public static string text104IMSBCData {
get {
return ResourceManager.GetString("text104IMSBCData", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 10.5 MARPOL I data (on arrival), if applicable.
/// </summary>
public static string text105MARPOLData {
get {
return ResourceManager.GetString("text105MARPOLData", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 10.6 IMDG data (on arrival), if applicable.
/// </summary>
public static string text106IMDGData {
get {
return ResourceManager.GetString("text106IMDGData", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to 10. Dangerous cargo data on arrival. /// Looks up a localized string similar to 10. Dangerous cargo data on arrival.
/// </summary> /// </summary>
@ -848,6 +911,15 @@ namespace ENI2.Properties {
} }
} }
/// <summary>
/// Looks up a localized string similar to 11.1 General.
/// </summary>
public static string text111General {
get {
return ResourceManager.GetString("text111General", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to 1.11 Port of itinerary. /// Looks up a localized string similar to 1.11 Port of itinerary.
/// </summary> /// </summary>
@ -857,6 +929,51 @@ namespace ENI2.Properties {
} }
} }
/// <summary>
/// Looks up a localized string similar to 11.2 IBC data (on departure), if applicable.
/// </summary>
public static string text112IBCData {
get {
return ResourceManager.GetString("text112IBCData", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 11.3 IGC data (on departure), if applicable.
/// </summary>
public static string text113IGCData {
get {
return ResourceManager.GetString("text113IGCData", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 11.4 IMSBC data (on departure), if applicable.
/// </summary>
public static string text114IMSBCData {
get {
return ResourceManager.GetString("text114IMSBCData", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 11.5 MARPOL I data (on departure), if applicable.
/// </summary>
public static string text115MARPOLData {
get {
return ResourceManager.GetString("text115MARPOLData", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 11.6 IMDG data (on departure), if applicable.
/// </summary>
public static string text116IMDGData {
get {
return ResourceManager.GetString("text116IMDGData", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to 11. Dangerous cargo data on departure. /// Looks up a localized string similar to 11. Dangerous cargo data on departure.
/// </summary> /// </summary>
@ -2513,6 +2630,24 @@ namespace ENI2.Properties {
} }
} }
/// <summary>
/// Looks up a localized string similar to DG manifest contact - family name.
/// </summary>
public static string textDGContactFamilyName {
get {
return ResourceManager.GetString("textDGContactFamilyName", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to DG manifest contact - phone.
/// </summary>
public static string textDGContactPhone {
get {
return ResourceManager.GetString("textDGContactPhone", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to Dangerous goods departure. /// Looks up a localized string similar to Dangerous goods departure.
/// </summary> /// </summary>

View File

@ -2113,4 +2113,49 @@
<data name="text13WasteReceipts" xml:space="preserve"> <data name="text13WasteReceipts" xml:space="preserve">
<value>13. Waste receipts</value> <value>13. Waste receipts</value>
</data> </data>
<data name="textDGContactFamilyName" xml:space="preserve">
<value>DG manifest contact - family name</value>
</data>
<data name="textDGContactPhone" xml:space="preserve">
<value>DG manifest contact - phone</value>
</data>
<data name="text102IBCData" xml:space="preserve">
<value>10.2 IBC data (on arrival), if applicable</value>
</data>
<data name="text10.3IGCData" xml:space="preserve">
<value>10.3 IGC data (on arrival), if applicable</value>
</data>
<data name="text104IMSBCData" xml:space="preserve">
<value>10.4 IMSBC data (on arrival), if applicable</value>
</data>
<data name="text103IGCData" xml:space="preserve">
<value>10.3 IGC data (on arrival), if applicable</value>
</data>
<data name="text105MARPOLData" xml:space="preserve">
<value>10.5 MARPOL I data (on arrival), if applicable</value>
</data>
<data name="text106IMDGData" xml:space="preserve">
<value>10.6 IMDG data (on arrival), if applicable</value>
</data>
<data name="text101General" xml:space="preserve">
<value>10.1 General</value>
</data>
<data name="text111General" xml:space="preserve">
<value>11.1 General</value>
</data>
<data name="text112IBCData" xml:space="preserve">
<value>11.2 IBC data (on departure), if applicable</value>
</data>
<data name="text113IGCData" xml:space="preserve">
<value>11.3 IGC data (on departure), if applicable</value>
</data>
<data name="text114IMSBCData" xml:space="preserve">
<value>11.4 IMSBC data (on departure), if applicable</value>
</data>
<data name="text115MARPOLData" xml:space="preserve">
<value>11.5 MARPOL I data (on departure), if applicable</value>
</data>
<data name="text116IMDGData" xml:space="preserve">
<value>11.6 IMDG data (on departure), if applicable</value>
</data>
</root> </root>

View File

@ -0,0 +1,193 @@
<src:DetailBaseControl xmlns:src="clr-namespace:ENI2"
x:Class="ENI2.SheetDisplayControls.DangerousCargoControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:p="clr-namespace:ENI2.Properties"
xmlns:enictrl="clr-namespace:ENI2.Controls"
xmlns:util="clr-namespace:ENI2.Util"
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
xmlns:local="clr-namespace:ENI2.SheetDisplayControls"
mc:Ignorable="d"
d:DesignHeight="1550" d:DesignWidth="800">
<GroupBox Name="portCallGroupBox" Header="{x:Static p:Resources.text10DangerousCargoArrival}">
<ScrollViewer PreviewMouseWheel="ScrollViewer_PreviewMouseWheel">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width=".35*"/>
<ColumnDefinition Width=".65*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="36" />
<RowDefinition Height="56" />
<RowDefinition Height="28" />
<RowDefinition Height="36" />
<RowDefinition Height="240" />
<RowDefinition Height="36" />
<RowDefinition Height="240" />
<RowDefinition Height="36" />
<RowDefinition Height="240" />
<RowDefinition Height="36" />
<RowDefinition Height="240" />
<RowDefinition Height="36" />
<RowDefinition Height="240" />
</Grid.RowDefinitions>
<TextBlock x:Name="textBlock101" FontSize="18" VerticalAlignment="Bottom" Text="{x:Static p:Resources.text101General}" Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="2"/>
<Grid Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width=".2*" />
<ColumnDefinition Width=".2*" />
<ColumnDefinition Width=".2*" />
<ColumnDefinition Width=".2*" />
<ColumnDefinition Width=".2*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="28" />
<RowDefinition Height="28" />
</Grid.RowDefinitions>
<Label Content="{x:Static p:Resources.textDGManifestOnBoard}" Grid.Column="0" Grid.Row="0" HorizontalContentAlignment="Center" Margin="0,0,10,0"/>
<Label Content="{x:Static p:Resources.textDGContactFamilyName}" Grid.Column="1" Grid.Row="0" HorizontalContentAlignment="Center" Margin="0,0,10,0"/>
<Label Content="{x:Static p:Resources.textDGContactPhone}" Grid.Column="2" Grid.Row="0" HorizontalContentAlignment="Center" Margin="0,0,10,0"/>
<Label Content="{x:Static p:Resources.textMoUBalticRoRo}" Grid.Column="3" Grid.Row="0" HorizontalContentAlignment="Center" Margin="0,0,10,0"/>
<Label Content="{x:Static p:Resources.textVesselClass}" Grid.Column="4" Grid.Row="0" HorizontalContentAlignment="Center" Margin="0,0,10,0"/>
<CheckBox Name="checkBoxDGManifestOnBoard" IsChecked="{Binding DPGManifestOnBoardOnArrival}" Grid.Row="1" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBox Grid.Row="18" Grid.Column="1" Name="textBoxDGManifestContactFamilyName" MaxLength="99" Margin="2" Text="{Binding DPGContactFamilyName, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Center" />
<TextBox Grid.Row="18" Grid.Column="2" Name="textBoxDGManifestContactPhone" MaxLength="99" Margin="2" Text="{Binding DPGContactPhone, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Center" />
<CheckBox Name="checkBoxMoUBaltic" IsChecked="{Binding MOUBaltic}" Grid.Row="1" Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<ComboBox x:Name="comboBoxVesselClass" Grid.Row="1" Grid.Column="4" Margin="2" SelectedIndex="{Binding INFShipClass, Converter={util:ByteConverter}}" ContextMenu="{DynamicResource ClearContextMenu}" IsEditable="True" />
</Grid>
<TextBlock Name="textBlockMessageClass" FontWeight="DemiBold" Grid.Row="2" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center" />
<Button Content="{x:Static p:Resources.textNewDGItem}" Name="buttonNewItem" Margin="2" Click="buttonNewItem_Click" Grid.Row="2" Grid.Column="1" Background="Transparent" />
<TextBlock x:Name="textBlock102" FontSize="18" VerticalAlignment="Bottom" Text="{x:Static p:Resources.text102IBCData}" Grid.Column="0" Grid.Row="3" Grid.ColumnSpan="2"/>
<enictrl:ENIDataGrid x:Name="dataGridIBCItems" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
AutoGenerateColumns="False" Margin="0,5,0,0" Grid.Row="4" Grid.Column="0" Grid.ColumnSpan="2">
<DataGrid.Columns>
<DataGridTextColumn Header="{x:Static p:Resources.textIdentifier}" Binding="{Binding Identifier}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textProductName}" Binding="{Binding ProductName}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textPollutionCategory}" Binding="{Binding PollutionCategoryDisplay}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textRisks}" Binding="{Binding HazardsDisplay}" IsReadOnly="True" Width="auto" />
<DataGridCheckBoxColumn Header="{x:Static p:Resources.textColumsOfIBC}" Binding="{Binding SpecRef15_19}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textFlashpointInformation}" Binding="{Binding FlashpointInformationDisplay}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textFlashpoint}" Binding="{Binding Flashpoint_CEL}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textQuantity}" Binding="{Binding Quantity_KGM, StringFormat={}{0:N3}}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textStowagePosition}" Binding="{Binding StowagePosition}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textPortOfLoading}" Binding="{Binding PortOfLoading}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textPortOfDischarge}" Binding="{Binding PortOfDischarge}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textRemarks}" Binding="{Binding Remarks}" IsReadOnly="True" Width="auto" />
</DataGrid.Columns>
</enictrl:ENIDataGrid>
<TextBlock x:Name="textBlock103" FontSize="18" VerticalAlignment="Bottom" Text="{x:Static p:Resources.text103IGCData}" Grid.Column="0" Grid.Row="5" Grid.ColumnSpan="2"/>
<enictrl:ENIDataGrid x:Name="dataGridIGCItems" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Grid.Row="6" Grid.Column="0" Grid.ColumnSpan="2"
AutoGenerateColumns="False" Margin="0,5,0,0">
<DataGrid.Columns>
<DataGridTextColumn Header="{x:Static p:Resources.textIdentifier}" Binding="{Binding Identifier}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textProductName}" Binding="{Binding ProductName}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textUNNumber}" Binding="{Binding UNNumber}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textIMOClassSubclass}" Binding="{Binding IMOClass}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textQuantity}" Binding="{Binding Quantity_KGM, StringFormat={}{0:N3}}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textStowagePosition}" Binding="{Binding StowagePosition}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textPortOfLoading}" Binding="{Binding PortOfLoading}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textPortOfDischarge}" Binding="{Binding PortOfDischarge}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textRemarks}" Binding="{Binding Remarks}" IsReadOnly="True" Width="auto" />
</DataGrid.Columns>
</enictrl:ENIDataGrid>
<TextBlock x:Name="textBlock104" FontSize="18" VerticalAlignment="Bottom" Text="{x:Static p:Resources.text104IMSBCData}" Grid.Column="0" Grid.Row="7" Grid.ColumnSpan="2"/>
<enictrl:ENIDataGrid x:Name="dataGridIMSBCItems" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Grid.Row="8" Grid.Column="0" Grid.ColumnSpan="2"
AutoGenerateColumns="False" Margin="0,5,0,0">
<DataGrid.Columns>
<DataGridTextColumn Header="{x:Static p:Resources.textIdentifier}" Binding="{Binding Identifier}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textBulkCargoShippingName}" Binding="{Binding BulkCargoShippingName}" IsReadOnly="True" Width="auto" />
<DataGridCheckBoxColumn Header="{x:Static p:Resources.textMaterialHazard}" Binding="{Binding MHB}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textUNNumber}" Binding="{Binding UNNumber}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textIMOClassSubclass}" Binding="{Binding IMOClass}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textQuantity}" Binding="{Binding Quantity_KGM, StringFormat={}{0:N3}}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textStowagePosition}" Binding="{Binding StowagePosition}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textPortOfLoading}" Binding="{Binding PortOfLoading}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textPortOfDischarge}" Binding="{Binding PortOfDischarge}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textRemarks}" Binding="{Binding Remarks}" IsReadOnly="True" Width="auto" />
<DataGridComboBoxColumn Header="{x:Static p:Resources.textIMOHazardClass}" ItemsSource="{x:Static util:GlobalStructures.imoHazardClasses}" IsReadOnly="True" Width="auto">
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="ComboBox">
<Setter Property="SelectedIndex" Value="{Binding IMOHazardClass, UpdateSourceTrigger=PropertyChanged}" />
</Style>
</DataGridComboBoxColumn.ElementStyle>
</DataGridComboBoxColumn>
</DataGrid.Columns>
</enictrl:ENIDataGrid>
<TextBlock x:Name="textBlock105" FontSize="18" VerticalAlignment="Bottom" Text="{x:Static p:Resources.text105MARPOLData}" Grid.Column="0" Grid.Row="9" Grid.ColumnSpan="2"/>
<enictrl:ENIDataGrid x:Name="dataGridMARPOLItems" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Grid.Row="10" Grid.Column="0" Grid.ColumnSpan="2"
AutoGenerateColumns="False" Margin="0,5,0,0">
<DataGrid.Columns>
<DataGridTextColumn Header="{x:Static p:Resources.textIdentifier}" Binding="{Binding Identifier}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textName}" Binding="{Binding Name}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textFlashpointInformation}" Binding="{Binding FlashpointInformationDisplay}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textFlashpoint}" Binding="{Binding Flashpoint_CEL}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textQuantity}" Binding="{Binding Quantity_KGM, StringFormat={}{0:N3}}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textStowagePosition}" Binding="{Binding StowagePosition}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textPortOfLoading}" Binding="{Binding PortOfLoading}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textPortOfDischarge}" Binding="{Binding PortOfDischarge}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textRemarks}" Binding="{Binding Remarks}" IsReadOnly="True" Width="auto" />
</DataGrid.Columns>
</enictrl:ENIDataGrid>
<TextBlock x:Name="textBlock106" FontSize="18" VerticalAlignment="Bottom" Text="{x:Static p:Resources.text106IMDGData}" Grid.Column="0" Grid.Row="11" Grid.ColumnSpan="2"/>
<enictrl:ENIDataGrid x:Name="dataGridIMDGItems" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Grid.Row="12" Grid.ColumnSpan="2"
AutoGenerateColumns="False" Margin="0,5,0,0">
<DataGrid.Columns>
<DataGridTextColumn Header="{x:Static p:Resources.textIdentifier}" Binding="{Binding Identifier}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textUNNumber}" Binding="{Binding UNNumber}" IsReadOnly="True" Width="auto" />
<DataGridComboBoxColumn Header="{x:Static p:Resources.textPackingGroup}" ItemsSource="{x:Static util:GlobalStructures.PackingGroups}" IsReadOnly="True" Width="auto">
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="ComboBox">
<Setter Property="SelectedIndex" Value="{Binding PackingGroup, UpdateSourceTrigger=PropertyChanged}" />
</Style>
</DataGridComboBoxColumn.ElementStyle>
</DataGridComboBoxColumn>
<DataGridTextColumn Header="{x:Static p:Resources.textProperShippingName}" Binding="{Binding ProperShippingName}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textIMOClassDivision}" Binding="{Binding IMOClass}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textTechnicalName}" Binding="{Binding TechnicalName}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textNetExplosiveMass}" Binding="{Binding NetExplosiveMass_KGM, StringFormat={}{0:N2}}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textFlashpoint}" Binding="{Binding Flashpoint_CEL}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textRadioNuclideName}" Binding="{Binding Class7NuclideName}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textMaxActivity}" Binding="{Binding Class7MaxActivity_BQL, StringFormat={}{0:N2}}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textCategory}" Binding="{Binding Class7Category}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textTransportIndex}" Binding="{Binding Class7TransportIndex}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textCriticalSafetyIndex}" Binding="{Binding Class7CSI}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textSubsidiaryRisk}" Binding="{Binding SubsidiaryRiskText}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textControlTemperature}" Binding="{Binding ControlTemperature_CEL, StringFormat={}{0:N2}}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textEmergencyTemperature}" Binding="{Binding EmergencyTemperature_CEL, StringFormat={}{0:N2}}" IsReadOnly="True" Width="auto" />
<DataGridCheckBoxColumn Header="{x:Static p:Resources.textMarinePollutant}" Binding="{Binding MarinePollutant}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textNumberOfPackages}" Binding="{Binding NumberOfPackages}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textPackageType}" Binding="{Binding PackageType}" IsReadOnly="True" Width="auto" />
<DataGridCheckBoxColumn Header="{x:Static p:Resources.textLimitedQuantity}" Binding="{Binding LimitedQuantities}" IsReadOnly="True" Width="auto" />
<DataGridCheckBoxColumn Header="{x:Static p:Resources.textExceptedQuantities}" Binding="{Binding ExceptedQuantities}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textNetQuantity}" Binding="{Binding NetQuantity_KGM, StringFormat={}{0:N2}}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textGrossQuantity}" Binding="{Binding GrossQuantity_KGM, StringFormat={}{0:N2}}" IsReadOnly="True" Width="auto" />
<!--DataGridTextColumn Header="{x:Static p:Resources.textExceptedQuantities}" Binding="{Binding ExceptedQuantities, StringFormat={}{0:N2}}" IsReadOnly="True" Width="auto" /-->
<DataGridTextColumn Header="{x:Static p:Resources.textCargoVolume}" Binding="{Binding Volume_MTQ, StringFormat={}{0:N2}}" IsReadOnly="True" Width="auto" />
<DataGridCheckBoxColumn Header="{x:Static p:Resources.textGeneralCargo}" Binding="{Binding GeneralCargoIBC}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textContainerNo}" Binding="{Binding ContainerNumber}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textVehicleLicensePlate}" Binding="{Binding VehicleLicenseNumber}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textStowagePosition}" Binding="{Binding StowagePosition}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textSubsidiaryRisk}" Binding="{Binding SubsidiaryRiskText}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textContainerPositionBay}" Binding="{Binding Bay}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textContainerPositionRow}" Binding="{Binding Row}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textContainerPositionTier}" Binding="{Binding Tier}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textPortOfLoading}" Binding="{Binding PortOfLoading}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textPortOfDischarge}" Binding="{Binding PortOfDischarge}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textRemarks}" Binding="{Binding Remarks}" IsReadOnly="True" Width="auto" />
</DataGrid.Columns>
</enictrl:ENIDataGrid>
</Grid>
</ScrollViewer>
</GroupBox>
</src:DetailBaseControl>

View File

@ -0,0 +1,840 @@
// Copyright (c) 2025- schick Informatik
// Description: Display control of formsheet Tab 10. Dangerous cargo arrival
//
using bsmd.database;
using ENI2.EditControls;
using ENI2.Util;
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace ENI2.SheetDisplayControls
{
/// <summary>
/// Interaction logic for DangerousCargoArrivalControl.xaml
/// </summary>
public partial class DangerousCargoControl : DetailBaseControl
{
#region Fields
private HAZ haza;
private HAZ hazd;
private NewDGItemDialog newDGDialog = null;
#endregion
#region Construction
public DangerousCargoControl()
{
InitializeComponent();
Loaded += DangerousCargoArrivalControl_Loaded;
}
#endregion
#region public override
public override void Initialize()
{
base.Initialize();
foreach (Message aMessage in this.Messages)
{
if (aMessage.MessageNotificationClass == Message.NotificationClass.HAZD)
{
this.hazd = aMessage.Elements[0] as HAZ;
this.ControlMessages.Add(aMessage);
}
if (aMessage.MessageNotificationClass == Message.NotificationClass.HAZA)
{
this.haza = aMessage.Elements[0] as HAZ;
this.ControlMessages.Add(aMessage);
}
this.textBlockMessageClass.Text = IsDeparture ? "HAZD" : "HAZA";
}
this.comboBoxVesselClass.ItemsSource = GlobalStructures.vesselClasses;
this.checkBoxDGManifestOnBoard.DataContext = this.IsDeparture ? hazd : haza;
this.textBoxDGManifestContactFamilyName.DataContext = this.IsDeparture ? hazd : haza;
this.textBoxDGManifestContactPhone.DataContext = this.IsDeparture ? hazd : haza;
this.checkBoxMoUBaltic.DataContext = this.IsDeparture ? hazd : haza;
this.comboBoxVesselClass.DataContext = this.IsDeparture ? hazd : haza;
#region init grids
this.dataGridIMDGItems.Initialize();
this.dataGridIMDGItems.ItemsSource = this.IsDeparture ? this.hazd.IMDGPositions : this.haza.IMDGPositions;
this.dataGridIMDGItems.CreateRequested += DataGridIMDGItems_CreateRequested;
this.dataGridIMDGItems.AddingNewItem += DataGridIMDGItems_AddingNewItem;
this.dataGridIMDGItems.EditRequested += DataGridIMDGItems_EditRequested;
this.dataGridIMDGItems.DeleteRequested += DataGridIMDGItems_DeleteRequested;
this.dataGridIBCItems.Initialize();
this.dataGridIBCItems.ItemsSource = this.IsDeparture ? this.hazd.IBCPositions : this.haza.IBCPositions;
this.dataGridIBCItems.CreateRequested += DataGridIBCItems_CreateRequested;
this.dataGridIBCItems.AddingNewItem += DataGridIBCItems_AddingNewItem;
this.dataGridIBCItems.EditRequested += DataGridIBCItems_EditRequested;
this.dataGridIBCItems.DeleteRequested += DataGridIBCItems_DeleteRequested;
this.dataGridIGCItems.Initialize();
this.dataGridIGCItems.ItemsSource = this.IsDeparture ? this.hazd.IGCPositions : this.haza.IGCPositions;
this.dataGridIGCItems.CreateRequested += DataGridIGCItems_CreateRequested;
this.dataGridIGCItems.AddingNewItem += DataGridIGCItems_AddingNewItem;
this.dataGridIGCItems.EditRequested += DataGridIGCItems_EditRequested;
this.dataGridIGCItems.DeleteRequested += DataGridIGCItems_DeleteRequested;
this.dataGridIMSBCItems.Initialize();
this.dataGridIMSBCItems.ItemsSource = this.IsDeparture ? this.hazd.IMSBCPositions : this.haza.IMSBCPositions;
this.dataGridIMSBCItems.CreateRequested += DataGridIMSBCItems_CreateRequested;
this.dataGridIMSBCItems.AddingNewItem += DataGridIMSBCItems_AddingNewItem;
this.dataGridIMSBCItems.EditRequested += DataGridIMSBCItems_EditRequested;
this.dataGridIMSBCItems.DeleteRequested += DataGridIMSBCItems_DeleteRequested;
this.dataGridMARPOLItems.Initialize();
this.dataGridMARPOLItems.ItemsSource = this.IsDeparture ? this.hazd.MARPOLPositions : this.haza.MARPOLPositions;
this.dataGridMARPOLItems.CreateRequested += DataGridMARPOLItems_CreateRequested;
this.dataGridMARPOLItems.AddingNewItem += DataGridMARPOLItems_AddingNewItem;
this.dataGridMARPOLItems.EditRequested += DataGridMARPOLItems_EditRequested;
this.dataGridMARPOLItems.DeleteRequested += DataGridMARPOLItems_DeleteRequested;
#endregion
#region Extra Menüpunkte um Positionen zwischen HAZA / HAZD zu kopieren
this.dataGridIBCItems.ContextMenu.Items.Add(new Separator());
MenuItem copyIBCItem = new MenuItem();
copyIBCItem.Header = string.Format(Properties.Resources.textCopyTo, this.IsDeparture ? "HAZA" : "HAZD");
copyIBCItem.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) };
copyIBCItem.Click += new RoutedEventHandler(this.copyIBC);
this.dataGridIBCItems.ContextMenu.Items.Add(copyIBCItem);
this.dataGridIGCItems.ContextMenu.Items.Add(new Separator());
MenuItem copyItemIGC = new MenuItem();
copyItemIGC.Header = string.Format(Properties.Resources.textCopyTo, this.IsDeparture ? "HAZA" : "HAZD");
copyItemIGC.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) };
copyItemIGC.Click += new RoutedEventHandler(this.copyIGC);
this.dataGridIGCItems.ContextMenu.Items.Add(copyItemIGC);
this.dataGridIMDGItems.ContextMenu.Items.Add(new Separator());
MenuItem copyItemIMDG = new MenuItem();
copyItemIMDG.Header = string.Format(Properties.Resources.textCopyTo, this.IsDeparture ? "HAZA" : "HAZD");
copyItemIMDG.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) };
copyItemIMDG.Click += new RoutedEventHandler(this.copyIMDG);
this.dataGridIMDGItems.ContextMenu.Items.Add(copyItemIMDG);
this.dataGridIMSBCItems.ContextMenu.Items.Add(new Separator());
MenuItem copyItemIMSBC = new MenuItem();
copyItemIMSBC.Header = string.Format(Properties.Resources.textCopyTo, this.IsDeparture ? "HAZA" : "HAZD");
copyItemIMSBC.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) };
copyItemIMSBC.Click += new RoutedEventHandler(this.copyIMSBC);
this.dataGridIMSBCItems.ContextMenu.Items.Add(copyItemIMSBC);
this.dataGridMARPOLItems.ContextMenu.Items.Add(new Separator());
MenuItem copyItemMARPOL = new MenuItem();
copyItemMARPOL.Header = string.Format(Properties.Resources.textCopyTo, this.IsDeparture ? "HAZA" : "HAZD");
copyItemMARPOL.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) };
copyItemMARPOL.Click += new RoutedEventHandler(this.copyMARPOL);
this.dataGridMARPOLItems.ContextMenu.Items.Add(copyItemMARPOL);
#endregion
this._initialized = true;
}
#region SetEnabled
public override void SetEnabled(bool enabled)
{
this.dataGridIBCItems.IsEnabled = enabled;
// this.checkBoxDangerousGoodsOnBoard.IsEnabled = enabled;
this.checkBoxDGManifestOnBoard.IsEnabled = enabled;
this.checkBoxMoUBaltic.IsEnabled = enabled;
this.dataGridIBCItems.IsEnabled = enabled;
this.dataGridIMDGItems.IsEnabled = enabled;
this.dataGridIGCItems.IsEnabled = enabled;
this.dataGridIMSBCItems.IsEnabled = enabled;
this.dataGridMARPOLItems.IsEnabled = enabled;
}
#endregion
#endregion
#region Properties
public bool IsDeparture { get; set; }
#endregion
#region event handler
private void DangerousCargoArrivalControl_Loaded(object sender, RoutedEventArgs e)
{
// this.RegisterCheckboxChange(this.checkBoxDangerousGoodsOnBoard, this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
this.RegisterCheckboxChange(this.checkBoxDGManifestOnBoard, this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
this.RegisterCheckboxChange(this.checkBoxMoUBaltic, this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
this.RegisterComboboxIndexChange(this.comboBoxVesselClass, this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
this.RegisterTextboxChange(this.textBoxDGManifestContactFamilyName, this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
this.RegisterTextboxChange(this.textBoxDGManifestContactPhone, this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
if(this.IsDeparture)
{
this.portCallGroupBox.Header = Properties.Resources.text11DangerousCargoDeparture;
this.textBlock101.Text = Properties.Resources.text111General;
this.textBlock102.Text = Properties.Resources.text112IBCData;
this.textBlock103.Text = Properties.Resources.text113IGCData;
this.textBlock104.Text = Properties.Resources.text114IMSBCData;
this.textBlock105.Text = Properties.Resources.text115MARPOLData;
this.textBlock106.Text = Properties.Resources.text116IMDGData;
}
}
#endregion
#region Copy event handler
private void copyMARPOL(object sender, RoutedEventArgs e)
{
// aus dem aktuell selektierten MARPOL Element ein neues MARPOL Element machen und nach HAZD kopieren
if (this.dataGridMARPOLItems.SelectedItems != null)
{
HAZ target_haz = this.IsDeparture ? this.haza : this.hazd;
foreach (MARPOL_Annex_I_Position selectedMARPOL in this.dataGridMARPOLItems.SelectedItems)
{
MARPOL_Annex_I_Position copyMARPOL = new MARPOL_Annex_I_Position();
copyMARPOL.MessageHeader = target_haz.MessageHeader;
copyMARPOL.HAZ = target_haz;
copyMARPOL.CopyFromMARPOL(selectedMARPOL);
copyMARPOL.Identifier = DatabaseEntity.GetNewIdentifier(target_haz.MARPOLPositions, "MARPOL-");
target_haz.MARPOLPositions.Add(copyMARPOL);
target_haz.NoDPGOnBoardOnArrival = false;
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZA : Message.NotificationClass.HAZD);
this.OnControlCacheReset(this.IsDeparture ? Properties.Resources.textDGArrival : Properties.Resources.textDGDeparture);
}
}
}
private void copyIMSBC(object sender, RoutedEventArgs e)
{
// aus dem aktuell selektierten IMBSC Element ein neues IMBSC Element machen und nach HAZD kopieren
if (this.dataGridIMSBCItems.SelectedItems != null)
{
HAZ target_haz = this.IsDeparture ? this.haza : this.hazd;
foreach (IMSBCPosition selectedIMSBC in this.dataGridIMSBCItems.SelectedItems)
{
IMSBCPosition copyIMSBC = new IMSBCPosition();
copyIMSBC.MessageHeader = target_haz.MessageHeader;
copyIMSBC.HAZ = target_haz;
copyIMSBC.CopyFromIMSBC(selectedIMSBC);
copyIMSBC.Identifier = DatabaseEntity.GetNewIdentifier(target_haz.IMSBCPositions, "IMSBC-");
target_haz.IMSBCPositions.Add(copyIMSBC);
target_haz.NoDPGOnBoardOnArrival = false;
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZA : Message.NotificationClass.HAZD);
this.OnControlCacheReset(this.IsDeparture ? Properties.Resources.textDGArrival : Properties.Resources.textDGDeparture);
}
}
}
private void copyIMDG(object sender, RoutedEventArgs e)
{
// aus dem aktuell selektierten IMDG Element ein neues IMDG Element machen und nach HAZD kopieren
if (this.dataGridIMDGItems.SelectedItems != null)
{
HAZ target_haz = this.IsDeparture ? this.haza : this.hazd;
foreach (IMDGPosition selectedIMDG in this.dataGridIMDGItems.SelectedItems)
{
IMDGPosition copyIMDG = new IMDGPosition();
copyIMDG.MessageHeader = target_haz.MessageHeader;
copyIMDG.HAZ = target_haz;
copyIMDG.CopyFromIMDG(selectedIMDG);
copyIMDG.Identifier = DatabaseEntity.GetNewIdentifier(target_haz.IMDGPositions, "IMDG-");
target_haz.IMDGPositions.Add(copyIMDG);
target_haz.NoDPGOnBoardOnArrival = false;
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZA : Message.NotificationClass.HAZD);
this.OnControlCacheReset(this.IsDeparture ? Properties.Resources.textDGArrival : Properties.Resources.textDGDeparture);
}
}
}
private void copyIGC(object sender, RoutedEventArgs e)
{
// aus dem aktuell selektierten IGC Element ein neues IGC Element machen und nach HAZD kopieren
if (this.dataGridIGCItems.SelectedItems != null)
{
HAZ target_haz = this.IsDeparture ? this.haza : this.hazd;
foreach (IGCPosition selectedIGC in this.dataGridIGCItems.SelectedItems)
{
IGCPosition copyIGC = new IGCPosition();
copyIGC.MessageHeader = target_haz.MessageHeader;
copyIGC.HAZ = target_haz;
copyIGC.CopyFromIGC(selectedIGC);
copyIGC.Identifier = DatabaseEntity.GetNewIdentifier(target_haz.IGCPositions, "IGC-");
target_haz.IGCPositions.Add(copyIGC);
target_haz.NoDPGOnBoardOnArrival = false;
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZA : Message.NotificationClass.HAZD);
this.OnControlCacheReset(this.IsDeparture ? Properties.Resources.textDGArrival : Properties.Resources.textDGDeparture);
}
}
}
private void copyIBC(object sender, RoutedEventArgs e)
{
// aus dem aktuell selektierten IBC Element ein neues IBC Element machen und nach HAZD kopieren
if (this.dataGridIBCItems.SelectedItems != null)
{
HAZ target_haz = this.IsDeparture ? this.haza : this.hazd;
foreach (IBCPosition selectedIBC in this.dataGridIBCItems.SelectedItems)
{
if (selectedIBC != null)
{
IBCPosition copyIBC = new IBCPosition();
copyIBC.MessageHeader = target_haz.MessageHeader;
copyIBC.HAZ = target_haz;
copyIBC.CopyFromIBC(selectedIBC);
copyIBC.Identifier = DatabaseEntity.GetNewIdentifier(target_haz.IBCPositions, "IBC-");
target_haz.IBCPositions.Add(copyIBC);
target_haz.NoDPGOnBoardOnArrival = false;
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZA : Message.NotificationClass.HAZD);
this.OnControlCacheReset(this.IsDeparture ? Properties.Resources.textDGArrival : Properties.Resources.textDGDeparture);
}
}
}
}
#endregion
#region new sublist item button handler
private void buttonNewItem_Click(object sender, RoutedEventArgs e)
{
if (newDGDialog != null)
{
newDGDialog.Activate();
}
else
{
newDGDialog = new NewDGItemDialog();
newDGDialog.Closed += NewDGDialog_Closed;
newDGDialog.OKClicked += NewDGDialog_OKClicked;
newDGDialog.AddClicked += NewDGDialog_OKClicked;
newDGDialog.Show();
}
}
private void NewDGDialog_Closed(object sender, EventArgs e)
{
newDGDialog = null;
}
private void NewDGDialog_OKClicked()
{
HAZ haz = this.IsDeparture ? hazd : haza;
HAZPosTemplate selectedTemplate = this.newDGDialog.SelectedTemplate;
if (selectedTemplate != null)
{
// create new DG position based on template
switch (selectedTemplate.TemplateType)
{
case HAZPosTemplate.SublistType.IBC:
IBCPosition ibcPos = new IBCPosition();
ibcPos.FlashpointInformation = selectedTemplate.Flashpoint;
ibcPos.Flashpoint_CEL = selectedTemplate.FP_IBC;
ibcPos.SpecRef15_19 = selectedTemplate.SpecRef15_19;
ibcPos.Hazards = selectedTemplate.Hazard;
ibcPos.Identifier = DatabaseEntity.GetNewIdentifier(haz.IBCPositions, "IBC-");
ibcPos.PollutionCategory = selectedTemplate.PollutionCategory;
ibcPos.HAZ = haz;
haz.IBCPositions.Add(ibcPos);
this.dataGridIBCItems.Items.Refresh();
this.DataGridIBCItems_EditRequested(ibcPos);
break;
case HAZPosTemplate.SublistType.IGC:
IGCPosition igcPos = new IGCPosition();
igcPos.Identifier = DatabaseEntity.GetNewIdentifier(haz.IGCPositions, "IGC-");
igcPos.UNNumber = selectedTemplate.UNNr;
igcPos.IMOClass = selectedTemplate.IMOClass;
igcPos.HAZ = haz;
haz.IGCPositions.Add(igcPos);
this.dataGridIGCItems.Items.Refresh();
this.DataGridIGCItems_EditRequested(igcPos);
break;
case HAZPosTemplate.SublistType.IMSBC:
IMSBCPosition imsbcPos = new IMSBCPosition();
imsbcPos.Identifier = DatabaseEntity.GetNewIdentifier(haz.IMSBCPositions, "IMSBC-");
imsbcPos.IMOHazardClass = selectedTemplate.IMSBC_HAZ;
imsbcPos.UNNumber = selectedTemplate.UNNr;
imsbcPos.IMOClass = selectedTemplate.IMOClass;
imsbcPos.MHB = selectedTemplate.MHB ?? false;
imsbcPos.HAZ = haz;
haz.IMSBCPositions.Add(imsbcPos);
this.dataGridIMSBCItems.Items.Refresh();
this.DataGridIMSBCItems_EditRequested(imsbcPos);
break;
case HAZPosTemplate.SublistType.MARPOL:
MARPOL_Annex_I_Position marpolPos = new MARPOL_Annex_I_Position();
marpolPos.FlashpointInformation = selectedTemplate.Flashpoint;
marpolPos.Identifier = DatabaseEntity.GetNewIdentifier(haz.MARPOLPositions, "MARPOL-");
marpolPos.HAZ = haz;
haz.MARPOLPositions.Add(marpolPos);
this.dataGridMARPOLItems.Items.Refresh();
this.DataGridMARPOLItems_EditRequested(marpolPos);
break;
}
this.SetHAZGlobalFlags();
}
}
#endregion
#region MARPOL datagrid handlers
private void DataGridMARPOLItems_DeleteRequested(DatabaseEntity obj)
{
HAZ haz = this.IsDeparture ? hazd : haza;
if (obj is MARPOL_Annex_I_Position marpol)
{
// are you sure dialog is in base class
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(marpol);
haz.MARPOLPositions.Remove(marpol);
DatabaseEntity.ResetIdentifiers(new List<DatabaseEntity>(haz.MARPOLPositions));
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
this.dataGridMARPOLItems.Items.Refresh();
}
}
private void DataGridMARPOLItems_EditRequested(DatabaseEntity obj)
{
EditMarpolDialog eld = new EditMarpolDialog();
eld.MARPOL = obj as MARPOL_Annex_I_Position;
HAZ haz = this.IsDeparture ? hazd : haza;
eld.AddClicked += () =>
{
eld.CopyValuesToEntity();
if (!haz.MARPOLPositions.Contains(eld.MARPOL))
haz.MARPOLPositions.Add(eld.MARPOL);
this.dataGridMARPOLItems.Items.Refresh();
eld.MARPOL = new MARPOL_Annex_I_Position();
eld.Identifier = DatabaseEntity.GetNewIdentifier(haz.MARPOLPositions, "MARPOL-");
eld.MARPOL.HAZ = haz;
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
this.SetHAZGlobalFlags();
};
if (eld.ShowDialog() ?? false)
{
if (!haz.MARPOLPositions.Contains(eld.MARPOL))
haz.MARPOLPositions.Add(eld.MARPOL);
this.dataGridMARPOLItems.Items.Refresh();
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
}
}
private void DataGridMARPOLItems_AddingNewItem(object sender, System.Windows.Controls.AddingNewItemEventArgs e)
{
this.DataGridMARPOLItems_CreateRequested();
}
private void DataGridMARPOLItems_CreateRequested()
{
HAZ haz = this.IsDeparture ? hazd : haza;
EditMarpolDialog ebd = new EditMarpolDialog();
ebd.MARPOL = new MARPOL_Annex_I_Position();
ebd.MARPOL.Identifier = DatabaseEntity.GetNewIdentifier(haz.MARPOLPositions, "MARPOL-");
ebd.MARPOL.HAZ = haz;
ebd.AddClicked += () =>
{
ebd.CopyValuesToEntity();
if (!haz.MARPOLPositions.Contains(ebd.MARPOL))
haz.MARPOLPositions.Add(ebd.MARPOL);
this.dataGridMARPOLItems.Items.Refresh();
ebd.MARPOL = new MARPOL_Annex_I_Position();
ebd.MARPOL.HAZ = haz;
ebd.Identifier = DatabaseEntity.GetNewIdentifier(haz.MARPOLPositions, "MARPOL-");
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
this.SetHAZGlobalFlags();
};
if (ebd.ShowDialog() ?? false)
{
if (!haz.MARPOLPositions.Contains(ebd.MARPOL))
haz.MARPOLPositions.Add(ebd.MARPOL);
this.dataGridMARPOLItems.Items.Refresh();
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
this.SetHAZGlobalFlags();
}
}
#endregion
#region IMSBC datagrid handlers
private void DataGridIMSBCItems_DeleteRequested(DatabaseEntity obj)
{
HAZ haz = this.IsDeparture ? hazd : haza;
if (obj is IMSBCPosition imsbc)
{
// are you sure dialog is in base class
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(imsbc);
haz.IMSBCPositions.Remove(imsbc);
DatabaseEntity.ResetIdentifiers(new List<DatabaseEntity>(haz.IMSBCPositions));
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
this.dataGridIMSBCItems.Items.Refresh();
}
}
private void DataGridIMSBCItems_EditRequested(DatabaseEntity obj)
{
HAZ haz = this.IsDeparture ? hazd : haza;
EditIMSBCDialog eld = new EditIMSBCDialog();
eld.IMSBC = obj as IMSBCPosition;
eld.AddClicked += () =>
{
eld.CopyValuesToEntity();
if (!haz.IMSBCPositions.Contains(eld.IMSBC))
haz.IMSBCPositions.Add(eld.IMSBC);
this.dataGridIMSBCItems.Items.Refresh();
eld.IMSBC = new IMSBCPosition();
eld.Identifier = DatabaseEntity.GetNewIdentifier(haz.IMSBCPositions, "IMSBC-");
eld.IMSBC.HAZ = haz;
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
this.SetHAZGlobalFlags();
};
if (eld.ShowDialog() ?? false)
{
if (!haz.IMSBCPositions.Contains(eld.IMSBC))
haz.IMSBCPositions.Add(eld.IMSBC);
this.dataGridIMSBCItems.Items.Refresh();
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
}
}
private void DataGridIMSBCItems_AddingNewItem(object sender, System.Windows.Controls.AddingNewItemEventArgs e)
{
this.DataGridIMSBCItems_CreateRequested();
}
private void DataGridIMSBCItems_CreateRequested()
{
HAZ haz = this.IsDeparture ? hazd : haza;
EditIMSBCDialog ebd = new EditIMSBCDialog();
ebd.IMSBC = new IMSBCPosition();
ebd.IMSBC.Identifier = DatabaseEntity.GetNewIdentifier(haz.IMSBCPositions, "IMSBC-");
ebd.IMSBC.HAZ = haz;
ebd.AddClicked += () =>
{
ebd.CopyValuesToEntity();
if (!haz.IMSBCPositions.Contains(ebd.IMSBC))
haz.IMSBCPositions.Add(ebd.IMSBC);
this.dataGridIMSBCItems.Items.Refresh();
ebd.IMSBC = new IMSBCPosition();
ebd.IMSBC.HAZ = haz;
ebd.Identifier = DatabaseEntity.GetNewIdentifier(haz.IMSBCPositions, "IMSBC-");
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
this.SetHAZGlobalFlags();
};
if (ebd.ShowDialog() ?? false)
{
if (!haz.IMSBCPositions.Contains(ebd.IMSBC))
haz.IMSBCPositions.Add(ebd.IMSBC);
this.dataGridIMSBCItems.Items.Refresh();
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
this.SetHAZGlobalFlags();
}
}
#endregion
#region IGC datagrid handlers
private void DataGridIGCItems_DeleteRequested(DatabaseEntity obj)
{
HAZ haz = this.IsDeparture ? hazd : haza;
if (obj is IGCPosition igc)
{
// are you sure dialog is in base class
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(igc);
haz.IGCPositions.Remove(igc);
DatabaseEntity.ResetIdentifiers(new List<DatabaseEntity>(haz.IGCPositions));
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
this.dataGridIGCItems.Items.Refresh();
}
}
private void DataGridIGCItems_EditRequested(DatabaseEntity obj)
{
HAZ haz = this.IsDeparture ? hazd : haza;
EditIGCDialog eld = new EditIGCDialog();
eld.IGC = obj as IGCPosition;
eld.AddClicked += () =>
{
eld.CopyValuesToEntity();
if (!haz.IGCPositions.Contains(eld.IGC))
haz.IGCPositions.Add(eld.IGC);
this.dataGridIGCItems.Items.Refresh();
eld.IGC = new IGCPosition();
eld.Identifier = DatabaseEntity.GetNewIdentifier(haz.IGCPositions, "IGC-");
eld.IGC.HAZ = haz;
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
this.SetHAZGlobalFlags();
};
if (eld.ShowDialog() ?? false)
{
if (!haz.IGCPositions.Contains(eld.IGC))
haz.IGCPositions.Add(eld.IGC);
this.dataGridIGCItems.Items.Refresh();
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
}
}
private void DataGridIGCItems_AddingNewItem(object sender, System.Windows.Controls.AddingNewItemEventArgs e)
{
this.DataGridIGCItems_CreateRequested();
}
private void DataGridIGCItems_CreateRequested()
{
HAZ haz = this.IsDeparture ? hazd : haza;
EditIGCDialog ebd = new EditIGCDialog();
ebd.IGC = new IGCPosition();
ebd.IGC.Identifier = DatabaseEntity.GetNewIdentifier(haz.IGCPositions, "IGC-");
ebd.IGC.HAZ = haz;
ebd.AddClicked += () =>
{
ebd.CopyValuesToEntity();
if (!haz.IGCPositions.Contains(ebd.IGC))
haz.IGCPositions.Add(ebd.IGC);
this.dataGridIGCItems.Items.Refresh();
ebd.IGC = new IGCPosition();
ebd.IGC.HAZ = haz;
ebd.Identifier = DatabaseEntity.GetNewIdentifier(haz.IGCPositions, "IGC-");
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
};
if (ebd.ShowDialog() ?? false)
{
if (!haz.IGCPositions.Contains(ebd.IGC))
haz.IGCPositions.Add(ebd.IGC);
this.dataGridIGCItems.Items.Refresh();
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
this.SetHAZGlobalFlags();
}
}
#endregion
#region IBC datagrid handlers
private void DataGridIBCItems_DeleteRequested(DatabaseEntity obj)
{
HAZ haz = this.IsDeparture ? hazd : haza;
if (obj is IBCPosition ibc)
{
// are you sure dialog is in base class
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(ibc);
haz.IBCPositions.Remove(ibc);
DatabaseEntity.ResetIdentifiers(new List<DatabaseEntity>(haz.IBCPositions));
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
this.dataGridIBCItems.Items.Refresh();
}
}
private void DataGridIBCItems_EditRequested(DatabaseEntity obj)
{
HAZ haz = this.IsDeparture ? hazd : haza;
EditIBCDialog eld = new EditIBCDialog();
eld.IBC = obj as IBCPosition;
eld.AddClicked += () =>
{
eld.CopyValuesToEntity();
if (!haz.IBCPositions.Contains(eld.IBC))
haz.IBCPositions.Add(eld.IBC);
this.dataGridIBCItems.Items.Refresh();
eld.IBC = new IBCPosition();
eld.Identifier = DatabaseEntity.GetNewIdentifier(haz.IBCPositions, "IBC-");
eld.IBC.HAZ = haz;
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
this.SetHAZGlobalFlags();
};
if (eld.ShowDialog() ?? false)
{
if (!haz.IBCPositions.Contains(eld.IBC))
haz.IBCPositions.Add(eld.IBC);
this.dataGridIBCItems.Items.Refresh();
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
}
}
private void DataGridIBCItems_AddingNewItem(object sender, System.Windows.Controls.AddingNewItemEventArgs e)
{
this.DataGridIBCItems_CreateRequested();
}
private void DataGridIBCItems_CreateRequested()
{
HAZ haz = this.IsDeparture ? hazd : haza;
EditIBCDialog ebd = new EditIBCDialog();
ebd.IBC = new IBCPosition();
ebd.IBC.Identifier = DatabaseEntity.GetNewIdentifier(haz.IBCPositions, "IBC-");
ebd.IBC.HAZ = haz;
ebd.AddClicked += () =>
{
ebd.CopyValuesToEntity();
if (!haz.IBCPositions.Contains(ebd.IBC))
haz.IBCPositions.Add(ebd.IBC);
this.dataGridIBCItems.Items.Refresh();
ebd.IBC = new IBCPosition();
ebd.IBC.HAZ = haz;
ebd.Identifier = DatabaseEntity.GetNewIdentifier(haz.IBCPositions, "IBC-");
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
};
if (ebd.ShowDialog() ?? false)
{
if (!haz.IBCPositions.Contains(ebd.IBC))
haz.IBCPositions.Add(ebd.IBC);
this.dataGridIBCItems.Items.Refresh();
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
this.SetHAZGlobalFlags();
}
}
#endregion
#region IMDG datagrid handlers
private void DataGridIMDGItems_DeleteRequested(DatabaseEntity obj)
{
HAZ haz = this.IsDeparture ? hazd : haza;
if (obj is IMDGPosition imdg)
{
// are you sure dialog is in base class
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(imdg);
haz.IMDGPositions.Remove(imdg);
DatabaseEntity.ResetIdentifiers(new List<DatabaseEntity>(haz.IMDGPositions));
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
this.dataGridIMDGItems.Items.Refresh();
}
}
private void DataGridIMDGItems_EditRequested(DatabaseEntity obj)
{
HAZ haz = this.IsDeparture ? hazd : haza;
EditIMDGDialog eld = new EditIMDGDialog();
eld.IMDG = obj as IMDGPosition;
eld.AddClicked += () =>
{
eld.CopyValuesToEntity();
if (!haz.IMDGPositions.Contains(eld.IMDG))
haz.IMDGPositions.Add(eld.IMDG);
this.dataGridIMDGItems.Items.Refresh();
eld.IMDG = new IMDGPosition();
eld.Identifier = DatabaseEntity.GetNewIdentifier(haz.IMDGPositions, "IMDG-");
eld.IMDG.HAZ = haz;
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
};
if (eld.ShowDialog() ?? false)
{
if (!haz.IMDGPositions.Contains(eld.IMDG))
haz.IMDGPositions.Add(eld.IMDG);
this.dataGridIMDGItems.Items.Refresh();
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
this.SetHAZGlobalFlags();
}
}
private void DataGridIMDGItems_AddingNewItem(object sender, System.Windows.Controls.AddingNewItemEventArgs e)
{
this.DataGridIMDGItems_CreateRequested();
}
private void DataGridIMDGItems_CreateRequested()
{
HAZ haz = this.IsDeparture ? hazd : haza;
EditIMDGDialog ebd = new EditIMDGDialog();
ebd.IMDG = new IMDGPosition();
ebd.IMDG.Identifier = DatabaseEntity.GetNewIdentifier(haz.IMDGPositions, "IMDG-");
ebd.IMDG.HAZ = haz;
ebd.AddClicked += () =>
{
ebd.CopyValuesToEntity();
if (!haz.IMDGPositions.Contains(ebd.IMDG))
haz.IMDGPositions.Add(ebd.IMDG);
this.dataGridIMDGItems.Items.Refresh();
ebd.IMDG = new IMDGPosition();
ebd.IMDG.HAZ = haz;
ebd.Identifier = DatabaseEntity.GetNewIdentifier(haz.IMDGPositions, "IMDG-");
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
};
if (ebd.ShowDialog() ?? false)
{
if (!haz.IMDGPositions.Contains(ebd.IMDG))
haz.IMDGPositions.Add(ebd.IMDG);
this.dataGridIMDGItems.Items.Refresh();
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
this.SetHAZGlobalFlags();
}
}
#endregion
#region private methods
/// <summary>
/// Beim Hinzufügen der allerersten Gefahrgutposition sollen die Flags vorbelegt werden
/// </summary>
void SetHAZGlobalFlags()
{
HAZ haz = this.IsDeparture ? this.hazd : this.haza;
int totalCount = haz.MARPOLPositions.Count + haz.IMDGPositions.Count + haz.IGCPositions.Count + haz.IBCPositions.Count + haz.IMSBCPositions.Count;
if (totalCount == 1)
{
// if (!(this.checkBoxDangerousGoodsOnBoard.IsChecked ?? false)) this.checkBoxDangerousGoodsOnBoard.IsChecked = true;
if (this.checkBoxMoUBaltic.IsChecked ?? true) this.checkBoxMoUBaltic.IsChecked = false;
haz.NoDPGOnBoardOnArrival = false;
haz.MOUBaltic = false;
}
}
#endregion
}
}

View File

@ -2,6 +2,6 @@
[assembly: AssemblyCompany("schick Informatik")] [assembly: AssemblyCompany("schick Informatik")]
[assembly: AssemblyProduct("BSMD NSW interface")] [assembly: AssemblyProduct("BSMD NSW interface")]
[assembly: AssemblyInformationalVersion("7.2.7)] [assembly: AssemblyInformationalVersion("7.2.7")]
[assembly: AssemblyCopyright("Copyright © 2014-2025 schick Informatik")] [assembly: AssemblyCopyright("Copyright © 2014-2025 schick Informatik")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]