diff --git a/ENI2/Controls/ENIDataGrid.cs b/ENI2/Controls/ENIDataGrid.cs
index feeab8c1..fde19681 100644
--- a/ENI2/Controls/ENIDataGrid.cs
+++ b/ENI2/Controls/ENIDataGrid.cs
@@ -119,7 +119,7 @@ namespace ENI2.Controls
{
var grid = sender as ENIDataGrid;
if (Key.Delete == e.Key)
- this.deleteItem(null, null);
+ this.deleteItem(null, null);
}
}
diff --git a/ENI2/Controls/EditWindowBase.cs b/ENI2/Controls/EditWindowBase.cs
index 0f287dcb..29790786 100644
--- a/ENI2/Controls/EditWindowBase.cs
+++ b/ENI2/Controls/EditWindowBase.cs
@@ -109,6 +109,7 @@ namespace ENI2.Controls
thePicker.Value = new DateTime(year, month, day, hour, minute, 0);
}
catch (FormatException) { }
+ catch (ArgumentOutOfRangeException) { thePicker.Value = null; }
}
}
@@ -121,10 +122,11 @@ namespace ENI2.Controls
string timevalText = rd.Match(thePicker.Text).Captures[0].Value;
int day = Int32.Parse(timevalText.Substring(0, 2));
int month = Int32.Parse(timevalText.Substring(2, 2));
- int year = Int32.Parse(timevalText.Substring(4, 4));
+ int year = Int32.Parse(timevalText.Substring(4, 4));
thePicker.SelectedDate = new DateTime(year, month, day, 0, 0, 0);
}
catch (FormatException) { }
+ catch (ArgumentOutOfRangeException) { thePicker.SelectedDate = null; }
}
}
diff --git a/ENI2/Controls/ReportingPartyControl.xaml b/ENI2/Controls/ReportingPartyControl.xaml
index 2058f9a3..24a75514 100644
--- a/ENI2/Controls/ReportingPartyControl.xaml
+++ b/ENI2/Controls/ReportingPartyControl.xaml
@@ -20,6 +20,7 @@
+
diff --git a/ENI2/Controls/ReportingPartyControl.xaml.cs b/ENI2/Controls/ReportingPartyControl.xaml.cs
index 368ac39b..f916d83a 100644
--- a/ENI2/Controls/ReportingPartyControl.xaml.cs
+++ b/ENI2/Controls/ReportingPartyControl.xaml.cs
@@ -59,7 +59,7 @@ namespace ENI2.Controls
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(selectedParty);
}
}
- }
+ }
}
#region grid event handler
@@ -98,13 +98,13 @@ namespace ENI2.Controls
{
ReportingParty rp = new ReportingParty();
EditReportingPartyDialog ebd = new EditReportingPartyDialog();
- ebd.ReportingParty = rp;
+ ebd.ReportingParty = rp;
if (ebd.ShowDialog() ?? false)
{
DBManager.Instance.GetReportingPartyDict().Add(Guid.NewGuid(), rp);
this.ReportingParties.Add(rp);
- this.dataGridReportingParties.Items.Refresh();
+ this.dataGridReportingParties.Items.Refresh();
}
}
diff --git a/ENI2/DetailBaseControl.cs b/ENI2/DetailBaseControl.cs
index 70ecc986..1414ff28 100644
--- a/ENI2/DetailBaseControl.cs
+++ b/ENI2/DetailBaseControl.cs
@@ -298,7 +298,9 @@ namespace ENI2
int year = Int32.Parse(timevalText.Substring(4, 4));
thePicker.SelectedDate = new DateTime(year, month, day, 0, 0, 0);
}
- catch (FormatException) { }
+ catch (Exception) {
+ thePicker.SelectedDate = null;
+ }
}
}
diff --git a/ENI2/DetailRootControl.xaml.cs b/ENI2/DetailRootControl.xaml.cs
index ecb7c037..c73543d5 100644
--- a/ENI2/DetailRootControl.xaml.cs
+++ b/ENI2/DetailRootControl.xaml.cs
@@ -106,6 +106,26 @@ namespace ENI2
}
}
+ public bool HasCriticalInfoMissing(out string messageText)
+ {
+ messageText = "";
+ // Hier haben wir Logik für Spezialfälle, z.B. dass für BRE und BRV bestimmte Meldeklassen gesendet werden *müssen*
+
+ if(this.Core.PoC.Equals("DEBRV") || this.Core.PoC.Equals("DEBRE"))
+ {
+ foreach(Message aMessage in _messages)
+ {
+ if((aMessage.MessageNotificationClass == Message.NotificationClass.NOA_NOD) && (aMessage.InternalStatus != Message.BSMDStatus.CONFIRMED)) { messageText = "NOA_NOD"; return true; }
+ if ((aMessage.MessageNotificationClass == Message.NotificationClass.AGNT) && (aMessage.InternalStatus != Message.BSMDStatus.CONFIRMED)) { messageText = "AGNT"; return true; }
+ if ((aMessage.MessageNotificationClass == Message.NotificationClass.INFO) && (aMessage.InternalStatus != Message.BSMDStatus.CONFIRMED)) { messageText = "INFO"; return true; }
+ if ((aMessage.MessageNotificationClass == Message.NotificationClass.SEC) && (aMessage.InternalStatus != Message.BSMDStatus.CONFIRMED)) { messageText = "SEC"; return true; }
+ if ((aMessage.MessageNotificationClass == Message.NotificationClass.TIEFA) && (aMessage.InternalStatus != Message.BSMDStatus.CONFIRMED)) { messageText = "TIEFA"; return true; }
+ }
+ }
+
+ return false;
+ }
+
#endregion
#region Construction
diff --git a/ENI2/DetailViewControls/PortCallDetailControl.xaml.cs b/ENI2/DetailViewControls/PortCallDetailControl.xaml.cs
index 69190627..4acb71fd 100644
--- a/ENI2/DetailViewControls/PortCallDetailControl.xaml.cs
+++ b/ENI2/DetailViewControls/PortCallDetailControl.xaml.cs
@@ -67,6 +67,9 @@ namespace ENI2.DetailViewControls
this.RegisterTextboxChange(this.textBox_AgentPostalCode, Message.NotificationClass.AGNT);
this.RegisterTextboxChange(this.textBox_AgentStreetAndNumber, Message.NotificationClass.AGNT);
this.RegisterTextboxChange(this.textBox_AgentCountry, Message.NotificationClass.AGNT);
+
+ this.buttonSaveTemplate.IsEnabled = DBManager.Instance.GetReportingPartyDict()[App.UserId.Value].IsEditor;
+ this.buttonDeleteTemplate.IsEnabled = DBManager.Instance.GetReportingPartyDict()[App.UserId.Value].IsEditor;
}
public override void Initialize()
@@ -108,7 +111,7 @@ namespace ENI2.DetailViewControls
this.dataGridCallPurposes.EditRequested += DataGridCallPurposes_EditRequested;
this.dataGridCallPurposes.AddingNewItem += DataGridCallPurposes_AddingNewItem;
this.dataGridCallPurposes.CreateRequested += DataGridCallPurposes_CreateRequested;
- this.dataGridCallPurposes.DeleteRequested += DataGridCallPurposes_DeleteRequested;
+ this.dataGridCallPurposes.DeleteRequested += DataGridCallPurposes_DeleteRequested;
this.agentGroupBox.DataContext = _agnt;
@@ -138,8 +141,7 @@ namespace ENI2.DetailViewControls
private void DataGridCallPurposes_DeleteRequested(DatabaseEntity obj)
{
- CallPurpose cp = obj as CallPurpose;
- if (cp != null)
+ if (obj is CallPurpose cp)
{
// are you sure dialog is in base class
_noa_nod.CallPurposes.Remove(cp);
@@ -151,7 +153,7 @@ namespace ENI2.DetailViewControls
}
private void DataGridCallPurposes_CreateRequested()
- {
+ {
EditCallPurposeDialog ecpd = new EditCallPurposeDialog();
ecpd.AddClicked += () =>
{
@@ -256,16 +258,15 @@ namespace ENI2.DetailViewControls
private void comboBox_AgentTemplate_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
Trace.WriteLine("combo selection changed");
- AGNT_Template at = this.comboBox_AgentTemplate.SelectedItem as AGNT_Template;
- if(at != null)
+ if (this.comboBox_AgentTemplate.SelectedItem is AGNT_Template at)
{
this.textBoxTemplateTitle.Text = at.AgentTitle;
- this.buttonDeleteTemplate.IsEnabled = true;
+ this.buttonDeleteTemplate.IsEnabled = true;
this.buttonSetTemplate.IsEnabled = true;
this._currentTemplate = at;
}
- }
+ }
private void buttonDeleteTemplate_Click(object sender, RoutedEventArgs e)
{
@@ -308,21 +309,21 @@ namespace ENI2.DetailViewControls
{
if (MessageBox.Show("A template with this name already exists, overwrite?", "Confirmation", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.No)
return;
- }
-
+ }
+
this._currentTemplate = createFromCurrentText(title, existingTemplate);
- DBManager.Instance.Save(this._currentTemplate);
-
+ DBManager.Instance.Save(this._currentTemplate);
+
if(existingTemplate == null)
{
comboBox_AgentTemplate.ItemsSource = null;
_agntTemplates.Add(this._currentTemplate);
_agntTemplates.Sort();
comboBox_AgentTemplate.ItemsSource = _agntTemplates;
- }
+ }
MessageBox.Show("Template saved", "OK", MessageBoxButton.OK, MessageBoxImage.Information);
- }
+ }
private void buttonUndoTemplate_Click(object sender, RoutedEventArgs e)
{
@@ -349,7 +350,7 @@ namespace ENI2.DetailViewControls
this.textBox_AgentStreetAndNumber.GetBindingExpression(TextBox.TextProperty).UpdateSource();
this.buttonUndoTemplate.IsEnabled = false; // can't undo after undo
- }
+ }
private void buttonSetTemplate_Click(object sender, RoutedEventArgs e)
{
diff --git a/ENI2/ENI2.csproj b/ENI2/ENI2.csproj
index b8a4ae5e..c3c1f0c3 100644
--- a/ENI2/ENI2.csproj
+++ b/ENI2/ENI2.csproj
@@ -36,8 +36,8 @@
5.4.0.0
true
publish.html
- 4
- 7.6.0.%2a
+ 8
+ 7.7.0.%2a
false
true
true
@@ -996,7 +996,7 @@
-
+
+
+
diff --git a/ENI2/EditControls/EditLADGDialog.xaml.cs b/ENI2/EditControls/EditLADGDialog.xaml.cs
index dab46828..0431da55 100644
--- a/ENI2/EditControls/EditLADGDialog.xaml.cs
+++ b/ENI2/EditControls/EditLADGDialog.xaml.cs
@@ -2,13 +2,14 @@
// Description: LADG Bearbeitungsdialog
//
+using System;
+using System.Linq;
using System.Windows;
using System.Collections.Generic;
using bsmd.database;
using ENI2.Controls;
-using System.Collections.ObjectModel;
-using System.Windows.Data;
+
namespace ENI2.EditControls
{
@@ -30,13 +31,17 @@ namespace ENI2.EditControls
Properties.Resources.textDischarge
};
+ private static List> _nstList = null;
+
public EditLADGDialog()
{
InitializeComponent();
Loaded += EditLADGDialog_Loaded;
+ if (_nstList == null)
+ _nstList = LocalizedLookup.GetNST2007List();
}
- public LADG LADG { get; set; }
+ public LADG LADG { get; set; }
public MessageCore Core { get; set; }
@@ -55,16 +60,16 @@ namespace ENI2.EditControls
if (this.LADG.CargoHandlingType.HasValue)
this.comboBoxHandlingType.SelectedIndex = this.LADG.CargoHandlingType.Value;
- this.comboBoxLACodes.ItemsSource = LADG.LACodes;
+ this.comboBoxLACodes.ItemsSource = LADG.LACodes;
this.comboBoxLACodes.SelectedValue = this.LADG.CargoLACode;
this.integerUpDownNumberOfItems.Value = this.LADG.CargoNumberOfItems;
this.doubleUpDownGrossQuantity.Value = this.LADG.CargoGrossQuantity_TNE;
this.locodeControl_PortOfLoading.LocodeValue = this.LADG.PortOfLoading;
this.locodeControl_PortOfDischarge.LocodeValue = this.LADG.PortOfDischarge;
- this.comboBoxLACodes.SelectedValue = this.LADG.CargoLACode;
+ this.comboBoxLACodes.SelectedValue = this.LADG.CargoLACode;
- this.comboBoxNSTCode.ItemsSource = LADG.CargoCodesNST;
+ this.comboBoxNSTCode.ItemsSource = LADG.CargoCodesNST;
this.comboBoxNSTCode.SelectedValue = this.LADG.CargoCodeNST;
this.comboBoxNSTCode.SelectionChanged += ComboBoxNSTCode_SelectionChanged;
this.comboBoxNST3Code.ItemsSource = LADG.CargoCodesNST3;
@@ -93,7 +98,7 @@ namespace ENI2.EditControls
{
if (this.comboBoxNSTCode.SelectedItem == null) return;
// filter ItemsSource von NST3
- KeyValuePair selectedItem = (KeyValuePair < string, string> ) this.comboBoxNSTCode.SelectedItem;
+ KeyValuePair selectedItem = (KeyValuePair < string, string> ) this.comboBoxNSTCode.SelectedItem;
string key = selectedItem.Key;
if (key.Length == 1) key = "0" + key;
List> filteredItemsSource = new List>();
@@ -102,7 +107,7 @@ namespace ENI2.EditControls
if (aPair.Value.StartsWith(key))
filteredItemsSource.Add(aPair);
}
- this.comboBoxNST3Code.ItemsSource = filteredItemsSource;
+ this.comboBoxNST3Code.ItemsSource = filteredItemsSource;
}
private void EditLADGDialog_OKClicked()
@@ -110,7 +115,44 @@ namespace ENI2.EditControls
this.CopyValuesToEntity();
}
- #endregion
+ #endregion
+
+ #region NST2007 list search/select event handler
+
+ private void textBoxSearchNSTList_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e)
+ {
+ if (textBoxSearchNSTList.Text.IsNullOrEmpty() || (textBoxSearchNSTList.Text.Length == 1))
+ {
+ this.listBoxNST2007.ItemsSource = null;
+ // this.comboBoxSelectNST2007ListItem.ItemsSource = null;
+ }
+ else
+ {
+ var result = _nstList.Where(kvp => kvp.Key.Contains(textBoxSearchNSTList.Text, StringComparison.OrdinalIgnoreCase));
+ this.listBoxNST2007.ItemsSource = result;
+ //this.comboBoxSelectNST2007ListItem.ItemsSource = result;
+ }
+ }
+
+ private void buttonSetTemplate_Click(object sender, RoutedEventArgs e)
+ {
+ if(this.listBoxNST2007.SelectedItem != null)
+ {
+ KeyValuePair selectedTemplate = (KeyValuePair) this.listBoxNST2007.SelectedItem;
+ if(selectedTemplate.Value.Length == 3)
+ {
+ this.comboBoxNSTCode.SelectedValue = selectedTemplate.Value.Substring(0, 2);
+ this.comboBoxNST3Code.SelectedValue = selectedTemplate.Value.Substring(2, 1);
+ }
+ }
+ }
+
+ private void listBoxNST2007_MouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e)
+ {
+ this.buttonSetTemplate_Click(null, null);
+ }
+
+ #endregion
}
}
diff --git a/ENI2/EditControls/EditReportingPartyDialog.xaml b/ENI2/EditControls/EditReportingPartyDialog.xaml
index 8944d277..2867e0b2 100644
--- a/ENI2/EditControls/EditReportingPartyDialog.xaml
+++ b/ENI2/EditControls/EditReportingPartyDialog.xaml
@@ -48,6 +48,7 @@
+
@@ -64,6 +65,7 @@
+
diff --git a/ENI2/EditControls/EditReportingPartyDialog.xaml.cs b/ENI2/EditControls/EditReportingPartyDialog.xaml.cs
index 9961be04..d792f080 100644
--- a/ENI2/EditControls/EditReportingPartyDialog.xaml.cs
+++ b/ENI2/EditControls/EditReportingPartyDialog.xaml.cs
@@ -39,6 +39,7 @@ namespace ENI2.EditControls
this.checkBoxAdministrator.IsChecked = this.ReportingParty.IsAdmin;
this.checkBoxArchived.IsChecked = this.ReportingParty.IsArchived;
+ this.checkBoxEditor.IsChecked = this.ReportingParty.IsEditor;
this.dateTimePickerChanged.Content = this.ReportingParty.Changed.HasValue ? this.ReportingParty.Changed.ToString() : "";
this.dateTimePickerCreated.Content = this.ReportingParty.Created.HasValue ? this.ReportingParty.Created.ToString() : "";
@@ -67,8 +68,9 @@ namespace ENI2.EditControls
this.ReportingParty.SetPassword(this.passwordBoxPassword.Password);
}
- this.ReportingParty.IsAdmin = this.checkBoxAdministrator.IsChecked ?? false;
+ this.ReportingParty.IsAdmin = this.checkBoxAdministrator.IsChecked ?? false;
this.ReportingParty.IsArchived = this.checkBoxArchived.IsChecked ?? false;
+ this.ReportingParty.IsEditor = this.checkBoxEditor.IsChecked ?? false;
// save value
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(this.ReportingParty);
diff --git a/ENI2/EditControls/ShowIdDialog.xaml b/ENI2/EditControls/ShowIdDialog.xaml
index b958ab2f..fb6a890e 100644
--- a/ENI2/EditControls/ShowIdDialog.xaml
+++ b/ENI2/EditControls/ShowIdDialog.xaml
@@ -29,7 +29,7 @@
-
+
diff --git a/ENI2/EditControls/ShowIdDialog.xaml.cs b/ENI2/EditControls/ShowIdDialog.xaml.cs
index d449c7ba..7ba513e2 100644
--- a/ENI2/EditControls/ShowIdDialog.xaml.cs
+++ b/ENI2/EditControls/ShowIdDialog.xaml.cs
@@ -38,15 +38,10 @@ namespace ENI2.EditControls
this.DisplayId = id;
this.statusLabel.Content = Properties.Resources.textIdReceived;
this.statusLabel.Background = Brushes.LightGreen;
- this.clickToCopyLabel.Visibility = Visibility.Visible;
+ this.clickToCopyButton.Visibility = Visibility.Visible;
}));
}
- private void textBoxId_MouseDown(object sender, MouseButtonEventArgs e)
- {
- Clipboard.SetText(this.textBoxId.Text);
- }
-
private void Button_Click(object sender, RoutedEventArgs e)
{
this.Close();
@@ -67,5 +62,16 @@ namespace ENI2.EditControls
this.labelIMO.Content = this.Core.IMO.IsNullOrEmpty() ? this.Core.ENI : this.Core.IMO;
}
}
+
+ private void clickToCopyButton_Click(object sender, RoutedEventArgs e)
+ {
+ Clipboard.SetText(this.textBoxId.Text);
+ this.clickToCopyButton.Background = Brushes.LightGreen;
+ }
+
+ private void textBoxId_MouseDown(object sender, MouseButtonEventArgs e)
+ {
+ Clipboard.SetText(this.textBoxId.Text);
+ }
}
}
diff --git a/ENI2/Excel/ExcelReader.cs b/ENI2/Excel/ExcelReader.cs
index 55b7ed09..06103366 100644
--- a/ENI2/Excel/ExcelReader.cs
+++ b/ENI2/Excel/ExcelReader.cs
@@ -7,27 +7,25 @@
//
// Copyright (c) 2015 Informatikbüro Daniel Schick. All rights reserved.
-using log4net;
+using bsmd.database;
+using ENI2.Locode;
using Microsoft.Office.Interop.Excel;
using System;
using System.Collections.Generic;
using System.Data;
-
using System.Globalization;
using System.Linq;
using System.Runtime.InteropServices;
-using ENI2.Locode;
-using bsmd.database;
-using System.Text.RegularExpressions;
namespace ENI2.Excel
{
internal class ExcelReader : ExcelBase
{
+ internal enum ReadState
+ { NONE, OK, WARN, FAIL };
- internal enum ReadState { NONE, OK, WARN, FAIL };
-
- internal enum SheetTypeEnum { BSMD, DAKOSY };
+ internal enum SheetTypeEnum
+ { BSMD, DAKOSY };
private readonly SheetTypeEnum _sheetType = SheetTypeEnum.BSMD;
@@ -36,15 +34,16 @@ namespace ENI2.Excel
public ExcelReader(string filePath, bool openReadonly = true, bool createNameFields = true)
{
this._workBook = _excelWorkbooks.Open(filePath, 0, openReadonly, 5, "", "", false, XlPlatform.xlWindows, "", false, false, 0, false, false, false);
- if(createNameFields)
+ if (createNameFields)
this.InitNameFields();
// Determine if this is a Dakosy or BSMD Sheet
- if(createNameFields)
+ if (createNameFields)
_sheetType = (_nameDict.Count > 10) ? SheetTypeEnum.BSMD : SheetTypeEnum.DAKOSY;
}
- public SheetTypeEnum SheetType { get { return _sheetType; } }
+ public SheetTypeEnum SheetType
+ { get { return _sheetType; } }
internal static void SaveMessage(Message message)
{
@@ -80,7 +79,7 @@ namespace ENI2.Excel
if (result != null)
{
result = result.Trim();
- if(result.Length > 0)
+ if (result.Length > 0)
{
result = result.Clean();
}
@@ -120,7 +119,7 @@ namespace ENI2.Excel
if (!val.IsNullOrEmpty())
{
val = val.ToUpper();
- string portName = LocodeDB.SSNPortNameFromLocode(val);
+ string portName = LocodeDB.SSNPortNameFromLocode(val);
if (portName.IsNullOrEmpty())
{
_log.WarnFormat("unknown Locode {0}", val);
@@ -135,7 +134,7 @@ namespace ENI2.Excel
string val = ReadText(lookup);
if (val.IsNullOrEmpty()) return null;
- if(int.TryParse(val, out int result))
+ if (int.TryParse(val, out int result))
{
if ((result < 10) || (result > 99))
_log.WarnFormat("invalid cargo LA code {0}", result);
@@ -154,16 +153,17 @@ namespace ENI2.Excel
string val = this.ReadText(lookup);
if (val != null)
{
- if (val.Equals("m", StringComparison.CurrentCultureIgnoreCase) || val.Equals("male", StringComparison.CurrentCultureIgnoreCase)) {
+ if (val.Equals("m", StringComparison.CurrentCultureIgnoreCase) || val.Equals("male", StringComparison.CurrentCultureIgnoreCase))
+ {
result = 1;
}
else if (val.Equals("f", StringComparison.CurrentCultureIgnoreCase) || val.Equals("female", StringComparison.CurrentCultureIgnoreCase))
{
result = 2;
}
- else if (val.Equals("n", StringComparison.CurrentCultureIgnoreCase) ||
- val.Equals("not applicable", StringComparison.CurrentCultureIgnoreCase) ||
- val.Equals("d", StringComparison.CurrentCultureIgnoreCase) ||
+ else if (val.Equals("n", StringComparison.CurrentCultureIgnoreCase) ||
+ val.Equals("not applicable", StringComparison.CurrentCultureIgnoreCase) ||
+ val.Equals("d", StringComparison.CurrentCultureIgnoreCase) ||
val.Equals("diverse", StringComparison.CurrentCultureIgnoreCase))
{
result = 9;
@@ -173,7 +173,7 @@ namespace ENI2.Excel
result = 0;
}
}
- if(result == null)
+ if (result == null)
{
_log.ErrorFormat("error reading gender on {0}", lookup);
}
@@ -192,7 +192,7 @@ namespace ENI2.Excel
if (val.Equals("picture_id", StringComparison.CurrentCultureIgnoreCase) || val.Equals("picture id", StringComparison.CurrentCultureIgnoreCase) || val.Equals("4")) result = 3;
if (val.Equals("residental_permit", StringComparison.CurrentCultureIgnoreCase) || val.Equals("residental permit", StringComparison.CurrentCultureIgnoreCase) || val.Equals("5")) result = 4;
if (val.Equals("other_legal_identity_document", StringComparison.CurrentCultureIgnoreCase) || val.Equals("other legal identity document", StringComparison.CurrentCultureIgnoreCase) || val.Equals("6")) result = 5;
- if (val.Equals("ic", StringComparison.CurrentCultureIgnoreCase)) result = 0;
+ if (val.Equals("ic", StringComparison.CurrentCultureIgnoreCase)) result = 0;
}
if (!result.HasValue)
@@ -243,11 +243,11 @@ namespace ENI2.Excel
string val = this.ReadText(lookup);
byte? result = null;
- if(val != null)
+ if (val != null)
{
if ((val.IndexOf("load", StringComparison.OrdinalIgnoreCase) >= 0) || val.Equals("1")) result = 0;
if ((val.IndexOf("discharge", StringComparison.OrdinalIgnoreCase) >= 0) || val.Equals("2")) result = 1;
- if ((val.IndexOf("transit", StringComparison.OrdinalIgnoreCase) >= 0) || val.Equals("3")) result = 2;
+ if ((val.IndexOf("transit", StringComparison.OrdinalIgnoreCase) >= 0) || val.Equals("3")) result = 2;
}
if (!result.HasValue)
@@ -275,7 +275,7 @@ namespace ENI2.Excel
_log.ErrorFormat("Wrong ISO code {0}", val);
val = "";
}
- }
+ }
}
return val;
}
@@ -302,7 +302,7 @@ namespace ENI2.Excel
string val = this.ReadText(lookup);
byte? result = null;
- if(val!= null)
+ if (val != null)
{
if (val == "I") result = 0;
if (val == "1") result = 0;
@@ -310,7 +310,7 @@ namespace ENI2.Excel
if (val == "2") result = 1;
if (val == "III") result = 2;
if (val == "3") result = 2;
- if (val.Equals("NONE", StringComparison.OrdinalIgnoreCase)) result = 0;
+ if (val.Equals("NONE", StringComparison.OrdinalIgnoreCase)) result = 0;
}
if (!result.HasValue)
@@ -323,7 +323,7 @@ namespace ENI2.Excel
{
string val = this.ReadText(lookup);
bool isValid = false;
- if(!val.IsNullOrEmpty())
+ if (!val.IsNullOrEmpty())
{
if (int.TryParse(val, out int typeVal))
{
@@ -371,13 +371,13 @@ namespace ENI2.Excel
_log.ErrorFormat("cannot read delivery {0}", lookup);
return result;
- }
+ }
internal byte? ReadHazards(string lookup)
{
string val = this.ReadText(lookup);
byte? result = null;
- if(val != null)
+ if (val != null)
{
if (val.Equals("p", StringComparison.OrdinalIgnoreCase)) return 0;
if (val.Equals("s", StringComparison.OrdinalIgnoreCase)) return 1;
@@ -390,7 +390,7 @@ namespace ENI2.Excel
{
string val = this.ReadText(lookup);
byte? result = null;
- if(val != null)
+ if (val != null)
{
if (val.Equals("a", StringComparison.OrdinalIgnoreCase)) return 0;
if (val.Equals("b", StringComparison.OrdinalIgnoreCase)) return 1;
@@ -401,8 +401,8 @@ namespace ENI2.Excel
internal DateTime? ReadBirthDate(string lookup)
{
- DateTime? result = this.ReadDate(lookup);
- if(result.HasValue)
+ DateTime? result = this.ReadDate(lookup);
+ if (result.HasValue)
{
if (result.Value > DateTime.Now)
_log.WarnFormat("Birth date implausible for {0} : {1}", lookup, result);
@@ -420,7 +420,7 @@ namespace ENI2.Excel
{
var val = _nameDict[lookup].RefersToRange.Value;
if (val is DateTime)
- {
+ {
date = val;
}
else if (val is double)
@@ -430,7 +430,7 @@ namespace ENI2.Excel
date = DateTime.FromOADate(val);
}
catch (ArgumentException) { /* .. */ }
- if(date == null)
+ if (date == null)
{
CultureInfo provider = CultureInfo.InvariantCulture;
string dateString = val.ToString();
@@ -446,22 +446,37 @@ namespace ENI2.Excel
date = tmpDate;
}
+ if (date == null)
+ {
+ string[] formats = { "d/M/yyyy", "dd/M/yyyy", "d/MM/yyyy", "dd/MM/yyyy", "d/MMM/yyyy", "dd/MMM/yyyy", "yyyy-MM-dd", "yyyy-mm-d", "dd-MM-yyyy" };
+ if (DateTime.TryParseExact(val, formats, NumberFormatInfo.InvariantInfo, DateTimeStyles.None, out DateTime tmpDate))
+ date = tmpDate;
+ }
+
+ if (date == null)
+ {
+ CultureInfo en = CultureInfo.CreateSpecificCulture("en-US");
+ string[] formats = { "d/M/yyyy", "dd/M/yyyy", "d/MM/yyyy", "dd/MM/yyyy", "d/MMM/yyyy", "dd/MMM/yyyy", "yyyy-MM-dd", "yyyy-mm-d", "dd-MM-yyyy" };
+ if (DateTime.TryParseExact(val, formats, en, DateTimeStyles.None, out DateTime tmpDate))
+ return tmpDate;
+ }
+
if (date != null)
{
if ((date.Value < new DateTime(1899, 1, 1)) || (date.Value > new DateTime(2130, 1, 1)))
{
- date = null; // this can't be right
- }
+ date = null; // this can't be right
+ }
}
}
return date;
}
catch (Exception)
- {
+ {
_log.WarnFormat("error parsing datetime for lookup {0}", lookup);
return null;
- }
+ }
}
internal DateTime? ReadDateTime(string dateField, string timeField)
@@ -470,26 +485,26 @@ namespace ENI2.Excel
DateTime? etaDate = this.ReadDate(dateField);
DateTime? etaTime = this.ReadTime(timeField);
if (etaDate != null)
- {
+ {
if (etaTime != null)
{
result = new DateTime(etaDate.Value.Year, etaDate.Value.Month, etaDate.Value.Day, etaTime.Value.Hour, etaTime.Value.Minute, etaTime.Value.Second, DateTimeKind.Local);
result = result.Value.ToUniversalTime();
- }
+ }
else
{
result = new DateTime(etaDate.Value.Year, etaDate.Value.Month, etaDate.Value.Day, 0, 0, 0, DateTimeKind.Local);
result = result.Value.ToUniversalTime();
}
}
-
+
return result;
}
internal DateTime? ReadTime(string lookup)
{
DateTime? result = null;
-
+
try
{
if (_nameDict.ContainsKey(lookup))
@@ -505,7 +520,7 @@ namespace ENI2.Excel
{
result = DateTime.FromOADate(val);
}
- catch(ArgumentException) { }
+ catch (ArgumentException) { }
if (result == null)
{
@@ -520,7 +535,8 @@ namespace ENI2.Excel
}
}
- if (val is string) {
+ if (val is string)
+ {
if (((string)val).EndsWith("lt", StringComparison.OrdinalIgnoreCase))
val = ((string)val).Substring(0, ((string)val).Length - 2).Trim();
else
@@ -549,21 +565,21 @@ namespace ENI2.Excel
if (DateTime.TryParseExact(dateString, format, provider, DateTimeStyles.None, out DateTime tmpDate))
result = tmpDate;
}
- }
+ }
}
}
catch (Exception)
- {
- _log.WarnFormat("error reading time for lookup {0}", lookup);
+ {
+ _log.WarnFormat("error reading time for lookup {0}", lookup);
}
return result;
- }
+ }
internal double ReadNumberDefaultZero(string lookup)
{
double? result = this.ReadNumber(lookup);
- if(!result.HasValue)
+ if (!result.HasValue)
{
result = 0;
}
@@ -573,9 +589,9 @@ namespace ENI2.Excel
internal bool? ReadBoolean(string lookup)
{
string val = this.ReadText(lookup);
- if (val == null)
+ if (val == null)
return null;
-
+
if ((val == "y") || (val == "Y") || val.Equals("yes", StringComparison.OrdinalIgnoreCase) || (val == "1") || (val == "x") || (val == "X"))
return true;
@@ -584,17 +600,30 @@ namespace ENI2.Excel
#region Dakosy-specific functions
+ internal bool HasWorksheetNamed(string sheetName)
+ {
+ try
+ {
+ Worksheet theWorkSheet = _workBook.Worksheets[sheetName];
+ return theWorkSheet != null;
+ }
+ catch (Exception)
+ {
+ return false;
+ }
+ }
+
internal string ReadCellAsText(string sheetName, string range)
{
try
{
- Worksheet workSheet = (Worksheet) _workBook.Worksheets[sheetName];
+ Worksheet workSheet = (Worksheet)_workBook.Worksheets[sheetName];
string result = workSheet.Range[range].Text.ToString();
if (!result.IsNullOrEmpty())
result = result.Trim().Clean();
return result;
}
- catch(Exception e)
+ catch (Exception e)
{
_log.Warn(e.Message);
}
@@ -627,7 +656,6 @@ namespace ENI2.Excel
Range aRange = workSheet.Range[range];
if (aRange != null)
{
-
}
}
catch (Exception e)
@@ -690,23 +718,19 @@ namespace ENI2.Excel
string dateString = ReadCellAsText(sheetName, range);
if (dateString != null)
{
- CultureInfo provider = CultureInfo.InvariantCulture;
- const string dateTimeFormat = "yyyy/MM/dd HH:mm";
- if (DateTime.TryParseExact(dateString, dateTimeFormat, provider, DateTimeStyles.None, out DateTime tmpDate))
- return tmpDate.ToUniversalTime();
- const string dateFormat = "yyyy/MM/dd";
- if (DateTime.TryParseExact(dateString, dateFormat, provider, DateTimeStyles.None, out DateTime tmpDate2))
+ string[] formats = { "yyyy/MM/dd HH:mm", "yyyy/MM/dd", "dd.MM.yyyy", "dd-MM-yyyy", "d/M/yyyy", "dd/M/yyyy", "d/MM/yyyy", "dd/MM/yyyy", "d/MMM/yyyy", "dd/MMM/yyyy", "yyyy-MM-dd", "yyyy-mm-d" };
+ if (DateTime.TryParseExact(dateString, formats, NumberFormatInfo.InvariantInfo, DateTimeStyles.None, out DateTime tmpDate))
+ return tmpDate;
+ CultureInfo en = CultureInfo.CreateSpecificCulture("en-US");
+ if (DateTime.TryParseExact(dateString, formats, en, DateTimeStyles.None, out DateTime tmpDate2))
return tmpDate2;
- const string dateFormat2 = "dd.MM.yyyy";
- if (DateTime.TryParseExact(dateString, dateFormat2, provider, DateTimeStyles.None, out DateTime tmpDate3))
- return tmpDate3;
return null;
}
- else return null;
+ else
+ return null;
}
- #endregion
-
+ #endregion Dakosy-specific functions
}
-}
+}
\ No newline at end of file
diff --git a/ENI2/Excel/ExcelUtil.cs b/ENI2/Excel/ExcelUtil.cs
index 70f27daf..5bb5be88 100644
--- a/ENI2/Excel/ExcelUtil.cs
+++ b/ENI2/Excel/ExcelUtil.cs
@@ -7,14 +7,14 @@
//
// Copyright (c) 2015 Informatikbüro Daniel Schick. All rights reserved.
+using bsmd.database;
+using ENI2.EditControls;
+using ENI2.Locode;
+using log4net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
-using log4net;
-using bsmd.database;
-using ENI2.Locode;
-using ENI2.EditControls;
namespace ENI2.Excel
{
@@ -36,7 +36,7 @@ namespace ENI2.Excel
readMessage = "";
MessageCore aMessageCore = ExcelUtil.LookupCoreById(reader);
- if((aMessageCore == null) || (aMessageCore.Id.Value != messageCore.Id.Value))
+ if ((aMessageCore == null) || (aMessageCore.Id.Value != messageCore.Id.Value))
{
readMessage = "Id not matching in import sheet";
return false;
@@ -58,7 +58,7 @@ namespace ENI2.Excel
// load messages if already present
List messages = DBManager.Instance.GetMessagesForCore(messageCore, DBManager.MessageLoad.ALL);
-
+
int? testCode = (int?)reader.ReadNumber("WAS.WasteCode_1");
if (testCode > 999) isOldVersion = true;
@@ -67,7 +67,6 @@ namespace ENI2.Excel
// parse selected classes
try
{
-
foreach (Message message in messages)
{
if ((message.MessageNotificationClass == Message.NotificationClass.AGNT) && notificationClasses.Contains(Message.NotificationClass.AGNT))
@@ -128,14 +127,13 @@ namespace ENI2.Excel
{ if (ScanTOWD(message, reader)) ExcelReader.SaveMessage(message); continue; }
if ((message.MessageNotificationClass == Message.NotificationClass.WAS) && notificationClasses.Contains(Message.NotificationClass.WAS))
{ if (ScanWAS(message, reader, isOldVersion)) ExcelReader.SaveMessage(message); continue; }
- if((message.MessageNotificationClass == Message.NotificationClass.WAS_RCPT) && notificationClasses.Contains(Message.NotificationClass.WAS_RCPT))
+ if ((message.MessageNotificationClass == Message.NotificationClass.WAS_RCPT) && notificationClasses.Contains(Message.NotificationClass.WAS_RCPT))
{ if (ScanWAS_RCPT(message, reader)) ExcelReader.SaveMessage(message); continue; }
-
}
DBManager.Instance.Save(messageCore); // muss das eigentlich sein?
}
- catch(Exception ex)
+ catch (Exception ex)
{
readMessage = ex.Message;
result = false;
@@ -144,12 +142,12 @@ namespace ENI2.Excel
return result;
}
- #endregion
+ #endregion Process Sheet (normal BSMD sheet import)
#region ATA
private static bool ScanATA(Message ataMessage, ExcelReader reader)
- {
+ {
if (ataMessage.Elements.Count == 0)
{
ATA newATA = new ATA();
@@ -159,20 +157,20 @@ namespace ENI2.Excel
ATA ata = ataMessage.Elements[0] as ATA;
ExcelUtil.ScanMessage(ata, reader);
- if(!ata.ATAPortOfCall.HasValue)
+ if (!ata.ATAPortOfCall.HasValue)
{
ata.ATAPortOfCall = reader.ReadDateTime("ATA.ATADatePortOfCall", "ATA.ATATimePortOfCall");
}
- return !(!ata.ATAPortOfCall.HasValue && ataMessage.IsNew);
- }
+ return !(!ata.ATAPortOfCall.HasValue && ataMessage.IsNew);
+ }
- #endregion
+ #endregion ATA
#region ATD
private static bool ScanATD(Message atdMessage, ExcelReader reader)
- {
+ {
if (atdMessage.Elements.Count == 0)
{
ATD newATD = new ATD();
@@ -187,15 +185,15 @@ namespace ENI2.Excel
atd.ATDPortOfCall = reader.ReadDateTime("ATD.ATDDatePortOfCall", "ATD.ATDTimePortOfCall");
}
- return !(!atd.ATDPortOfCall.HasValue && atdMessage.IsNew);
+ return !(!atd.ATDPortOfCall.HasValue && atdMessage.IsNew);
}
- #endregion
+ #endregion ATD
#region TIEFA
private static bool ScanTIEFA(Message tiefaMessage, ExcelReader reader, bool isOldVersion)
- {
+ {
if (tiefaMessage.Elements.Count == 0)
{
TIEFA newTIEFA = new TIEFA();
@@ -211,13 +209,13 @@ namespace ENI2.Excel
return true;
}
- #endregion
+ #endregion TIEFA
#region TIEFD
private static bool ScanTIEFD(Message tiefdMessage, ExcelReader reader, bool isOldVersion)
- {
- if(tiefdMessage.Elements.Count == 0)
+ {
+ if (tiefdMessage.Elements.Count == 0)
{
TIEFD newTIEFD = new TIEFD();
newTIEFD.MessageHeader = tiefdMessage;
@@ -227,17 +225,17 @@ namespace ENI2.Excel
ScanMessage(tiefd, reader);
if (!tiefd.DraughtUponDeparture_DMT.HasValue && tiefdMessage.IsNew)
return false;
- if (tiefd.DraughtUponDeparture_DMT.HasValue && ! isOldVersion)
+ if (tiefd.DraughtUponDeparture_DMT.HasValue && !isOldVersion)
tiefd.DraughtUponDeparture_DMT = tiefd.DraughtUponDeparture_DMT.Value * 10; // m to dm
- return true;
+ return true;
}
- #endregion
+ #endregion TIEFD
#region NAME
private static bool ScanNAME(Message nameMessage, ExcelReader reader)
- {
+ {
if (nameMessage.Elements.Count == 0)
{
NAME newNAME = new NAME();
@@ -251,7 +249,7 @@ namespace ENI2.Excel
return true;
}
- #endregion
+ #endregion NAME
#region BPOL
@@ -269,12 +267,12 @@ namespace ENI2.Excel
// 19.12.16: Einschleicher-Feld von Klasse POBA übernehmen (anderes ist nicht im Sheet!)
// (1.12.21: bezweifle ob das so wie gedacht funktioniert..)
- Message pobaMessage = ExcelUtil.GetMessageWithType(messages, messageCore, Message.NotificationClass.POBA);
+ Message pobaMessage = ExcelUtil.GetMessageWithType(messages, messageCore, Message.NotificationClass.POBA);
if (pobaMessage.Elements.Count > 0)
{
POBA poba = pobaMessage.Elements[0] as POBA;
bpol.StowawaysOnBoard = (poba.TotalStowawaysOnBoardUponArrival ?? 0) > 0;
- }
+ }
bpol.DeleteElements();
@@ -299,10 +297,10 @@ namespace ENI2.Excel
bpol.PortOfItineraries.Add(poi);
}
- poi.PortOfItineraryName = bpolNameValue;
- poi.PortOfItineraryLocode = bpolLocodeValue;
- // falls nur Locode angegeben wurde, Portname aus Locode ermitteln
- if(poi.PortOfItineraryName.IsNullOrEmpty() && !poi.PortOfItineraryLocode.IsNullOrEmpty() && (poi.PortOfItineraryLocode.Length == 5))
+ poi.PortOfItineraryName = bpolNameValue;
+ poi.PortOfItineraryLocode = bpolLocodeValue;
+ // falls nur Locode angegeben wurde, Portname aus Locode ermitteln
+ if (poi.PortOfItineraryName.IsNullOrEmpty() && !poi.PortOfItineraryLocode.IsNullOrEmpty() && (poi.PortOfItineraryLocode.Length == 5))
{
poi.PortOfItineraryName = LocodeDB.PortNameFromLocode(poi.PortOfItineraryLocode);
}
@@ -313,13 +311,13 @@ namespace ENI2.Excel
return true;
}
- #endregion
+ #endregion BPOL
#region POBA
private static bool ScanPOBA(Message pobaMessage, ExcelReader reader)
{
- if(pobaMessage.Elements.Count == 0)
+ if (pobaMessage.Elements.Count == 0)
{
POBA newPoba = new POBA();
newPoba.MessageHeader = pobaMessage;
@@ -331,16 +329,19 @@ namespace ENI2.Excel
if (((poba.TotalPersonsOnBoardUponArrival ?? 0) == 0) && poba.IsNew)
return false;
+ if (!poba.TotalPassengersOnBoardUponArrival.HasValue) poba.TotalPassengersOnBoardUponArrival = 0;
+ if (!poba.TotalStowawaysOnBoardUponArrival.HasValue) poba.TotalStowawaysOnBoardUponArrival = 0;
+
return true;
}
- #endregion
+ #endregion POBA
#region POBD
private static bool ScanPOBD(Message pobdMessage, ExcelReader reader)
- {
- if(pobdMessage.Elements.Count == 0)
+ {
+ if (pobdMessage.Elements.Count == 0)
{
POBD newPobd = new POBD();
newPobd.MessageHeader = pobdMessage;
@@ -352,17 +353,19 @@ namespace ENI2.Excel
if (((pobd.TotalPersonsOnBoardUponDeparture ?? 0) == 0) && pobd.IsNew)
return false;
+ if (!pobd.TotalPassengersOnBoardUponDeparture.HasValue) pobd.TotalPassengersOnBoardUponDeparture = 0;
+ if (!pobd.TotalStowawaysOnBoardUponDeparture.HasValue) pobd.TotalStowawaysOnBoardUponDeparture = 0;
+
return true;
}
- #endregion
+ #endregion POBD
#region HAZA
private static bool ScanHAZA(Message hazaMessage, ExcelReader reader, bool isOldVersion)
{
-
- if(hazaMessage.Elements.Count == 0)
+ if (hazaMessage.Elements.Count == 0)
{
HAZ newHaza = new HAZ();
newHaza.IsDeparture = false;
@@ -373,15 +376,15 @@ namespace ENI2.Excel
haza.NoDPGOnBoardOnArrival = !reader.ReadBoolean("HAZA.DGOnBoard");
haza.DPGManifestOnBoardOnArrival = reader.ReadBoolean("HAZA.DPGManifestOnBoardOnArrival");
- haza.DPGContactFamilyName = reader.ReadText("HAZA.DPGContactFamilyName");
- haza.DPGContactPhone = reader.ReadText("HAZA.DPGContactPhone");
+ haza.DPGContactFamilyName = reader.ReadText("HAZA.DPGContactFamilyName");
+ haza.DPGContactPhone = reader.ReadText("HAZA.DPGContactPhone");
haza.MOUBaltic = reader.ReadBoolean("HAZA.MOUBaltic");
string shipClass = reader.ReadText("HAZA.INFShipClass");
- if(!shipClass.IsNullOrEmpty())
- {
+ if (!shipClass.IsNullOrEmpty())
+ {
if (shipClass.Contains('1')) haza.INFShipClass = 0;
if (shipClass.Contains('2')) haza.INFShipClass = 1;
- if (shipClass.Contains('3')) haza.INFShipClass = 2;
+ if (shipClass.Contains('3')) haza.INFShipClass = 2;
}
#region IMDG
@@ -408,14 +411,14 @@ namespace ENI2.Excel
string imdg_remarks = string.Format("HAZA.IMDG.Remarks_{0}", i);
string unNumber = reader.ReadText(imdg_unno);
- if(unNumber.IsNullOrEmpty()) // if unnumber is not set ignore this row
+ if (unNumber.IsNullOrEmpty()) // if unnumber is not set ignore this row
{
continue;
}
string posIdent = string.Format("IMDG-{0}", i);
IMDGPosition imdgPosition = haza.GetIMDGPositionWithIdentifier(posIdent);
- if(imdgPosition == null)
+ if (imdgPosition == null)
{
imdgPosition = new IMDGPosition();
imdgPosition.HAZ = haza;
@@ -423,30 +426,30 @@ namespace ENI2.Excel
haza.IMDGPositions.Add(imdgPosition);
}
- imdgPosition.UNNumber = unNumber;
- imdgPosition.ProperShippingName = reader.ReadText(imdg_properShippingName);
- imdgPosition.IMOClass = reader.ReadText(imdg_imoClass);
+ imdgPosition.UNNumber = unNumber;
+ imdgPosition.ProperShippingName = reader.ReadText(imdg_properShippingName);
+ imdgPosition.IMOClass = reader.ReadText(imdg_imoClass);
imdgPosition.PackingGroup = reader.ReadPackingGroup(imdg_packingGroup);
imdgPosition.MarinePollutant = reader.ReadBoolean(imdg_marinePollutant);
- imdgPosition.Flashpoint_CEL = reader.ReadText(imdg_flashpoint);
+ imdgPosition.Flashpoint_CEL = reader.ReadText(imdg_flashpoint);
imdgPosition.NumberOfPackages = (int?)reader.ReadNumber(imdg_numberOfPackages);
- imdgPosition.PackageType = reader.ReadText(imdg_packageType);
+ imdgPosition.PackageType = reader.ReadText(imdg_packageType);
imdgPosition.LimitedQuantities = reader.ReadBoolean(imdg_limitedQuantities);
imdgPosition.ExceptedQuantities = reader.ReadBoolean(imdg_exceptedQuantities);
imdgPosition.NetQuantity_KGM = reader.ReadNumber(imdg_netQuantity);
imdgPosition.GrossQuantity_KGM = reader.ReadNumber(imdg_grossQuantity);
- imdgPosition.VehicleLicenseNumber = reader.ReadText(imdg_number);
- imdgPosition.StowagePosition = reader.ReadText(imdg_stowagePosition);
- imdgPosition.PortOfLoading = reader.ReadLoCode(imdg_portOfLoading);
- imdgPosition.PortOfDischarge = reader.ReadLoCode(imdg_portOfDischarge);
+ imdgPosition.VehicleLicenseNumber = reader.ReadText(imdg_number);
+ imdgPosition.StowagePosition = reader.ReadText(imdg_stowagePosition);
+ imdgPosition.PortOfLoading = reader.ReadLoCode(imdg_portOfLoading);
+ imdgPosition.PortOfDischarge = reader.ReadLoCode(imdg_portOfDischarge);
imdgPosition.ContainerNumber = reader.ReadText(imdg_containerNumber);
imdgPosition.Remarks = reader.ReadText(imdg_remarks);
}
- #endregion
+ #endregion IMDG
#region IBC
-
+
for (int i = 1; i <= 5; i++)
{
string ibc_productName = string.Format("HAZA.IBC.ProductName_{0}", i);
@@ -463,11 +466,11 @@ namespace ENI2.Excel
string ibc_remarks = string.Format("HAZA.IBC.Remarks_{0}", i);
string productName = reader.ReadText(ibc_productName);
- if (productName.IsNullOrEmpty()) continue;
+ if (productName.IsNullOrEmpty()) continue;
string posIdent = string.Format("IBC-{0}", i);
IBCPosition ibcPosition = haza.GetIBCPositionWithIdentifier(posIdent);
- if(ibcPosition == null)
+ if (ibcPosition == null)
{
ibcPosition = new IBCPosition();
ibcPosition.Identifier = posIdent;
@@ -476,17 +479,17 @@ namespace ENI2.Excel
}
ibcPosition.ProductName = productName;
-
+
string pollutionCategory = reader.ReadText(ibc_pollutionCategory);
- if(!pollutionCategory.IsNullOrEmpty())
+ if (!pollutionCategory.IsNullOrEmpty())
{
if (pollutionCategory.Equals("X", StringComparison.OrdinalIgnoreCase)) ibcPosition.PollutionCategory = 0;
if (pollutionCategory.Equals("Y", StringComparison.OrdinalIgnoreCase)) ibcPosition.PollutionCategory = 1;
if (pollutionCategory.Equals("Z", StringComparison.OrdinalIgnoreCase)) ibcPosition.PollutionCategory = 2;
if (pollutionCategory.Equals("OS", StringComparison.OrdinalIgnoreCase)) ibcPosition.PollutionCategory = 3;
- }
+ }
- ibcPosition.Flashpoint_CEL = reader.ReadText(ibc_flash);
+ ibcPosition.Flashpoint_CEL = reader.ReadText(ibc_flash);
if (!ibcPosition.Flashpoint_CEL.IsNullOrEmpty())
{
if (ibcPosition.Flashpoint_CEL != "-")
@@ -498,20 +501,20 @@ namespace ENI2.Excel
}
}
}
-
- ibcPosition.Quantity_KGM = (int ?) reader.ReadNumber(ibc_quantity);
- ibcPosition.StowagePosition = reader.ReadText(ibc_stowagePosition);
- ibcPosition.PortOfLoading = reader.ReadLoCode(ibc_portOfLoading);
+
+ ibcPosition.Quantity_KGM = (int?)reader.ReadNumber(ibc_quantity);
+ ibcPosition.StowagePosition = reader.ReadText(ibc_stowagePosition);
+ ibcPosition.PortOfLoading = reader.ReadLoCode(ibc_portOfLoading);
ibcPosition.PortOfDischarge = reader.ReadLoCode(ibc_portOfDischarge);
ibcPosition.Hazards = reader.ReadHazards(ibc_hazards);
ibcPosition.SpecRef15_19 = reader.ReadBoolean(ibc_specrefs);
ibcPosition.Remarks = reader.ReadText(ibc_remarks);
}
- #endregion
+ #endregion IBC
#region IGC
-
+
for (int i = 1; i <= 5; i++)
{
string igc_productName = string.Format("HAZA.IGC.ProductName_{0}", i);
@@ -524,11 +527,11 @@ namespace ENI2.Excel
string igc_remarks = string.Format("HAZA.IGC.Remarks_{0}", i);
string productName = reader.ReadText(igc_productName);
- if (productName.IsNullOrEmpty()) continue;
+ if (productName.IsNullOrEmpty()) continue;
string posIdent = string.Format("IGC-{0}", i);
IGCPosition igcPosition = haza.GetIGCPositionWithIdentifier(posIdent);
- if(igcPosition == null)
+ if (igcPosition == null)
{
igcPosition = new IGCPosition();
igcPosition.Identifier = posIdent;
@@ -536,20 +539,20 @@ namespace ENI2.Excel
haza.IGCPositions.Add(igcPosition);
}
- igcPosition.ProductName = productName;
+ igcPosition.ProductName = productName;
igcPosition.Quantity_KGM = reader.ReadNumber(igc_quantity);
- igcPosition.StowagePosition = reader.ReadText(igc_stowagePosition);
- igcPosition.PortOfLoading = reader.ReadLoCode(igc_portOfLoading);
+ igcPosition.StowagePosition = reader.ReadText(igc_stowagePosition);
+ igcPosition.PortOfLoading = reader.ReadLoCode(igc_portOfLoading);
igcPosition.PortOfDischarge = reader.ReadLoCode(igc_portOfDischarge);
igcPosition.UNNumber = reader.ReadText(igc_unnumber);
igcPosition.IMOClass = reader.ReadText(igc_imoclass);
igcPosition.Remarks = reader.ReadText(igc_remarks);
}
- #endregion
+ #endregion IGC
#region IMSBC
-
+
for (int i = 1; i <= 5; i++)
{
string imsbc_bcsn = string.Format("HAZA.IMSBC.BulkCargoShippingName_{0}", i);
@@ -564,11 +567,11 @@ namespace ENI2.Excel
string imsbc_remarks = string.Format("HAZA.IMSBC.Remarks_{0}", i);
string bcsn = reader.ReadText(imsbc_bcsn);
- if (bcsn.IsNullOrEmpty()) continue;
+ if (bcsn.IsNullOrEmpty()) continue;
string posIdent = string.Format("IMSBC-{0}", i);
IMSBCPosition imsbcPosition = haza.GetIMSBCPositionWithIdentifier(posIdent);
- if(imsbcPosition == null)
+ if (imsbcPosition == null)
{
imsbcPosition = new IMSBCPosition();
imsbcPosition.Identifier = posIdent;
@@ -576,11 +579,11 @@ namespace ENI2.Excel
haza.IMSBCPositions.Add(imsbcPosition);
}
- imsbcPosition.BulkCargoShippingName = bcsn;
+ imsbcPosition.BulkCargoShippingName = bcsn;
imsbcPosition.MHB = reader.ReadBoolean(imsbc_mhb);
imsbcPosition.Quantity_KGM = reader.ReadNumber(imsbc_quantity);
- imsbcPosition.StowagePosition = reader.ReadText(imsbc_stowagePosition);
- imsbcPosition.PortOfLoading = reader.ReadLoCode(imsbc_portOfLoading);
+ imsbcPosition.StowagePosition = reader.ReadText(imsbc_stowagePosition);
+ imsbcPosition.PortOfLoading = reader.ReadLoCode(imsbc_portOfLoading);
imsbcPosition.PortOfDischarge = reader.ReadLoCode(imsbc_portOfDischarge);
imsbcPosition.IMOHazardClass = reader.ReadHazardClass(imsbc_hazardclass);
imsbcPosition.UNNumber = reader.ReadText(imsbc_unnumber);
@@ -588,10 +591,10 @@ namespace ENI2.Excel
imsbcPosition.Remarks = reader.ReadText(imsbc_remarks);
}
- #endregion
+ #endregion IMSBC
#region MARPOL
-
+
for (int i = 1; i <= 5; i++)
{
string marpol_name = string.Format("HAZA.MARPOL.Name_{0}", i);
@@ -603,11 +606,11 @@ namespace ENI2.Excel
string marpol_remarks = string.Format("HAZA.MARPOL.Remarks_{0}", i);
string name = reader.ReadText(marpol_name);
- if (name.IsNullOrEmpty()) continue;
+ if (name.IsNullOrEmpty()) continue;
string posIdent = string.Format("MARPOL-{0}", i);
MARPOL_Annex_I_Position marpolPosition = haza.GetMARPOLPositionWithIdentifier(posIdent);
- if(marpolPosition == null)
+ if (marpolPosition == null)
{
marpolPosition = new MARPOL_Annex_I_Position();
marpolPosition.Identifier = posIdent;
@@ -615,8 +618,8 @@ namespace ENI2.Excel
haza.MARPOLPositions.Add(marpolPosition);
}
- marpolPosition.Name = name;
- marpolPosition.Flashpoint_CEL = reader.ReadText(marpol_flash);
+ marpolPosition.Name = name;
+ marpolPosition.Flashpoint_CEL = reader.ReadText(marpol_flash);
// Früher bei NULL: NF // Ableitung Flashpoint-Info: Christin, 22.3.2017
// jetzt bei leerer Flashpoint_CEL: Flashpointinformation NULL: Basti, 13.7.2020
@@ -631,15 +634,15 @@ namespace ENI2.Excel
}
marpolPosition.Quantity_KGM = reader.ReadNumber(marpol_quantity);
- marpolPosition.StowagePosition = reader.ReadText(marpol_stowagePosition);
+ marpolPosition.StowagePosition = reader.ReadText(marpol_stowagePosition);
marpolPosition.PortOfLoading = reader.ReadLoCode(marpol_portOfLoading);
marpolPosition.PortOfDischarge = reader.ReadLoCode(marpol_portOfDischarge);
marpolPosition.Remarks = reader.ReadText(marpol_remarks);
}
- #endregion
-
- if(haza.HasPositions) // Christin 22.3.17: Felder bei Positionen immer fest ausfüllen
+ #endregion MARPOL
+
+ if (haza.HasPositions) // Christin 22.3.17: Felder bei Positionen immer fest ausfüllen
{
haza.NoDPGOnBoardOnArrival = false;
}
@@ -647,12 +650,12 @@ namespace ENI2.Excel
return true;
}
- #endregion
+ #endregion HAZA
#region HAZD
private static bool ScanHAZD(Message hazdMessage, ExcelReader reader)
- {
+ {
if (hazdMessage.Elements.Count == 0)
{
HAZ newHazd = new HAZ();
@@ -660,21 +663,21 @@ namespace ENI2.Excel
newHazd.MessageHeader = hazdMessage;
hazdMessage.Elements.Add(newHazd);
}
- HAZ hazd = hazdMessage.Elements[0] as HAZ;
+ HAZ hazd = hazdMessage.Elements[0] as HAZ;
hazd.NoDPGOnBoardOnArrival = !reader.ReadBoolean("HAZD.DGOnBoard");
hazd.DPGManifestOnBoardOnArrival = reader.ReadBoolean("HAZD.DPGManifestOnBoardOnDeparture");
- hazd.DPGContactFamilyName = reader.ReadText("HAZD.DPGContactFamilyName");
- hazd.DPGContactPhone = reader.ReadText("HAZD.DPGContactPhone");
+ hazd.DPGContactFamilyName = reader.ReadText("HAZD.DPGContactFamilyName");
+ hazd.DPGContactPhone = reader.ReadText("HAZD.DPGContactPhone");
hazd.MOUBaltic = reader.ReadBoolean("HAZD.MOUBaltic");
string shipClass = reader.ReadText("HAZD.INFShipClass");
if (!shipClass.IsNullOrEmpty())
- {
+ {
if (shipClass.Contains('1')) hazd.INFShipClass = 0;
if (shipClass.Contains('2')) hazd.INFShipClass = 1;
- if (shipClass.Contains('3')) hazd.INFShipClass = 2;
+ if (shipClass.Contains('3')) hazd.INFShipClass = 2;
}
-
+
#region IMDG
for (int i = 1; i <= 10; i++)
@@ -699,7 +702,7 @@ namespace ENI2.Excel
string imdg_remarks = string.Format("HAZD.IMDG.Remarks_{0}", i);
string unNumber = reader.ReadText(imdg_unno);
- if (unNumber.IsNullOrEmpty()) continue; // if unnumber is not set ignore this row
+ if (unNumber.IsNullOrEmpty()) continue; // if unnumber is not set ignore this row
string posIdent = string.Format("IMDG-{0}", i);
IMDGPosition imdgPosition = hazd.GetIMDGPositionWithIdentifier(posIdent);
@@ -711,30 +714,30 @@ namespace ENI2.Excel
hazd.IMDGPositions.Add(imdgPosition);
}
- imdgPosition.UNNumber = unNumber;
- imdgPosition.ProperShippingName = reader.ReadText(imdg_properShippingName);
- imdgPosition.IMOClass = reader.ReadText(imdg_imoClass);
+ imdgPosition.UNNumber = unNumber;
+ imdgPosition.ProperShippingName = reader.ReadText(imdg_properShippingName);
+ imdgPosition.IMOClass = reader.ReadText(imdg_imoClass);
imdgPosition.PackingGroup = reader.ReadPackingGroup(imdg_packingGroup);
imdgPosition.MarinePollutant = reader.ReadBoolean(imdg_marinePollutant);
- imdgPosition.Flashpoint_CEL = reader.ReadText(imdg_flashpoint);
+ imdgPosition.Flashpoint_CEL = reader.ReadText(imdg_flashpoint);
imdgPosition.NumberOfPackages = (int?)reader.ReadNumber(imdg_numberOfPackages);
- imdgPosition.PackageType = reader.ReadText(imdg_packageType);
+ imdgPosition.PackageType = reader.ReadText(imdg_packageType);
imdgPosition.LimitedQuantities = reader.ReadBoolean(imdg_limitedQuantities);
imdgPosition.ExceptedQuantities = reader.ReadBoolean(imdg_exceptedQuantities);
imdgPosition.NetQuantity_KGM = reader.ReadNumber(imdg_netQuantity);
imdgPosition.GrossQuantity_KGM = reader.ReadNumber(imdg_grossQuantity);
- imdgPosition.VehicleLicenseNumber = reader.ReadText(imdg_number);
- imdgPosition.StowagePosition = reader.ReadText(imdg_stowagePosition);
- imdgPosition.PortOfLoading = reader.ReadLoCode(imdg_portOfLoading);
- imdgPosition.PortOfDischarge = reader.ReadLoCode(imdg_portOfDischarge);
+ imdgPosition.VehicleLicenseNumber = reader.ReadText(imdg_number);
+ imdgPosition.StowagePosition = reader.ReadText(imdg_stowagePosition);
+ imdgPosition.PortOfLoading = reader.ReadLoCode(imdg_portOfLoading);
+ imdgPosition.PortOfDischarge = reader.ReadLoCode(imdg_portOfDischarge);
imdgPosition.ContainerNumber = reader.ReadText(imdg_containerNumber);
imdgPosition.Remarks = reader.ReadText(imdg_remarks);
}
- #endregion
+ #endregion IMDG
#region IBC
-
+
for (int i = 1; i <= 5; i++)
{
string ibc_productName = string.Format("HAZD.IBC.ProductName_{0}", i);
@@ -749,7 +752,7 @@ namespace ENI2.Excel
string ibc_remarks = string.Format("HAZD.IBC.Remarks_{0}", i);
string productName = reader.ReadText(ibc_productName);
- if (productName.IsNullOrEmpty()) continue;
+ if (productName.IsNullOrEmpty()) continue;
string posIdent = string.Format("IBC-{0}", i);
IBCPosition ibcPosition = hazd.GetIBCPositionWithIdentifier(posIdent);
@@ -761,7 +764,7 @@ namespace ENI2.Excel
hazd.IBCPositions.Add(ibcPosition);
}
- ibcPosition.ProductName = productName;
+ ibcPosition.ProductName = productName;
string pollutionCategory = reader.ReadText(ibc_pollutionCategory);
if (!pollutionCategory.IsNullOrEmpty())
{
@@ -769,35 +772,35 @@ namespace ENI2.Excel
if (pollutionCategory.Equals("Y", StringComparison.OrdinalIgnoreCase)) ibcPosition.PollutionCategory = 1;
if (pollutionCategory.Equals("Z", StringComparison.OrdinalIgnoreCase)) ibcPosition.PollutionCategory = 2;
if (pollutionCategory.Equals("OS", StringComparison.OrdinalIgnoreCase)) ibcPosition.PollutionCategory = 3;
- }
+ }
ibcPosition.Flashpoint_CEL = reader.ReadText(ibc_flash);
-
+
if (!ibcPosition.Flashpoint_CEL.IsNullOrEmpty())
{
if (ibcPosition.Flashpoint_CEL != "-")
- {
+ {
if (double.TryParse(ibcPosition.Flashpoint_CEL, out double flashval))
{
if (flashval > 60) ibcPosition.FlashpointInformation = 1; // GT60CEL
else ibcPosition.FlashpointInformation = 2; // LE60CEL
}
}
- }
+ }
ibcPosition.Quantity_KGM = (int?)reader.ReadNumber(ibc_quantity);
- ibcPosition.StowagePosition = reader.ReadText(ibc_stowagePosition);
- ibcPosition.PortOfLoading = reader.ReadLoCode(ibc_portOfLoading);
+ ibcPosition.StowagePosition = reader.ReadText(ibc_stowagePosition);
+ ibcPosition.PortOfLoading = reader.ReadLoCode(ibc_portOfLoading);
ibcPosition.PortOfDischarge = reader.ReadLoCode(ibc_portOfDischarge);
ibcPosition.Hazards = reader.ReadHazards(ibc_hazards);
ibcPosition.SpecRef15_19 = reader.ReadBoolean(ibc_specref);
ibcPosition.Remarks = reader.ReadText(ibc_remarks);
}
- #endregion
+ #endregion IBC
#region IGC
-
+
for (int i = 1; i <= 5; i++)
{
string igc_productName = string.Format("HAZD.IGC.ProductName_{0}", i);
@@ -810,7 +813,7 @@ namespace ENI2.Excel
string igc_remarks = string.Format("HAZD.IGC.Remarks_{0}", i);
string productName = reader.ReadText(igc_productName);
- if (productName.IsNullOrEmpty()) continue;
+ if (productName.IsNullOrEmpty()) continue;
string posIdent = string.Format("IGC-{0}", i);
IGCPosition igcPosition = hazd.GetIGCPositionWithIdentifier(posIdent);
@@ -822,20 +825,20 @@ namespace ENI2.Excel
hazd.IGCPositions.Add(igcPosition);
}
- igcPosition.ProductName = productName;
+ igcPosition.ProductName = productName;
igcPosition.Quantity_KGM = reader.ReadNumber(igc_quantity);
- igcPosition.StowagePosition = reader.ReadText(igc_stowagePosition);
- igcPosition.PortOfLoading = reader.ReadLoCode(igc_portOfLoading);
+ igcPosition.StowagePosition = reader.ReadText(igc_stowagePosition);
+ igcPosition.PortOfLoading = reader.ReadLoCode(igc_portOfLoading);
igcPosition.PortOfDischarge = reader.ReadLoCode(igc_portOfDischarge);
igcPosition.UNNumber = reader.ReadText(igc_unnumber);
igcPosition.IMOClass = reader.ReadText(igc_imoclass);
igcPosition.Remarks = reader.ReadText(igc_remarks);
}
- #endregion
+ #endregion IGC
#region IMSBC
-
+
for (int i = 1; i <= 5; i++)
{
string imsbc_bcsn = string.Format("HAZD.IMSBC.BulkCargoShippingName_{0}", i);
@@ -850,7 +853,7 @@ namespace ENI2.Excel
string imsbc_remarks = string.Format("HAZD.IMSBC.Remarks_{0}", i);
string bcsn = reader.ReadText(imsbc_bcsn);
- if (bcsn.IsNullOrEmpty()) continue;
+ if (bcsn.IsNullOrEmpty()) continue;
string posIdent = string.Format("IMSBC-{0}", i);
IMSBCPosition imsbcPosition = hazd.GetIMSBCPositionWithIdentifier(posIdent);
@@ -862,11 +865,11 @@ namespace ENI2.Excel
hazd.IMSBCPositions.Add(imsbcPosition);
}
- imsbcPosition.BulkCargoShippingName = bcsn;
+ imsbcPosition.BulkCargoShippingName = bcsn;
imsbcPosition.MHB = reader.ReadBoolean(imsbc_mhb);
imsbcPosition.Quantity_KGM = reader.ReadNumber(imsbc_quantity);
- imsbcPosition.StowagePosition = reader.ReadText(imsbc_stowagePosition);
- imsbcPosition.PortOfLoading = reader.ReadLoCode(imsbc_portOfLoading);
+ imsbcPosition.StowagePosition = reader.ReadText(imsbc_stowagePosition);
+ imsbcPosition.PortOfLoading = reader.ReadLoCode(imsbc_portOfLoading);
imsbcPosition.PortOfDischarge = reader.ReadLoCode(imsbc_portOfDischarge);
imsbcPosition.IMOHazardClass = reader.ReadHazardClass(imsbc_hazardclass);
imsbcPosition.UNNumber = reader.ReadText(imsbc_unnumber);
@@ -874,10 +877,10 @@ namespace ENI2.Excel
imsbcPosition.Remarks = reader.ReadText(imsbc_remarks);
}
- #endregion
+ #endregion IMSBC
#region MARPOL
-
+
for (int i = 1; i <= 5; i++)
{
string marpol_name = string.Format("HAZD.MARPOL.Name_{0}", i);
@@ -889,7 +892,7 @@ namespace ENI2.Excel
string marpol_remarks = string.Format("HAZD.MARPOL.Remarks_{0}", i);
string name = reader.ReadText(marpol_name);
- if (name.IsNullOrEmpty()) continue;
+ if (name.IsNullOrEmpty()) continue;
string posIdent = string.Format("MARPOL-{0}", i);
MARPOL_Annex_I_Position marpolPosition = hazd.GetMARPOLPositionWithIdentifier(posIdent);
@@ -901,10 +904,11 @@ namespace ENI2.Excel
hazd.MARPOLPositions.Add(marpolPosition);
}
- marpolPosition.Name = name;
- marpolPosition.Flashpoint_CEL = reader.ReadText(marpol_flash);
- if (marpolPosition.Flashpoint_CEL.IsNullOrEmpty()) {
- marpolPosition.FlashpointInformation = 0;
+ marpolPosition.Name = name;
+ marpolPosition.Flashpoint_CEL = reader.ReadText(marpol_flash);
+ if (marpolPosition.Flashpoint_CEL.IsNullOrEmpty())
+ {
+ marpolPosition.FlashpointInformation = 0;
} // NF // Ableitung Flashpoint-Info: Christin, 22.3.2017
else
{
@@ -922,23 +926,23 @@ namespace ENI2.Excel
marpolPosition.Remarks = reader.ReadText(marpol_remarks);
}
- #endregion
-
+ #endregion MARPOL
+
if (hazd.HasPositions) // Christin 22.3.17: Felder bei Positionen immer fest ausfüllen
{
- hazd.NoDPGOnBoardOnArrival = false;
+ hazd.NoDPGOnBoardOnArrival = false;
}
return true;
}
- #endregion
+ #endregion HAZD
#region INFO
private static bool ScanINFO(Message infoMessage, ExcelReader reader)
{
- if(infoMessage.Elements.Count == 0)
+ if (infoMessage.Elements.Count == 0)
{
INFO newINFO = new INFO();
newINFO.MessageHeader = infoMessage;
@@ -955,18 +959,18 @@ namespace ENI2.Excel
info.ShippingArea = reader.ReadShippingArea("INFO.ShippingArea"); // enum read func
bool? fumigatedBulkCargo = reader.ReadBoolean("INFO.FumigatedBulkCargo");
- info.FumigatedBulkCargo = (byte) ((fumigatedBulkCargo ?? false) ? 1 : 0);
+ info.FumigatedBulkCargo = (byte)((fumigatedBulkCargo ?? false) ? 1 : 0);
return true;
}
- #endregion
+ #endregion INFO
#region STAT
private static bool ScanSTAT(Message statMessage, MessageCore messageCore, List messages, ExcelReader reader)
{
- if(statMessage.Elements.Count == 0)
+ if (statMessage.Elements.Count == 0)
{
STAT newSTAT = new STAT();
newSTAT.MessageHeader = statMessage;
@@ -975,11 +979,11 @@ namespace ENI2.Excel
STAT stat = statMessage.Elements[0] as STAT;
ScanMessage(stat, reader);
- foreach(Message preMessage in messages)
+ foreach (Message preMessage in messages)
{
- if(preMessage.MessageNotificationClass == Message.NotificationClass.PRE72H)
+ if (preMessage.MessageNotificationClass == Message.NotificationClass.PRE72H)
{
- if(preMessage.Elements.Count > 0)
+ if (preMessage.Elements.Count > 0)
{
PRE72H pre72h = preMessage.Elements[0] as PRE72H;
pre72h.Tanker = stat.IsTanker;
@@ -1001,14 +1005,15 @@ namespace ENI2.Excel
if (stat.ISMCompanyId.StartsWith("imo", StringComparison.OrdinalIgnoreCase))
stat.ISMCompanyId = stat.ISMCompanyId.Substring(3);
- if(stat.ISMCompanyId.Length < 7) { // zero - fill
+ if (stat.ISMCompanyId.Length < 7)
+ { // zero - fill
while (stat.ISMCompanyId.Length < 7)
stat.ISMCompanyId = "0" + stat.ISMCompanyId;
}
}
string transportMode = reader.ReadText("STAT.TransportMode");
- if(transportMode != null)
+ if (transportMode != null)
{
if (transportMode.Contains("maritime", StringComparison.OrdinalIgnoreCase)) stat.TransportMode = "1";
if (transportMode.Equals("1")) stat.TransportMode = transportMode;
@@ -1023,12 +1028,12 @@ namespace ENI2.Excel
return true;
}
- #endregion
+ #endregion STAT
#region NOA_NOD
private static bool ScanNOA_NOD(Message noa_nodMessage, MessageCore messageCore, ExcelReader reader)
- {
+ {
if (noa_nodMessage.Elements.Count == 0)
{
NOA_NOD newNoa_nod = new NOA_NOD();
@@ -1043,12 +1048,12 @@ namespace ENI2.Excel
if (messageCore.IsTransit)
{
if (eta.HasValue)
- noa_nod.ETAToKielCanal = eta;
+ noa_nod.ETAToKielCanal = eta;
}
else
{
if (eta.HasValue)
- noa_nod.ETAToPortOfCall = eta;
+ noa_nod.ETAToPortOfCall = eta;
for (int i = 1; i <= noa_nod.NumberOfExcelRows; i++)
{
@@ -1059,7 +1064,6 @@ namespace ENI2.Excel
if (!callPurposeCode.IsNullOrEmpty())
{
-
if (!(noa_nod.GetSublistElementWithIdentifier(i.ToString()) is CallPurpose callPurpose))
{
callPurpose = new CallPurpose();
@@ -1068,7 +1072,7 @@ namespace ENI2.Excel
noa_nod.CallPurposes.Add(callPurpose);
}
callPurpose.CallPurposeCode = ((int?)reader.ReadNumber(callPurposeCodeKey)) ?? 0;
- callPurpose.CallPurposeDescription = callPurposeDescription;
+ callPurpose.CallPurposeDescription = callPurposeDescription;
}
}
}
@@ -1093,19 +1097,19 @@ namespace ENI2.Excel
string nextPort = reader.ReadText("NOA_NOD.NextPort")?.Trim().ToUpper();
if (!nextPort.IsNullOrEmpty() && (nextPort.Length > 5))
- nextPort = nextPort.Substring(0, 5); //trunc
+ nextPort = nextPort.Substring(0, 5); //trunc
noa_nod.NextPort = nextPort;
- if(messageCore.IsTransit)
+ if (messageCore.IsTransit)
{
- noa_nod.ETDFromKielCanal = reader.ReadDateTime("NOA_NOD.ETDDateFromPortOfCall", "NOA_NOD.ETDTimeFromPortOfCall");
+ noa_nod.ETDFromKielCanal = reader.ReadDateTime("NOA_NOD.ETDDateFromPortOfCall", "NOA_NOD.ETDTimeFromPortOfCall");
}
else
{
- noa_nod.ETDFromPortOfCall = reader.ReadDateTime("NOA_NOD.ETDDateFromPortOfCall", "NOA_NOD.ETDTimeFromPortOfCall");
+ noa_nod.ETDFromPortOfCall = reader.ReadDateTime("NOA_NOD.ETDDateFromPortOfCall", "NOA_NOD.ETDTimeFromPortOfCall");
}
-
+
noa_nod.ETDFromLastPort = reader.ReadDateTime("NOA_NOD.ETDDateFromLastPort", "NOA_NOD.ETDTimeFromLastPort");
noa_nod.ETAToNextPort = reader.ReadDateTime("NOA_NOD.ETADateToNextPort", "NOA_NOD.ETATimeToNextPort");
// DK
@@ -1114,13 +1118,13 @@ namespace ENI2.Excel
return true;
}
- #endregion
+ #endregion NOA_NOD
#region AGNT
private static bool ScanAGNT(Message agntMessage, ExcelReader reader)
- {
- if(agntMessage.Elements.Count == 0)
+ {
+ if (agntMessage.Elements.Count == 0)
{
AGNT newAgnt = new AGNT();
newAgnt.MessageHeader = agntMessage;
@@ -1135,12 +1139,12 @@ namespace ENI2.Excel
return true;
}
- #endregion
+ #endregion AGNT
#region WAS
private static bool ScanWAS(Message wasMessage, ExcelReader reader, bool isOldVersion)
- {
+ {
if (wasMessage.Elements.Count == 0)
{
WAS newWAS = new WAS();
@@ -1151,7 +1155,7 @@ namespace ENI2.Excel
was.DeleteElements();
ScanMessage(was, reader);
-
+
was.LastWasteDisposalPort = reader.ReadSSNLocode("WAS.LastWasteDisposalPort");
was.NextWasteDisposalPort = reader.ReadSSNLocode("WAS.NextWasteDisposalPort");
was.ConfirmationOfCorrectness = true; // wir haben immer Recht (NSW7.0)
@@ -1176,12 +1180,12 @@ namespace ENI2.Excel
{
//string wastetype = string.Format("WAS.WasteType_{0}", i);
string wasteCode = string.Format("WAS.WasteCode_{0}", i);
- string wasteDescription = string.Format("WAS.WasteDescription_{0}", i);
+ string wasteDescription = string.Format("WAS.WasteDescription_{0}", i);
string wasteAmount = string.Format("WAS.WasteDisposalAmount_MTQ_{0}", i);
string wasteCapacity = string.Format("WAS.WasteCapacity_MTQ_{0}", i);
string wasteRetained = string.Format("WAS.WasteAmountRetained_MTQ_{0}", i);
string wastePort = string.Format("WAS.WasteDisposalPort_{0}", i);
- string amountGen = string.Format("WAS.WasteAmountGeneratedTillNextPort_MTQ_{0}", i);
+ string amountGen = string.Format("WAS.WasteAmountGeneratedTillNextPort_MTQ_{0}", i);
if (!(was.GetSublistElementWithIdentifier(i.ToString()) is Waste waste))
{
@@ -1191,14 +1195,14 @@ namespace ENI2.Excel
was.Waste.Add(waste);
}
- waste.WasteType = (int?) reader.ReadNumber(wasteCode);
+ waste.WasteType = (int?)reader.ReadNumber(wasteCode);
- // Waste description Spezialfälle für DK
+ // Waste description Spezialfälle für DK
waste.WasteDescription = reader.ReadText(wasteDescription);
if (waste.WasteDescription.IsNullOrEmpty())
{
if ((reader.Mode == ExcelReader.CountryMode.DE) && waste.IsDashWasteCode)
- {
+ {
waste.WasteDescription = "-";
}
else if (reader.Mode == ExcelReader.CountryMode.DK)
@@ -1220,7 +1224,7 @@ namespace ENI2.Excel
}
// RM am 24.1.18, ich hoffe das stimmt so wie sie meint..
- if((reader.Mode == ExcelReader.CountryMode.DK) && (i==9))
+ if ((reader.Mode == ExcelReader.CountryMode.DK) && (i == 9))
{
_log.DebugFormat("DK: Changing Waste code {0} to 2300 for line {1}", waste.WasteType, i);
waste.WasteType = 2300;
@@ -1242,9 +1246,9 @@ namespace ENI2.Excel
waste.WasteDisposalAmount_MTQ = reader.ReadNumberDefaultZero(wasteAmount);
waste.WasteCapacity_MTQ = reader.ReadNumberDefaultZero(wasteCapacity);
waste.WasteAmountRetained_MTQ = reader.ReadNumberDefaultZero(wasteRetained);
-
- waste.WasteDisposalPort = reader.ReadSSNLocode(wastePort); // aka RemainingWasteDisposalPort
-
+
+ waste.WasteDisposalPort = reader.ReadSSNLocode(wastePort); // aka RemainingWasteDisposalPort
+
if (waste.WasteDisposalPort.IsNullOrEmpty())
{
waste.WasteDisposalPort = "ZZUKN";
@@ -1261,7 +1265,8 @@ namespace ENI2.Excel
was.AddMissingWaste();
return true;
}
- #endregion
+
+ #endregion WAS
#region WAS_RCPT
@@ -1296,7 +1301,7 @@ namespace ENI2.Excel
wasr.PortReceptionFacilityName = reader.ReadText(wasrcpt_portreceptFacilityName);
wasr.PortReceptionFacilityProviderName = reader.ReadText(wasrcpt_portreceptFacilityProviderName);
string treatmentFacility = reader.ReadText(wasrcpt_treatmentFacility);
- if(!treatmentFacility.IsNullOrEmpty())
+ if (!treatmentFacility.IsNullOrEmpty())
{
TreatmentFacilityProvider tfp = new TreatmentFacilityProvider();
tfp.WAS_RCPT = wasr;
@@ -1321,7 +1326,7 @@ namespace ENI2.Excel
wr.WasteCode = reader.ReadText(wtype); // hier muss immer was stehen, ist ein festes Beschreibungsfeld
wr.WasteDescription = reader.ReadText(wDescr);
- if(wr.WasteDescription.IsNullOrEmpty() && (wr.WasteCode != null))
+ if (wr.WasteDescription.IsNullOrEmpty() && (wr.WasteCode != null))
{
if (wr.WasteCode.Equals("999") || wr.WasteCode.Equals("201") || wr.WasteCode.Equals("202") || wr.WasteCode.Equals("203") ||
wr.WasteCode.Equals("204") || wr.WasteCode.Equals("510") || wr.WasteCode.Equals("511"))
@@ -1331,7 +1336,7 @@ namespace ENI2.Excel
if (!wr.AmountWasteReceived_MTQ.HasValue) wr.AmountWasteReceived_MTQ = 0; // Default ist 0, nicht nix ;-)
}
- // only add message when an identification number was given
+ // only add message when an identification number was given
if (wasr.IdentificationNumber.IsNullOrEmpty())
was_rcptMessage.Elements.Remove(wasr);
}
@@ -1339,13 +1344,13 @@ namespace ENI2.Excel
return true;
}
- #endregion
+ #endregion WAS_RCPT
#region MDH
private static bool ScanMDH(Message mdhMessage, List messages, MessageCore messageCore, ExcelReader reader)
- {
- if(mdhMessage.Elements.Count == 0)
+ {
+ if (mdhMessage.Elements.Count == 0)
{
MDH newMDH = new MDH();
newMDH.MessageHeader = mdhMessage;
@@ -1359,12 +1364,11 @@ namespace ENI2.Excel
mdh.MDHSimplification = false;
mdh.PortOfCallWhereCompleteMDHNotified = "";
-
+
string kuerzelErsteZelle = reader.ReadText("MDH.PortOfCallLast30DaysLocode_1");
try
{
-
#region PoC last 30 days
// lt. Mail von Christin am 11.10.2016
@@ -1396,7 +1400,6 @@ namespace ENI2.Excel
}
else // "normal mode", aus den Zellen lesen
{
-
// POC last 30 days
for (int i = 0; i < mdh.NumberOfExcelRows; i++)
{
@@ -1416,7 +1419,7 @@ namespace ENI2.Excel
}
string pName = reader.ReadText(portName);
- string pCountry = reader.ReadText(portCountry);
+ string pCountry = reader.ReadText(portCountry);
poc30d.PortOfCallLast30DaysDateOfDeparture = reader.ReadDate(depDate);
poc30d.PortOfCallLast30DaysLocode = reader.ReadLoCode(locode);
@@ -1428,12 +1431,12 @@ namespace ENI2.Excel
poc30d.PortOfCallLast30DaysCrewMembersJoined = !crewNameString.IsNullOrEmpty();
if (poc30d.PortOfCallLast30DaysCrewMembersJoined ?? false)
- {
+ {
// try different separators
string[] crew = crewNameString.Split(';');
if (crew.Length == 1)
crew = crewNameString.Split(',');
-
+
for (int j = 0; j < crew.Length; j++)
{
if (!(poc30d.GetSublistElementWithIdentifier((j + 1).ToString()) is PortOfCallLast30DaysCrewJoinedShip poc30dCrew))
@@ -1444,9 +1447,9 @@ namespace ENI2.Excel
poc30d.CrewJoinedShip.Add(poc30dCrew);
}
- poc30dCrew.PortOfCallLast30DaysCrewJoinedShipName = crew[j];
- }
- }
+ poc30dCrew.PortOfCallLast30DaysCrewJoinedShipName = crew[j];
+ }
+ }
// Leer/def. Zeilen entfernen
if (!poc30d.PortOfCallLast30DaysDateOfDeparture.HasValue && (poc30d.PortOfCallLast30DaysLocode == null))
@@ -1454,7 +1457,7 @@ namespace ENI2.Excel
}
}
- #endregion
+ #endregion PoC last 30 days
#region SanitaryMeasures
@@ -1467,7 +1470,7 @@ namespace ENI2.Excel
string smDate = string.Format("MDH.SanitaryMeasuresDate_{0}", i);
SanitaryMeasuresDetail smd = mdh.GetSanitaryMeasuresDetailWithIdentifier(i.ToString());
- if(smd == null)
+ if (smd == null)
{
smd = new SanitaryMeasuresDetail();
smd.Identifier = i.ToString();
@@ -1475,8 +1478,8 @@ namespace ENI2.Excel
smd.MDH = mdh;
}
- smd.SanitaryMeasuresType = reader.ReadText(smType);
- smd.SanitaryMeasuresLocation = reader.ReadText(smLocation);
+ smd.SanitaryMeasuresType = reader.ReadText(smType);
+ smd.SanitaryMeasuresLocation = reader.ReadText(smLocation);
smd.SanitaryMeasuresDate = reader.ReadDate(smDate);
// dont save completely empty structs
if (!smd.SanitaryMeasuresDate.HasValue && smd.SanitaryMeasuresLocation.IsNullOrEmpty() && smd.SanitaryMeasuresType.IsNullOrEmpty())
@@ -1484,7 +1487,7 @@ namespace ENI2.Excel
}
}
- #endregion
+ #endregion SanitaryMeasures
#region InfectedArea
@@ -1503,7 +1506,7 @@ namespace ENI2.Excel
ia.MDH = mdh;
}
- ia.InfectedAreaPort = reader.ReadText(iaPort);
+ ia.InfectedAreaPort = reader.ReadText(iaPort);
ia.InfectedAreaDate = reader.ReadDate(iaDate);
// dont save completely empty structs
if (!ia.InfectedAreaDate.HasValue && ia.InfectedAreaPort.IsNullOrEmpty())
@@ -1511,11 +1514,11 @@ namespace ENI2.Excel
}
}
- #endregion
+ #endregion InfectedArea
#region StowawaysJoiningLocation
- if(mdh.StowawaysDetected ?? false)
+ if (mdh.StowawaysDetected ?? false)
{
for (int i = 1; i <= 3; i++)
{
@@ -1531,16 +1534,15 @@ namespace ENI2.Excel
sjl.StowawayJoiningLocation = reader.ReadText(sjlLookup);
if (sjl.StowawayJoiningLocation.IsNullOrEmpty())
- {
+ {
mdh.StowawaysJoiningLocations.Remove(sjl);
- }
+ }
}
}
- #endregion
-
+ #endregion StowawaysJoiningLocation
}
- catch(Exception ex)
+ catch (Exception ex)
{
_log.ErrorFormat("Crash during reading of MDH message: {0}", ex);
return false;
@@ -1550,12 +1552,12 @@ namespace ENI2.Excel
return true;
}
- #endregion
+ #endregion MDH
#region SEC
private static bool ScanSEC(Message secMessage, ExcelReader reader)
- {
+ {
if (secMessage.Elements.Count == 0)
{
SEC newSEC = new SEC();
@@ -1563,13 +1565,13 @@ namespace ENI2.Excel
secMessage.Elements.Add(newSEC);
}
- SEC sec = secMessage.Elements[0] as SEC;
+ SEC sec = secMessage.Elements[0] as SEC;
ScanMessage(sec, reader);
reader.ReadBoolean("SEC.AreMatterToReport"); // das berücksichtigen wir derzeit nicht in der DB (implizit)
string isscType = reader.ReadText("SEC.ISSCType");
- if(isscType != null)
+ if (isscType != null)
{
if (isscType.Equals("full", StringComparison.OrdinalIgnoreCase) || isscType.Equals("1"))
sec.ISSCType = 0;
@@ -1579,23 +1581,23 @@ namespace ENI2.Excel
string shipsecLevel = reader.ReadText("SEC.CurrentShipSecurityLevel");
if (!shipsecLevel.IsNullOrEmpty())
- {
+ {
if (shipsecLevel.Contains('1')) sec.CurrentShipSecurityLevel = 1;
if (shipsecLevel.Contains('2')) sec.CurrentShipSecurityLevel = 2;
- if (shipsecLevel.Contains('3')) sec.CurrentShipSecurityLevel = 3;
- }
+ if (shipsecLevel.Contains('3')) sec.CurrentShipSecurityLevel = 3;
+ }
string isscIssuerType = reader.ReadText("SEC.ISSCIssuerType");
- if(isscIssuerType != null)
+ if (isscIssuerType != null)
{
if (isscIssuerType.Equals("rso", StringComparison.OrdinalIgnoreCase) || isscIssuerType.Equals("2"))
sec.ISSCIssuerType = 1;
if (isscIssuerType.Contains("admin", StringComparison.OrdinalIgnoreCase) || isscIssuerType.Equals("1"))
sec.ISSCIssuerType = 0;
}
-
- sec.GeneralDescriptionOfCargo = reader.ReadGeneralDescriptionOfCargo("SEC.GeneralDescriptionOfCargo");
-
+
+ sec.GeneralDescriptionOfCargo = reader.ReadGeneralDescriptionOfCargo("SEC.GeneralDescriptionOfCargo");
+
bool? secKielArrival = reader.ReadBoolean("SEC.KielCanalPassagePlanned_Arrival");
bool? secKielDeparture = reader.ReadBoolean("SEC.KielCanalPassagePlanned_Departure");
@@ -1623,7 +1625,7 @@ namespace ENI2.Excel
string portDateOfArrival = string.Format("SEC.PortFacilityDateOfArrival_{0}", i);
string portDateOfDeparture = string.Format("SEC.PortFacilityDateOfDeparture_{0}", i);
string portShipSecLevel = string.Format("SEC.PortFacilityShipSecurityLevel_{0}", i);
- string portGISISCode = string.Format("SEC.PortFacilityGISISCode_{0}", i);
+ string portGISISCode = string.Format("SEC.PortFacilityGISISCode_{0}", i);
string portSecMatters = string.Format("SEC.PortFacilitySecurityMattersToReport_{0}", i);
if (!(sec.GetPortFacilityWithIdentifier(i.ToString()) is LastTenPortFacilitiesCalled l10fc))
@@ -1641,28 +1643,27 @@ namespace ENI2.Excel
l10fc.PortFacilityDateOfDeparture = reader.ReadDate(portDateOfDeparture);
string sLevel = reader.ReadText(portShipSecLevel);
- if(!sLevel.IsNullOrEmpty())
- {
+ if (!sLevel.IsNullOrEmpty())
+ {
if (sLevel.Contains('1')) l10fc.PortFacilityShipSecurityLevel = 1;
if (sLevel.Contains('2')) l10fc.PortFacilityShipSecurityLevel = 2;
- if (sLevel.Contains('3')) l10fc.PortFacilityShipSecurityLevel = 3;
+ if (sLevel.Contains('3')) l10fc.PortFacilityShipSecurityLevel = 3;
}
-
+
l10fc.PortFacilityGISISCode = reader.ReadTextNoWhitespace(portGISISCode);
if (l10fc.PortFacilityGISISCode.IsNullOrEmpty() || l10fc.PortFacilityGISISCode == "0")
l10fc.PortFacilityGISISCode = "0000";
- if(l10fc.PortFacilityGISISCode?.Length < 4)
+ if (l10fc.PortFacilityGISISCode?.Length < 4)
{
while (l10fc.PortFacilityGISISCode.Length < 4) l10fc.PortFacilityGISISCode = "0" + l10fc.PortFacilityGISISCode;
- }
+ }
- l10fc.PortFacilitySecurityMattersToReport = reader.ReadText(portSecMatters);
+ l10fc.PortFacilitySecurityMattersToReport = reader.ReadText(portSecMatters);
// keinen "leeren" Hafen anlegen, wenn der Eintrag leer war (trifft anscheinend bei Neubauten zu, siehe E-Mail Christin vom 20./22.6.17
if (l10fc.PortFacilityPortName.IsNullOrEmpty() && l10fc.PortFacilityPortLoCode.IsNullOrEmpty() && l10fc.PortFacilityPortCountry.IsNullOrEmpty())
sec.LastTenPortFacilitesCalled.Remove(l10fc);
-
}
// Ship2ShipActivities
@@ -1691,7 +1692,7 @@ namespace ENI2.Excel
{
sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.Remove(s2sActivity);
continue;
- }
+ }
s2sActivity.ShipToShipActivityLocationLoCode = reader.ReadLoCode(s2sLocode);
s2sActivity.ShipToShipActivityLocationCoordinatesLatitude = (int?)reader.ReadNumber(s2sLatitude);
@@ -1703,20 +1704,20 @@ namespace ENI2.Excel
s2sActivity.ShipToShipActivityLocationCoordinatesLongitude = null;
s2sActivity.ShipToShipActivityDateFrom = reader.ReadDate(s2sFromDate);
s2sActivity.ShipToShipActivityDateTo = reader.ReadDate(s2sToDate);
- s2sActivity.ShipToShipActivityTypeCode = (int?) reader.ReadNumber(s2sActivityString);
+ s2sActivity.ShipToShipActivityTypeCode = (int?)reader.ReadNumber(s2sActivityString);
reader.ReadShip2ShipActivityType(s2sActivityString); // 24.8.21 nicht Code dem Klartext zuordnen, nur das Feld kolorieren
- s2sActivity.ShipToShipActivitySecurityMattersToReport = reader.ReadText(s2sSec);
+ s2sActivity.ShipToShipActivitySecurityMattersToReport = reader.ReadText(s2sSec);
}
return true;
}
- #endregion
+ #endregion SEC
#region BKRA
- private static bool ScanBKRA(Message bkraMessage,ExcelReader reader)
- {
+ private static bool ScanBKRA(Message bkraMessage, ExcelReader reader)
+ {
bkraMessage.DeleteElements();
for (int i = 1; i <= bkraMessage.NumberOfExcelRows; i++)
{
@@ -1741,12 +1742,12 @@ namespace ENI2.Excel
return true;
}
- #endregion
+ #endregion BKRA
#region BKRD
private static bool ScanBKRD(Message bkrdMessage, ExcelReader reader)
- {
+ {
bkrdMessage.DeleteElements();
for (int i = 1; i <= bkrdMessage.NumberOfExcelRows; i++)
{
@@ -1761,21 +1762,21 @@ namespace ENI2.Excel
}
bkrd.BunkerFuelQuantity_TNE = reader.ReadNumber(lnQuantity);
- bkrd.BunkerFuelType = reader.ReadText(lnType);
+ bkrd.BunkerFuelType = reader.ReadText(lnType);
// dont save empty element
if (bkrd.IsNew && !bkrd.BunkerFuelQuantity_TNE.HasValue && bkrd.BunkerFuelType.IsNullOrEmpty())
- bkrdMessage.Elements.Remove(bkrd);
+ bkrdMessage.Elements.Remove(bkrd);
}
return true;
}
- #endregion
+ #endregion BKRD
#region TOWA
private static bool ScanTOWA(Message towaMessage, ExcelReader reader)
- {
+ {
// 24.4.21: TOWA beim Excel import
bool hasTOWAMarker = false;
for (int i = 1; i <= towaMessage.NumberOfExcelRows; i++)
@@ -1814,27 +1815,26 @@ namespace ENI2.Excel
}
towa.TowageOnArrivalName = towageName;
-
- towa.TowageOnArrivalFlag = reader.ReadNationality(tFlag);
- towa.TowageOnArrivalPurposeOfCall = reader.ReadText(tPoC);
+
+ towa.TowageOnArrivalFlag = reader.ReadNationality(tFlag);
+ towa.TowageOnArrivalPurposeOfCall = reader.ReadText(tPoC);
towa.TowageOnArrivalDraught_DMT = reader.ReadNumber(tDraft);
if (towa.TowageOnArrivalDraught_DMT.HasValue)
towa.TowageOnArrivalDraught_DMT *= 10;
- towa.TowageOnArrivalGrossTonnage = (int?) reader.ReadNumber(tGT);
+ towa.TowageOnArrivalGrossTonnage = (int?)reader.ReadNumber(tGT);
towa.TowageOnArrivalLengthOverall_MTR = reader.ReadNumber(tLen);
towa.TowageOnArrivalBeam_MTR = reader.ReadNumber(tBeam);
- towa.TowageOnArrivalOperatorCompanyName = reader.ReadText(tOp);
+ towa.TowageOnArrivalOperatorCompanyName = reader.ReadText(tOp);
}
return true;
}
- #endregion
+ #endregion TOWA
#region TOWD
- private static bool ScanTOWD(Message towdMessage,ExcelReader reader)
- {
-
+ private static bool ScanTOWD(Message towdMessage, ExcelReader reader)
+ {
// 24.4.21: TOWD beim Excel import
bool hasTOWDMarker = false;
for (int i = 1; i <= towdMessage.NumberOfExcelRows; i++)
@@ -1886,7 +1886,7 @@ namespace ENI2.Excel
return true;
}
- #endregion
+ #endregion TOWD
#region PRE72H
@@ -1903,18 +1903,18 @@ namespace ENI2.Excel
// diese Nachricht bleibt auch wenn sie leer ist
pre72h.ConditionCargoBallastTanks = reader.ReadConditionTanks("PRE72H.ConditionCargoBallastTanks");
pre72h.TankerHullConfiguration = reader.ReadHullConfiguration("PRE72H.TankerHullConfiguration");
- pre72h.PlannedWorks = reader.ReadText("PRE72H.PlannedWorks");
+ pre72h.PlannedWorks = reader.ReadText("PRE72H.PlannedWorks");
if (pre72h.PlannedWorks.IsNullOrEmpty()) pre72h.PlannedWorks = "n";
return true;
}
- #endregion
+ #endregion PRE72H
#region SERV
private static bool ScanSERV(Message servMessage, ExcelReader reader)
- {
- if(servMessage.Elements.Count == 0)
+ {
+ if (servMessage.Elements.Count == 0)
{
SERV newSERV = new SERV();
newSERV.MessageHeader = servMessage;
@@ -1923,21 +1923,21 @@ namespace ENI2.Excel
}
SERV serv = servMessage.Elements[0] as SERV;
ScanMessage(serv, reader);
- if (serv.ServiceBeneficiary.IsNullOrEmpty() && serv.ServiceInvoiceRecipient.IsNullOrEmpty())
+ if (serv.ServiceBeneficiary.IsNullOrEmpty() && serv.ServiceInvoiceRecipient.IsNullOrEmpty())
return false;
-
+
return true;
}
- #endregion
+ #endregion SERV
#region STO
private static bool ScanSTO(Message stoMessage, ExcelReader reader)
- {
+ {
stoMessage.DeleteElements();
- for(int i=0;i 20))
- {
+ {
ladg.CargoCodeNST = null;
}
- }
+ }
else
{
- ladg.CargoCodeNST = null;
+ ladg.CargoCodeNST = null;
}
- }
+ }
}
ladg.CargoLACode = reader.ReadCargoLACode(lnLACode);
- ladg.CargoCodeNST_3 = reader.ReadText(lnZusatz);
+ ladg.CargoCodeNST_3 = reader.ReadText(lnZusatz);
if (!ladg.CargoCodeNST_3.IsNullOrEmpty())
{
if (ladg.CargoCodeNST_3.Length > 8)
- {
- ladg.CargoCodeNST_3 = ladg.CargoCodeNST_3.Substring(0, 8);
+ {
+ ladg.CargoCodeNST_3 = ladg.CargoCodeNST_3.Substring(0, 8);
}
}
- ladg.CargoNumberOfItems = (int?) reader.ReadNumber(lnCNOI);
+ ladg.CargoNumberOfItems = (int?)reader.ReadNumber(lnCNOI);
ladg.CargoGrossQuantity_TNE = reader.ReadNumber(lnCGQ);
- ladg.PortOfLoading = reader.ReadLoCode(lnLoad);
- ladg.PortOfDischarge = reader.ReadLoCode(lnDis);
+ ladg.PortOfLoading = reader.ReadLoCode(lnLoad);
+ ladg.PortOfDischarge = reader.ReadLoCode(lnDis);
// dont save empty element
if (ladg.IsNew && !ladg.CargoHandlingType.HasValue)
@@ -2054,69 +2054,118 @@ namespace ENI2.Excel
return true;
}
- #endregion
+ #endregion LADG
#region CREW
private static bool ScanCREW(Message crewMessage, ExcelReader reader, bool isOldVersion)
{
crewMessage.DeleteElements();
+
string sheetTitle = "6. CREW - Arrival";
// 6. CREW - Arrival
// 5.9.22: Changed this area to work like reading from a Dakosy Sheet (by values in rows, not cell names)
-
- bool? notificationSchengen = reader.ReadBoolean("CREW.NotificationSchengen");
- bool? notificationPax = reader.ReadBoolean("CREW.NotificationPAX");
-
- for (int i = 0; i < 5000; i++)
+ if (reader.HasWorksheetNamed(sheetTitle))
{
+ bool? notificationSchengen = reader.ReadBoolean("CREW.NotificationSchengen");
+ bool? notificationPax = reader.ReadBoolean("CREW.NotificationPAX");
- string lastName = reader.ReadCellAsText(sheetTitle, string.Format("C{0}", i + 18));
- string firstName = reader.ReadCellAsText(sheetTitle, string.Format("D{0}", i + 18));
- if (lastName.IsNullOrEmpty() && firstName.IsNullOrEmpty()) break;
-
- if (!(crewMessage.GetSublistElementWithIdentifier((i + 1).ToString()) is CREW crew))
+ for (int i = 0; i < 5000; i++)
{
- crew = new CREW();
- crew.Identifier = (i + 1).ToString();
- crew.MessageHeader = crewMessage;
- crewMessage.Elements.Add(crew);
+ string lastName = reader.ReadCellAsText(sheetTitle, string.Format("C{0}", i + 18));
+ string firstName = reader.ReadCellAsText(sheetTitle, string.Format("D{0}", i + 18));
+ if (lastName.IsNullOrEmpty() && firstName.IsNullOrEmpty()) break;
+
+ if (!(crewMessage.GetSublistElementWithIdentifier((i + 1).ToString()) is CREW crew))
+ {
+ crew = new CREW();
+ crew.Identifier = (i + 1).ToString();
+ crew.MessageHeader = crewMessage;
+ crewMessage.Elements.Add(crew);
+ }
+
+ crew.NotificationSchengen = notificationSchengen;
+ crew.NotificationPAX = notificationPax;
+ crew.CrewMemberLastName = lastName;
+ crew.CrewMemberFirstName = firstName;
+
+ crew.CrewMemberGender = ReadGender(reader.ReadCellAsText(sheetTitle, string.Format("E{0}", i + 18)), out bool canceled);
+ if (canceled) return true;
+
+ crew.CrewMemberDuty = reader.ReadCellAsText(sheetTitle, string.Format("F{0}", i + 18));
+ crew.CrewMemberNationality = ReadNationality(reader.ReadCellAsText(sheetTitle, string.Format("G{0}", i + 18)), out canceled);
+ if (canceled) return true;
+ crew.CrewMemberPlaceOfBirth = reader.ReadCellAsText(sheetTitle, string.Format("H{0}", i + 18));
+ crew.CrewMemberCountryOfBirth = reader.ReadCellAsText(sheetTitle, string.Format("G{0}", i + 18));
+ crew.CrewMemberDateOfBirth = reader.ReadCellAsDateTime(sheetTitle, string.Format("J{0}", i + 18));
+
+ crew.CrewMemberIdentityDocumentType = ReadDocumentType(reader.ReadCellAsText(sheetTitle, string.Format("K{0}", i + 18)), out canceled);
+ if (canceled) return true;
+
+ crew.CrewMemberIdentityDocumentId = reader.ReadCellAsText(sheetTitle, string.Format("L{0}", i + 18));
+ crew.CrewMemberVisaNumber = reader.ReadCellAsText(sheetTitle, string.Format("O{0}", i + 18));
+ crew.CrewMemberIdentityDocumentIssuingState = ReadNationality(reader.ReadCellAsText(sheetTitle, string.Format("M{0}", i + 18)), out canceled);
+ if (canceled) return true;
+ if (crew.CrewMemberIdentityDocumentIssuingState.IsNullOrEmpty() && isOldVersion)
+ crew.CrewMemberIdentityDocumentIssuingState = "XX";
+ crew.CrewMemberIdentityDocumentExpiryDate = reader.ReadCellAsDateTime(sheetTitle, string.Format("N{0}", i + 18));
+ if (!crew.CrewMemberIdentityDocumentExpiryDate.HasValue && isOldVersion)
+ crew.CrewMemberIdentityDocumentExpiryDate = new DateTime(2100, 12, 31);
+
+ crew.Effects = reader.ReadCellAsText("2. PORT", string.Format("C{0}", i + 142));
+ if (crew.Effects.Length > 256)
+ crew.Effects = crew.Effects.Substring(0, 256);
+
+
+ Util.UIHelper.SetBusyState(); // dialog might reset busy state
}
+ }
+ else
+ {
+ sheetTitle = "5. CREW - Arrival"; // altes Anmeldeformat
+ if (reader.HasWorksheetNamed(sheetTitle))
+ {
+ for (int i = 0; i < 5000; i++)
+ {
+ string lastName = reader.ReadCellAsText(sheetTitle, string.Format("C{0}", i + 13));
+ string firstName = reader.ReadCellAsText(sheetTitle, string.Format("D{0}", i + 13));
+ if (lastName.IsNullOrEmpty() && firstName.IsNullOrEmpty()) break;
- crew.NotificationSchengen = notificationSchengen;
- crew.NotificationPAX = notificationPax;
- crew.CrewMemberLastName = lastName;
- crew.CrewMemberFirstName = firstName;
-
- crew.CrewMemberGender = ReadGender(reader.ReadCellAsText(sheetTitle, string.Format("E{0}", i + 18)), out bool canceled);
- if (canceled) return true;
+ if (!(crewMessage.GetSublistElementWithIdentifier((i + 1).ToString()) is CREW crew))
+ {
+ crew = new CREW();
+ crew.Identifier = (i + 1).ToString();
+ crew.MessageHeader = crewMessage;
+ crewMessage.Elements.Add(crew);
+ }
- crew.CrewMemberDuty = reader.ReadCellAsText(sheetTitle, string.Format("F{0}", i + 18));
- crew.CrewMemberNationality = ReadNationality(reader.ReadCellAsText(sheetTitle, string.Format("G{0}", i + 18)), out canceled);
- if (canceled) return true;
- crew.CrewMemberPlaceOfBirth = reader.ReadCellAsText(sheetTitle, string.Format("H{0}", i + 18));
- crew.CrewMemberCountryOfBirth = reader.ReadCellAsText(sheetTitle, string.Format("G{0}", i + 18));
- crew.CrewMemberDateOfBirth = reader.ReadCellAsDateTime(sheetTitle, string.Format("J{0}", i + 18));
-
- crew.CrewMemberIdentityDocumentType = ReadDocumentType(reader.ReadCellAsText(sheetTitle, string.Format("K{0}", i + 18)), out canceled);
- if (canceled) return true;
-
- crew.CrewMemberIdentityDocumentId = reader.ReadCellAsText(sheetTitle, string.Format("L{0}", i + 18));
- crew.CrewMemberVisaNumber = reader.ReadCellAsText(sheetTitle, string.Format("O{0}", i + 18));
- crew.CrewMemberIdentityDocumentIssuingState = ReadNationality(reader.ReadCellAsText(sheetTitle, string.Format("M{0}", i + 18)), out canceled);
- if (canceled) return true;
- if (crew.CrewMemberIdentityDocumentIssuingState.IsNullOrEmpty() && isOldVersion)
- crew.CrewMemberIdentityDocumentIssuingState = "XX";
- crew.CrewMemberIdentityDocumentExpiryDate = reader.ReadCellAsDateTime(sheetTitle, string.Format("N{0}", i + 18));
- if (!crew.CrewMemberIdentityDocumentExpiryDate.HasValue && isOldVersion)
- crew.CrewMemberIdentityDocumentExpiryDate = new DateTime(2100, 12, 31);
-
- crew.Effects = reader.ReadCellAsText("2. PORT", string.Format("C{0}", i + 142));
- if (crew.Effects.Length > 256)
- crew.Effects = crew.Effects.Substring(0, 256);
+ crew.CrewMemberLastName = lastName;
+ crew.CrewMemberFirstName = firstName;
+ crew.CrewMemberGender = ReadGender(reader.ReadCellAsText(sheetTitle, string.Format("E{0}", i + 13)), out bool canceled);
+ if (canceled) return true;
- Util.UIHelper.SetBusyState(); // dialog might reset busy state
+ crew.CrewMemberDuty = reader.ReadCellAsText(sheetTitle, string.Format("G{0}", i + 13));
+ crew.CrewMemberNationality = ReadNationality(reader.ReadCellAsText(sheetTitle, string.Format("F{0}", i + 13)), out canceled);
+ if (canceled) return true;
+ crew.CrewMemberPlaceOfBirth = reader.ReadCellAsText(sheetTitle, string.Format("H{0}", i + 13));
+ crew.CrewMemberDateOfBirth = reader.ReadCellAsDateTime(sheetTitle, string.Format("I{0}", i + 13));
+
+ crew.CrewMemberIdentityDocumentType = ReadDocumentType(reader.ReadCellAsText(sheetTitle, string.Format("J{0}", i + 13)), out canceled);
+ if (canceled) return true;
+ crew.CrewMemberIdentityDocumentIssuingState = "XX";
+ crew.CrewMemberIdentityDocumentExpiryDate = new DateTime(2100, 12, 31);
+
+ crew.CrewMemberIdentityDocumentId = reader.ReadCellAsText(sheetTitle, string.Format("K{0}", i + 13));
+ crew.CrewMemberVisaNumber = reader.ReadCellAsText(sheetTitle, string.Format("L{0}", i + 13));
+
+ Util.UIHelper.SetBusyState(); // dialog might reset busy state
+ }
+ }
+ else
+ {
+ return false; // nothing found
+ }
}
return true;
@@ -2127,125 +2176,228 @@ namespace ENI2.Excel
crewdMessage.DeleteElements();
string sheetTitle = "7. CREW - Departure";
// CREW DEPARTURE
-
- bool? notificationSchengen = reader.ReadBoolean("CREWD.NotificationSchengen");
- bool? notificationPax = reader.ReadBoolean("CREWD.NotificationPAX");
-
- for (int i = 0; i < 5000; i++)
+ if (reader.HasWorksheetNamed(sheetTitle))
{
+ bool? notificationSchengen = reader.ReadBoolean("CREWD.NotificationSchengen");
+ bool? notificationPax = reader.ReadBoolean("CREWD.NotificationPAX");
- string lastName = reader.ReadCellAsText(sheetTitle, string.Format("C{0}", i + 18));
- if (lastName.IsNullOrEmpty()) break;
-
- if (!(crewdMessage.GetSublistElementWithIdentifier((i + 1).ToString()) is CREWD crewd))
+ for (int i = 0; i < 5000; i++)
{
- crewd = new CREWD();
- crewd.Identifier = (i + 1).ToString();
- crewd.MessageHeader = crewdMessage;
- crewdMessage.Elements.Add(crewd);
+ string lastName = reader.ReadCellAsText(sheetTitle, string.Format("C{0}", i + 18));
+ if (lastName.IsNullOrEmpty()) break;
+
+ if (!(crewdMessage.GetSublistElementWithIdentifier((i + 1).ToString()) is CREWD crewd))
+ {
+ crewd = new CREWD();
+ crewd.Identifier = (i + 1).ToString();
+ crewd.MessageHeader = crewdMessage;
+ crewdMessage.Elements.Add(crewd);
+ }
+
+ crewd.NotificationSchengen = notificationSchengen;
+ crewd.NotificationPAX = notificationPax;
+ crewd.CrewMemberLastName = lastName;
+ crewd.CrewMemberFirstName = reader.ReadCellAsText(sheetTitle, string.Format("D{0}", i + 18));
+
+ crewd.CrewMemberGender = ReadGender(reader.ReadCellAsText(sheetTitle, string.Format("E{0}", i + 18)), out bool canceled);
+ if (canceled) return true;
+
+ crewd.CrewMemberDuty = reader.ReadCellAsText(sheetTitle, string.Format("F{0}", i + 18));
+ crewd.CrewMemberNationality = ReadNationality(reader.ReadCellAsText(sheetTitle, string.Format("G{0}", i + 18)), out canceled);
+ if (canceled) return true;
+ crewd.CrewMemberPlaceOfBirth = reader.ReadCellAsText(sheetTitle, string.Format("H{0}", i + 18));
+ crewd.CrewMemberCountryOfBirth = reader.ReadCellAsText(sheetTitle, string.Format("G{0}", i + 18));
+ crewd.CrewMemberDateOfBirth = reader.ReadCellAsDateTime(sheetTitle, string.Format("J{0}", i + 18));
+
+
+ crewd.CrewMemberIdentityDocumentType = ReadDocumentType(reader.ReadCellAsText(sheetTitle, string.Format("K{0}", i + 18)), out canceled);
+ if (canceled) return true;
+
+ crewd.CrewMemberIdentityDocumentId = reader.ReadCellAsText(sheetTitle, string.Format("L{0}", i + 18));
+ crewd.CrewMemberVisaNumber = reader.ReadCellAsText(sheetTitle, string.Format("O{0}", i + 18));
+ crewd.CrewMemberIdentityDocumentIssuingState = ReadNationality(reader.ReadCellAsText(sheetTitle, string.Format("M{0}", i + 18)), out canceled);
+ if (canceled) return true;
+ if (crewd.CrewMemberIdentityDocumentIssuingState.IsNullOrEmpty())
+ crewd.CrewMemberIdentityDocumentIssuingState = "XX";
+ crewd.CrewMemberIdentityDocumentExpiryDate = reader.ReadCellAsDateTime(sheetTitle, string.Format("N{0}", i + 18));
+ if (!crewd.CrewMemberIdentityDocumentExpiryDate.HasValue)
+ crewd.CrewMemberIdentityDocumentExpiryDate = new DateTime(2100, 12, 31);
+
+ crewd.Effects = reader.ReadCellAsText("2. PORT", string.Format("C{0}", i + 142));
+
+ Util.UIHelper.SetBusyState(); // dialog might reset busy state
}
-
- crewd.NotificationSchengen = notificationSchengen;
- crewd.NotificationPAX = notificationPax;
- crewd.CrewMemberLastName = lastName;
- crewd.CrewMemberFirstName = reader.ReadCellAsText(sheetTitle, string.Format("D{0}", i + 18));
-
- crewd.CrewMemberGender = ReadGender(reader.ReadCellAsText(sheetTitle, string.Format("E{0}", i + 18)), out bool canceled);
- if (canceled) return true;
-
- crewd.CrewMemberDuty = reader.ReadCellAsText(sheetTitle, string.Format("F{0}", i + 18));
- crewd.CrewMemberNationality = ReadNationality(reader.ReadCellAsText(sheetTitle, string.Format("G{0}", i + 18)), out canceled);
- if (canceled) return true;
- crewd.CrewMemberPlaceOfBirth = reader.ReadCellAsText(sheetTitle, string.Format("H{0}", i + 18));
- crewd.CrewMemberCountryOfBirth = reader.ReadCellAsText(sheetTitle, string.Format("G{0}", i + 18));
- crewd.CrewMemberDateOfBirth = reader.ReadCellAsDateTime(sheetTitle, string.Format("J{0}", i + 18));
-
-
- crewd.CrewMemberIdentityDocumentType = ReadDocumentType(reader.ReadCellAsText(sheetTitle, string.Format("K{0}", i + 18)), out canceled);
- if (canceled) return true;
-
- crewd.CrewMemberIdentityDocumentId = reader.ReadCellAsText(sheetTitle, string.Format("L{0}", i + 18));
- crewd.CrewMemberVisaNumber = reader.ReadCellAsText(sheetTitle, string.Format("O{0}", i + 18));
- crewd.CrewMemberIdentityDocumentIssuingState = ReadNationality(reader.ReadCellAsText(sheetTitle, string.Format("M{0}", i + 18)), out canceled);
- if (canceled) return true;
- if (crewd.CrewMemberIdentityDocumentIssuingState.IsNullOrEmpty())
- crewd.CrewMemberIdentityDocumentIssuingState = "XX";
- crewd.CrewMemberIdentityDocumentExpiryDate = reader.ReadCellAsDateTime(sheetTitle, string.Format("N{0}", i + 18));
- if (!crewd.CrewMemberIdentityDocumentExpiryDate.HasValue)
- crewd.CrewMemberIdentityDocumentExpiryDate = new DateTime(2100, 12, 31);
-
- crewd.Effects = reader.ReadCellAsText("2. PORT", string.Format("C{0}", i + 142));
}
+ else
+ {
+ sheetTitle = "6. CREW - Departure"; // altes Anmeldeformat
+ if (reader.HasWorksheetNamed(sheetTitle))
+ {
+ for (int i = 0; i < 5000; i++)
+ {
+ string lastName = reader.ReadCellAsText(sheetTitle, string.Format("C{0}", i + 13));
+ if (lastName.IsNullOrEmpty()) break;
+
+ if (!(crewdMessage.GetSublistElementWithIdentifier((i + 1).ToString()) is CREWD crewd))
+ {
+ crewd = new CREWD();
+ crewd.Identifier = (i + 1).ToString();
+ crewd.MessageHeader = crewdMessage;
+ crewdMessage.Elements.Add(crewd);
+ }
+
+ crewd.CrewMemberLastName = lastName;
+ crewd.CrewMemberFirstName = reader.ReadCellAsText(sheetTitle, string.Format("D{0}", i + 13));
+
+ crewd.CrewMemberGender = ReadGender(reader.ReadCellAsText(sheetTitle, string.Format("E{0}", i + 13)), out bool canceled);
+ if (canceled) return true;
+
+ crewd.CrewMemberDuty = reader.ReadCellAsText(sheetTitle, string.Format("G{0}", i + 13));
+ crewd.CrewMemberNationality = ReadNationality(reader.ReadCellAsText(sheetTitle, string.Format("F{0}", i + 13)), out canceled);
+ if (canceled) return true;
+ crewd.CrewMemberPlaceOfBirth = reader.ReadCellAsText(sheetTitle, string.Format("H{0}", i + 13));
+ crewd.CrewMemberDateOfBirth = reader.ReadCellAsDateTime(sheetTitle, string.Format("I{0}", i + 13));
+
+ crewd.CrewMemberIdentityDocumentType = ReadDocumentType(reader.ReadCellAsText(sheetTitle, string.Format("J{0}", i + 13)), out canceled);
+ if (canceled) return true;
+ crewd.CrewMemberIdentityDocumentIssuingState = "XX";
+ crewd.CrewMemberIdentityDocumentExpiryDate = new DateTime(2100, 12, 31);
+
+ crewd.CrewMemberIdentityDocumentId = reader.ReadCellAsText(sheetTitle, string.Format("K{0}", i + 13));
+ crewd.CrewMemberVisaNumber = reader.ReadCellAsText(sheetTitle, string.Format("L{0}", i + 13));
+
+ Util.UIHelper.SetBusyState(); // dialog might reset busy state
+ }
+ }
+ else
+ {
+ return false; // nothing found
+ }
+ }
+
return true;
}
- #endregion
+ #endregion CREW
#region PAS
private static bool ScanPAS(Message pasMessage, ExcelReader reader, bool isOldVersion)
{
-
List newPasList = new List();
string sheetTitle = "8. PAX - Arrival";
- bool? notificationSchengen = reader.ReadBoolean("PAS.NotificationSchengen");
- bool? notificationPax = reader.ReadBoolean("PAS.NotificationPAX");
+ if (reader.HasWorksheetNamed(sheetTitle))
+ {
+ bool? notificationSchengen = reader.ReadBoolean("PAS.NotificationSchengen");
+ bool? notificationPax = reader.ReadBoolean("PAS.NotificationPAX");
- for (int i = 0; i < 5000; i++)
- {
+ for (int i = 0; i < 5000; i++)
+ {
+ string lastName = reader.ReadCellAsText(sheetTitle, string.Format("C{0}", i + 17));
+ string firstName = reader.ReadCellAsText(sheetTitle, string.Format("D{0}", i + 17));
+ if (lastName.IsNullOrEmpty() && firstName.IsNullOrEmpty()) break; // finish after reading last row
- string lastName = reader.ReadCellAsText(sheetTitle, string.Format("C{0}", i + 17));
- string firstName = reader.ReadCellAsText(sheetTitle, string.Format("D{0}", i + 17));
- if (lastName.IsNullOrEmpty() && firstName.IsNullOrEmpty()) break; // finish after reading last row
-
- DateTime? dateOfBirth = reader.ReadCellAsDateTime(sheetTitle, string.Format("L{0}", i + 17));
- PAS pas = new PAS();
- pas.Identifier = (i + 1).ToString();
- pas.MessageHeader = pasMessage;
- newPasList.Add(pas);
+ PAS pas = new PAS();
+ pas.Identifier = (i + 1).ToString();
+ pas.MessageHeader = pasMessage;
+ newPasList.Add(pas);
- pas.NotificationSchengen = notificationSchengen;
- pas.NotificationPAX = notificationPax;
- pas.PassengerLastName = lastName;
- pas.PassengerFirstName = firstName;
+ pas.NotificationSchengen = notificationSchengen;
+ pas.NotificationPAX = notificationPax;
+ pas.PassengerLastName = lastName;
+ pas.PassengerFirstName = firstName;
- pas.PassengerNationality = ReadNationality(reader.ReadCellAsText(sheetTitle, string.Format("I{0}", i + 17)), out bool canceled);
- if (canceled) return true;
- pas.PassengerIdentityDocumentIssuingState = ReadNationality(reader.ReadCellAsText(sheetTitle, string.Format("O{0}", i + 17)), out canceled);
- if (canceled) return true;
- if (pas.PassengerIdentityDocumentIssuingState == null) return true;
+ pas.PassengerNationality = ReadNationality(reader.ReadCellAsText(sheetTitle, string.Format("I{0}", i + 17)), out bool canceled);
+ if (canceled) return true;
+ pas.PassengerIdentityDocumentIssuingState = ReadNationality(reader.ReadCellAsText(sheetTitle, string.Format("O{0}", i + 17)), out canceled);
+ if (canceled) return true;
+ if (pas.PassengerIdentityDocumentIssuingState.IsNullOrEmpty())
+ pas.PassengerIdentityDocumentIssuingState = "XX";
- pas.PassengerGender = ReadGender(reader.ReadCellAsText(sheetTitle, string.Format("E{0}", i + 17)), out canceled);
- if (canceled) return true;
- pas.PassengerPortOfEmbarkation = ReadLocode(reader.ReadCellAsText(sheetTitle, string.Format("F{0}", i + 17)), out canceled);
- if (canceled) return true;
- pas.PassengerPortOfDisembarkation = ReadLocode(reader.ReadCellAsText(sheetTitle, string.Format("G{0}", i + 17)), out canceled);
- if (canceled) return true;
+ pas.PassengerGender = ReadGender(reader.ReadCellAsText(sheetTitle, string.Format("E{0}", i + 17)), out canceled);
+ if (canceled) return true;
+ pas.PassengerPortOfEmbarkation = ReadLocode(reader.ReadCellAsText(sheetTitle, string.Format("F{0}", i + 17)), out canceled);
+ if (canceled) return true;
+ pas.PassengerPortOfDisembarkation = ReadLocode(reader.ReadCellAsText(sheetTitle, string.Format("G{0}", i + 17)), out canceled);
+ if (canceled) return true;
- pas.PassengerInTransit = reader.ReadCellAsBool(sheetTitle, string.Format("H{0}", i + 17));
-
- pas.PassengerPlaceOfBirth = reader.ReadCellAsText(sheetTitle, string.Format("J{0}", i + 17));
- pas.PassengerCountryOfBirth = ReadNationality(reader.ReadCellAsText(sheetTitle, string.Format("K{0}", i + 17)), out canceled);
- if (canceled) return true;
- pas.PassengerDateOfBirth = dateOfBirth;
+ pas.PassengerInTransit = reader.ReadCellAsBool(sheetTitle, string.Format("H{0}", i + 17));
- pas.PassengerIdentityDocumentType = ReadDocumentType(reader.ReadCellAsText(sheetTitle, string.Format("M{0}", i + 17)), out canceled);
- if (canceled) return true;
- pas.PassengerIdentityDocumentId = reader.ReadCellAsText(sheetTitle, string.Format("N{0}", i + 17));
-
- pas.PassengerIdentityDocumentExpiryDate = reader.ReadCellAsDateTime(sheetTitle, string.Format("P{0}", i + 17));
- if(!pas.PassengerIdentityDocumentExpiryDate.HasValue)
- pas.PassengerIdentityDocumentExpiryDate = new DateTime(2100, 12, 31);
+ pas.PassengerPlaceOfBirth = reader.ReadCellAsText(sheetTitle, string.Format("J{0}", i + 17));
+ pas.PassengerCountryOfBirth = ReadNationality(reader.ReadCellAsText(sheetTitle, string.Format("K{0}", i + 17)), out canceled);
+ if (canceled) return true;
+ DateTime? dateOfBirth = reader.ReadCellAsDateTime(sheetTitle, string.Format("L{0}", i + 17));
+ pas.PassengerDateOfBirth = dateOfBirth;
- pas.PassengerVisaNumber = reader.ReadCellAsText(sheetTitle, string.Format("Q{0}", i + 17));
- pas.EmergencyCare = reader.ReadCellAsText(sheetTitle, string.Format("R{0}", i + 17));
- pas.EmergencyContactNumber = reader.ReadCellAsText(sheetTitle, string.Format("S{0}", i + 17));
+ pas.PassengerIdentityDocumentType = ReadDocumentType(reader.ReadCellAsText(sheetTitle, string.Format("M{0}", i + 17)), out canceled);
+ if (canceled) return true;
+ pas.PassengerIdentityDocumentId = reader.ReadCellAsText(sheetTitle, string.Format("N{0}", i + 17));
- Util.UIHelper.SetBusyState(); // dialog might reset busy state
+ pas.PassengerIdentityDocumentExpiryDate = reader.ReadCellAsDateTime(sheetTitle, string.Format("P{0}", i + 17));
+ if (!pas.PassengerIdentityDocumentExpiryDate.HasValue)
+ pas.PassengerIdentityDocumentExpiryDate = new DateTime(2100, 12, 31);
+ pas.PassengerVisaNumber = reader.ReadCellAsText(sheetTitle, string.Format("Q{0}", i + 17));
+ pas.EmergencyCare = reader.ReadCellAsText(sheetTitle, string.Format("R{0}", i + 17));
+ pas.EmergencyContactNumber = reader.ReadCellAsText(sheetTitle, string.Format("S{0}", i + 17));
+
+ Util.UIHelper.SetBusyState(); // dialog might reset busy state
+ }
}
+ else
+ {
+ sheetTitle = "7. PAX - Arrival"; // altes Excel Format
+ if (reader.HasWorksheetNamed(sheetTitle))
+ {
+ for (int i = 0; i < 5000; i++)
+ {
+ string lastName = reader.ReadCellAsText(sheetTitle, string.Format("C{0}", i + 13));
+ string firstName = reader.ReadCellAsText(sheetTitle, string.Format("D{0}", i + 13));
+ if (lastName.IsNullOrEmpty() && firstName.IsNullOrEmpty()) break; // finish after reading last row
+
+ PAS pas = new PAS();
+ pas.Identifier = (i + 1).ToString();
+ pas.MessageHeader = pasMessage;
+ newPasList.Add(pas);
+
+ pas.PassengerLastName = lastName;
+ pas.PassengerFirstName = firstName;
+
+ pas.PassengerNationality = ReadNationality(reader.ReadCellAsText(sheetTitle, string.Format("F{0}", i + 13)), out bool canceled);
+ if (canceled) return true;
+
+ pas.PassengerGender = ReadGender(reader.ReadCellAsText(sheetTitle, string.Format("E{0}", i + 13)), out canceled);
+ if (canceled) return true;
+ pas.PassengerPortOfEmbarkation = ReadLocode(reader.ReadCellAsText(sheetTitle, string.Format("G{0}", i + 13)), out canceled);
+ if (canceled) return true;
+ pas.PassengerPortOfDisembarkation = ReadLocode(reader.ReadCellAsText(sheetTitle, string.Format("H{0}", i + 13)), out canceled);
+ if (canceled) return true;
+
+ pas.PassengerInTransit = reader.ReadCellAsBool(sheetTitle, string.Format("I{0}", i + 13));
+ pas.PassengerPlaceOfBirth = reader.ReadCellAsText(sheetTitle, string.Format("J{0}", i + 13));
+
+ DateTime? dateOfBirth = reader.ReadCellAsDateTime(sheetTitle, string.Format("K{0}", i + 13));
+ pas.PassengerDateOfBirth = dateOfBirth;
+
+ pas.PassengerIdentityDocumentType = ReadDocumentType(reader.ReadCellAsText(sheetTitle, string.Format("L{0}", i + 13)), out canceled);
+ if (canceled) return true;
+ pas.PassengerIdentityDocumentId = reader.ReadCellAsText(sheetTitle, string.Format("M{0}", i + 13));
+ pas.PassengerIdentityDocumentExpiryDate = new DateTime(2100, 12, 31);
+ pas.PassengerIdentityDocumentIssuingState = "XX";
+
+ pas.PassengerVisaNumber = reader.ReadCellAsText(sheetTitle, string.Format("N{0}", i + 13));
+
+ Util.UIHelper.SetBusyState(); // dialog might reset busy state
+ }
+ }
+ else
+ {
+ return false;
+ }
+ }
+
DBManager.Instance.DeleteAllPASForMessage(pasMessage.Id);
pasMessage.Elements.Clear();
@@ -2255,7 +2407,7 @@ namespace ENI2.Excel
return true;
}
- #endregion
+ #endregion PAS
#region PASD
@@ -2305,7 +2457,7 @@ namespace ENI2.Excel
pas.PassengerFirstName = reader.ReadText(pasFirstName);
pas.PassengerGender = reader.ReadGender(pasGender);
pas.PassengerNationality = reader.ReadNationality(pasNationality);
-
+
pas.PassengerPortOfEmbarkation = reader.ReadTextNoWhitespace(pasEmbarkation);
pas.PassengerPortOfDisembarkation = reader.ReadTextNoWhitespace(pasDebarkation);
pas.PassengerInTransit = reader.ReadBoolean(pasTransit);
@@ -2326,7 +2478,7 @@ namespace ENI2.Excel
return true;
}
- #endregion
+ #endregion PASD
#region ScanMessage (generic)
@@ -2342,14 +2494,14 @@ namespace ENI2.Excel
{
object propValue = property.GetValue(dbEntity, null);
string value = (propValue == null) ? string.Empty : propValue.ToString();
- LookupNameAttribute lookupNameAttribute = Attribute.GetCustomAttribute(property, typeof(LookupNameAttribute)) as LookupNameAttribute;
+ LookupNameAttribute lookupNameAttribute = Attribute.GetCustomAttribute(property, typeof(LookupNameAttribute)) as LookupNameAttribute;
if (property.PropertyType == typeof(DateTime?))
{
DateTime? sheetValue = reader.ReadDate(lookupNameAttribute.LookupName);
if (sheetValue != null)
{
- property.SetValue(dbEntity, sheetValue);
+ property.SetValue(dbEntity, sheetValue);
}
}
else if (property.PropertyType == typeof(double?))
@@ -2357,7 +2509,7 @@ namespace ENI2.Excel
double? sheetValue = reader.ReadNumber(lookupNameAttribute.LookupName);
if (sheetValue != null)
{
- property.SetValue(dbEntity, sheetValue);
+ property.SetValue(dbEntity, sheetValue);
}
}
else if (property.PropertyType == typeof(string))
@@ -2365,7 +2517,7 @@ namespace ENI2.Excel
string sheetValue = reader.ReadText(lookupNameAttribute.LookupName);
if (sheetValue != null)
{
- property.SetValue(dbEntity, sheetValue);
+ property.SetValue(dbEntity, sheetValue);
}
}
else if (property.PropertyType == typeof(int?))
@@ -2373,7 +2525,7 @@ namespace ENI2.Excel
double? sheetValue = reader.ReadNumber(lookupNameAttribute.LookupName);
if (sheetValue.HasValue)
{
- property.SetValue(dbEntity, (int)sheetValue.Value);
+ property.SetValue(dbEntity, (int)sheetValue.Value);
}
}
else if (property.PropertyType == typeof(byte?))
@@ -2381,27 +2533,26 @@ namespace ENI2.Excel
double? sheetValue = reader.ReadNumber(lookupNameAttribute.LookupName);
if (sheetValue.HasValue)
{
- property.SetValue(dbEntity, (byte)sheetValue.Value);
+ property.SetValue(dbEntity, (byte)sheetValue.Value);
}
}
else if (property.PropertyType == typeof(Boolean?))
{
bool? sheetValue = reader.ReadBoolean(lookupNameAttribute.LookupName);
string boolStringValue = reader.ReadText(lookupNameAttribute.LookupName);
- if (sheetValue.HasValue) {
- property.SetValue(dbEntity, sheetValue);
+ if (sheetValue.HasValue)
+ {
+ property.SetValue(dbEntity, sheetValue);
}
}
else
{
_log.DebugFormat("unhandled property type: {0}", property.PropertyType);
}
-
}
+ }
- }
-
- #endregion
+ #endregion ScanMessage (generic)
#region LookupMessageCore
@@ -2412,7 +2563,7 @@ namespace ENI2.Excel
///
private static MessageCore LookupCoreById(ExcelReader reader)
{
- MessageCore result = null;
+ MessageCore result = null;
string visitTransitId = reader.ReadTextNoWhitespace("ID");
if (visitTransitId != null)
@@ -2429,15 +2580,17 @@ namespace ENI2.Excel
return result;
}
- #endregion
+ #endregion LookupMessageCore
+
+
#region GetMessageWithType
private static Message GetMessageWithType(List messages, MessageCore core, Message.NotificationClass type)
- {
- foreach(Message message in messages)
+ {
+ foreach (Message message in messages)
if (message.MessageNotificationClass == type) return message;
-
+
Message newMessage = DBManager.Instance.GetMessage(core, type);
if (newMessage == null)
{
@@ -2450,7 +2603,7 @@ namespace ENI2.Excel
return newMessage;
}
- #endregion
+ #endregion GetMessageWithType
#region "Semi-Manual" import functions (may open interactive dialog)
@@ -2479,14 +2632,14 @@ namespace ENI2.Excel
_genderImportDict[gender] = fid.SelectedValue;
result = byte.Parse(_genderImportDict[gender]);
}
- }
+ }
else
{
canceled = true;
}
}
- }
- if(!result.HasValue)
+ }
+ if (!result.HasValue)
{
result = 0; // not known
}
@@ -2498,7 +2651,7 @@ namespace ENI2.Excel
{
byte? result = DakosyUtil.ParseDocumentType(documentType);
canceled = false;
-
+
if (!result.HasValue)
{
if (documentType.IsNullOrEmpty())
@@ -2546,15 +2699,15 @@ namespace ENI2.Excel
{
result = "XX";
}
- else if(CREW.NationalityDict.ContainsKey(nationality.ToUpper())) // is it already a key
+ else if (CREW.NationalityDict.ContainsKey(nationality.ToUpper())) // is it already a key
{
result = nationality.ToUpper();
}
- else if(CREW.NationalityDict.ContainsValue(nationality.ToUpper()))
+ else if (CREW.NationalityDict.ContainsValue(nationality.ToUpper()))
{
result = CREW.NationalityDict.FirstOrDefault(x => x.Value.Substring(3).Equals(nationality, StringComparison.OrdinalIgnoreCase)).Key;
}
- else if(_countryImportDict.ContainsKey(nationality))
+ else if (_countryImportDict.ContainsKey(nationality))
{
result = _countryImportDict[nationality];
}
@@ -2564,14 +2717,14 @@ namespace ENI2.Excel
fid.Value = nationality;
fid.ValueType = "Nationality";
fid.SelectionValues = CREW.NationalityDict;
- if(fid.ShowDialog() ?? false)
+ if (fid.ShowDialog() ?? false)
{
- if(!fid.SelectedValue.IsNullOrEmpty())
+ if (!fid.SelectedValue.IsNullOrEmpty())
{
_countryImportDict[nationality] = fid.SelectedValue;
- result = fid.SelectedValue.Substring(0,2); // attention manual entry
+ result = fid.SelectedValue.Substring(0, 2); // attention manual entry
}
- }
+ }
else
{
canceled = true;
@@ -2594,12 +2747,12 @@ namespace ENI2.Excel
if (!LocodeDB.LocationNameFromLocode(val).IsNullOrEmpty()) return val;
// check if it is a port that we already know
-
+
// _log.WarnFormat("unknown Locode {0}", val);
- // reverse search: if this is a name lookup port code
+ // reverse search: if this is a name lookup port code
List possibleLocodes = LocodeDB.AllLocodesForCityName(val);
-
- if(possibleLocodes.Count > 1)
+
+ if (possibleLocodes.Count > 1)
{
if (!_locodeImportDict.ContainsKey(val))
{
@@ -2613,16 +2766,16 @@ namespace ENI2.Excel
if (fid.ShowDialog() ?? false)
{
_locodeImportDict[val] = fid.SelectedValue;
- }
+ }
else
{
canceled = true;
}
}
- if(_locodeImportDict.ContainsKey(val))
+ if (_locodeImportDict.ContainsKey(val))
result = _locodeImportDict[val];
}
- else if(possibleLocodes.Count == 1)
+ else if (possibleLocodes.Count == 1)
{
result = possibleLocodes[0];
}
@@ -2647,6 +2800,6 @@ namespace ENI2.Excel
return result;
}
- #endregion
+ #endregion "Semi-Manual" import functions (may open interactive dialog)
}
-}
+}
\ No newline at end of file
diff --git a/ENI2/LocalizedLookup.cs b/ENI2/LocalizedLookup.cs
index 4bd4ccb3..cf521efc 100644
--- a/ENI2/LocalizedLookup.cs
+++ b/ENI2/LocalizedLookup.cs
@@ -27,7 +27,7 @@ namespace ENI2
{
Dictionary result = new Dictionary();
string query = string.Format("SELECT key, text FROM LADG_CargoHandlingCodes WHERE langKey = '{0}'", languageCode);
-
+
SQLiteCommand cmd = new SQLiteCommand(query, _con);
IDataReader reader = cmd.ExecuteReader();
int key;
@@ -48,19 +48,19 @@ namespace ENI2
string query = string.Format("SELECT Code, PortArea FROM INFO_PortArea WHERE Locode = '{0}' ORDER BY PortArea", locode);
SQLiteCommand cmd = new SQLiteCommand(query, _con);
IDataReader reader = cmd.ExecuteReader();
- while(reader.Read())
+ while (reader.Read())
{
string code = null;
string portarea = null;
if (!reader.IsDBNull(0)) code = reader.GetString(0);
if (!reader.IsDBNull(1)) portarea = reader.GetString(1);
- if((code != null) && (portarea != null))
+ if ((code != null) && (portarea != null))
{
result[code] = string.Format("{0}-{1}", code, portarea);
}
}
reader.Close();
- return result;
+ return result;
}
public static bool PortAreaExists(string locode, string portArea)
@@ -68,7 +68,7 @@ namespace ENI2
if (locode.IsNullOrEmpty() || portArea.IsNullOrEmpty()) return false;
string query = string.Format("SELECT COUNT(*) FROM INFO_PortArea WHERE Locode = '{0}' AND Code = '{1}'", locode, portArea);
SQLiteCommand cmd = new SQLiteCommand(query, _con);
- long numResults = (long) cmd.ExecuteScalar();
+ long numResults = (long)cmd.ExecuteScalar();
return numResults > 0;
}
@@ -85,7 +85,7 @@ namespace ENI2
string query = string.Format("SELECT Code, Name FROM Nationality ORDER BY Code");
SQLiteCommand cmd = new SQLiteCommand(query, _con);
IDataReader reader = cmd.ExecuteReader();
- while(reader.Read())
+ while (reader.Read())
{
string code = null;
string name = null;
@@ -142,7 +142,7 @@ namespace ENI2
string query = string.Format("SELECT PortArea from INFO_PortArea WHERE Code = '{0}'", code);
SQLiteCommand cmd = new SQLiteCommand(query, _con);
IDataReader reader = cmd.ExecuteReader();
- if(reader.Read())
+ if (reader.Read())
{
if (!reader.IsDBNull(0)) result = reader.GetString(0);
}
@@ -182,7 +182,7 @@ namespace ENI2
if (!reader.IsDBNull(0)) code = reader.GetInt32(0);
if (!reader.IsDBNull(1)) name = reader.GetString(1);
if ((code != null) && (name != null))
- result[(int) code] = string.Format("{0} {1}", code, name);
+ result[(int)code] = string.Format("{0} {1}", code, name);
}
reader.Close();
return result;
@@ -235,7 +235,7 @@ namespace ENI2
}
}
reader.Close();
- return result;
+ return result;
}
public static List SSNAllLocodesForCityNameAsEntries(string city)
@@ -250,7 +250,7 @@ namespace ENI2
{
if (!reader.IsDBNull(0) && !reader.IsDBNull(1))
{
- LocodeDB.LocodeEntry entry = new LocodeDB.LocodeEntry();
+ LocodeDB.LocodeEntry entry = new LocodeDB.LocodeEntry();
entry.Locode = reader.GetString(0);
entry.Name = reader.GetString(1);
results.Add(entry);
@@ -269,5 +269,24 @@ namespace ENI2
return result;
}
+ public static List> GetNST2007List()
+ {
+ List> result = new List>();
+
+ string query = string.Format("SELECT Description, NST2007 FROM LADG_NST2007 ORDER BY Description");
+ SQLiteCommand cmd = new SQLiteCommand(query, _con);
+ IDataReader reader = cmd.ExecuteReader();
+ while (reader.Read())
+ {
+ if (reader.IsDBNull(0)) continue;
+ string desc = reader.GetString(0);
+ string code = reader.GetString(1);
+ KeyValuePair kvp = new KeyValuePair(desc, code);
+ result.Add(kvp);
+ }
+
+ reader.Close();
+ return result;
+ }
}
}
diff --git a/ENI2/MainWindow.xaml.cs b/ENI2/MainWindow.xaml.cs
index 3e2c9fb5..745298dc 100644
--- a/ENI2/MainWindow.xaml.cs
+++ b/ENI2/MainWindow.xaml.cs
@@ -83,7 +83,7 @@ namespace ENI2
{
if (!openTabs.ContainsKey(aMessageCore.Id.Value))
{
- ClosableTabItem searchResultItem = new ClosableTabItem();
+ ClosableTabItem searchResultItem = new ClosableTabItem();
// try to lock the item
Guid lockedUserId = Guid.Empty;
@@ -185,7 +185,7 @@ namespace ENI2
}
mBuilder.AppendLine();
mBuilder.Append(Properties.Resources.textConfirmUnsentMessages);
- if (MessageBox.Show(mBuilder.ToString(), Properties.Resources.textConfirmation, MessageBoxButton.YesNo,
+ if (MessageBox.Show(mBuilder.ToString(), Properties.Resources.textConfirmation, MessageBoxButton.YesNo,
MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.No)
e.Cancel = true;
}
@@ -202,11 +202,23 @@ namespace ENI2
}
mBuilder.AppendLine();
mBuilder.Append(Properties.Resources.textConfirmUnconfirmedMessages);
- if (MessageBox.Show(mBuilder.ToString(), Properties.Resources.textConfirmation, MessageBoxButton.YesNo,
+ if (MessageBox.Show(mBuilder.ToString(), Properties.Resources.textConfirmation, MessageBoxButton.YesNo,
MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.No)
e.Cancel = true;
}
+ // Dez.22: Special case for BRE/BRV: Warning if some messages are not "confirmed"
+ if(drc.Core.PoC.Equals("DEBRE")||drc.Core.PoC.Equals("DEBRV"))
+ {
+ if(drc.HasCriticalInfoMissing(out string missingClass))
+ {
+ _log.WarnFormat("set close warning because at least {0} is missing from BRE/BRV arrival", missingClass);
+ if (MessageBox.Show(string.Format(Properties.Resources.textSpecialCaseBREBRV, missingClass), Properties.Resources.textConfirmation, MessageBoxButton.YesNo,
+ MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.No)
+ e.Cancel = true;
+ }
+ }
+
if (!e.Cancel)
{
if (lockedCores.ContainsKey(tabItem))
@@ -265,7 +277,7 @@ namespace ENI2
Dictionary repPartyDict = DBManager.Instance.GetReportingPartyDict();
this.rpControl.ReportingParties = new ObservableCollection(repPartyDict.Values);
}
- this.rootContainer.Children.Add(this.rpControl);
+ this.rootContainer.Children.Add(this.rpControl);
}
else if(sender == this.buttonPOListe)
{
diff --git a/ENI2/Properties/Resources.Designer.cs b/ENI2/Properties/Resources.Designer.cs
index 344ccf71..8687c93c 100644
--- a/ENI2/Properties/Resources.Designer.cs
+++ b/ENI2/Properties/Resources.Designer.cs
@@ -2040,6 +2040,15 @@ namespace ENI2.Properties {
}
}
+ ///
+ /// Looks up a localized string similar to Editor.
+ ///
+ public static string textEditor {
+ get {
+ return ResourceManager.GetString("textEditor", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Edit rules.
///
@@ -4236,6 +4245,15 @@ namespace ENI2.Properties {
}
}
+ ///
+ /// Looks up a localized string similar to Search NST2007 list.
+ ///
+ public static string textSearchNST {
+ get {
+ return ResourceManager.GetString("textSearchNST", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to SEC - Security.
///
@@ -4533,6 +4551,15 @@ namespace ENI2.Properties {
}
}
+ ///
+ /// Looks up a localized string similar to At least one of NOA_NOD, AGNT, INFO, SEC, TIEFA hasn't been sent for DEBRE/DEBRV: ({0}) Close anyway?.
+ ///
+ public static string textSpecialCaseBREBRV {
+ get {
+ return ResourceManager.GetString("textSpecialCaseBREBRV", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Special requirements.
///
diff --git a/ENI2/Properties/Resources.resx b/ENI2/Properties/Resources.resx
index 20e2be23..eae8c582 100644
--- a/ENI2/Properties/Resources.resx
+++ b/ENI2/Properties/Resources.resx
@@ -1852,4 +1852,13 @@
New dangerous goods item
+
+ Editor
+
+
+ Search NST2007 list
+
+
+ At least one of NOA_NOD, AGNT, INFO, SEC, TIEFA hasn't been sent for DEBRE/DEBRV: ({0}) Close anyway?
+
\ No newline at end of file
diff --git a/bsmd.database/ATA.cs b/bsmd.database/ATA.cs
index 651a59c0..fcaa1b79 100644
--- a/bsmd.database/ATA.cs
+++ b/bsmd.database/ATA.cs
@@ -24,7 +24,7 @@ namespace bsmd.database
#region Properties
[ShowReport]
- [Validation(ValidationCode.NOT_NULL)]
+ // [Validation(ValidationCode.NOT_NULL)] // damit sieht die Validierung "sauberer" aus (v7.7, Dez. 2022)
[LookupName("ATA.ATAPortOfCall")]
[ENI2Validation]
public DateTime? ATAPortOfCall { get; set; }
diff --git a/bsmd.database/ATD.cs b/bsmd.database/ATD.cs
index 6494942a..98004e7d 100644
--- a/bsmd.database/ATD.cs
+++ b/bsmd.database/ATD.cs
@@ -24,7 +24,7 @@ namespace bsmd.database
#region Properties
[ShowReport]
- [Validation(ValidationCode.NOT_NULL)]
+ // [Validation(ValidationCode.NOT_NULL)] // damit sieht die Validierung "sauberer" aus (v7.7, Dez. 2022)
[LookupName("ATD.ATDPortOfCall")]
[ENI2Validation]
public DateTime? ATDPortOfCall { get; set; }
diff --git a/bsmd.database/NOA_NOD.cs b/bsmd.database/NOA_NOD.cs
index 1a348db2..5969dec3 100644
--- a/bsmd.database/NOA_NOD.cs
+++ b/bsmd.database/NOA_NOD.cs
@@ -256,34 +256,26 @@ namespace bsmd.database
public override void Validate(List errors, List violations)
{
- if (this.GetValidationBlock() == ValidationBlock.BLOCK1)
+ if (this.GetValidationBlock() == ValidationBlock.BLOCK1) // VISIT
{
- if(this.ETDFromPortOfCall.HasValue && this.ETAToPortOfCall.HasValue &&
- (this.ETDFromPortOfCall < this.ETAToPortOfCall))
+ if(this.ETDFromPortOfCall.HasValue && this.ETAToPortOfCall.HasValue && (this.ETDFromPortOfCall < this.ETAToPortOfCall))
errors.Add(RuleEngine.CreateError(ValidationCode.E121, "ETDFromPortOfCall implausible", this.ETDFromPortOfCall?.ToLocalTime().ToString(), this.Title, null, this.Tablename));
// 8.11.20 Validierung gegen ETA /ETD in der Vergangenheit
if((this.ETAToPortOfCall < DateTime.Now) || (this.ETAToPortOfCall.HasValue && this.ETAToPortOfCall.Value.ToLocalTime().IsTimeEmpty()))
{
violations.Add(RuleEngine.CreateViolation(ValidationCode.TIME_IMPLAUSIBLE, "Check ETAToPortOfCall: might be implausible", this.ETAToPortOfCall.Value.ToLocalTime().ToString(), this.Title, null, this.Tablename));
- }
- // NSW 7.1 ETDFromLastPort Pflichtfeld, wenn LastPort != ZZUKN
- if(!this.LastPort.IsNullOrEmpty() && !this.LastPort.Equals("ZZUKN") && !this.ETDFromLastPort.HasValue)
- {
- errors.Add(RuleEngine.CreateError(ValidationCode.E125, "ETDFromLastPort must be provided for a given last port", "", this.Title, null, this.Tablename));
}
- if((this.ETDFromLastPort < DateTime.Now.AddDays(-14)) || (this.ETDFromLastPort.HasValue && this.ETDFromLastPort.Value.ToLocalTime().IsTimeEmpty()))
- {
- violations.Add(RuleEngine.CreateViolation(ValidationCode.TIME_IMPLAUSIBLE, "Check ETDFromLastPort: might be implausible", this.ETDFromLastPort.Value.ToLocalTime().ToString(), this.Title, null, this.Tablename));
- }
if ((this.ETDFromPortOfCall < DateTime.Now.AddDays(-14)) || (this.ETDFromPortOfCall > DateTime.Now.AddDays(14)) || (this.ETDFromPortOfCall.HasValue && this.ETDFromPortOfCall.Value.ToLocalTime().IsTimeEmpty()))
{
violations.Add(RuleEngine.CreateViolation(ValidationCode.TIME_IMPLAUSIBLE, "Check ETDFromPortOfCall: might be implausible", this.ETDFromPortOfCall.Value.ToLocalTime().ToString(), this.Title, null, this.Tablename));
}
- if ((this.ETAToNextPort < DateTime.Now) || (this.ETAToNextPort > DateTime.Now.AddDays(14)) || (this.ETAToNextPort.HasValue && this.ETAToNextPort.Value.ToLocalTime().IsTimeEmpty()))
- {
- violations.Add(RuleEngine.CreateViolation(ValidationCode.TIME_IMPLAUSIBLE, "Check ETAToNextPort: might be implausible", this.ETAToNextPort.Value.ToLocalTime().ToString(), this.Title, null, this.Tablename));
- }
+
+ if (this.ETDFromPortOfCall.HasValue && this.ETAToNextPort.HasValue && (this.NextPort?.Equals("ZZUKN") == false) && (this.ETAToNextPort <= ETDFromPortOfCall))
+ errors.Add(RuleEngine.CreateError(ValidationCode.E122, "ETAToNextPort", null, this.Title, null, this.Tablename));
+
+ if (this.ETDFromLastPort.HasValue && this.ETAToPortOfCall.HasValue && (this.ETDFromLastPort >= this.ETAToPortOfCall))
+ errors.Add(RuleEngine.CreateError(ValidationCode.IMPLAUSIBLE, "ETDFromLastPort", null, this.Title, null, this.Tablename));
if (this.CallPurposes.IsNullOrEmpty())
{
@@ -300,34 +292,47 @@ namespace bsmd.database
}
}
}
- else
+ else // TRANSIT
{
if (this.ETDFromKielCanal.HasValue && this.ETAToKielCanal.HasValue && (this.ETDFromKielCanal < this.ETAToKielCanal))
errors.Add(RuleEngine.CreateError(ValidationCode.E121, "ETDFromKielCanal implausible", this.ETDFromKielCanal.Value.ToLocalTime().ToString(), this.Title, null, this.Tablename));
- if(this.ETDFromKielCanal.HasValue && this.ETDFromKielCanal.Value.ToLocalTime().IsTimeEmpty())
+ if ((this.ETAToKielCanal < DateTime.Now) || (this.ETAToKielCanal.HasValue && this.ETAToKielCanal.Value.ToLocalTime().IsTimeEmpty()))
+ violations.Add(RuleEngine.CreateViolation(ValidationCode.TIME_IMPLAUSIBLE, "Check ETAToKielCanal: might be implausible", this.ETAToKielCanal.Value.ToLocalTime().ToString(), this.Title, null, this.Tablename));
+
+ if ((this.ETDFromKielCanal < DateTime.Now.AddDays(-14)) || (this.ETDFromKielCanal > DateTime.Now.AddDays(14)) || (this.ETDFromKielCanal.HasValue && this.ETDFromKielCanal.Value.ToLocalTime().IsTimeEmpty()))
violations.Add(RuleEngine.CreateViolation(ValidationCode.TIME_IMPLAUSIBLE, "Check ETDFromKielCanal: might be implausible", this.ETDFromKielCanal.Value.ToLocalTime().ToString(), this.Title, null, this.Tablename));
- if(this.ETAToKielCanal.HasValue && this.ETAToKielCanal.Value.ToLocalTime().IsTimeEmpty())
- violations.Add(RuleEngine.CreateViolation(ValidationCode.TIME_IMPLAUSIBLE, "Check ETAToKielCanal: might be implausible", this.ETAToKielCanal.Value.ToLocalTime().ToString(), this.Title, null, this.Tablename));
+ if (this.ETDFromKielCanal.HasValue && this.ETAToNextPort.HasValue && (this.NextPort?.Equals("ZZUKN") == false) && (this.ETAToNextPort <= ETDFromKielCanal))
+ errors.Add(RuleEngine.CreateError(ValidationCode.E122, "ETAToNextPort", null, this.Title, null, this.Tablename));
+
+ if (this.ETDFromLastPort.HasValue && this.ETAToKielCanal.HasValue && (this.ETDFromLastPort >= this.ETAToKielCanal))
+ errors.Add(RuleEngine.CreateError(ValidationCode.IMPLAUSIBLE, "ETDFromLastPort", null, this.Title, null, this.Tablename));
}
- if((this.LastPort?.Equals("ZZUKN") == true) && this.ETDFromLastPort.HasValue)
- errors.Add(RuleEngine.CreateError(ValidationCode.IMPLAUSIBLE_ZZUKN, "ETDFromLastPort cannot be set if ZZUKN", null, this.Title, null, this.Tablename));
+ // NSW 7.1 ETDFromLastPort Pflichtfeld, wenn LastPort != ZZUKN
+ if (!this.LastPort.IsNullOrEmpty() && !this.LastPort.Equals("ZZUKN") && !this.ETDFromLastPort.HasValue)
+ {
+ errors.Add(RuleEngine.CreateError(ValidationCode.E125, "ETDFromLastPort must be provided for a given last port", "", this.Title, null, this.Tablename));
+ }
+ if ((this.ETDFromLastPort < DateTime.Now.AddDays(-14)) || (this.ETDFromLastPort.HasValue && this.ETDFromLastPort.Value.ToLocalTime().IsTimeEmpty()))
+ {
+ violations.Add(RuleEngine.CreateViolation(ValidationCode.TIME_IMPLAUSIBLE, "Check ETDFromLastPort: might be implausible", this.ETDFromLastPort.Value.ToLocalTime().ToString(), this.Title, null, this.Tablename));
+ }
+ if ((this.ETAToNextPort < DateTime.Now) || (this.ETAToNextPort > DateTime.Now.AddDays(14)) || (this.ETAToNextPort.HasValue && this.ETAToNextPort.Value.ToLocalTime().IsTimeEmpty()))
+ {
+ violations.Add(RuleEngine.CreateViolation(ValidationCode.TIME_IMPLAUSIBLE, "Check ETAToNextPort: might be implausible", this.ETAToNextPort.Value.ToLocalTime().ToString(), this.Title, null, this.Tablename));
+ }
- if (this.ETDFromPortOfCall.HasValue && this.ETAToNextPort.HasValue && (this.NextPort?.Equals("ZZUKN") == false) &&
- (this.ETAToNextPort <= ETDFromPortOfCall))
- errors.Add(RuleEngine.CreateError(ValidationCode.E122, "ETAToNextPort", null, this.Title, null, this.Tablename));
+ if ((this.LastPort?.Equals("ZZUKN") == true) && this.ETDFromLastPort.HasValue)
+ errors.Add(RuleEngine.CreateError(ValidationCode.IMPLAUSIBLE_ZZUKN, "ETDFromLastPort cannot be set if ZZUKN", null, this.Title, null, this.Tablename));
if ((this.NextPort?.Equals("ZZUKN") == false) && !this.ETAToNextPort.HasValue)
errors.Add(RuleEngine.CreateError(ValidationCode.NOT_NULL, "ETAToNextPort missing", null, this.Title, null, this.Tablename));
if((this.NextPort?.Equals("ZZUKN") == true) && this.ETAToNextPort.HasValue)
errors.Add(RuleEngine.CreateError(ValidationCode.IMPLAUSIBLE_ZZUKN, "ETAToNextPort cannot be set if ZZUKN", null, this.Title, null, this.Tablename));
-
- if (this.ETDFromLastPort.HasValue && this.ETAToPortOfCall.HasValue && (this.ETDFromLastPort >= this.ETAToPortOfCall))
- errors.Add(RuleEngine.CreateError(ValidationCode.IMPLAUSIBLE, "ETDFromLastPort", null, this.Title, null, this.Tablename));
-
+
}
public override DatabaseEntity.ValidationBlock GetValidationBlock()
diff --git a/bsmd.database/Properties/AssemblyProductInfo.cs b/bsmd.database/Properties/AssemblyProductInfo.cs
index b432045f..500e1f5c 100644
--- a/bsmd.database/Properties/AssemblyProductInfo.cs
+++ b/bsmd.database/Properties/AssemblyProductInfo.cs
@@ -2,6 +2,6 @@
[assembly: AssemblyCompany("schick Informatik")]
[assembly: AssemblyProduct("BSMD NSW interface")]
-[assembly: AssemblyInformationalVersion("7.6.0")]
+[assembly: AssemblyInformationalVersion("7.7.0")]
[assembly: AssemblyCopyright("Copyright © 2014-2022 schick Informatik")]
[assembly: AssemblyTrademark("")]
\ No newline at end of file
diff --git a/bsmd.database/Properties/AssemblyProjectInfo.cs b/bsmd.database/Properties/AssemblyProjectInfo.cs
index 61f6ea94..771af8fe 100644
--- a/bsmd.database/Properties/AssemblyProjectInfo.cs
+++ b/bsmd.database/Properties/AssemblyProjectInfo.cs
@@ -1,4 +1,4 @@
using System.Reflection;
-[assembly: AssemblyVersion("7.6.0.*")]
+[assembly: AssemblyVersion("7.7.0.*")]
diff --git a/bsmd.database/ReportingParty.cs b/bsmd.database/ReportingParty.cs
index c2d6bf5b..d4e63e50 100644
--- a/bsmd.database/ReportingParty.cs
+++ b/bsmd.database/ReportingParty.cs
@@ -42,7 +42,11 @@ namespace bsmd.database
///
/// System-User (Testing, Tool)
///
- SYSTEM = 4
+ SYSTEM = 4,
+ ///
+ /// kann bestimmte Dinge (e.g. templates) im ENI bearbeiten
+ ///
+ EDITOR = 8
};
#endregion
@@ -156,6 +160,12 @@ namespace bsmd.database
set { this.SetUserFlag(value, UserFlags.ADMIN); }
}
+ public bool IsEditor
+ {
+ get { return (this.Flags & (int)UserFlags.EDITOR) != 0; }
+ set { this.SetUserFlag(value, UserFlags.EDITOR); }
+ }
+
#endregion
#endregion
diff --git a/misc/LADG_NST2007.csv b/misc/LADG_NST2007.csv
new file mode 100644
index 00000000..86387418
--- /dev/null
+++ b/misc/LADG_NST2007.csv
@@ -0,0 +1,3011 @@
+Beschreibung der Güter in alphabetischer Reihenfolge;NST 2007 (neu)
+(Voll-)Scheibenräder;118
+??;192
+Abbrände von NE-Metallerzen;142
+Abfall (Eisen- und Stahlabfälle);142
+Abfallaugen, fettsäurehaltig;142
+Abfälle der chemischen Industrie, eisenoxidhaltig;142
+Abfälle der Getreidereinigung;046
+Abfälle der Glasindustrie, eisenoxidhaltig;142
+Abfälle und Rückstände der Nahrungsmittelindustrie, s.n.g.;046
+Abfälle von Aluminiumlegierungen;142
+Abfälle von Bleilegierungen;142
+Abfälle von Chemiefäden, -fasern, -garnen;142
+Abfälle von Eisen-, Stahlblechen, Platinen Formstahl, zur Verhüttung;142
+Abfälle von Eisen-, Stahlblechen, -platten, nicht zur Verhüttung;142
+Abfälle von Fasern;051
+Abfälle von Fellen und Häuten;01A
+Abfälle von Kunststoffen, auch geschäumt, auch thermoplastisch,s.n.g.;142
+Abfälle von Kupferlegierungen;142
+Abfälle von NE-Metallegierungen, s.n.g.;142
+Abfälle von pflanzlichen und tierischen Rohstoffen;01A
+Abfälle von Platinen, Formstahl, nicht zur Verhüttung;142
+Abfälle von Vanadiumlegierungen;142
+Abfälle von Zinklegierungen;142
+Abfälle von Zinnlegierungen;142
+Abfalleisenspäne, nicht zur Verhüttung;142
+Abfalleisenspäne, zur Verhüttung;142
+Abfallmischsäuren aus Schwefel- und Salpetersäure;142
+Abfallpellets;044
+Abfallsalpetersäure;142
+Abfallsalzsäure;142
+Abfallschwefelsäure;081
+Abfallsteine aus Steinbrüchen;035
+Abfallstücke von Eisen-, Stahlblechen, -platten, nicht zur Verhüttung;142
+Abfallstücke von Platinen, Formstahl, nicht zur Verhüttung;142
+Ablauföl;072
+Abrasive Grain (Scheuer- und Schleifmittel);085
+Abrasives;085
+Abraum;142
+Abschleppwagen;121
+ACEMATT = Mattierungsmittel v. Degussa (synth. hergest. Kieselsäure);081
+Acetal;084
+Aceton;081
+Acetylen, verdichtet, verflüssigt;073
+Acetylenkoks;074
+Achsen;121
+Achsen aus Stahl, abgängig, nicht zur Verhüttung;142
+Achsen aus Stahl, abgängig, zur Verhüttung;142
+Achsen für Fahrzeuge;121
+Achslagerschalen aus Gußeisen, aus Stahl;105
+Achslagerschenkel für Fahrzeuge;121
+Acrylnitrit;081
+Adipinsäure;081
+Adressbücher;063
+Adventskranz;132
+Aggregate (Motor, Aggregat, Antriebsmaschine);118
+Agricuralt-Goods;111
+Air sickness bags;062
+Akkumulatoren, -platten;114
+Aktenkoffer;053
+Aktivkohle;085
+Alaune;081
+Alginat (Sodium, Natrium);085
+Alkalimetallalkoholat;081
+Alkohol, rein (Weingeist);081
+Alkoholate;081
+Alkoholfreie Getränke;047
+Alkoholische Getränke;047
+Allesschneider;114
+Allzweckwagen;122
+Altbleche aus Eisen, zur Verhüttung;142
+Altglas;091
+Altöl, s.n.g.;072
+Altpapier;142
+Altpapier, Altpappe;142
+Alu;102
+Alufolie;102
+Aluminium;102
+Aluminium Calciumphosphat, zum Düngen;033
+Aluminium foil (Alufolie);102
+Aluminium Folien;102
+Aluminium Granulat;102
+Aluminium Granulate;102
+Aluminium rims;118
+Aluminiumabfälle, -aschen, -rückstände, -schlacken, -schrott;142
+Aluminiumacetat (essigsaure Tonerde);081
+Aluminiumerze, -konzentrate;032
+Aluminiumfelgen;121
+Aluminiumfluorid;081
+Aluminiumformiat (ameisensaure Tonerde);081
+Aluminiumgranulat;102
+Aluminiumhydroxid (Tonerdehydrat);081
+Aluminiumlegierungen;102
+Aluminiumoxid;081
+Aluminiumoxyd, weiß verschmolzen;102
+Aluminiumpulver, überzogen;102
+Aluminiumsulfat (schwefelsaure Tonerde);081
+Aluminium-Teile;102
+Aluminiumwaren;105
+Alurohre;102
+Alu-Rohre L.Ref.: Herr Brüggemann für USA Schiff: CP Spirit;102
+Alu-Teile;102
+Amaturen (=Armaturen);118
+Ammoniakgas, nicht zum Düngen;081
+Ammoniakgas, zum Düngen;083
+Ammoniaksuperphosphat, zum Düngen;083
+Ammoniumbicarbonat, zum Düngen;083
+Ammoniumchlorid (Salmiak, salzsaures Ammoniak);081
+Ammoniumchlorid (Salmiak, salzsaures Ammoniak), zum Düngen;083
+Ammoniumnitrat (Ammonsalpeter, salpetersaures Ammoniak);081
+Ammoniumnitrat, zum Düngen;083
+Ammoniumnitrat-Harnstoff-Lösung, zum Düngen;083
+Ammoniumphosphat, -lösung;081
+Ammoniumsulfat (schwefelsaures Ammoniak), zum Düngen;083
+Ammonnitrat, zum Düngen;083
+Ammonsalpeter (Ammoniumnitrat), zum Düngen;083
+Ammonsalpeter (Ammoniumnitrat, salpetersaures Ammoniak);081
+Ammonsulfat, -lauge;083
+Ammonsulfatsalpeter, zum Düngen;083
+Ananas (frisch);014
+Ananaskonserven;043
+Angelruten;132
+Anhänger-Achsen (und Zubehör);121
+Anhydrit, synthetisch (Calciumsulfat);081
+Anker für Wasserfahrzeuge;105
+Ankerketten;105
+Anodenkupfer;102
+Anorak;052
+Anorganische Chemikalien;081
+Anthracen, roh und raffiniert;082
+Anthracenschlamm;082
+Anthrazit;021
+Anthrazitbriketts;071
+Anthrazitbrikettsabfälle;071
+Anthrazitbrikettstaub;071
+Anthraziteierbriketts;071
+Anthrazitnußbriketts;071
+Apatit, natürlich, nicht aufgeschlossen, zum Düngen;033
+Äpfel;014
+Apfelsinen;014
+Apothekerwaren (Arzneimittel);085
+Apparate zu chemischen, medizinischen, optischen, physikalischen Zwecken;117
+Apparate, elektrisch, einschl. Zubehör, Einzel- und Ersatzteile;114
+Aprikosen;014
+Aprikosenkerne;014
+Aquarium-Teile ;086
+Aquarium-Zubehör ;086
+Armaturen;118
+Articles of iron or steel (Eisen- oder Stahlwaren);121
+Arzneimittel;085
+Asbest, roh (-erde, -gestein, -mehl, -fasern, -generat);035
+Asbestabfälle;142
+Asbestisoliermittel;091
+Asbestwaren;091
+Asbestzementwaren;093
+Aschen von Brennstoffen, s.n.g.;142
+Ascorbin(säure);085
+Asphalt (Asphaltite);142
+Asphalterde;035
+Asphalterzeugnisse;093
+Asphalterzeugnisse zum Straßenbau;035
+Asphaltsteine;035
+Äthylacetat;081
+Äthylbenzol;081
+Äthylen;081
+Äthylenchlorid;081
+Äthylenglykol;081
+Äthylenoxid, verflüssigt;081
+Äthylglykol;081
+Ätzender flüssiger Stoff, entzündbar;081
+Ätzkali (Kaliumhydroxid);081
+Ätznatron (Natriumhydroxid, fest);081
+Ätznatronlauge (Natriumhydroxid in Lösung);081
+Auberginen;014
+Auftausalz (Streusalz);034
+Ausstampfmasse;091
+Ausstellergerätschaften, gebraucht;175
+Auto parts, motor vehicle parts (Autoteile);121
+Autobleche;121
+Autokorb Vollweide;061
+Automotive coils;121
+Automotive filters;121
+Autos;121
+Autoteile;121
+Autoteile, gebraucht;121
+Autowracks, zur Verhüttung;142
+Axles (Achsen);121
+Azs Woven-Line;051
+Baby Food (Babynahrung);048
+Backartikel (Spielzeug);132
+Backsteine aus gebranntem Ton;091
+Backwaren;048
+Badeartikel;132
+Badehandtücher;051
+Badematten;051
+Badewannen;117
+Badregal;131
+Baggergut;035
+Baggersand;035
+Baggerteile;118
+Bags;105
+Bales with denim ;051
+Balken aus Holz;061
+Bälle;132
+Ballons aus Glas;091
+Balsaholz;015
+Bamboo (Bambus);017
+Bambus;017
+Bananen;014
+Bänder aus NE-Metallen und NE-Metallegierungen;102
+Bandstahl (Coils= Spulen, schwer);101
+Bandstahl abfallenden, nicht zur Verhüttung;101
+Bandstahl, auch oberflächenbeschichtet;101
+Baracken (aus Holz);061
+Baracken (aus Metall);105
+Bariumcarbonat;081
+Bariumchlorid (Chlorbarium);081
+Bariumnitrat;081
+Bariumnitrit;081
+Bariumsulfat;081
+Bariumsulfid;081
+Baryt (Bariumsulfat);035
+Basalt;035
+Basaltbausteine;093
+Basaltblöcke, -platten;035
+Bast;017
+Bastelbox;132
+Bathroom Accessoires;086
+Bathtubes;117
+Batterien;114
+Baubedarfsartikel;093
+Baugerätschaften, gebraucht;175
+Baumwollabfälle;051
+Baumwolle, Baumwollfasern;051
+Baumwollsaat;017
+Baumwollsaatschrot, -pellets;044
+Bauplatten, -steine, -teile aus Gips;093
+Bauschutt;142
+Baustahlmatten, -gewebe;105
+Bausteine aus Asbestzement;093
+Bausteine aus Beton, Eisenbeton, Zement;093
+Bausteine aus Bimsstein;093
+Bausteine aus gebranntem Ton;091
+Bausteine aus Naturstein;093
+Baustoffe;091
+Baustoffe aus Kork;093
+Baustoffe aus Steinzeug;093
+Bauteile aus Asbestzement;093
+Bauteile aus Beton, Eisenbeton;093
+Bauteile aus Bimsstein;093
+Bauteile aus Schaumstoffen;093
+Bauteile aus Stein;093
+Bauwerksteile aus Holz;061
+Bauwerksteile aus Metall;105
+Bauxit;032
+Bauxit Stueck;032
+BCO/Harmless (Bio-Rohöl, harmlos);081
+Beauty Set;132
+Beautycase;132
+Becher;091
+Beer (Bier);047
+Beer made from malt;047
+Beerenkernmehl;044
+Beerenobst;014
+Behälter;162
+Behälter (aus Edelstahl);105
+Bekleidung;052
+Beleuchtungskörper;114
+Bentonit, roh und unverpackt;035
+Bentonit, roh und verpackt;035
+Benzin, Benzin-Benzolgemisch;072
+Benzinkanister (Kunststoff);086
+Benzinkanister (Metall);105
+Benzol;082
+Benzolerzeugnisse, s.n.g.;082
+Benzolkohlenwasserstoffderivate;081
+Beschläge;105
+Bestecke;105
+Betonbausteine, -teile, -pfähle, -masten;093
+Betondrahtgewebe (Eisendrahtgewebe mit aufgebrachten Betonkörperchen);105
+Betonmischmaschinen;118
+Betonstahl;101
+Betonwaren und Eisenbetonwaren;093
+Bettbezüge;051
+Bettwaren;131
+Bettwäsche;051
+Beverages (Getränke);047
+Bicycle parts (Fahrradteile);121
+Bier;047
+Bierfässer;105
+Big bags;105
+Big-Bag;105
+Bilder;063
+Bilderrahmen;105
+Bilderrahmen, Fotoalben, Uhren (Schwerpunkt: Uhren, Fotoalben);132
+Bimsbausteine;093
+Bimsbauteile;093
+Bimskies, -sand;035
+Bimsstein, -steinmehl;035
+Bimswaren;093
+Bio wood;015
+Biodiesel;044
+Bio-Rohöl (Bio Crude Oil);081
+Bio-Wood;015
+Birnen;014
+Bittererde, -spat;035
+Bittersalz (Magnesiumsulfat), nicht zum Düngen;081
+Bitumen;074
+Bitumenemulsionen, -lösungen, -erzeugnisse;074
+Bitumenfilz;062
+Bitumenklebmasse;074
+Bitumenpapier, -pappe;062
+Bituminöse Gemische, s.n.g.;074
+Black (Farbstoff, Schwarz);085
+Blähton, -schiefer, roh und unverpackt;035
+Blähton, -schiefer, roh und verpackt;035
+Blank pillar (Pfeiler);104
+Blanks lower tie bar;118
+Blankstahl;101
+Blechabfälle, nicht zur Verhüttung;142
+Blechabfälle, zur Verhüttung;142
+Bleche;101
+Bleche aus NE-Metallen und NE-Metallegierungen;102
+Bleche in Tafeln oder Rollen (z.B. Coils) aus Stahl;101
+Blechwaren;105
+Bleiabfälle, -aschen, -rückstände, -schlacken, -schlamm, -schrott;142
+Bleicherde, roh und unverpackt;035
+Bleierze, -blende, -glanz, -konzentrate;032
+Bleiglätte, -oxid;081
+Bleilegierungen;102
+Bleistaub (gemahlenes Rohblei);102
+Bleiverbindung, löslich, nicht anderswo genannt;081
+Bleiwaren;105
+Bleiweiß (Bleikarbonat);081
+Blöcke aus Beton, Eisenbeton;093
+Blöcke aus Stahl;101
+Blue Buffer Paper;062
+Blumen, künstliche ;132
+Blumenerde;035
+Blusen;052
+Blutkuchen, -mehl;01A
+Bodenbelag;061
+Bodenpflaster aus Sandstein;093
+Bodenplatten, -fliesen aus Kalkstein;091
+Bodenstaubsauger;112
+Bodenzink (Hartzink);102
+Bohnen (frisch);014
+Bohnen (in Dosen);043
+Bolzen aus Gußeisen, aus Stahl;105
+Boote;122
+Borax (Natriumtetraborat, Tinkal);035
+Bordsteine aus Kunststein;093
+Bordsteine aus Naturstein;093
+Bormineralien, auch gemahlen, kalziniert, zerkleinert;035
+Borsuperphosphat, zum Düngen;083
+Bottle Cases (Flaschenkästen);086
+Brackwasser;142
+Brake (Bremse);122
+Brammen aus Stahl;101
+Branntkalk;092
+Branntwein, unvergällt;047
+Branntwein, vergällt;081
+Brass tuning;132
+Brauereigefäße;105
+Brauereimaschinen;118
+Braunkohle, s.n.g.;021
+Braunkohlenabfälle, -staub;021
+Braunkohlenbriketts, -brikettsabfälle, -brikettsstaub;071
+Braunkohlenkoks, s.n.g.;071
+Braunkohlenkoksabfälle, -grus, -staub;071
+Braunkohlenkoksbriketts;071
+Braunkohlenschwelkoks, -abfälle;071
+Braunkohlenteer, -öl;071
+Braunkohlenteerkoks;071
+Braunkohlenteerpech;082
+Braunmehl;046
+Braunstein, natürlich;032
+Brechkoks;071
+Breitbandabfallenden aus Stahl, nicht zur Verhüttung;142
+Breitbandabfallenden aus Stahl, zur Verhüttung;142
+Breitbandstahl in Rollen (Coils);101
+Breitbandstahl in Rollen (Coils), zum Auswalzen;101
+Breitflachstahl (Universalstahl);101
+Breitflanschträger;101
+Bremsbeläge;093
+Bremsen;122
+Bremsflüssigkeit;082
+Bremsscheiben;121
+Brennbare Flüssigkeit, entzündliche Flüssigkeit;074
+Brennholz;015
+Brenntorf;035
+Bricks;091
+Brieftaschen (Lederwaren) ;053
+Bright Steel Bar;101
+Brocken von feuerfesten und keramischen Erzeugnissen;035
+Brocoli;014
+Bronze;102
+Brot;048
+Bruchreis;011
+Bruchsteine;035
+Buchenrundholz;015
+Bücher;063
+Büchsen aus Stahlblech, aus Weißblech;105
+Buchweizen;011
+Building elements;093
+Building materials;093
+Bulk moplen;084
+Bundles;192
+Büromaschinen;113
+Bürsten;132
+Bürstenwaren;132
+Butadien;073
+Butan;073
+Butanol;085
+Butter;045
+Buttermilch;045
+Butylacetat;085
+Butylen;073
+Butylenglykol;081
+Butylglykol;085
+Cable;105
+Calciumcarbit;081
+Calciumcarbonat, natürlich;035
+Calciumchlorid (Chlorcalcium);081
+Calciumformiat (ameisensaurer Kalk);081
+Calciumhypochlorit (Chlorkalk);081
+Calciumnitrat (Kalksalpeter), nicht zum Düngen;081
+Calciumnitrat (Kalksalpeter), zum Düngen;083
+Calciumphospat zu Futterzwecken;046
+Calciumphospat, -superphospat, zum Düngen;033
+Calciumphosphat, nicht zum Düngen;081
+Calciumsulfat (Anhydrit, synthetisch);081
+Calciumsulfat (natürlicher, schwefelsaurer Kalk);035
+Candles (Kerzen);132
+Candy;048
+Canned food;048
+Caprolactam;081
+Car parts;121
+Carajas Coarse;031
+Carbides;081
+Carbon (black);081
+Carbon Black Oil;074
+Carbon powder;081
+Carborundum;081
+Cardamon;017
+Carol Konz;031
+Carol Pell;031
+Carpets;051
+Cases S.T.C. (Kisten mit Frachtgut);061
+Casks;086
+Catsan, Biocat;085
+Catsan, Biocat u.a. (Katzenstreu);085
+CD-Player;132
+Celanex Kunststoffgranulat, Polyester (Polybutylene Terephthalat - PBT);084
+Ceramat;081
+Ceramic clays;035
+Ceramic goods (Keramikwaren);091
+Chains;105
+Champignonkonserven;043
+Champignons (frisch);014
+Charcoal in bulk (charcoal dust) (Holzstaub);015
+Chassis, gebraucht;121
+Chemical products (Chemische Erzeugnisse);085
+Chemicals ;081
+Chemiefäden, -garne;051
+Chemiefasern;085
+Chemikalien;081
+Chemikalien, anorganische ;081
+Chemikalien, chemische Erzeugnisse, s.n.g.;085
+Chemische Erzeugnisse ;085
+Chemische Grundstoffe;081
+Chemische Produkte;085
+Chimney Briks (Kaminziegelsteine);091
+Chinaclay, roh und unverpackt;035
+Chinaclay, roh und verpackt;035
+Chinaspat;035
+Chlor, verflüssigt (Chlorlauge);081
+Chlorbarium (Bariumchlorid);081
+Chlorbenzol;081
+Chlorcalcium (Calciumchlorid);081
+Chloressigsäure;081
+Chlorkalk (Calciumhypochlorit);081
+Chlorkohlenwasserstoffe, s.n.g.;085
+Chlorlauge;081
+Chloroform (Trichlormethan);081
+Chlorothene;085
+Chlorparaffin;085
+Chlorschwefel;081
+Christmas Decoration (Weihnachtsdekoration);132
+Chromalaun;081
+Chromerze, -konzentrate;032
+Chromlauge;081
+Chromsand (Chromsteine);032
+Chromsulfat;081
+Cigarette Paper;062
+Citruspellets;044
+Clamps (= Metall-Klammern, Schraubzwingen);105
+Clays;035
+Cleanex;085
+Closures (Verschlüsse);086
+Clothing;052
+Coaxial cable;114
+Coconut cream;048
+Cognis;081
+Coils;101
+Coils (= schwere Spulen), Bandstahl;101
+Coils (Bandstahl);101
+Coils, kaltgewalzt, sonstige;101
+Coils, warmgewalzt;101
+Cold Rolled Steel Strips (= kalt gewalzter Stabstahl) ;101
+Colemanit (Bormineralien);035
+Colli = Warenballen;192
+Colored plastic basket;086
+Commodoties (Gebrauchsgegenstände);192
+Component parts;091
+Components;104
+Components for IBC Production;104
+Compresses boards;061
+Computer;113
+Computer cases;086
+Confectory, candy, foodstuff;048
+Connectings rod;121
+Construction material;093
+Container (als Gut);118
+Container, gebraucht;161
+Converter (Stopfen);091
+Copolymer;084
+Ccopper ;102
+Copper alloy tube or pipe;102
+Corundum;081
+Cotton linters;051
+Crane parts;118
+Crates (= Lattenkisten);191
+Crates stone ware (Lattenkisten mit Steingut);093
+Crates stone ware (Steingut in Kisten);093
+C-Schienen;101
+Cullets (Glasbruch);091
+Cumol;081
+Cyanide, s.n.g.;081
+Cyansalz;081
+Cyanurchlorid;081
+Cyclohexan;073
+Dachfilz;051
+Dachpappe;062
+Dachziegel aus gebranntem Ton;091
+Dairyprodukts (Molkereiprodukte);045
+Damenblusen;052
+Damenboots;052
+Damenhosen;052
+Damenhosen aus Chemifasern (= Chemiefasern);052
+Damenjacken;052
+Damenjacken aus Polyester;052
+Damenjacken, Damenhosen;052
+Damenpullover;052
+Damenschuhe;052
+Damenstrickjacken;052
+Dämmplatten aus Strohschliff;093
+Dampfkessel;105
+Dampfreiniger;112
+Dari;011
+Dartscheibe;132
+DBT Grubenausbaustahl;101
+Decalin (Naphthalin);082
+Dechet Aluminium;102
+Decke;051
+Degalan AL 23;084
+Denim;051
+Density polyethelene;084
+Dental Gips;085
+Desmodur;085
+Dextrin (lösliche Stärke);085
+Dextrose;048
+Diammoniumphospat (Diammonphosphat), zum Düngen;083
+Diapers (Windeln, Pampers);062
+Dicalciumphosphat (phosphorsaurer Kalk) zu Futterzwecken;046
+Dicalciumphosphat (phosphorsaurer Kalk), zum Düngen;083
+Dichloräthylen;085
+Dichtungen aus Asbest;093
+Dieselkraftstoff;072
+Dieselmotoren;118
+Dieselöl;072
+Diethylmalonat (DEM), Malonsäurediethylester, organisches Lösungsmittel;085
+Different metal and plastic parts (Metall- und Plastikteile);084
+Dimethyl Malonat (DMM), Kohlenwasserstoff-Verbindung;081
+Dimethyl malonate (Kohlenwasserstoff-Verbindung);081
+Dimethyläther;081
+Dinasbrocken, -bruch;035
+Dinatriumtrioxosilikat;081
+Dinkel;011
+Diolen;085
+Diplomatenfahrzeug;121
+Diplomaten-Pkw;121
+Diplomatic Car / Cargo (Auto, Pkw));121
+Diplomatic Car / Cargo (Diplomatenfahrzeug);121
+Disc wheels (Scheibenräder);121
+Disc wheels;121
+Dispersionsfarbe;085
+Diverse Decken;051
+Diverse Geldbeutel;132
+Diverse Gepäckanhänger;132
+Diverse Messer;105
+Diverse Rucksäche;132
+Diverse Taschen;132
+Diverse Uhren;117
+Diverse Materialien (verschiedenes Material);192
+Diverses (Verschiedenes);192
+Diverses Spielzeug;132
+DL-Methionin / DL-Lysin;081
+Dolomit (Magnesiumsilikat);035
+Dolomitsplitt;035
+Door Closers and Accessories ( =Türschließer und Zubehör);105
+Doppeltes oder komplexes Silikat;081
+Dörrobst;043
+Dosen (Geschenk-, Weihnachtsdosen);132
+Dosen (Konservendosen, -büchsen);105
+Dosen aus Stahlblech, aus Weißblech;105
+Double or complex silicate (doppeltes oder komplexes Silikat);081
+Draht;101
+Draht aus Eisen, aus Stahl;101
+Draht aus NE-Metallen und NE-Metallegierungen;102
+Draht NE;102
+Drahtgeflecht aus Stahl;105
+Drahtseile;105
+Drahtstifte aus Gußeisen, aus Stahl;105
+Drahtwaren;105
+Drainröhrchen aus gebranntem Ton;033
+Druckereierzeugnisse, s.n.g.;063
+Druckfarben;085
+Druckgaspackungen;105
+Druckpapier;062
+Düngekalk;035
+Düngemittel mineralischen Ursprungs, s.n.g.;033
+Düngemittel, kalkhaltig, s.n.g.;035
+Düngemittel, pflanzlichen Ursprungs, s.n.g.;083
+Düngemittel, tierischen Ursprungs, s.n.g.;083
+Dünger;083
+Düngetorf;035
+Dunit;035
+Dünnsäure;081
+Duschvorhänge;086
+Düsentreibstoff, s.n.g.;072
+Dust bins;086
+Dynamobleche (Elektrobleche), -band;101
+Dynamos;114
+Ebenholz;015
+EBK;021
+Edelsplitt;035
+Eier;01A
+Einkaufstaschen;132
+Einrichtungsgegenstände, s.n.g.;131
+Eipulver;01A
+Eisen- oder Stahlwaren;121
+Eisen und Stahl;101
+Eisen und Stahl (gewalzter Stahl zur Weißblechherstellung);101
+Eisen, alt, abgängig, nicht zur Verhüttung;142
+Eisen, alt, abgängig, zur Verhüttung;142
+Eisenabfälle, nicht zur Verhüttung;142
+Eisenabfälle, zur Verhüttung;142
+Eisenbahn (Spielwaren);132
+Eisenbahnoberbaumaterial aus Stahl, s.n.g.;101
+Eisenbehälter, s.n.g.;101
+Eisendraht;101
+Eisenerze, auch aufbereitet;031
+Eisenerzkonzentrat;031
+Eisenfässer, auch verzinkt, verzinnt;101
+Eisengranulat (Strahlmittel);142
+Eisenlegierungen, s.n.g.;101
+Eisenmasse, gekörnt, gepulvert, pelliert, nicht zur Verhüttung;142
+Eisenoxid zur Herstellung von Farben;085
+Eisenoxid, -sulfat;081
+Eisenoxidkonzentrat;031
+Eisenoxyd, fein;031
+Eisenoxyd, schwarz;081
+Eisenpellets, zur Verhüttung;142
+Eisenpulver;101
+Eisenpyrit, geröstet;081
+Eisenschlacken, nicht zur Verhüttung;142
+Eisenschlacken, zur Verhüttung;142
+Eisenschleifabfall, nicht zur Verhüttung;142
+Eisenschleifabfall, zur Verhüttung;142
+Eisenschrott, s.n.g.;142
+Eisenschrott, zur Verhüttung;142
+Eisenschwamm;101
+Eisenspäne, nicht zur Verhüttung;142
+Eisenspäne, zur Verhüttung;142
+Eisenstücke aus Abwrackarbeiten, zur Verhüttung;142
+Eisenverbindungen (z.B. Eisenrot, -violett), s.n.g.;081
+Eisenwaren, auch mit elektrischer Einrichtung, s.n.g.;101
+Eiserne Ketten L-Ref.: Shanghai;101
+Eiserne Mäntel (für Generatoren, Kondensatoren, Glühöfen);118
+Electrical Apparatus, electrical machinery (Elektrische Geräte);114
+Electrical material;114
+Electronic kitchen scales;118
+Electronic scales;118
+Elektrische Geräte;114
+Elektrische Haushaltsgeräte, weiße Ware;112
+Elektrische Teile;114
+Elektrisches Material;114
+Elektroden für elektrische Apparate und Öfen;114
+Elektrodenkohle, -stifte;114
+Elektrodenkohlenabfälle, -reste;085
+Elektrogrill;112
+Elektroherde;112
+Elektroisolierkörper;114
+Elektrolytblei;102
+Elektrolytkupfer;102
+Elektrolytzink;102
+Elektromaschinen, -teile, Elektromotoren;114
+Elektroöfen;114
+Elektrotechnische Erzeugnisse, s.n.g.;114
+Elektroteile;114
+ELKV/ FORD PREM;021
+Emailmasse;085
+Empty beer kegs;114
+Empty IBC (leere Intermediate-Bulk-Container);161
+Empty plastic drums (leere Kunststoff-Fässer);086
+Empty plastic drums (leere Plastikfässer, -trommeln);086
+Empty skids, Empty keys;105
+Empty Steel Drums;101
+Entkälkungsmittel für die Lederbereitung;085
+Entsafter (aus Edelstahl);112
+Entzündliche Flüssigkeit, brennbare Flüssigkeit;074
+Epikote;085
+Epoxy resin;084
+Erbsen (frisch);014
+Erbsen (in Dosen);043
+Erdaushub;035
+Erde zu Aufschüttungen;035
+Erdfarben, zubereitet;085
+Erdnüsse, geröstet;043
+Erdnüsse, nicht geröstet;017
+Erdnußhülsen, gemahlen;017
+Erdnußöl, genießbar;044
+Erdnußschrot, -pellets;044
+Erdöl, roh;022
+Ersatzteile;114
+Ersatzteile für LKWs;121
+Espartogras;016
+Essig (Speise- und Gärungsessig);048
+Essigsäure, -anhydrid;081
+Ethylorthoformiat, in Gefahrgutliste: 2524;081
+Expeller, auch pelliert;044
+Extraktionsmehl, -schrot, auch pelliert;044
+Fabita SF;031
+Fabrica Pell;031
+Fäden aus pflanzlichen Spinnstoffen, aus Tierhaaren, aus Wolle;051
+Fahrrad Zubehör (= Fahrradzubehör);122
+Fahrgestelle;122
+Fahrrad Zubehör;122
+Fahrräder, einschl. Zubehör, Einzel- und Ersatzteile;122
+Fahrradteile;122
+Fahrzeuge aller Art, abgängig, zur Verhüttung;142
+Fahrzeuggestelle;121
+Farbe;085
+Farben, zubereitet, s.n.g.;085
+Farberden, roh;035
+Farbhölzer, -wurzeln;015
+Farbpigmente;085
+Farbstoffe;085
+Farm-machenery-parts;118
+Faschinen;061
+Faserholz;015
+Fasern, pflanzlich, s.n.g.;017
+Fässer (aus Metall);105
+Fässer aus Holz;061
+Fässer aus Stahlblech;105
+Federn (aus Stahl);105
+Federn (tierisch);01A
+Federn von Schienenfahrzeugen;105
+Feigen getrocknet;043
+Feigen zur Herstellung von Kaffee-Ersatzmitteln;043
+Feinbleche, Feinstbleche, -band;101
+Feinerz;031
+Feinkohle;021
+Feinstahl;101
+Feinwaschberge;021
+Feinzink;102
+Feldspat;035
+Feldsteine;035
+Fell, Flausch, Webpelz;053
+Felle, bearbeitet;053
+Felle, roh;01A
+Fensterglas, unbearbeitet;091
+Fensterteile aus Holz;061
+Fensterteile aus Kunststoff;086
+Fensterteile aus Metall;105
+Fernsehgeräte, einschl. Zubehör, Einzel- und Ersatzteile;114
+Fernsprechgeräte, -apparate;114
+Ferromangan mit einem Kohlenstoffgehalt bis zu 2 %;101
+Ferromangan mit einem Kohlenstoffgehalt von mehr als 2 %;101
+Ferromanganlegierungen, s.n.g.;101
+Ferromangansilicium;101
+Ferrophosphor;101
+Ferrosilicium (Silicomangan);101
+Fertigbauteile aus Beton, aus Eisenbeton;093
+Fertilizer;083
+Festartikel, Glühbirnen, Weihnachtsbaum;132
+Festartikel, Weihnachtsbaum;132
+Feta (Käse);045
+Fettalkohole;081
+Fette von Fischen, Meerestieren, genießbar;044
+Fette, industrielle, s.n.g.;044
+Fette, pflanzlich, genießbar, s.n.g.;044
+Fette, tierisch, genießbar, s.n.g.;044
+Fette, ungenießbar, s.n.g.;044
+Fettkohle;021
+Fettsäure, s.n.g.;044
+Feuchtstärke;046
+Feuerfeste Steine;091
+Feuerfeste Steine, hitzebeständige Ziegelsteine;091
+FF-Steine (Feuerfeste Steine);091
+Fiberglas;091
+Fibre vulcanizes;084
+Fibre wall covering material;062
+Fibres;084
+Film;132
+Filter;118
+Filter aus Asbest;093
+Filter Media (= Filtermedien, Filterstoffe z.B. aus PVC);086
+Filterkalk;092
+Filterpapier;062
+Filz aus Asbest;093
+Filzpappe;062
+Filzwaren;051
+Findlinge;035
+Finnlandkies;035
+Firebricks (Schamottsteine);091
+Firnis;044
+Fischabfälle zu Futterzwecken;01B
+Fische, Fischereierzeugnisse, s.n.g.;042
+Fischerzeugnisse, s.n.g.;042
+Fischmarinaden, konserven, -salate;042
+Fischmehl, auch pelletiert;046
+Fischöl, -tran;044
+Fittings;131
+FK Fording Eagl;021
+Flache Unterlegscheiben, Dichtungsringe, -scheiben;105
+Flachglas, s.n.g.;091
+Flachs;017
+Flammable Liquid (brennbare Flüssigkeit, entzündliche Flüssigkeit);074
+Flammkohle;021
+Flaschen aus Glas;091
+Flaschen aus Stahl zur Beförderung verdichteter oder verflüssigter Gase;105
+Flaschenkästen;086
+Flat washers (flache Unterlegscheiben, Dichtungsringe);105
+Flechtwaren, s.n.g.;061
+Fleece (Webpelz);053
+Fleisch, frisch oder gefroren;041
+Fleischwaren;041
+Flexitank (Kunststofflager- oder -transportbehälter für Flüssigkeiten);105
+Fliesen;091
+Fliesen aus Asbestzement;093
+Fliesen aus Basalt, Schiefer;093
+Fliesen aus Beton, Eisenbeton, Zement;093
+Fliesen aus Bimsstein, Lava;093
+Fliesen aus gebranntem Ton;091
+Fliesen aus Granit;093
+Fliesen aus Magnesit;091
+Fliesen aus Naturstein, s.n.g.;093
+Fliesen aus pflanzlichen Stoffen mit mineralischen Bindemitteln;093
+Fliesen aus Steinzeug;091
+Floatglas;091
+Flooring (Fußboden, -belag);051
+Flooring Material;051
+Flotationsabbrände;031
+Flotationsspat;035
+Flower Pots;091
+Flugasche;142
+Flugstaub;142
+Fluorit;035
+Flußsäure;081
+Flußspat;035
+Foaming materials (Schaumstoffe);084
+Foil (Folie, sonstige);102
+Folien;102
+Folien aus NE-Metallen und NE-Metallegierungen;102
+Food additives (Lebensmittelzusätze);048
+Foodstuff;048
+Footwear (Schuhe);052
+Footwear, shoes (Schuhe, Schuhwaren);052
+Fork lift;118
+Formen aus Holz;061
+Formsand;035
+Formstahl;101
+Formstücke aus Glasseide, -watte, -wolle;093
+Formstücke aus Gußeisen, aus Stahl, bearbeitet;105
+Formstücke aus Gußeisen, aus Stahl, roh;105
+Formstücke, auch feuerfest, aus Porzellan, Ton, Steingut, Steinzeug;091
+Formstücke, thermisch, aus Asbest;093
+Forniture, Furniture (Möbel);131
+Foto equipment;117
+Fotoalben;062
+Fotokopiergeräte;113
+Frachtgut in Direktfracht, Fracht in offener Ladung, Schüttgut;192
+Friese aus Holz;061
+Frischhaltedosen;086
+Friteuse;112
+Früchte, frisch;014
+Früchte, gedörrt, getrocknet, s.n.g.;043
+Früchte, in natürlichem Zustand, in Salzwasser, geschwefelt, mit Zusätzen;043
+Früchte, kandiert;043
+Früchtezubereitungen;043
+Fruchtgelee;043
+Fruchtkonserven;043
+Fruchtkörbe-Regal;131
+Fruchtmus;043
+Fruchtpülpe;043
+Fruchtsäfte;043
+Fruchtwein;047
+Fruit basket rack (Fruchtkörbe-Regal);131
+Fruit Juice;043
+Fruktose;046
+Furniere;061
+Furniture (Möbel);131
+Fußböden;061
+Fußboden, Fußbodenbelag;051
+Fußbodenbeläge, s.n.g.;086
+Fußmatten;086
+Futter, pflanzlich, auch pelletiert, s.n.g.;046
+Futter, tierisch, auch pelletiert, s.n.g.;046
+Futterfrüchte, auch pelletiert, s.n.g.;046
+Futtermehl, auch pelletiert, s.n.g.;046
+Futtermelasse, auch pelletiert;046
+Futtermittel, mineralisch, s.n.g.;046
+Futtermittel, -zusätze, auch pelletiert, s.n.g.;046
+Futterwurzeln, auch pelletiert, s.n.g.;046
+Futterzuckermischfutter;046
+Gabelstapler;118
+Galmei;032
+Garagentore;105
+Garment (= Kleidung);052
+Garn;051
+Garne aus pflanzlichen Spinnstoffen, aus Tierhaaren, aus Wolle;051
+Garnelen, auch pelletiert;042
+Garten- und Campingzubehör;086
+Garten-Einzelteile;131
+Gartenerde;035
+Gartengeräte;131
+Gartenmöbel;131
+Gasdruckfedern;121
+Gase, gelöst, verdichtet, verflüssigt, s.n.g.;073
+Gaskohle, Gasflammkohle;021
+Gaskoks, -briketts, -staub;071
+Gasöl;072
+Gasreinigungsmasse;071
+Gauze balls;085
+Gauze Swabs;085
+Gaze (Stoffe);091
+Gebr. Autoteile;121
+Gebrauchsgegenstände;192
+Gebrauchte Autoteile;121
+Gebrauchte Autoteile Auftrag: Meco, HH / ATI, BRHV 0171/3221326;121
+Gefahrgut als Sammelgut;020
+Gefäße aus Asbestzement;093
+Gefäße aus Stahl zur Beförderung verdichteter oder verflüssigter Gase;101
+Gefäße aus Stahlblech, neu, s.n.g.;101
+Geldbeutel, Rucksäcke;132
+Geldbörsen (Lederwaren) ;053
+Gelee;043
+Gemüse, frisch oder gefroren;014
+Gemüse, gedörrt, getrocknet, s.n.g.;043
+Gemüseerzeugnisse, s.n.g.;043
+Gemüsekonserven;043
+Gemüsemais;011
+Gemüsemark;043
+Gemüsesäfte;043
+Gemüsezubereitungen, frisch oder gefroren;014
+Gemüsezubereitungen, s.n.g.;043
+Generatoren;114
+Gepanzerte Laufbuchse;118
+Geräte für Bau- und Erdarbeiten;118
+Gerbstoffe, Gerbstoffauszüge, -extrakte;085
+Gerste;011
+Gerüste aus Metall;105
+Geschenkartikel;132
+Geschenkartikel (Gift Articles);132
+Geschenk-Sets;132
+Geschirr;091
+Geschirr aus Glas;091
+Geschosse aus Stahl, alt und entschärft, zur Verhüttung;142
+Gesundheitssandalen;052
+Getränke, alkoholfrei, s.n.g.;047
+Getränke, alkoholische, s.n.g.;047
+Getreide, s.n.g.;011
+Getreideabfälle;046
+Getreideerzeugnisse, s.n.g.;046
+Getreideflocken;046
+Getreidefuttermehl, auch pelletiert;046
+Getreidegemisch (Triticale);011
+Getreidegrieß;046
+Getreidekeimlinge;046
+Getreidekörner, geschält, geschrotet (z.B. Graupen), s.n.g.;046
+Getreidemehl, Getreidemehlmischungen;046
+Getreidemischungen;011
+Gewebe, s.n.g.;051
+Gewehre;105
+Gewürze;017
+Gichtstaub;142
+Gießereiformen aus Gußeisen;118
+Gießereiformmasse;091
+Gießereikoks (Carbonkoks);071
+Gießereisand;035
+Gift Articles (= Geschenkartikel);132
+Gilsonit;035
+Gips aus Rauchgasentschwefelungsanlagen;092
+Gips, gebrannt;092
+Gips, roh, zum Düngen;092
+Gipsbauplatten, -bausteine, -bauteile;093
+Gipsschlamm;142
+Gipssteine, natürlich (Rohgips, Anhydrit);035
+Gipssteine, natürlich (Rohgips, Anhydrit), zerkleinert, gemahlen;035
+Gipssteine, synthetisch (Calciumsulfat);081
+Gipssteingrus;035
+Gipswaren, s.n.g.;093
+Gittergeflecht, Gitterwerk aus Stahl;105
+Gitterziegel aus gebranntem Ton;091
+Glas;091
+Glas und Pozellan;091
+Glas, gemahlen, Glaspulver;091
+Glasabfälle, -bruch, -scherben;091
+Glasballons, -flaschen;091
+Glasbausteine;091
+Glasblöcke;091
+Glasbruch;091
+Glasdachziegel;091
+Glasflaschen (= gebraucht, Leergut);161
+Glasflaschen (neu);091
+Glasfliesen;091
+Glasgeschirr;091
+Glaspapier, Sandpapier, Schmirgelpapier;091
+Glasröhren;091
+Glass blocks;091
+Glass Plate;091
+Glass Vases;091
+Glassand;035
+Glasstäbe;091
+Glassware;091
+Glasteller;091
+Glastiere, Taschen, Babykleidung (Schwerpunkt: Taschen, Babykleidung);051
+Glasvasen;091
+Glasvlies-Dachbahnen;093
+Glaswaren, s.n.g.;091
+Glaswatte, -wolle;091
+Glaubersalz (Natriumsulfat);081
+Glimmer, gemahlen, Glimmerabfälle;142
+Glühbirnen (= Glühlampen), Weihnachtsbaum (Schwerpunkt: Weihnachtsbaum);114
+Glühphosphat, zum Düngen;083
+Glukose;046
+Glutenfeed, auch pelletiert;046
+Glykole, s.n.g.;085
+Glyzerin, -laugen, -wasser;081
+Goods for agricultural use (landwirtschaftliche Gebrauchsgegenstände);111
+Granit;035
+Granit stones (Granitsteine);035
+Granite (Granit);035
+Granite products, granit stone ware (Granitprodukte);093
+Granitprodukte;093
+Granitsteine;035
+Granit-Steine;093
+Granulat;142
+Granulat (Kunststoff);084
+Granulat (Kunststoffgranulat);084
+Granulat (mineralisch);142
+Granulate;084
+Grapefruit;014
+Graphit, -waren;085
+Graupappe;062
+Graupen;046
+Grenzsteine;093
+Grieß;046
+Grill;112
+Grill, Besteckkasten;105
+Grinding (zermahlenes Granulat);142
+Grip zip;086
+Grobbleche;101
+Grubenausbaustahl;101
+Grubenholz;061
+Grubensand;035
+Grubensteine;035
+Grünmehl, auch pelletiert;017
+Grütze;046
+Guano;083
+Guar gum;017
+Guelbs Konzentrat;031
+Gummi (= Kautschukwaren);086
+Gummiarabicum;017
+Gummigranulat;086
+Gummihandschuhe;086
+Gummireifen, alt, abgängig;086
+Gummireifen, neu;086
+Gummiwaren, s.n.g.;086
+Gürteltasche, Spardose, Unterwäsche, div. Kleidung;052
+Gußeisenbruch, -stücke, zur Verhüttung;142
+Gußeisenwaren;105
+Gußglas, auch geschliffen, poliert;091
+Gußhilfsstoffe;091
+Gußstücke aus Eisen, aus Stahl;105
+Güter, s.n.g.;192
+Guttapercha, bearbeitet;086
+Guttapercha, roh;017
+Haarbürsten;132
+Haarschmuck;132
+Haarschneider;112
+Haartrockner;112
+Hackschnitzel;061
+Hafer;011
+Haferflocken;046
+Hagebutten (frisch);043
+Hagebutten (Schalen und getrocknet);017
+Halbzeug aus Stahl, s.n.g.;101
+Halogenstrahler;114
+Hämatitkonzentrate;031
+Hämatitroheisen in Masseln, in Formstücken;101
+Hammerschlag;142
+Handelsdünger, s.n.g.;083
+Handmixer;112
+Handschuhe;052
+Handtasche;051
+Handtaschen;051
+Handtücher;051
+Handwerkszeug aus Stahl, s.n.g.;105
+Hanf;017
+Hängematten;051
+Harmless chemicals (Chemikalien, harmlos);081
+Harmlose Chemie (= harmlose Chemikalien);081
+Harmlose Chemikalien;081
+Harmlose Medikamente;085
+Harnstoff (Urea), zum Düngen;083
+Harnstoff, künstlich (Karbamid);083
+Härtegemische für Kunststoffe;085
+Härtemittel für Eisen, für Stahl;081
+Hartfaserplatten;061
+Hartzink;102
+Harze, s.n.g.;015
+Harzlösung;085
+Hausbrandkoks;071
+Haushaltsartikel (= Haushaltsgeräte);112
+Haushaltsartikel (Gas, Porzellan);091
+Haushaltsgeräte;112
+Haushaltsgeräte aus Gußeisen, aus Stahlblech;105
+Haushaltsgeräte aus Holz;061
+Haushaltsgeräte, elektrisch;112
+Haushaltswäsche;051
+Haushaltwaren (= Haushaltsgeräte);112
+Hausmüll;141
+Häute, bearbeitet;053
+Häute, roh;01A
+HDPE;084
+Health electric scale;112
+Health Sandals (Gesundheitssandalen);052
+Hebewerkzeuge aller Art;118
+Hefe;048
+Heizkessel;105
+Heizöl;072
+Heizöl, leicht, extra leicht;072
+Heizöl, mittel, mittelschwer, schwer;072
+Heizpetroleum;072
+Herbs;043
+Herde aus Gußeisen, aus Stahl;105
+Herde, Heizgeräte, elektrisch;112
+Herrenjacken;052
+Herrenpullover;052
+Herrenschuhe;052
+Herrenwesten;052
+Heu (in Ballen);017
+Heu, -häcksel;017
+Hexachloräthan;081
+Hexamethylendiamin;081
+High loft wipers;132
+Hinge pices;105
+Hirse;011
+Hitzebeständige Ziegelsteine, feuerfeste Steine;091
+Hochofenasche;142
+Hochofenkoks;071
+Hochofenschaumschlacke;142
+Hochofenschlacke;142
+Hochofenstaub;142
+Hohlborerstahl;101
+Hohlziegel aus gebrannetem Ton;091
+Hollywoodschaukel;131
+Holz;015
+Holz zur Destillation;015
+Holz, einfach vorbearbeitet;061
+Holzabfälle, -abschwarten, s.n.g.;061
+Holzasche;142
+Holzbalken;061
+Holzbaracken;061
+Holzbohlen;061
+Holzbretter;061
+Hölzer für Dielen, für Parkett;061
+Hölzer, vergütet;061
+Holzessig;082
+Holzfaserplatten;062
+Holzgeist (Methanol);085
+Holzhackschnitzel;142
+Holzhäuser;061
+Holzhütten;061
+Holzklötze;061
+Holzkohle;061
+Holzkohlenbriketts;061
+Holzkonstruktionen;061
+Holzmehl;061
+Holzmöbel;131
+Holzöl;071
+Holzpfähle;061
+Holzpflasterklötze;061
+Holzpflöcke;061
+Holzpfosten;061
+Holzplasterplatten;061
+Holzsägemehl;061
+Holzschnitzel;061
+Holzschuppen;061
+Holzschwarten;061
+Holzspan, besonders hergestellt (z.B. für Körbe, Schachteln);061
+Holzspanplatten;061
+Holzsparren;061
+Holzstämme, roh;015
+Holzstangen;061
+Holzstaub;061
+Holzstoff (Holzschliff);062
+Holzteer;082
+Holzteerpech;082
+Holztribünen;061
+Holzwaren, s.n.g.;061
+Holzwolle;061
+Holzzellulose;062
+Honig;048
+Hopfen;017
+Hornabfälle;083
+HO-Schlacke;142
+Hotel Minibars;112
+Household articles;091
+Household goods and electronics;112
+Hubes (Radnaben);122
+Hülsenfrüchte, getrocknet, auch geschält, geschrotet;014
+Humus;035
+Hundefutter;046
+Hustensaft;085
+Hüttenbims;142
+Hüttenblei;102
+Hüttensand;142
+Hüttenschutt;142
+Hydraline Hydrate;081
+Hydraulic accessoire (Hydraulic Artikel) ;118
+Hydraulikzylinder;118
+Hydropack 0/40;142
+Hygenic articles;062
+IBC Tanks;161
+IBC-Behälter - Intermediate-Bulk-Cont. (Transportbehälter f. gefährl. Stoffe), leer;161
+Ikea home furnishing products;131
+Ikea Möbel;131
+Ikea-Ware;132
+Illipenüsse;017
+Ilmenit (Titaneisenerz);032
+Importkohle;021
+Importkoks;071
+Imprägnieröl;082
+Industrial stones (Industriesteine);091
+Industriesand, s.n.g.;035
+Industriesteine;091
+Infusorienerde;035
+Injektionsnadeln;117
+Inorganic chemicals;081
+Inorganic chemicals (anorganische Chemikalien);081
+Installationsmaterial;086
+Instrumente cables;105
+Instrumente zu chemischen, medizinischen, optischen, physikalischen Zwecken;117
+Iron oxyd (black);081
+Iron oxyd black (Eisenoxyd schwarz);081
+Iron+steel (Eisen und Stahl);101
+Isobutan;073
+Isobutylen;081
+Isolating (Isoliermittel);091
+Isolatoren;114
+Isolierflaschen;132
+Isolierglas;091
+Isoliermittel;091
+Isoliermittel, mineralisch, pflanzlich;093
+Isophoron;081
+Isopropylalkohol;081
+Jacken;052
+Jeansstanzabschnitte;114
+Joghurt;045
+Johannisbrot;014
+Juice;043
+Jute;017
+Jutesäcke;051
+Kabel;114
+Kabel u. Zubehör;114
+Kabelabfälle, -rückstände mit Kupferleiter;142
+Kabeldecksteine aus Beton, Eisenbeton;093
+Kabeldecksteine aus gebranntem Ton;091
+Kabeldecksteine aus Steinzeug;091
+Kabelsysteme;114
+Kabeltrommeln, gebraucht;162
+Kabelwachs;085
+Kacheln;091
+Kaffee, roh, geröstet, gemahlen, gefroren;017
+Kaffeeautomat;112
+Kaffeeersatzmittel;048
+Kaffeemaschine;112
+Kainit, nicht zum Düngen;035
+Kainit, zum Düngen;033
+Kakao, Kakaoerzeugnisse;017
+Kakaoabfälle, -schalen;046
+Kalender;063
+Kali, schwefelsaures, zum Düngen;083
+Kalibleichlauge;081
+Kalidünger, s.n.g.;083
+Kalilauge (Kaliumhydroxid);081
+Kalirohsalze, nicht zum Düngen;035
+Kalirohsalze, zum Düngen;033
+Kalisalpeter, zum Düngen;083
+Kaliumbicarbonat, -carbonat;081
+Kaliumchlorat;081
+Kaliumchlorid (Chlorkalium), nicht zum Düngen;081
+Kaliumchlorid (Chlorkalium), zum Düngen;083
+Kaliumhydroxid, fest oder in Lösung;081
+Kaliumhypochloritlauge (Kalibleichlauge);081
+Kaliumkarbonat (Pottasche), Backtrieb-, Auftaumittel;081
+Kaliummagnesiumsulfat (schwefelsaure Kalimagnesia), zum Düngen;083
+Kaliumnitrat;081
+Kaliumnitrat, zum Düngen;083
+Kaliumsilikat (Wasserglas);081
+Kaliumsulfat (schwefelsaures Kali), zum Düngen;083
+Kaliumsulfatlauge;081
+Kalk in Brocken, auch gebrannt;092
+Kalk zum Düngen;035
+Kalkammonsalpeter, zum Düngen;083
+Kalkhydrat (Löschkalk);092
+Kalkmischungen zu Futterzwecken;046
+Kalkrückstände;035
+Kalksalpeter (Calciumnitrat), nicht zum Düngen;081
+Kalksalpeter, zum Düngen;083
+Kalksandsteine;093
+Kalkspat;035
+Kalkspat, zerkleinert, gemahlen;035
+Kalksteine;035
+Kalksteine, zerkleinert, gemahlen;035
+Kalkstickstoff;081
+Kalkstickstoff, zum Düngen;083
+Kaltgewalzter Stahl;101
+Kaltteer, Kaltasphalt;074
+Kameras;117
+Kamin-Ziegelsteine;091
+Kanaldielen;101
+Kandiszucker;048
+Kanister aus Stahlblech;105
+Kantholz;061
+Kaolin;035
+Kapokpellets;044
+Kappen;132
+Karbamid (Harnstoff, künstlich);081
+Karbolineum;082
+Karnallit, nicht zum Düngen;035
+Karnallit, zum Düngen;033
+Kartoffelerzeugnisse, s.n.g.;043
+Kartoffelflocken;043
+Kartoffelmehl;043
+Kartoffeln;012
+Kartoffelpülpe, auch pelletiert;046
+Kartoffelschnitzel, auch pelletiert;044
+Kartoffelstärkemehl;046
+Karton mit unbekanntem Inhalt;191
+Kartonagen;062
+Kartons (mit Inhalt);192
+Kartons (ohne Inhalt);062
+Kartons (ohne Inhalt) auf Paletten ;062
+Kasawawurzeln;046
+Käsezubereitungen;045
+Katzenstreu, Catsan, Biocat u.a.;085
+Kaufhausware;132
+Kautschuk, natürlich;015
+Kautschuk, synthetisch;084
+Kautschukabfälle;142
+Kautschukmilch;015
+Kautschukregenerat;084
+Kautschukwaren;086
+Kautschukwaren, alt, abgängig;086
+Kefir;045
+Kegs;091
+Kepital polyacetal resin;084
+Keramik-Artikel;091
+Keramische Waren;091
+Kernit;035
+Kernobst;014
+Kerosin;072
+Kerzen;132
+Kerzenhalter, Weihnachtsartikel;132
+Kessel aus Gußeisen, aus Stahl;105
+Kesselteile;105
+Ketten (Metall);105
+Ketten aus Gußeisen, aus Stahl;105
+Key-pouch (Schlüsseletius);132
+KFZ-Ersatzteile;121
+KFZ-Teile;121
+Kies, alkaliarm;035
+Kies, auch gebrochen;035
+Kieselerde, -gur;035
+Kieselerde, Sipernat (Produktname), Kunststoff-Zusatzmittel;084
+Kieselsäure, synthetisch, Ultrasil (Verstärkerfüllstoff in der Gummiindustrie);081
+Kieserit, nicht zum Düngen;035
+Kieserit, zum Düngen;033
+Kissen (= Schaumstoffkissen) + Schlüsselanhänger (Schwerpunkt: Schlüsselanhänger);051
+Kisten aus Metall;105
+Kisten mit Frachtgut;061
+Kitchen Scales (Küchenwaagen);112
+Kitchenware;086
+Kitte;085
+Klammern aus Metall, Schraubzwingen (=Clamps);105
+Klärschlamm;142
+Kleber (Gluten), s.n.g.;046
+Kleber zu Futterzwecken, auch pelletiert;046
+Klebsand;035
+Klebstoffe ;085
+Kleemehl, auch pelletiert;017
+Kleidung;052
+Kleidung (Garment);052
+Kleie, auch pelletiert;046
+Kleinkoks Import;071
+Kleintiermischfutter;046
+Klimaanlagen;118
+Klinker aus gebranntem Ton;091
+Knäckebrot;048
+Knickband;101
+Knoblauch (frisch);014
+Knoblauchpulver und zerkleinerter Knoblauch;043
+Knochenmehl;01A
+Knüppel;101
+Knüppel aus Stahl;101
+Kobalterz;032
+Koffer;086
+Kohlenasche;142
+Kohlensäure, verdichtet, verflüssigt;081
+Kohlenschlacken;142
+Kohlenstoffstampfmasse;082
+Kohlenwasserstoffe, gasförmige, s.n.g.;073
+Kohlenwasserstoffe, s.n.g.;081
+Kohlenwasserstoffgemische, s.n.g.;073
+Kokillen;091
+Kokosfasern;017
+Kokosschrot, -pellets;044
+Koks;071
+Koksasche;142
+Koksbriketts;071
+Kokskohle;021
+Koksschlacken;142
+Kolli;117
+Komponenten (Systemteile für TV, Video, Computer);114
+Komponenten (Systemteile, Maschinenteile);118
+Komponenten (zusammenzusetzende Teile);118
+Kompost, -erde;083
+Kompressoren;118
+Kondensatoren;114
+Konfitüren;043
+Konstruktionen, Konstruktionsteile aus Beton, Eisenbeton;093
+Konstruktionen, Konstruktionsteile aus Metall;105
+Konverter Stopfen;091
+Konverterkalk, zum Düngen;083
+Konverterkupfer;102
+Konverterschlacke;142
+Konvertkalk;142
+Kopal;015
+Kopiergeräte;113
+Kopra;017
+Koprolith, zum Düngen;033
+Korbwaren, s.n.g.;062
+Korea-Sintermagnesit;035
+Koriander;017
+Korinthen;043
+Kork, roh;142
+Korkabfälle;142
+Korkausschußrinde;142
+Korkwaren;061
+Kornkali, zum Düngen;083
+Korund zur Herstellung von Schleimittel, gekörnt, gemahlen;035
+Kosmetik;085
+Kosmetik Artikel Laden für Montreal, QC Final Destinatio CARY, IL;085
+Kosmetikartikel;085
+Kosmetiktaschen;132
+Kosmetiktuch;062
+Kosmetische Artikel;085
+Kosmetische Erzeugnisse;085
+Kraftfahrzeuge, Anhänger, einschl. Zubehör, Einzel- und Ersatzteile;121
+Kraftliner;062
+Kräne, Kranteile;118
+Kranteile;118
+Kraton;015
+Kräuter;043
+Kreide;035
+Kreosol;082
+Kreosot;082
+Kreosotöl;082
+Kristallspat;035
+Kryolith;035
+Kübel aus Stahlblech;105
+Küchenartikel;105
+Küchenwaren (=EBM-Waren);105
+Kugellager;105
+Kühlgeräte;118
+Kühlschränke;112
+Kümmel;017
+Kunstblumen, Kunststoffblumen;132
+Kunstharze in Dispersion, in Lösung, in Pasten;084
+Kunstharzleim;085
+Kunsthonig;048
+Künstliche Blumen;132
+Kunststeine, z.B. Bordsteine, Fliesen, Platten, Werkstücke, Ziegel;093
+Kunststoff;084
+Kunststoffabfälle;084
+Kunststoffartikel;086
+Kunststoff-Artikel, aus Polyresin (Kunstharz, flüssig);086
+Kunststoffautomaten;084
+Kunststoffbaustoffe, auch geschäumt, s.n.g.;093
+Kunststoff-Bögen, -blätter, Plastik-Bögen, -blätter ;084
+Kunststoffchemikalien;084
+Kunststoffe;084
+Kunststoff-Film;084
+Kunststoff-Folie;084
+Kunststoff-Folie, aus Polyvinylchlorid (PVC);084
+Kunststoffgüter;086
+Kunststofflager- oder -transportbehälter für Flüssigkeiten, Flexitank;105
+Kunststoffmaterial;084
+Kunststoff-Produkte, aus Polyvinylchlorid (PVC);086
+Kunststoffrohstoffe, in Dispersion, in Lösung, in Pasten, s.n.g.;084
+Kunststofftaschen;086
+Kunststoffteile, Plastikteile;084
+Kunststoffwaren;086
+Kunststoffwaren, s.n.g.;086
+Kupferabfälle, -aschen, -rückstände, -schlacken, -schrott;142
+Kupfererze, -konzentrate;142
+Kupferkabe-Schrott (= Kupferkabel-Schrott);142
+Kupferlackdraht;102
+Kupferlegierungen;102
+Kupferschrott;142
+Kupferwaren;105
+Kuppferschrott, lose Kippen / T 1 beim Kunden abgeben;142
+Kürbis (frisch);014
+Kürbis (konserviert);043
+Kürbissamen;016
+Kyanit;035
+L 5037 L;084
+Laborgeräte;117
+Laborwagen;117
+Lacke, zubereitet;085
+Lager Equipment;131
+Lakritze;048
+Laktose;045
+Laminat;061
+Lamp black 101, Farbstoff;085
+Lampen;114
+Landfahrzeuge, Anhänger, einschl. Zubehör, Einzel- und Ersatzteile;121
+Landwirtschaftliche Gebrauchsgegenstände;111
+Latex;086
+Latex-Handschuhe;086
+Latten aus Holz;061
+Laufringe;118
+Laugen, s.n.g.;081
+Lautsprecher;116
+Lava;035
+Lava rocks;035
+Lavakies, -splitt;035
+Lavaschlacken;035
+LD-Schlacken;142
+Leaf chains;105
+Leather goods;053
+Leather sofa sets (Ledersofa-Garnituren);131
+Lebende Tiere (ausgenommen Fische);018
+Lebensmittel;048
+Lebensmittelzusätze;048
+Lebkuchen;048
+Lecitin;082
+Leder, s.n.g.;053
+Lederabfälle;142
+Ledermehl;01A
+Ledersofa-Garnituren;131
+Lederspäne;01A
+Lederstücke;01A
+Lederwaren;053
+Lederwaren (Brieftaschen, Portemonnaies, Schlüsseletius) ;053
+Leere Sammel- und Transportbehälter für gefährliche Stoffe (IBC-Behälter);161
+Leerfahrzeuge, gebraucht;161
+Leergut, gebraucht;161
+Leerpaletten;061
+Lehm, auch gebrannt, roh und unverpackt;035
+Lehm, auch gebrannt, roh und verpackt;035
+Lehrmittel;132
+Leichtbauplatten;093
+Leichtlaufräder;121
+Leichtmetall-Legierung;102
+Leime;085
+Leimleder;01A
+Leinöl;044
+Leinsamen (Leinsaat), auch gemahlen;017
+Leitungskabel, -draht;114
+Lepidolitherz;032
+Leuchtdeko;114
+Leuchten;114
+Leuchtmittel;114
+Leuchtpetroleum;072
+"Leuchtskulpturen ""Elch""";114
+Lichterketten;114
+Limonade;047
+Liner armour;118
+Linsen, getrocknet;014
+Linters;051
+Liofol, Folie, Schildchen;086
+Lipren T;081
+Liquerice;048
+Lithopone;085
+Lkw-Räder;121
+Lokomotiven;118
+Löschkalk (Kalkhydrat);092
+Lösungsmittel, s.n.g.;085
+Lötzinn;105
+Lubricating oil (Schmieröl);081
+Luftbefeuchter;118
+Luftfahrzeuge, einschl. Zubehör, Einzel- und Ersatzteile;122
+Luftfilter;118
+Lumpen;142
+Lupen;117
+Lupinen;016
+Lupolen (Handelsname für die Werkstoffgruppe Polyethylen);084
+Luzernemehl, auch pelletiert;017
+LVL Boards, PC-Tastatur;114
+Machinery (Maschinen);118
+Machinery + parts (Maschinen und -teile);118
+Machinery for wheel production (Maschinen zur Räderproduktion);118
+Machinery parts (Maschinenteile);118
+Magerkohle;021
+Magermilch;045
+Magerungskohle;021
+Magnesia;035
+Magnesit, auch gebrannt, gesintert;035
+Magnesiumcarbonat;081
+Magnesiumkainit, nicht zum Düngen;035
+Magnesiumkainit, zum Düngen;033
+Magnesiumlegierungen;102
+Magnesiumsilikat, natürlich (Dolomit);035
+Magnesiumsilikat, natürlich (Dolomit), zerkleinert, gemahlen;035
+Magnesiumsulfat (Bittersalz), nicht zum Düngen;081
+Magnesiumsulfat, zum Düngen;033
+Magnetic Data Tape;086
+Magnetit (Magneteisenerz, -eisenstein);031
+Mähdrescher;111
+Mahlkörper;091
+Mahlschwefel;081
+Mais;011
+Maisarin;046
+Maisglutenmehl;046
+Maisglutenpellets;046
+Maiskeimpellets;044
+Maiskeimschrot;044
+Make up;085
+Maltose;046
+Malz;047
+Malzabfälle;045
+Malzbier;047
+Malzextrakt;047
+Mandeln;014
+Mangancarbonat, natürlich;032
+Mangandioxid, natürlich;032
+Manganerze, -konzentrate;032
+Manganschlacke, nicht zur Verhüttung;142
+Manganschlacke, zur Verhüttung;142
+Mangansulfat;081
+Mango Chutney (Gewürz);017
+Manicure Set (= Maniküretuis, gefüllt), Kleidung (Schwerpunkt: Kleidung) ;052
+Maniokamehl;043
+Maniokamehlpellets;046
+Maniokawurzeln, -mehl;046
+Mäntel, eiserne (für Generatoren, Kondensatoren, Glühöfen);118
+Margarine;044
+Marine-Stromerzeuger;114
+Marine-Stromerzeuger inkl. Zubehör;114
+Marmeladen;043
+Marmor, zerkleinert, pulverisiert, Marmorabfälle;035
+Marmorblöcke, -platten;035
+Martinschlacke;142
+Maschendraht;105
+Maschinen;118
+Maschinen und -teile;118
+Maschinen zur Räderproduktion;118
+Maschinenersatzteile;118
+Maschinengeräte der Land-, Forstwirtschaft, des Gartenbaus;111
+Maschinenteile;118
+Maschinenteile aus Stahl;118
+Maschinenteile für Bau- und Erdarbeiten;118
+Maschinenteile, elektrisch;114
+Masten aus Beton, Eisenbeton;093
+Masten aus Holz;015
+Masten aus Metall;105
+Mastercraftbanden;086
+Matratzen;131
+Matten;051
+Matten aus Asbest, Glasseide, -watte, -wolle;093
+Mauersteine;093
+Mauersteine aus Beton;093
+Mauersteine aus Bims;093
+Mauerziegel aus gebranntem Ton;091
+Mayonaise;048
+Mechanical parts (MechanischeTeile);105
+Mechanical suspensions (Stoßdämpfer);121
+Mechanische Teile;105
+Medical Goods;085
+Medical supplies;114
+Medikamente;085
+Medizinische Artikel;085
+Medizinschränkchen, Arzneimittelschränkchen;131
+Meersalz;034
+Mehl aus Hülsenfrüchten;043
+Mehl von ölhaltigen Früchten;044
+Mehlmischungen zu Speisezwecken;046
+Mehrnährstoffdünger, mineralisch;083
+Mehrschichtglas;091
+Melamin;081
+Melasse;048
+Melkfett;085
+Mengkorn;011
+Mennige, zubereitet;085
+Mergel, zum Düngen, zur Bodenverbesserung;083
+Merlot (Wein);047
+Messer;105
+Meßgeräte;114
+Messing;102
+Messingabfälle, -aschen, -rückstände, -schlacken, -schrott;142
+Messingprofildraht (Messing = Kupfer-Zink-Legierung) ;102
+Messingschrott;142
+Messingwaren;105
+Metal cabinets;105
+Metal crates;105
+Metal sheets;102
+Metall Kisten;105
+Metall- und Plastikteile;084
+Metallbaracken;105
+Metall-Klammern, Schraubzwingen (=Clamps);105
+Metallprofile;101
+Metallschrott (Eisenschrott);142
+Metallschuppen;105
+Metalltribünen;105
+Metallwaren (Metallteile);105
+Methan, verdichtet, verflüssigt;073
+Methanol (Holzgeist);081
+Methylacetat, -äther;081
+Methylalkohol;081
+Methylchlorid (Chlormethyl), -glykol;085
+Methylenchlorid;081
+Mikrofaser-Tücher;051
+Mikroskope;117
+Mikrowelle;112
+Milch , ungedickt, kondensiert, pulverisiert, in Tabletten;045
+Milch, frisch, homogenisiert, pasteurisiert, sterilisiert;045
+Milcherzeugnisse, s.n.g.;045
+Milchgetränke;045
+Milchprodukte;045
+Milocorn;011
+Mineralische Halb- und Fertigwaren, s.n.g.;093
+Mineralleichtöl;072
+Mineralöl, roh;022
+Mineralölerzeugnisse, s.n.g.;074
+Mineralschmieröle;072
+Mineralteer;082
+Mineralteerpech;082
+Mineralteerschmieröl;082
+Mineralwasser;047
+Mineralwolle;093
+Minibars;114
+Misc finished goods;192
+Misc finished goods (verschiedene Fertigprodukte);192
+Miscellaneous chemical;081
+Miscellaneous finished products (verschiedene Fertigprodukte);192
+Mischdünger, s.n.g.;083
+Mischfutter (auch Kleintierfutter);046
+Mischkohle;021
+Mischpapier, Super mixed Paper;062
+Mischpolimerisat aus Acrylnitrat, aus Butadien, aus Styrol;084
+Mist;083
+Mittelbleche, -band;101
+Möbel;131
+Möbel aus Holz;131
+Möbel, aus Kunststoff;131
+Möbel, -teile;131
+Mohn;017
+Molererde;035
+Molke;045
+Monazit, -sand;032
+Monierstahl (Moniereisen);101
+Monochlorbenzol;081
+Monochloride, Chloressigsäure, fest;081
+Monopropylene, Metocene;084
+Montanal (Kalirohsalz), nicht zum Düngen;035
+Moorerde;035
+Moplen;084
+Mörtel, -mischungen, feuerfest;091
+Mosaiksteine;093
+Most;047
+Most aus Weintrauben;047
+Motor parts (Motorenteile);118
+Motor vehicle parts (Autoteile);121
+Motor, Aggregat, Antriebsmaschine;118
+Motorenöl;072
+Motorenteile;118
+MPC–2 (Pechkoks);021
+Muffelrückstände (Räumasche aus Zinköfen);142
+Müll;142
+Müllasche;142
+Müllschlacken;142
+Müllschrott (Eisenschrott aus Müllverwertungsanlagen), zur Verhüttung;142
+Mülltonnen;086
+Munition;105
+Muschelschalen, auch pelletiert;046
+Musikinstrumente;132
+Muttern aus Gußeisen, aus Stahl;105
+Nägel;105
+Nägel aus Gußeisen, aus Stahl;105
+Nähmaschinen;112
+Nahrungsmittelzubereitungen, s.n.g.;048
+Naphta;072
+Naphtalin, roh und raffiniert;082
+Nappies (Windeln);062
+Natrium-, Sodiummethylat, Lösung (Alkalimetallalkoholat);081
+Natriumacetat (essigsaures Natrium);081
+Natriumalginat ;085
+Natriumbicarbonat (doppelkohlensaures Natrium);081
+Natriumbisulfat (doppelschwefelsaures Natrium);081
+Natriumcarbonat (kohlensaures Natrium);081
+Natriumchlorat;081
+Natriumchlorid (Chlornatrium);034
+Natriumfluorid;081
+Natriumformiat;081
+Natriumhydroxid;081
+Natriumhydroxid fest (Ätznatron) und in Lösung (Ätznatronlauge);081
+Natriumhypochlorit in Lösung;081
+Natriumjodid, harmlos;081
+Natriumnitrat (Natronsalpeter), natürlich, zum Düngen;083
+Natriumnitrat (Natronsalpeter), s.n.g.;081
+Natriumnitrit (salpetersaures Natrium);081
+Natriumnitritlauge;081
+Natriumphosphat;081
+Natriumsilikat (Wasserglas);081
+Natriumsulfat (Glaubersalz);035
+Natriumsulfit (schwefelsaures Natrium);081
+Natron;035
+Natronbleichlauge;081
+Natronlauge;081
+Natronsalpeter (Natriumnitrat), s.n.g.;081
+Natronsalpeter, chemisch, zum Düngen;083
+Natronsalpeter, natürlich, zum Düngen;083
+Naturgase, sonstige;073
+Naturkautschuk;015
+Naturleder;053
+Natursteine (Werksteine), bearbeitet, s.n.g.;093
+Natursteine / Platten;093
+NE-Metall, NE-Metallegierungen, s.n.g.;102
+NE-Metallabfälle, -aschen, -rückstände, -schlacken, -schrott;142
+NE-Metallerze, -konzentrate, s.n.g.;032
+NE-Metallhalbzeug, s.n.g.;102
+NE-Metallwaren;105
+Nickelabfälle, -aschen, -rückstände, -schlacken, -schrott;142
+Nickelerz;032
+Nickellegierungen;102
+Nieten aus Gußeisen, aus Stahl;105
+Nitrate;081
+Nitro Guanidine;081
+Nitrobenzol;081
+NK-Dünger;083
+Non woven (fabri);052
+Non woven swabs;085
+Norwegenschlacke;142
+Notizbücher;062
+NP-Dünger;083
+NPK-Dünger;083
+Nüsse;014
+Nußkohle;021
+Nylon (Polyamide);084
+Obst, frisch;014
+Obst, getrocknet, gedörrt;043
+Obsterzeugnisse, s.n.g.;043
+Obstkonserven;043
+Obstpülpe;043
+Obstsäfte;043
+Obstwein;047
+Öfen aus Gußeisen, aus Stahl;105
+Ofenanlage;118
+Ofenkitt;085
+Ohne Bezeichnung, Inhalt unbekannt;191
+Ohne Bezeichnung, unbekannter Inhalt, Sammelgut;191
+Ohne Text;192
+Öle, pflanzlich, genießbar, s.n.g.;044
+Öle, tierisch, genießbar, s.n.g.;944
+Öle, ungenießbar, s.n.g.;044
+Olein, -säure;044
+Oleum;081
+Ölfrüchte, entölt;044
+Ölfrüchtesaaten zur Verwendung als anerkanntes Saatgut;017
+Ölfrüchtesaaten, s.n.g.;017
+Olivenöl;044
+Olivin;035
+Olivin zerkleinert, gemahlen;035
+Ölkuchen (Ölsaatenmehl), auch pelletiert;044
+Ölsäuren, s.n.g.;044
+Orangeaden;043
+Orangen;014
+Oregano;017
+Organic chemicals;082
+Organische Düngemittel;083
+Organische Zinnverbindung (flüssig);082
+Orgeln;132
+Orthoxylol;081
+Other commodoties (Gebrauchsgegenstände);192
+Ottomotoren, -einzelteile;118
+Packages;062
+Packmittel, s.n.g.;162
+Packpapier;062
+Paletas (Palletten);061
+Paletten, gebraucht;162
+Paletten-Lkw, -wagen;118
+Pallet Truck (Palettenwagen);118
+Palletten;061
+Palmitin, -säure;044
+Palmkerne;017
+Palmkernöl;044
+Palmkernpellets;044
+Palmkernschrot;044
+Pampelmusen;014
+Pampers;062
+Panzerplatten;101
+Paper (Papier);062
+Paper Bag (Chemicals);062
+Paper packing (Papiersäcke);062
+Papier;062
+Papier in Rollen, unbearbeitet;062
+Papier, bitumiert;062
+Papier, gefalzt, geprägt, gewellt;062
+Papierabfall;142
+Papierholz;015
+Papiertapeten;062
+Papierwaren, s.n.g.;062
+Pappe aus Asbest;093
+Pappe, bearbeitet, s.n.g.;062
+Pappe, bitumiert, geteert;062
+Pappe, gefalzt, geprägt, gewellt;062
+Pappe, roh und unbearbeitet;062
+Pappeverpackungen, s.n.g.;062
+Pappwaren;062
+Paprika (frisch);014
+Paprika (Gewürz);017
+Paraffin;074
+Paraffingatsch;074
+Paraxylol;082
+Parfümerzeugnisse;085
+Parkett;084
+Parkettbretter;061
+Parts and acessoires;132
+Pavillon;061
+Peche, s.n.g.;082
+Pechemulsionen;071
+Pechkohle;021
+Pechkoks;071
+Pechlösungen;071
+Pe-film (Polyäthylen-Film, -folie);086
+Pelzwaren;052
+Pelzwerk;053
+Perchloräthylen;081
+Perfumery (Parfüm-Erzeugnisse);085
+Pergamentpapier;062
+Perlite;093
+Permanent rubine;093
+Personal effects;192
+Petersilie (frisch);014
+Petersilie (getrocknet);043
+Petroleum;072
+Petroleumkoks (Petrolkoks);074
+Petroleumpech;082
+Petrolkoks;074
+Pfähle aus Beton, Eisenbeton;093
+Pfähle aus Holz;061
+Pfannen;105
+Pfannen a. Aluguss (aus Aluminium-Guss);105
+Pfeffer;017
+Pfeiler;104
+Pflanzen und Blumen;016
+Pflanzenfasern, s.n.g.;017
+Pflanzenöle, -fette;044
+Pflanzenschutzmittel, s.n.g.;085
+Pflanzenteile zum Färben, zum Gerben, s.n.g.;017
+Pflasterplatten, -steine aus gebranntem Ton;091
+Pflasterplatten, -steine aus Naturstein;093
+Pflastersteine;093
+Pflastersteine aus Sandstein;093
+Pfosten aus Beton, Eisenbeton;093
+Pharmaca cabinets (Medizinschränkchen, Arzneimittelschränkchen);131
+Pharmaceuticals (Arzneimittel);085
+Pharmaceuticals (Medikamente, Arzneimittel);085
+Pharmazeutische Erzeugnisse, s.n.g.;085
+Phenol;082
+Phonolit;035
+Phonolitgrus, -splitt;035
+Phosphatdüngemittel, s.n.g.;083
+Phosphatdünger, -glühdünger;083
+Phosphate, roh, natürlich zum Düngen;033
+Phosphate, roh, natürlich, nicht zum Düngen;033
+Phosphatschlacken, zum Düngen;083
+Phosphorit, zum Düngen;033
+Phosphorsäure;081
+Photoalbum;062
+Photocopiers (Fotokopierer);062
+Photoequipment;086
+Phthalsäureanhydrid;081
+Pieces;118
+Pillar aus Beton (Betonpfeiler);093
+Pillar aus Holz (Holzpfeiler);061
+Pillar aus Metall (Metallpfeiler);105
+Pilze (frisch);014
+Pilze (Sonstige);043
+Pinsel;132
+Piston rod;118
+Pitch coke (pitch coal);021
+PK-Dünger;083
+Pkw;121
+Planen;051
+Plasic Closures;086
+Plastic (= Kunststoffe);084
+Plastic articles (Kunststoffgüter, -waren, -artikel);086
+Plastic articles, Plasticware, Plastic goods (Kunststoffgüter, -waren, -artikel);086
+Plastic chemicals (Kunststoffchemikalien);085
+Plastic dispensers (Kunststoffautomaten);084
+Plastic drums (Kunststoff-Fässer);084
+Plastic films (Kunststoff-Folie, -film);084
+Plastic goods (Kunststoffgüter, -waren, -artikel);086
+Plastic parts (Plastikteile);084
+Plastic Scrap (= Plastikmüll, -schrott);142
+Plastic sheets (Kunststoff-Bögen, -blätter, Plastik-Bögen, -blätter) ;084
+Plastic.folder (Plastik-Hefter);086
+Plasticisers (Weichmacher (Chemie));085
+Plastics (Kunststoffe);084
+Plasticware (Kunststoffgüter, -waren, -artikel);086
+Plastikartikel;086
+Plastikfässer, Plastiktrommeln;086
+Plastikfässer, Plastiktrommeln, leer;086
+Plastik-Hefter;086
+Plastikmöbel, Möbel aus Kunststoff;131
+Plastikmüll;086
+Plastikschrott;086
+Plastikteile;086
+Plastiktüten;086
+Plates;086
+Platinen aus Stahl;101
+Platten;062
+Platten aus Asbest, Glasseide, -watte, -wolle;093
+Platten aus Asbestzement;093
+Platten aus Asphalt;093
+Platten aus Basalt;035
+Platten aus Beton, Eisenbeton, Kunststein, Zement;093
+Platten aus Bimsstein, Lava;093
+Platten aus gebranntem Ton;091
+Platten aus NE-Metallen und NE-Metallegierungen;102
+Platten aus pflanzlichen Stoffen mit mineralischen Bindemitteln;093
+Platten aus Schiefer;093
+Platten aus Stein;093
+Platten aus Steinzeug;091
+Pleuelstange;121
+Plstikartikel (= Plastikartikel);086
+Plug wrap;062
+Plüschtiere;132
+Pollardpellets;044
+Polsterwatte, -wolle u. dgl.;051
+Polyacetal resin;086
+Polyamide (Nylon);086
+Polyäthylen (PE), Kunststoff, Plastik ;086
+Polyäthylen-Film, -folie;086
+Polyester Grade;086
+Polyester, gekörnt;086
+Polyethylene (Polyäthylen - PE);086
+Polymer;086
+Polypropylen (PP), Kunststoff, thermoplastisch schweißbar;086
+Polypropylen (PP), Kunststoff, PURELL (Handelsname);086
+Polypropylene (Polypropylen - PP);086
+Polyresin Items (Kunststoff-Artikel aus Polyresin (=flüssiges Kunstharz));086
+Polysyrol (expandierbar);086
+Polyvinylacetat, -chlorid;086
+Porcelain (Porzellan);091
+Portemonnaies (Lederwaren), Brieftaschen, Schluesseletuis ;053
+Porzellan;091
+Porzellanerde, roh und unverpackt;035
+Porzellanerde, roh und verpackt;035
+Porzellanwaren;091
+Postassium carbonate (Kaliumkarbonat =Pottasche, Backtrieb-, Auftaumittel);082
+Postassium carbonate (Pottasche);082
+Potassium carbonate (Kaliumkarbonat =Pottasche, Backtrieb-, Auftaumittel);082
+Pottasche;082
+Pottery;091
+PP;086
+Prellsteine aus Naturstein;093
+Press stud;132
+Preßrückstände aus der Gewinnung von Zuckerrübensaft;046
+Preßstücke aus Stahl, aus Gußeisen;105
+Printer + parts;117
+Printex (= Produktname für Pigmentruss), Farbstoff;085
+Printing ink;085
+Profile ;101
+Profile aus NE-Metallen und NE-Metallegierungen;102
+Profile aus Stahl;101
+Propan, Propan-Butangemische;073
+Propylacetat, -glykol;085
+Propylen;073
+Propylenglykol;082
+Prospect Kit ohne DVD;116
+Protectoren (z.B. für Motorradkleidung, aus Kunststoffen);132
+Prussian blue;085
+Pumpen;118
+Pumps (Pumpen);118
+Puppen;132
+PURELL (Handelsname für Polypropylentypen);086
+Purpurerz;031
+Purses (Brieftaschen);132
+Purses (Geldbörsen, Lederwaren);053
+Putztrolly;122
+Putzwolle;051
+Puzzolanerde;035
+PVC products (Kunststoff-Produkte, aus Polyvinylchlorid);086
+PVC Profile;084
+PVC Tape;086
+PVC-Folie (Kunststoff-Folie, aus Polyvinylchlorid);086
+PVC-Resins;084
+PVC-Teile;086
+Pyritabbrände;081
+Pyrolyseöl, -rückstände (Pyrotar);074
+Quadersteine, roh behauen;035
+Quarz, Quarzit;035
+Quarzkies, -mehl;035
+Quarzsand, Quarzitsand;035
+Quickboard;116
+Racks (Regale);131
+Räder;121
+Räder aus Stahl, alt, abgängig, nicht zur Verhüttung;142
+Radfelgen;121
+Radiatoren;116
+Radio;116
+Radioaktive Stoffe;087
+Radiowecker;116
+Radreifenscheiben für Schienenfahrzeuge;121
+Radreifenscheiben, -sätze, alt, abgängig, nicht zur Verhüttung;142
+Raffinadekupfer;102
+Raffineriegase, s.n.g.;073
+Raffinierter Zucker;048
+Rahm (Sahne);045
+Randsteine;093
+Raps, Rapssaat;017
+Rapsöl;044
+Rapssaatschrot, -pellets;044
+Raseneisenerz, -stein;031
+Rasierklingen;105
+Rasorit;035
+Ratchet (=Zahnkränze) ;122
+Rattan Furniture (= Rattan-Möbel);131
+Rattan-Möbel ;131
+Raucolast non woven;052
+Räumasche aus Zinköfen (Muffelrückstände);142
+Raumzellen (für Computer);118
+Recycling;142
+Recycling Material;142
+Recyclingmaterial;142
+Refractories;091
+Refractory Bricks (feuerfeste Steine);091
+Refractory Material;091
+Refrigeration equipment (Kühlgeräte);118
+Refrigerators;118
+Regale;131
+Regalkörbe;112
+Regenrinnen;105
+Regenschirme;132
+Reifen;086
+Reifen und Fahrräder und Fernsehgeräte etc.;086
+Reinigungsmittel;085
+Reis;011
+Reisflocken;046
+Reisfuttermehl;046
+Reithindernisse;132
+Removals (Umzugsgut);192
+Resin (Hartplastik), Kunstharz, synthetisch;086
+Restblöcke zur Verhüttung;142
+Retorten aus Graphit;093
+Retortenkohle, Retortenkohlenruß;082
+Riffelbleche;101
+Rinden zum Färben, zum Gerben;015
+Rinnen aus Asbestzement;093
+Rippentorstahl;101
+Roggen;011
+Rohblei, auch gemahlen;102
+Roheisen, auch phosphorhaltig, in Masseln, in Formstücken;101
+Roheisenbären;101
+Rohgips zum Düngen;092
+Rohglas;091
+Rohholz;015
+Rohkaffee;017
+Rohkupfer;102
+Rohleder;053
+Rohluppen;101
+Rohnaphta;022
+Rohperlite;035
+Rohphosphate, zum Düngen, s.n.g.;033
+Rohre;103
+Rohre aus Asbestzement;093
+Rohre aus Kautschuk;086
+Rohre aus Zement;093
+Rohre, aus Stahl, aus Gußeisen;103
+Rohre, feuerfest;091
+Röhren aus gebranntem Ton, s.n.g.;091
+Röhren und Röhrenverbindungsteile aus Steinzeug;091
+Röhrenstreifenabfallenden, nicht zur Verhüttung;142
+Rohrfüße;105
+Rohrluppen;101
+Rohrschlangen, aus Stahl, aus Gußeisen;103
+Rohrverbindungen aus Zement;093
+Rohrverschluß- und -verbindungsstücke, aus Stahl, aus Gußeisen;103
+Rohschwefelbarium;081
+Rohstahl in Blöcken, in Brammen, in Formstücken, in Stranggußriegeln;101
+Rohstoffe;084
+Rohstoffe, pflanzliche, s.n.g.;016
+Rohstoffe, tierische, s.n.g.;01A
+Rohtabak;017
+Rohzucker;048
+Rollen;118
+Rollen für Einkaufswagen;121
+Rollenlager, -einzelteile;118
+Rollenschneid- und Wickelmaschine;118
+Rollkartei;131
+Rolltore;105
+Rosinen;043
+Rosmarin;017
+Rote Asche;142
+Rüben, frisch;017
+Rübenzucker, roh;048
+Rüböl;044
+Rucksäcke;132
+Rückstände der chemischen Industrie, eisenoxidhaltig;142
+Rückstände der Erdölraffination, s.n.g.;074
+Rückstände von Braunkohlen- und Steinkohlenteerschweröl;082
+Rückstände von Getreide, auch pelletiert;046
+Rückstandkalk;035
+Rückstandsöl der Erdöldestillation;074
+Rundfunkgeräte einschl. Zubehör, Einzel- und Ersatzteile;116
+Rundholz;015
+Rundstahl;101
+Ruß;081
+Rutil (Titanerz);032
+Saaten, Samen, Sämereien;016
+Sägemehl;061
+Sago;043
+Sahne;045
+Salat Set;086
+Salmiakgeist;081
+Salpetersäure, -abfallsäure;081
+Salz, auch vergällt, s.n.g.;034
+Salzheringe;042
+Salzsäure, -abfallsäure;081
+Sammelerz;031
+Sammelgut;192
+Sand stone (Sandstein);035
+Sand, sonstiger;035
+Sandstein;035
+Sanitärartikel;086
+Sanitäre Anlagen;091
+Sanitärwaren aus Porzellan, Steingut, Steinzeug;091
+Sanitary articles;086
+Sanitary towels;051
+Santa hat chair cover (Weihnachtsmann-Mützen, Stuhlbezüge);062
+Santa hat chair cover (Weihnachtsmützen, Stuhlbezüge);062
+Säuren, s.n.g.;081
+Scales;062
+Schale;093
+Schalenfrüchte;014
+Schältomaten;043
+Schältomaten, in Püree;043
+Schaltschränke;114
+Schalttafeln, -schränke;114
+Schamotte;035
+Schamottebrocken, -bruch;035
+Schamottekapseln, -platten, -steine, -waren;091
+Schamottenmehl;035
+Schamottsteine (finebricks);091
+Schaumgummi;086
+Schaumstoff;084
+"Schaumstoff Produkte; Laderef: AB0508158+M0501098";086
+Schaumstoffe;084
+Schaumweine;047
+Schaustellergerätschaften, gebraucht;175
+Scheibenräder;121
+Scherben von feuerfesten und keramischen Erzeugnissen;035
+Scheuer- und Schleifmittel;085
+Schiefer;093
+Schiefer bearbeitet;093
+Schiefer roh zerteilt und roh behauen;035
+Schiefer, -gebrannt, gemahlen, zerkleinert;035
+Schieferblöcke, -platten;035
+Schieferteeröl (Schieferkohlenteeröl);022
+Schieferton, roh und unverpackt;035
+Schieferton, roh und verpackt;035
+Schienen;101
+Schienen aus Stahl;101
+Schienen aus Stahl, alt, abgängig, nicht zur Verhüttung;142
+Schienenfahrzeuge, einschl. Zubehör, Einzel- und Ersatzteile;128
+Schienenstücke, zerschlagen, zerschnitten, zur Verhüttung;142
+Schienenteile;101
+Schiffahrtszeichen (Baken, Bojen u.dgl.);128
+Schiffe;128
+Schiffsanker;105
+Schilfrohr;016
+Schilfrohrdecken;051
+Schlacken aus Blei- und Kupferöfen;142
+Schlacken mit Asphalt oder Teer überzogen;035
+Schlacken von Brennstoffen, s.n.g.;142
+Schlacken, eisenhaltig, manganhaltig, s.n.g.;142
+Schlackeneisen;101
+Schlackensand;142
+Schlackenwolle, kurzfaserig und lose;093
+Schlamm;142
+Schlammkohle;021
+Schleifpapier;093
+Schlempe;046
+Schlepperteile (landwirschaftliche Maschinen, Traktoren);111
+Schlick;142
+Schlösser;105
+Schlüsseletuis (Lederwaren) ;053
+Schmelzbasalt, -bruch, -steine;035
+Schmelzkammergranulat;142
+Schmiedestücke aus Stahl, aus Gußeisen;105
+Schmierfette, -öle, s.n.g.;072
+Schmieröl;072
+Schminkkoffer;132
+Schnittholz;061
+Schnuller/Flaschen Glaswaren (Schwerpunkt: Flaschen, Glaswaren);091
+Schokolade;048
+Schokoladenerzeugnisse;048
+Schotter;035
+Schrauben;105
+Schrauben aus Gußeisen, aus Stahl;105
+Schraubzwingen, Metall-Klammern (=Clamps);105
+Schredderschrott, zur Verhüttung;142
+Schreibartikel;062
+Schreibwaren ;062
+Schrott;142
+Schrott / Autoteile;142
+Schrott aus Walzwerken, zur Verhüttung;142
+Schrott von Aluminiumlegierungen;142
+Schrott von Bleilegierungen;142
+Schrott von Eisen-, Stahlblechen, Platinen, Formstahl, zur Verhüttung;142
+Schrott von Hüttenwerken, zur Verhüttung;142
+Schrott von Kupferlegierungen;142
+Schrott von NE-Metallegierungen;142
+Schrott von Zinklegierungen;142
+Schrott von Zinnlegierungen;142
+Schuhe;052
+Schuhe, Fußbekleidung, Schuhwaren;052
+Schuhe, Kleidung;052
+Schuhe, Kleidung, Handschuhe;052
+Schuhe, Kleidung, Unterwäsche;052
+Schuhe, Schals;052
+Schuhpflege Sets (= Etuis mit Schuhpflegemitteln);085
+Schulranzen;132
+Schultaschen;132
+Schuppen (aus Holz);061
+Schuppen (aus Metall);105
+Schutt;142
+Schüttsteine;035
+Schutzkleidung aus Asbest;093
+Schwamm, Schwämme;086
+Schwarz, Farbstoff;085
+Schwarzkupfer;102
+Schwefel;081
+Schwefel, gereinigt;081
+Schwefel, roh;081
+Schwefeldioxid;081
+Schwefelgranulat;142
+Schwefelige Säuren;081
+Schwefelkies;033
+Schwefelkies, geröstet;081
+Schwefelkies, nicht geröstet;033
+Schwefelkiesabbrände;081
+Schwefelkohlenstoff;081
+Schwefelnatrium;081
+Schwefelsäure;081
+Schweißdraht;105
+Schweißschlacke;142
+Schweißspulver;085
+Schwelkoks;071
+Schwellen aus Beton, Eisenbeton;093
+Schwellen aus Eisen, zur Verhüttung;142
+Schwellen aus Holz;061
+Schwellen aus Stahl;101
+Schwellen aus Stahl, alt, abgängig, nicht zur Verhüttung;142
+Schweröl, nicht zum Verheizen;074
+Schwerspat;035
+Schwimmkörper;086
+Scrap;142
+Screws (Schrauben);105
+Seegras;016
+Segeltuch, -planen;051
+Seide;051
+Seife;085
+Seilerwaren, s.n.g.;051
+Senf;048
+Separationseisen (Eisenschlacken);142
+Separatoren (= Scheider, Trenner, für elektrische Akkumulatoren);114
+Sesamkörner;017
+Sesampellets;044
+Sesamschrot;044
+Shelving systems (Regalsysteme aus Stahl);105
+Shipping cases;061
+Shuttle;191
+Siebbleche;101
+Siedesalz;034
+Siemens-Martin-Mehl;142
+Siemens-Martin-Schlacken;142
+Silicium, -carbid;081
+Silicomangan (Ferrosilicium);101
+Silicon;084
+Silikabrocken, -bruch;035
+Silikasteine;091
+Silikat, doppeltes oder komplexes ;081
+Silikatbrechsand;142
+Sinterkohle;021
+Sinterkoksgrus;071
+Sipernat (Produktname für Kieselerde, Kunststoff-Zusatzmittel);082
+Sirup;046
+Sisal;017
+Sishen Coarse;031
+Sishen ST;031
+Skids;118
+Slabs aus Stahl;101
+Soda;081
+Sodalauge;081
+Sodiummethylat, Lösung (Alkalimetallalkoholat);081
+Soduimalginat;085
+Sojabohnen;017
+Sojamehl;046
+Sojaöl;044
+Sojaschrot, -pellets;044
+Solarequipmemt;114
+Solarium;114
+Solventnaphtha;082
+Sonnenblumenkerne;017
+Sonnenblumenöl;044
+Sonnenblumenpellets;044
+Sonnenblumensaat;017
+Sonnenblumenschrot;044
+Sorel (Titanschlacke);142
+Spacers (= Abstandhalter, Bauteile);093
+Spacers and precast accessories (building material) (= Betonfertigteile, Bauteile);093
+Späne von Eisen-, Stahlblechen, Platinen, Formstahl, zur Verhüttung;142
+Spanplatten;061
+Spardose, Gürteltasche, Unterwäsche, div. Kleidung;132
+Spare Parts (Ersatzteile);105
+Spat, s.n.g.;035
+Special black+printex (Farbstoff);085
+Speck;041
+Speckstein;035
+Speisefette, Speiseöle;044
+Speisesalz;048
+Speisewärmer;112
+Sperrholz, -platten;061
+Spezial Schwarz und Printex (= Produktname für Pigmentruss), Farbstoff;085
+Spezialprofile aus Stahl (H-, I-, T-, U-Profile und andere);101
+Spiegel ;091
+Spiegeleisen;101
+Spiele;132
+Spielwaren;132
+Spielzeug;132
+Spirituosen;047
+Spiritus, vergällt;081
+Splitt von Hochofenschlacke;142
+Splitt von Steinen bis 32 mm Durchmesser;035
+Sportartikel;132
+Sportwaffen;105
+Spreißelholz;061
+Sprengstoffe;105
+Spritzen (med.);117
+Spundbohlen, -zubehör;101
+Spundwandstahl;101
+Stabstahl;101
+Stabstahl, kalt gewalzt (Cold Rolled Steel Strips) ;101
+Stacheldraht;105
+Stahl;101
+Stahl (zur Weißblechherstellung);101
+Stahl, bearbeitet;101
+Stahlabfälle, nicht zur Verhüttung, s.n.g.;142
+Stahlabfälle, zur Verhüttung, s.n.g.;142
+Stahlbären;101
+Stahlbleche in Tafeln oder Rollen (z.B. Coils);101
+Stahldraht;101
+Stahldraht, -flaschen, -gewebe, -kabel;105
+Stahlgerüst zur Lagerhaltung mit Zubehör, Kästen aus Kunststoff;104
+Stahlhalbzeug, s.n.g.;101
+Stahlmasse, gekörnt, gepulvert, pelletiert, nicht zur Verhüttung;142
+Stahlmatten;105
+Stahlplatten;101
+Stahlprofile;101
+Stahlpulver;101
+Stahlrahmen;105
+Stahlrohre;103
+Stahl-Rohrleitungs-Verbindungsstücke;105
+Stahlronden (runde Stahlscheibe, aus der ein Werkstück gefertigt wird);101
+Stahlschrott, zur Verhüttung, s.n.g.;142
+Stahlschwamm;101
+Stahlspäne, nicht zur Verhüttung;142
+Stahlspäne, zur Verhüttung;142
+Stahlstäbe;101
+Stahlstreifen, auch oberflächenbeschichtet;101
+Stahlstücke aus Abwrackarbeiten, nicht zur Verhüttung;142
+Stahlstücke aus Abwrackarbeiten, zur Verhüttung;142
+Stahlträger;104
+Stahlwaren;101
+Stahlwaren, s.n.g.;101
+Stahlwerksschlacke;142
+Stainless steel;101
+Stalldünger;083
+Stammholz;015
+Stangen aus Holz;061
+Stangen aus NE-Metallen und NE-Metallegierungen;102
+Stanzstücke aus Stahl, aus Gußeisen;105
+Stärke, -waren;046
+Stationery;113
+Staubkohle;021
+Staubsauger (Haushaltsstaubsauger);112
+Staubsauger (Industriestaubsauger);118
+Staubsaugerteile;112
+Staubtücher;051
+Stauholz;162
+Steam cleaner;118
+Stearin, -pech, -säure;044
+Steatit;035
+Steckdosenleiste, Verlängerung;114
+Stecker, Tischsteckdose, Übergangsstecker;114
+Steel cans;101
+Steel drums;101
+Steel frames (Stahlrahmen);101
+Steel material;101
+Steel parts;103
+Steel pipe-fitting-parts (Stahl-Rohrleitungs-Verbindungsstücke);101
+Steel profiles (Stahlprofile);101
+Steel shelvings;104
+Steel shot;101
+Steel skids;101
+Steel strips;101
+Steel tubes (Stahlrohre);103
+Steel wire (= Stahldraht);101
+Steel, turned steel (Stahl);101
+Steelware, Steel cans, Steelarticles;101
+Stein (Kunstwerk);093
+Steinabfälle, -grus;035
+Steine, bearbeitet, s.n.g.;093
+Steine, feuerfest ;091
+Steine, feuerfest, s.n.g.;091
+Steine, sonstige, roh behauen;035
+Steine, Steinblöcke, roh, aus Steinbrüchen;035
+Steinfliesen, -platten;093
+Steingut;091
+Steinholzerzeugnisse;093
+Steinholzmasse;093
+Steinkohle, s.n.g.;021
+Steinkohlenabfälle, -staub;021
+Steinkohlenbriketts, -brikettsabfälle, -brikettsstaub;071
+Steinkohleneierbriketts;071
+Steinkohlenkoks, s.n.g.;071
+Steinkohlenkoksabfälle, -grus, -staub;071
+Steinkohlenkoksbriketts;071
+Steinkohlenpechkoks;071
+Steinkohlenschwelkoks, -abfälle -briketts, -staub;071
+Steinkohlenteer, -öl;071
+Steinkohlenteerkoks;071
+Steinkohlenteerpech;082
+Steinkohlenußbriketts;071
+Steinmehl, -sand;035
+Steinobst;014
+Steinsalz;034
+Steinschlag;035
+Steinschotter;035
+Steinsplitt bis 32 mm Durchmesser;035
+Steinwolle;093
+Steinzeugwaren, feinkeramische;091
+Steinzeugwaren, feuerfest, grobkeramisch;091
+Steinzeugwaren, s.n.g.;093
+Stellwände aus Beton, Eisenbeton, Kunststein, Zement;093
+Stickstoff, verdichtet, verflüssigt;081
+Stickstoffdünger, s.n.g.;083
+Stickstoffmagnesia, zum Düngen;083
+Stoffe, s.n.g.;051
+Stoffreste (Stoffabfälle);142
+Stone (art) (Stein, -kunstwerk);093
+Stoneproducts (Steingutprodukte);091
+Stoneware (Steingut);091
+Storage eqiupment;104
+Strahlmittel;142
+Streckvorrichtungen;118
+Streichhölzer;085
+Streusalz (Auftausalz);034
+Strickjacken;052
+Stripes of Needle (Spritzen, Injektionsnadeln);117
+Stroca;081
+Stroh, -häcksel;017
+Stromschienen aus Stahl mit Teilen aus NE-Metall;101
+Strontium carbonate (Strontiumkarbonat);081
+Strontium, -verbindungen;035
+Strontiumkarbonat (=Strontianit);081
+Stückgut;191
+Stuhl;131
+Styrol;081
+Südfrüchte;014
+Sulfitablauge;085
+Sulphur;081
+Sultaninen;043
+Super Mixed Paper;062
+Superphosphat, zum Düngen;083
+Suppenkonzentrate;048
+Surfboard;132
+Süßholz ;046
+Swab Gauze;085
+Switchboards (Schalttafeln, -schränke);116
+Switchcabinetts;116
+Sylvinit, nicht zum Düngen;033
+Sylvinit, zum Düngen;033
+Synthetic resin;084
+Systemteile (Komponenten für TV, Video, Computer);116
+Tabak, -waren;048
+Table Lamps- Clocks (Tischlampen, Uhren);117
+Tableware, Kitchenware;086
+Tafeln aus NE-Metallen und NE-Metallegierungen;102
+Tailes of any shape;105
+Talg;044
+Talkerde;035
+Talkstein (Asbeststeine), auch gemahlen;035
+Talkum;035
+Tallöl, -erzeugnisse;085
+Tamarind kernel powder;017
+Tankbehälter;105
+Tapes;102
+Tapeten;062
+Tapioka;046
+Tapiokamehl, -flocken;043
+Tapiokamehlpellets;046
+Tapiokawurzeln, -mehl;046
+Taschen;132
+Tauwerk;051
+Tea Lights (Teelichter);132
+Technisches Material;114
+Tee;017
+Tee Set (Geschirr aus Glas oder Keramik);091
+Teelichte;132
+Teelichter;132
+Teer, mineralisch;082
+Teer, pflanzlich;082
+Teeremulsionen, -lösungen, -erzeugnisse;074
+Teerfilz;062
+Teerkoks;071
+Teerpapier, -pappe;062
+Teerpech;082
+Teigwaren;048
+Tennisbälle;132
+Teppiche;051
+Terpentinöl;085
+Terracotta Pots;091
+Terracotta Waren;091
+Tetrachlorbenzol, -kohlenstoff;085
+Tetralin;082
+Textilabfälle, s.n.g.;142
+Textilfasern, künstlich, synthetisch;085
+Textilfasern, s.n.g.;051
+Textilien, s.n.g.;051
+Textilmaschinen;118
+Thomaskali (Thomka), zum Düngen;083
+Thomasmehl, -phosphatmehl, -schlacken, zum Düngen;083
+Tiere (lebend);018
+Tierhaare, s.n.g.;01A
+Tiernahrung;046
+Tiles;091
+Timber;015
+Tipping paper;062
+Tires (Reifen);086
+Tisch Deko;132
+Tischdecken;051
+Tischdecken, Kleidung (Schwerpunkt: Tischdecken);051
+Tischlampen Uhren;117
+Tischsteckdose, Übergangsstecker;114
+Tischwäsche;051
+Titandioxid (z.B. Rutil, künstlich);081
+Titaneisenerz (Ilmenit);032
+Titanerz (Rutil);032
+Titanschlacke;142
+Toaster;114
+Toilet paper (Toilettenpapier);062
+Toilettengegenstände;091
+Toilettensitze;086
+Toluol;082
+Tomaten;014
+Ton, roh und unverpackt;035
+Ton, roh und verpackt;035
+Tonerde, Ameisen-, Essig-, Schwefelsäure;082
+Tonerdehydrat (Aluminiumhydroxid);081
+Tonerdezement (Tonerdeschmelzzement);092
+Tonwaren;091
+Tooles;105
+Toothbrushes;132
+Töpferwaren;091
+Tore, Torrahmen aus Metall;104
+Torf, s.n.g.;035
+Torfbriketts, -streu;035
+Torfpech, -teerpech;071
+Torfteer;071
+Torstahl;101
+Tractors (= Traktor, Schlepper)-Teile L-Ref.: KOBE, Japan Schiff: NYK, Machelen;111
+Träger aus Holz;061
+Träger aus Stahl;101
+Trailer axles and accessoires (Anhänger-Achsen und Zubehör);118
+Trailer, gebraucht;161
+Traktoren;111
+Traktorteile ;111
+Tran;044
+Tränenbleche;101
+Transformatoren;114
+Transformatorenöl;074
+Transformatorhousing;114
+Transmission or conveyor (Förderband);105
+Traß;035
+Traubenzucker;046
+Treber, Trester;046
+Triazin Cyanurchlorid;081
+Triazol, Fungizid(= Pilzbekämpfungsmittel im Garten- und Weinbau);085
+Tribünen (aus Holz);061
+Tribünen (aus Metall);105
+Trichloräthylen;081
+Trichlorbenzol, -methan;081
+Trinkflaschen (SIGG, Alu-);105
+Triticale (Getreidegemisch);011
+Trockenpflaumen;043
+Trommeln, Trommelschüsse aus Eisen für Drehöfen;118
+T-Shirt;052
+Tubes;103
+Tücher (= Bekleidungszubehör, Hals-, Taschentücher);051
+Tücher (= Geschirr-, Putztücher, Stoffe-Meterware);051
+Tür Deko;132
+Türbeschläge (aus Metall);105
+Turbinenkraftstoff;072
+Türen, Tore;104
+Türen, Türrahmen aus Metall;104
+Türkranz;132
+Türschließer und Zubehör (=Door Closers and Accessories);105
+Türschlösser und Zubehör;105
+Tyres (Reifen);086
+Uhr;117
+Uhr, Photoalbum (Schwerpunkt: Uhr);117
+Uhren;117
+Uhrenradio;116
+Ultraprint;062
+Ultrasil (Kieselsäure, synthetisch, Verstärkerfüllstoff in der Gummiindustrie);081
+ULTRASIL (Verstärkerfüllstoff in der Gummiindustrie);081
+Umweltgefährdender Stoff, flüssig;085
+Umzugsgut;171
+Umzugssammelgut;192
+UN 1210 Druckfarbe, UN 3089 entzündbares Metallpulver;085
+Unenumerated cargo (Sammelgut);192
+Unterlagsholz;162
+Unterwäsche;052
+Used household effects;141
+Used household goods (Gebrauchshaushaltswaren - Glas und Porzellan);091
+Vacuum cleaner (Staubsauger);112
+Vanadiumabfälle, -aschen, -rückstände, -schlacken, -schrott;142
+Verbandsmaterial;085
+Verbandstoffe;085
+Verblendsteine aus gebranntem Ton;091
+Verblendsteine aus Naturstein;093
+Vergaserkraftstoffe, s.n.g.;072
+Vermiculite, gebläht;093
+Verpackungsmaterial;062
+Verpackungsmaterial aus Holz (Transportbehälter aus Holz);061
+Versch. Fertigprod.;192
+Verschiedene Fertigprodukte;192
+Verschiedenes (Diverses);192
+Verschiedenes Material;192
+Verschluss;086
+Vestagon (Produktname), Härter für Pulverlacke;084
+Vibratory roller;118
+Viehsalz;034
+Vierkantstahl;101
+Vinylchlorid;084
+Vinyl-Handschuhe;052
+Vogelfutter;046
+Vorbrammen;101
+Vorhänge;051
+Vorkupfer;102
+VRAC Racines Milletia Drastica (Racine = Wurzel, evtl. Heilpflanzen);192
+Waagen;118
+Wachs;074
+Wadding;085
+Waffelbleche;101
+Waffen;105
+Waffen ohne Munition;105
+Waffen, einschl. Zubehör und Einzelteile;192
+Waggons;121
+Walkerde, roh und unverpackt;035
+Walkerde, roh und verpackt;035
+Wallcoverings;062
+Wallets (Brieftaschen, Lederwaren);053
+Wallets, purses, key-pouch (Brieftaschen, Portemonnaies, Schlüsseletuis);053
+Walnüsse;014
+Walzblei;102
+Walzdraht aus Eisen oder Stahl;101
+Walzen;118
+Walzenzunder, Zunder zur Verhüttung;142
+Walzschlacken;142
+Walzsinter;142
+Walzstahl in Stäben, in Profilen, s.n.g.;101
+Walztafelabfallenden aus Stahl, zur Verhüttung;142
+Walztafelabfallenden, nicht zur Verhüttung;142
+Walzzunder Shif;142
+Wardrobe cupboard;131
+Waren aus Natursteinen, s.n.g.;093
+Warenballen, Colli;192
+Wärmeschutzmasse;093
+Waschberge;035
+Wäsche;052
+Waschmaschinen;112
+Waschmittel, -pulver;085
+Waschrohstoffe;085
+Wasseerkocher (= Wasserkocher);112
+Wasser;047
+Wasserfahrzeuge einschl. Zubehör, Einzel- und Ersatzteile;121
+Wasserglas;081
+Wasserkocher;112
+Wasserpistolen;132
+Wasserstoff;081
+Wasserstoffperoxid;081
+Waste;142
+Waste plastic;141
+Water (Wasser);047
+Water proofing membrane (wasserabweisende Folien für Ventile);086
+Watte;051
+WC-Artikel;086
+Wearingapparel (Bekleidung);052
+Weichmacher (Chemie);085
+Weichmachergemische für Kunststoffe;085
+Weichtiererzeugnisse, s.n.g.;042
+Weidenkörbe (willow baskets);132
+Weihnachstdeko (= Weihnachtsdekoration);132
+Weihnachtsartikel;132
+Weihnachtsbaum;132
+Weihnachtsbeleuchtung;132
+Weihnachtsdekoration;132
+Weihnachtsmann-Mützen, Stuhlbezüge;062
+Wein;047
+Wein aus Weintrauben;047
+Wein, in Flexytank;047
+Wein, in Kisten verpackt;047
+Weingeist;081
+Weißband, -blech;101
+Weiße Ware;112
+Weiße Ware (elektrische Haushaltsgeräte);112
+Weizen;011
+Weizenkleiepellets;046
+Wellbleche;101
+Wellen aus Stahl, alt, abgängig nicht zur Verhüttung;142
+Wellpappe;062
+Werg;017
+Werkstücke aus Beton, Eisenbeton, Kunststein, Zement;093
+Werkstücke aus Stein;093
+Werkzeug;105
+Werkzeug i.A. Dachser Köln für Sylmar, Ca via Los Angeles;105
+Werkzeuge;105
+Werkzeuge aus Metall;105
+Werkzeuge für Wicklung (elektrotechnisch);105
+Wheat groats;011
+Wheel loader (asper);118
+Wheel rims (Radfelgen);121
+White goods (elektrische Haushaltsgeräte);112
+White goods (Weiße Ware, Elektrische Haushaltsgeräte);112
+White.fused.alumina (Aluminiumoxyd, weiß verschmolzen);102
+Willow baskets (Weidenkörbe);061
+Windeln;062
+Winding tools (Werkzeuge für Wicklung);105
+Windkraftanlage;114
+Windows;061
+Wine (Wein);047
+Winkelstahl;101
+Wire (Draht);101
+Witherit;035
+Wolle;01A
+Wood (Holz);015
+Woodchips Recycled;061
+Wooden crates;061
+Woodware;061
+Working elevator;118
+X.mas.church (Weihnachtsdekoration);132
+X-mas-deco (Weihnachtsdekoration);132
+XX packages;062
+Xylenol;082
+Xylol;082
+Yarn;051
+Yarn (Garn);051
+Yellow iron oxyd;081
+Zahnbürsten;132
+Zahnkränze (Ratchet) ;122
+Zechensteine, gebrannt;035
+Zeitungen;063
+Zeitungsdruckpapier;062
+Zellstoff;062
+Zellstoffwatte (Papierwatte);062
+Zellulose, -abfälle;062
+Zellwolle;085
+Zement;092
+Zementklinker;092
+Zementwaren;093
+Zerlegtes Zelt;051
+Ziegel aus Beton, Eisenbeton, Kunststein, Zement;093
+Ziegelbrocken, -bruch, -splitt;035
+Ziegelmehl;035
+Ziegelsteine aus gebranntem Ton;091
+Ziergegenstände (Weihnachtsdekoration);132
+Zigaretten;048
+Zigarettenpapier;062
+Zimt;017
+Zink;102
+Zinkabfälle;142
+Zinkaschen;142
+Zinkblende;032
+Zinkerze;032
+Zinkkonzentrate;032
+Zinklegierungen;102
+Zinkoxid zur Herstellung von Farben;085
+Zinkoxid, s.n.g.;081
+Zinkrückstände;142
+Zinkschlacken;142
+Zinkschrott;142
+Zinksulfat;081
+Zinkwaren, s.n.g.;105
+Zinn;102
+Zinnabfälle;142
+Zinnaschen;142
+Zinnerz;032
+Zinngekrätz;142
+Zinnlegierungen;102
+Zinnrückstände;142
+Zinnschlacken;142
+Zinnschrott;142
+Zip-lock bags;086
+Zircon (Zirkon);032
+Zircon sand (Zirkonsand);032
+Zirconit;032
+Zirkon;032
+Zirkonerz;032
+Zirkonsand;032
+Zitrusfrüchte;014
+Zucker, raffiniert;048
+Zuckerrüben;013
+Zuckerrübenmelasseschnitzel;046
+Zuckerrübenschnitzel, ausgelaugt und trocken, auch pelletiert;046
+Zuckerrübentrockenschnitzelpellets;046
+Zuckerwaren, s.n.g.;046
+Zunder zur Verhüttung, Walzenzunder;142
+Zündhölzer;085
+Zusammenzusetzende Teile (Komponenten);118
+Zwieback;048
+Zwiebeln (frisch);014
+Zwiebeln (Samen);016
+Zwischenerzeugnisse (bei Vorbereitung von Erzen für die Metallgewinnung);031
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
+;
diff --git a/misc/bsmd-emswe_eu.csr b/misc/bsmd-emswe_eu.csr
new file mode 100644
index 00000000..97a5d2f7
--- /dev/null
+++ b/misc/bsmd-emswe_eu.csr
@@ -0,0 +1,17 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIICsDCCAZgCAQAwazELMAkGA1UEBhMCREUxDzANBgNVBAgMBkJyZW1lbjEPMA0G
+A1UEBwwGQnJlbWVuMSIwIAYDVQQKDBlCcmVtZXIgU2NoaWZmc21lbGRlZGllbnN0
+MRYwFAYDVQQDDA1ic21kLWVtc3dlLmV1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
+MIIBCgKCAQEApvboTA8dRaz1hBcv3y6v+CBIdE3jUPNqOsZAjGuD9+gpCFv9F/ve
+r+kQGvfRCPTPTPk7FM4hC2TKGk6PwmshkWdru4c4S7mYJW3KGe7t0wIgv/g1FkUV
+eR5sXl4zvHnBXuV+ciuqb8RVW7izuNHVVUFAVhUlGROBb2ERqW5Cq7JCUM68H6l6
+ZAW0yltrO0BSEV6UTxja3f9K4Sz1AcvXXxFeJGUoUZ9J83n3kS5vGyyjeqA3mz7j
+NrkYxvXgRJHw4qBxnNtj0YkmwNPg/KFtNslsbUjvdA83s1dYIJA2YaoJPu+b/Nj0
+guUaNbxUcFXP7VxU9P1sj5/Nwu4yef2a9wIDAQABoAAwDQYJKoZIhvcNAQELBQAD
+ggEBADXDUI9c6GI1hv4AB//E0RBD0aJzuM8hLCI5GDEkgwfhdTI/QOHTZI6G+TT5
+mq6AJgha67ZcOGnP7tr38YxNxGWmLOo+pRS9qTBc3A7ynuvvhKiaZtbhLSpDBgs1
+JQtMYOnvSOzmYSsUhwZl/ugvrTnA5oe453O8cRhFR4/IUzm2wjWrUhiY15fUtJq9
+MtBRmGHZ3P92e9K1KBvTtsmbmU1/YidVnTvjmItQKkg3Ga9M/Bech19IEQLFdNET
+wA3Tn18anNSdB22Gzj6eyZYaEtSnpmfjaxZFJixF4r8h/sZY9KD93arRV5vWjKHX
+tcUl76Jw2skPpMfG94Xd0sc9DrI=
+-----END CERTIFICATE REQUEST-----
diff --git a/misc/bsmd-emswe_eu.key b/misc/bsmd-emswe_eu.key
new file mode 100644
index 00000000..2d6af019
--- /dev/null
+++ b/misc/bsmd-emswe_eu.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCm9uhMDx1FrPWE
+Fy/fLq/4IEh0TeNQ82o6xkCMa4P36CkIW/0X+96v6RAa99EI9M9M+TsUziELZMoa
+To/CayGRZ2u7hzhLuZglbcoZ7u3TAiC/+DUWRRV5HmxeXjO8ecFe5X5yK6pvxFVb
+uLO40dVVQUBWFSUZE4FvYRGpbkKrskJQzrwfqXpkBbTKW2s7QFIRXpRPGNrd/0rh
+LPUBy9dfEV4kZShRn0nzefeRLm8bLKN6oDebPuM2uRjG9eBEkfDioHGc22PRiSbA
+0+D8oW02yWxtSO90DzezV1ggkDZhqgk+75v82PSC5Ro1vFRwVc/tXFT0/WyPn83C
+7jJ5/Zr3AgMBAAECggEAfEGCbaBN852ddflfmiP/t5Qm989DXepZY3ZJcXdOVj/D
+0cHL4H6Eoru7TaaiPZ0bbbiJnJkvBHC069ENse3SpIioJ36hidGMhkZnwtcKzR9n
+ShapQ3KUYXgfxDctH5YpL7txV/xhMh6WO9WAgwo+Tt1pyOahnkDi8gX2g/ZXzbh+
+3+LuY7QHUQSdmb/8IjAiY9e0uh7rscTiPOb3fH6Fucs5iCsyOMu20/Vri50WGNAK
+c367ijMl5zSf0rAOXAdV7kQ6zOQ2FESRlRtGjeMhEEdty9ONgkrdGlyAuR878Kn3
+LR9TDBVmgrDUV1tGjUpq6pfePphIh2DNQ/EnKzF5OQKBgQDa/8Zq6zY6knzHXd/a
+QfhAa46+ulztA9gG+qm9LU7PjF1yKgbaXLFuarRdKVd6JXCHk0aItWYz1ptuTKEV
+AbN19hJViSRlZp2rMyRAxW44q6mH7Fd0zkEDcM/c489gULRDeEWcr5m0KJciLCXt
+/epzS90pxGmWcUYbpEBIbOCjkwKBgQDDLIMnT5LmRLRbqZoZZlms9xl/kIFiiOTB
+8O4tHAuaS2js1jSdz+eGM24lGDpMGznuloSLdVBMr4BVNEFLX6UFjr4L8mEtDlfg
+Yn02fPKj05TuGN+VixpUq4n1WPXoE0/f2KziGxJGyDUgSiD6ySVDUNhAljJkRLuw
+BuO6zLZRjQKBgQCY4cvrYg52b0MKjr8yB7G9jxiUj1dF4tQRczXBqfqFq3CkvTAR
+inoXIgiNrMmzrKVVD/xCfZg+ggf5xScCmjBlHgaIjffJjgxtsoMRcIJUr4nnKJeZ
+JE+AjmWdx69ChrSBEVpPWssLWPbA1V8ZOJROLtzTRpmLe8I8k7qIlPFxXwKBgQCb
+FUSFuQIF/LO/Xg23fw9kk9fr9/wHOrVisbnfmDhT+vW9sxuOBkR262jrCsxP6xZm
+Ua2yTp5mwNFdYq87YB11RA4Y2hiDP7Ft93R9Fl2K9bWSV6tZXXWnr8JodK65IJdI
+TBhbdZ1ZJv6n0J9SBwCX86ZR88bIy6DDZ0YPCVkZhQKBgQCNX2wtDbkNHefJzvng
+gf8lwSirsmbb+lKRH55bdvcC2T4JiyZnyUzQ4hc8UWYtpzL9uXGo0NMNe6rHHOM7
+fM66OcZDjM8jy5TZxj9qdKrghvGzKhDMl8dZK4V4njUVvFmERZ6QKkojswA660YN
+uyCANbdzyFO0K6/8kP5Ms48BfA==
+-----END PRIVATE KEY-----
diff --git a/misc/cert_bsmd-emswe.eu.crt b/misc/cert_bsmd-emswe.eu.crt
new file mode 100644
index 00000000..75da3c3a
--- /dev/null
+++ b/misc/cert_bsmd-emswe.eu.crt
@@ -0,0 +1,35 @@
+-----BEGIN CERTIFICATE-----
+MIIGAzCCBOugAwIBAgIQBjhqmobDgXwAAkDwc4TUnDANBgkqhkiG9w0BAQsFADBu
+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
+d3cuZGlnaWNlcnQuY29tMS0wKwYDVQQDEyRFbmNyeXB0aW9uIEV2ZXJ5d2hlcmUg
+RFYgVExTIENBIC0gRzEwHhcNMjIxMTA1MDAwMDAwWhcNMjMxMTA1MjM1OTU5WjAY
+MRYwFAYDVQQDEw1ic21kLWVtc3dlLmV1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
+MIIBCgKCAQEApvboTA8dRaz1hBcv3y6v+CBIdE3jUPNqOsZAjGuD9+gpCFv9F/ve
+r+kQGvfRCPTPTPk7FM4hC2TKGk6PwmshkWdru4c4S7mYJW3KGe7t0wIgv/g1FkUV
+eR5sXl4zvHnBXuV+ciuqb8RVW7izuNHVVUFAVhUlGROBb2ERqW5Cq7JCUM68H6l6
+ZAW0yltrO0BSEV6UTxja3f9K4Sz1AcvXXxFeJGUoUZ9J83n3kS5vGyyjeqA3mz7j
+NrkYxvXgRJHw4qBxnNtj0YkmwNPg/KFtNslsbUjvdA83s1dYIJA2YaoJPu+b/Nj0
+guUaNbxUcFXP7VxU9P1sj5/Nwu4yef2a9wIDAQABo4IC8TCCAu0wHwYDVR0jBBgw
+FoAUVXRPsnJP9WC6UNHX5lFcmgGHGtcwHQYDVR0OBBYEFBziyqorVnL5UZ+MmdHi
+B2dRT2b3MCsGA1UdEQQkMCKCDWJzbWQtZW1zd2UuZXWCEXd3dy5ic21kLWVtc3dl
+LmV1MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUH
+AwIwPgYDVR0gBDcwNTAzBgZngQwBAgEwKTAnBggrBgEFBQcCARYbaHR0cDovL3d3
+dy5kaWdpY2VydC5jb20vQ1BTMIGABggrBgEFBQcBAQR0MHIwJAYIKwYBBQUHMAGG
+GGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBKBggrBgEFBQcwAoY+aHR0cDovL2Nh
+Y2VydHMuZGlnaWNlcnQuY29tL0VuY3J5cHRpb25FdmVyeXdoZXJlRFZUTFNDQS1H
+MS5jcnQwCQYDVR0TBAIwADCCAX8GCisGAQQB1nkCBAIEggFvBIIBawFpAHcA6D7Q
+2j71BjUy51covIlryQPTy9ERa+zraeF3fW0GvW4AAAGER8N2hQAABAMASDBGAiEA
+jFJjUH0ypQ2CZysGcxDsuQGWiXKC2YLwcdDi/TRVUmQCIQCQ8Z8eTutA7+z5GQeZ
+sTDcWliMWwg0opagw6jGYeEJrwB1ALNzdwfhhFD4Y4bWBancEQlKeS2xZwwLh9zw
+Aw55NqWaAAABhEfDdqkAAAQDAEYwRAIgfq4ILA3L781Wpl9MzwuZ4QwYfs9PXAcf
+mwwVWIdp6M8CIF8mK3ze6v6Qomtw7Yyah1VdHKW2G6X0EVbMlb6iG1o1AHcAtz77
+JN+cTbp18jnFulj0bF38Qs96nzXEnh0JgSXttJkAAAGER8N2YAAABAMASDBGAiEA
+lIYSvWBcBkpB++CkL+9DzhNl51hUgDYGupKgipq7gkkCIQDfwVzxkg9mJlpVpaGA
+rQmVs8gtAJTa5Ko72522DGbjxzANBgkqhkiG9w0BAQsFAAOCAQEALOEtbhcB4kB9
+1rkD0hoTzmy2lOZ/EuBXnrKzqTxtgDcCX7WUY6shIZYKqD1mjsUNwsd4LuAsZ18X
+1+dR2ynhfe0P2HFjrHFF29E5Vn8MWDuzmfW8OglJdz2uckh2VW0Q/ydjpEvBGyZe
+Tzms0HnyLPJrCRM7T3hSlTff2DF5SZCOsDg53rex6bcg5jS9tZjcs17wZzm5Hw6J
++39eSN7nwnl5DxJ5sFd0lRaQ7UnDSB1/HWKQA9NEHuuE93sMb/yfWfxAcnFJQ8pn
+mj1rVqoyAgB/jQT5Q/fXIfDM0IwaZcWWc4lu70nzbpqgXzPXrC0IdkuRtfMoDI88
+6u/DhTWwmA==
+-----END CERTIFICATE-----
diff --git a/misc/db.sqlite b/misc/db.sqlite
index fae4f03c..dc07251b 100644
Binary files a/misc/db.sqlite and b/misc/db.sqlite differ
diff --git a/misc/info_deployment.txt b/misc/info_deployment.txt
index d0f3b8ae..b82b47d1 100644
--- a/misc/info_deployment.txt
+++ b/misc/info_deployment.txt
@@ -1,12 +1,9 @@
1) copyprod.cmd ausführen (damit app.config richtig überschrieben wird)
2) Prüfen ob das ENI App logo richtig ist
3) VS: Publish: Folder Location und Url richtig auswählen
-4) Signing: "Sign the ClickOnce manifests": Hier für Prod das Zertifikat
-auswählen, das am 10.5.23 abläuft. Das Test Zertifikat läuft am 12.11.22 ab.
+4) Signing: "Sign the ClickOnce manifests": Hier für Prod das Zertifikat
+Schiffsmelder CA auswählen, das am 02/24 abläuft.
Auswahl über "Select from Store.."
-5) Release build einstellen
+5) Release Build einstellen
6) komplett neu bauen (clean!)
-7) In Publish -> Options -> Description bei Product name "ENI" statt "ENI Testversion"
-8) Publish now
-9) Upload
-10) last/next Version.txt pflegen
+7) In Description bei Product name "ENI" statt "ENI Testversion"
diff --git a/misc/intermediate_bsmd-emswe.eu.crt b/misc/intermediate_bsmd-emswe.eu.crt
new file mode 100644
index 00000000..a19e1487
--- /dev/null
+++ b/misc/intermediate_bsmd-emswe.eu.crt
@@ -0,0 +1,27 @@
+-----BEGIN CERTIFICATE-----
+MIIEqjCCA5KgAwIBAgIQAnmsRYvBskWr+YBTzSybsTANBgkqhkiG9w0BAQsFADBh
+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
+d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
+QTAeFw0xNzExMjcxMjQ2MTBaFw0yNzExMjcxMjQ2MTBaMG4xCzAJBgNVBAYTAlVT
+MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
+b20xLTArBgNVBAMTJEVuY3J5cHRpb24gRXZlcnl3aGVyZSBEViBUTFMgQ0EgLSBH
+MTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALPeP6wkab41dyQh6mKc
+oHqt3jRIxW5MDvf9QyiOR7VfFwK656es0UFiIb74N9pRntzF1UgYzDGu3ppZVMdo
+lbxhm6dWS9OK/lFehKNT0OYI9aqk6F+U7cA6jxSC+iDBPXwdF4rs3KRyp3aQn6pj
+pp1yr7IB6Y4zv72Ee/PlZ/6rK6InC6WpK0nPVOYR7n9iDuPe1E4IxUMBH/T33+3h
+yuH3dvfgiWUOUkjdpMbyxX+XNle5uEIiyBsi4IvbcTCh8ruifCIi5mDXkZrnMT8n
+wfYCV6v6kDdXkbgGRLKsR4pucbJtbKqIkUGxuZI2t7pfewKRc5nWecvDBZf3+p1M
+pA8CAwEAAaOCAU8wggFLMB0GA1UdDgQWBBRVdE+yck/1YLpQ0dfmUVyaAYca1zAf
+BgNVHSMEGDAWgBQD3lA1VtFMu2bwo+IbG8OXsj3RVTAOBgNVHQ8BAf8EBAMCAYYw
+HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8C
+AQAwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdp
+Y2VydC5jb20wQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQu
+Y29tL0RpZ2lDZXJ0R2xvYmFsUm9vdENBLmNybDBMBgNVHSAERTBDMDcGCWCGSAGG
+/WwBAjAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BT
+MAgGBmeBDAECATANBgkqhkiG9w0BAQsFAAOCAQEAK3Gp6/aGq7aBZsxf/oQ+TD/B
+SwW3AU4ETK+GQf2kFzYZkby5SFrHdPomunx2HBzViUchGoofGgg7gHW0W3MlQAXW
+M0r5LUvStcr82QDWYNPaUy4taCQmyaJ+VB+6wxHstSigOlSNF2a6vg4rgexixeiV
+4YSB03Yqp2t3TeZHM9ESfkus74nQyW7pRGezj+TC44xCagCQQOzzNmzEAP2SnCrJ
+sNE2DpRVMnL8J6xBRdjmOsC3N6cQuKuRXbzByVBjCqAA8t1L0I+9wXJerLPyErjy
+rMKWaBFLmfK/AHNF4ZihwPGOc7w6UHczBZXH5RFzJNnww+WnKuTPI0HfnVH8lg==
+-----END CERTIFICATE-----
diff --git a/misc/root_bsmd-emswe.eu.crt b/misc/root_bsmd-emswe.eu.crt
new file mode 100644
index 00000000..8f3aea9d
--- /dev/null
+++ b/misc/root_bsmd-emswe.eu.crt
@@ -0,0 +1,22 @@
+-----BEGIN CERTIFICATE-----
+MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh
+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
+d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
+QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT
+MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
+b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG
+9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB
+CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97
+nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt
+43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P
+T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4
+gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO
+BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR
+TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw
+DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr
+hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg
+06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF
+PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls
+YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
+CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
+-----END CERTIFICATE-----
\ No newline at end of file