diff --git a/ENI-2/ENI2/ENI2/ENI2.csproj b/ENI-2/ENI2/ENI2/ENI2.csproj
index f768d517..827f77e8 100644
--- a/ENI-2/ENI2/ENI2/ENI2.csproj
+++ b/ENI-2/ENI2/ENI2/ENI2.csproj
@@ -78,6 +78,30 @@
+
+ packages\Extended.Wpf.Toolkit.3.0\lib\net40\Xceed.Wpf.AvalonDock.dll
+ True
+
+
+ packages\Extended.Wpf.Toolkit.3.0\lib\net40\Xceed.Wpf.AvalonDock.Themes.Aero.dll
+ True
+
+
+ packages\Extended.Wpf.Toolkit.3.0\lib\net40\Xceed.Wpf.AvalonDock.Themes.Metro.dll
+ True
+
+
+ packages\Extended.Wpf.Toolkit.3.0\lib\net40\Xceed.Wpf.AvalonDock.Themes.VS2010.dll
+ True
+
+
+ packages\Extended.Wpf.Toolkit.3.0\lib\net40\Xceed.Wpf.DataGrid.dll
+ True
+
+
+ packages\Extended.Wpf.Toolkit.3.0\lib\net40\Xceed.Wpf.Toolkit.dll
+ True
+
diff --git a/ENI-2/ENI2/ENI2/SucheControl.xaml b/ENI-2/ENI2/ENI2/SucheControl.xaml
index eae5fda9..8cead552 100644
--- a/ENI-2/ENI2/ENI2/SucheControl.xaml
+++ b/ENI-2/ENI2/ENI2/SucheControl.xaml
@@ -3,11 +3,45 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
xmlns:local="clr-namespace:ENI2"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ENI-2/ENI2/ENI2/SucheControl.xaml.cs b/ENI-2/ENI2/ENI2/SucheControl.xaml.cs
index b29950e1..203c3058 100644
--- a/ENI-2/ENI2/ENI2/SucheControl.xaml.cs
+++ b/ENI-2/ENI2/ENI2/SucheControl.xaml.cs
@@ -14,6 +14,8 @@ using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
+using Xceed.Wpf.Toolkit;
+
namespace ENI2
{
///
@@ -25,5 +27,21 @@ namespace ENI2
{
InitializeComponent();
}
+
+ private void Button_Click(object sender, RoutedEventArgs e)
+ {
+ // Eingabefelder löschen
+ textBoxHafen.Text = string.Empty;
+ textBoxId.Text = string.Empty;
+ textBoxIMO.Text = string.Empty;
+ textBoxName.Text = string.Empty;
+ textBoxTicketNr.Text = string.Empty;
+ dateTimePickerETA.Text = string.Empty;
+ }
+
+ private void buttonSuche_Click(object sender, RoutedEventArgs e)
+ {
+
+ }
}
}
diff --git a/ENI-2/ENI2/ENI2/packages.config b/ENI-2/ENI2/ENI2/packages.config
index 7c1eb7f1..347b1ec7 100644
--- a/ENI-2/ENI2/ENI2/packages.config
+++ b/ENI-2/ENI2/ENI2/packages.config
@@ -3,5 +3,6 @@
Sample license text.
-->
+
\ No newline at end of file
diff --git a/Stundensheet.xlsx b/Stundensheet.xlsx
index 6253e2d1..d122305f 100644
Binary files a/Stundensheet.xlsx and b/Stundensheet.xlsx differ
diff --git a/nsw/Source/SQL/Update_3.5.1_To_4.0.sql b/nsw/Source/SQL/Update_3.5.1_To_4.0.sql
index 5f4b00d4..24b1fe1a 100644
--- a/nsw/Source/SQL/Update_3.5.1_To_4.0.sql
+++ b/nsw/Source/SQL/Update_3.5.1_To_4.0.sql
@@ -27,3 +27,12 @@ GO
-- bis hierhin schon aktualisiert
+PRINT N'Altering [dbo].[LADG]...';
+
+
+GO
+ALTER TABLE [dbo].[LADG]
+ ADD [CargoCodeNST_3] NVARCHAR (8) NULL;
+
+
+GO
\ No newline at end of file
diff --git a/nsw/Source/bsmd.ExcelReadService/ExcelReader.cs b/nsw/Source/bsmd.ExcelReadService/ExcelReader.cs
index 54487d73..22997597 100644
--- a/nsw/Source/bsmd.ExcelReadService/ExcelReader.cs
+++ b/nsw/Source/bsmd.ExcelReadService/ExcelReader.cs
@@ -106,6 +106,28 @@ namespace bsmd.ExcelReadService
return val;
}
+ internal int? ReadCargoLACode(string lookup)
+ {
+ int result;
+
+ string val = ReadText(lookup);
+ if (val.IsNullOrEmpty()) return null;
+
+ if(int.TryParse(val, out result))
+ {
+ if ((result >= 10) && (result <= 99))
+ this.Conf.ConfirmText(lookup, val, ReadState.OK);
+ else
+ this.Conf.ConfirmText(lookup, val, ReadState.WARN);
+ return result;
+ }
+ else
+ {
+ this.Conf.ConfirmText(lookup, val, ReadState.FAIL);
+ return null;
+ }
+ }
+
internal byte? ReadGender(string lookup)
{
byte? result = null;
@@ -267,11 +289,28 @@ namespace bsmd.ExcelReadService
if (val == "III") result = 3;
if (val.Equals("NONE", StringComparison.OrdinalIgnoreCase)) result = 0;
- this.Conf.ConfirmText(lookup, val, result.HasValue ? ReadState.OK : ReadState.WARN);
+ this.Conf.ConfirmText(lookup, val, result.HasValue ? ReadState.OK : ReadState.FAIL);
}
return result;
}
+ internal string ReadShip2ShipActivityType(string lookup)
+ {
+ string val = this.ReadText(lookup);
+ bool isValid = false;
+ if(!val.IsNullOrEmpty())
+ {
+ int typeVal;
+ if(int.TryParse(val, out typeVal))
+ {
+ if ((typeVal >= 1) && (typeVal <= 23))
+ isValid = true;
+ }
+ }
+ this.Conf.ConfirmText(lookup, val, isValid ? ReadState.OK : ReadState.FAIL);
+ return val;
+ }
+
internal byte? ReadConditionTanks(string lookup)
{
string val = this.ReadText(lookup);
diff --git a/nsw/Source/bsmd.ExcelReadService/Util.cs b/nsw/Source/bsmd.ExcelReadService/Util.cs
index 8583ee83..8b28a554 100644
--- a/nsw/Source/bsmd.ExcelReadService/Util.cs
+++ b/nsw/Source/bsmd.ExcelReadService/Util.cs
@@ -1413,7 +1413,7 @@ namespace bsmd.ExcelReadService
reader.Conf.ConfirmText(crewName, crewNameString, ExcelReader.ReadState.OK);
} else
{
- reader.Conf.ConfirmText(crewName, null, ExcelReader.ReadState.WARN);
+ reader.Conf.ConfirmText(crewName, null, ExcelReader.ReadState.FAIL);
}
}
@@ -1696,8 +1696,7 @@ namespace bsmd.ExcelReadService
s2sActivity.ShipToShipActivityLocationCoordinatesLongitude = null;
s2sActivity.ShipToShipActivityDateFrom = reader.ReadDate(s2sFromDate);
s2sActivity.ShipToShipActivityDateTo = reader.ReadDate(s2sToDate);
- s2sActivity.ShipToShipActivityType = reader.ReadText(s2sActivityString);
- reader.Conf.ConfirmText(s2sActivityString, s2sActivity.ShipToShipActivityType, ExcelReader.ReadState.OK);
+ s2sActivity.ShipToShipActivityType = reader.ReadShip2ShipActivityType(s2sActivityString);
s2sActivity.ShipToShipActivitySecurityMattersToReport = reader.ReadText(s2sSec);
reader.Conf.ConfirmText(s2sSec, s2sActivity.ShipToShipActivitySecurityMattersToReport, s2sActivity.ShipToShipActivitySecurityMattersToReport.IsNullOrEmpty() ? ExcelReader.ReadState.NONE : ExcelReader.ReadState.OK);
}
@@ -1711,21 +1710,22 @@ namespace bsmd.ExcelReadService
static void ScanBKRA(List messages, MessageCore messageCore, ExcelReader reader)
{
Message bkraMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.BKRA);
- for (int i = 0; i < bkraMessage.NumberOfExcelRows; i++)
+ for (int i = 1; i <= bkraMessage.NumberOfExcelRows; i++)
{
- string lnQuantity = string.Format("BKRA.BunkerFuelQuantity_TNE_{0}", i + 1);
- string lnType = string.Format("BKRA.BunkerFuelType_{0}", i + 1);
- BRKA bkra = bkraMessage.GetSublistElementWithIdentifier((i + 1).ToString()) as BRKA;
+ string lnQuantity = string.Format("BKRA.BunkerFuelQuantity_TNE_{0}", i);
+ string lnType = string.Format("BKRA.BunkerFuelType_{0}", i);
+
+ BRKA bkra = bkraMessage.GetSublistElementWithIdentifier((i).ToString()) as BRKA;
if (bkra == null)
{
bkra = new BRKA();
- bkra.Identifier = (i + 1).ToString();
+ bkra.Identifier = (i).ToString();
bkra.MessageHeader = bkraMessage;
bkraMessage.Elements.Add(bkra);
}
bkra.BunkerFuelQuantity_TNE = reader.ReadNumber(lnQuantity);
- bkra.BunkerFuelType = reader.ReadText(lnType);
+ bkra.BunkerFuelType = reader.ReadText(lnType);
reader.Conf.ConfirmText(lnType, bkra.BunkerFuelType, ExcelReader.ReadState.OK);
// "OK" Quantity falls Type nicht angegeben
@@ -1751,15 +1751,15 @@ namespace bsmd.ExcelReadService
static void ScanBKRD(List messages, MessageCore messageCore, ExcelReader reader)
{
Message bkrdMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.BKRD);
- for (int i = 0; i < bkrdMessage.NumberOfExcelRows; i++)
+ for (int i = 1; i <= bkrdMessage.NumberOfExcelRows; i++)
{
- string lnQuantity = string.Format("BKRD.BunkerFuelQuantity_TNE_{0}", i + 1);
- string lnType = string.Format("BKRD.BunkerFuelType_{0}", i + 1);
- BRKD bkrd = bkrdMessage.GetSublistElementWithIdentifier((i + 1).ToString()) as BRKD;
+ string lnQuantity = string.Format("BKRD.BunkerFuelQuantity_TNE_{0}", i);
+ string lnType = string.Format("BKRD.BunkerFuelType_{0}", i);
+ BRKD bkrd = bkrdMessage.GetSublistElementWithIdentifier((i).ToString()) as BRKD;
if (bkrd == null)
{
bkrd = new BRKD();
- bkrd.Identifier = (i + 1).ToString();
+ bkrd.Identifier = (i).ToString();
bkrd.MessageHeader = bkrdMessage;
bkrdMessage.Elements.Add(bkrd);
}
@@ -1789,23 +1789,43 @@ namespace bsmd.ExcelReadService
#region TOWA
static void ScanTOWA(List messages, MessageCore messageCore, ExcelReader reader)
- {
- // TOWA ist eigentlich 1:n, es ist aber keine Liste im Sheet!
+ {
Message towaMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.TOWA);
+ for (int i = 1; i <= towaMessage.NumberOfExcelRows; i++)
+ {
+ string tName = string.Format("TOWA.TowageOnArrivalName_{0}", i);
+ string tFlag = string.Format("TOWA.TowageOnArrivalFlag_{0}", i);
+ string tPoC = string.Format("TOWA.TowageOnArrivalPurposeOfCall_{0}", i);
+ string tDraft = string.Format("TOWA.TowageOnArrivalDraught_DMT_{0}", i);
+ string tGT = string.Format("TOWA.TowageOnArrivalGrossTonnage_{0}", i);
+ string tLen = string.Format("TOWA.TowageOnArrivalLengthOverall_MTR_{0}", i);
+ string tBeam = string.Format("TOWA.TowageOnArrivalBeam_MTR_{0}", i);
+ string tOp = string.Format("TOWA.TowageOnArrivalOperatorCompanyName_{0}", i);
- string towageName = reader.ReadText("TOWA.TowageOnArrivalName_1");
- if (!towageName.IsNullOrEmpty())
- {
- reader.Conf.ConfirmText("TOWA.TowageOnArrivalName_1", towageName, ExcelReader.ReadState.OK);
- if (towaMessage.Elements.Count == 0)
- {
- TOWA newTOWA = new TOWA();
- newTOWA.MessageHeader = towaMessage;
- towaMessage.Elements.Add(newTOWA);
- }
+ string towageName = reader.ReadText(tName);
+ if (towageName.IsNullOrEmpty()) continue;
- TOWA towa = towaMessage.Elements[0] as TOWA;
- Util.ScanMessage(towa, reader);
+ TOWA towa = towaMessage.GetSublistElementWithIdentifier((i).ToString()) as TOWA;
+ if (towa == null)
+ {
+ towa = new TOWA();
+ towa.Identifier = (i).ToString();
+ towa.MessageHeader = towaMessage;
+ towaMessage.Elements.Add(towa);
+ }
+
+ towa.TowageOnArrivalName = towageName;
+ reader.Conf.ConfirmText(tName, towageName, ExcelReader.ReadState.OK);
+ towa.TowageOnArrivalFlag = reader.ReadText(tFlag);
+ reader.Conf.ConfirmText(tFlag, towa.TowageOnArrivalFlag, towa.TowageOnArrivalFlag.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK);
+ towa.TowageOnArrivalPurposeOfCall = reader.ReadText(tPoC);
+ reader.Conf.ConfirmText(tPoC, towa.TowageOnArrivalPurposeOfCall, towa.TowageOnArrivalPurposeOfCall.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK);
+ towa.TowageOnArrivalDraught_DMT = reader.ReadNumber(tDraft);
+ towa.TowageOnArrivalGrossTonnage = (int?) reader.ReadNumber(tGT);
+ towa.TowageOnArrivalLengthOverall_MTR = reader.ReadNumber(tLen);
+ towa.TowageOnArrivalBeam_MTR = reader.ReadNumber(tBeam);
+ towa.TowageOnArrivalOperatorCompanyName = reader.ReadText(tOp);
+ reader.Conf.ConfirmText(tOp, towa.TowageOnArrivalOperatorCompanyName, towa.TowageOnArrivalOperatorCompanyName.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK);
}
}
@@ -1814,22 +1834,40 @@ namespace bsmd.ExcelReadService
#region TOWD
static void ScanTOWD(List messages, MessageCore messageCore, ExcelReader reader)
- {
- // TOWD ist 1:n, es ist aber keine Liste im Sheet!
+ {
Message towdMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.TOWD);
- string towageName = reader.ReadText("TOWD.TowageOnDepartureName_1");
- if(!towageName.IsNullOrEmpty())
- {
- reader.Conf.ConfirmText("TOWD.TowageOnDepartureName_1", towageName, ExcelReader.ReadState.OK);
- if(towdMessage.Elements.Count == 0)
- {
- TOWD newTOWD = new TOWD();
- newTOWD.MessageHeader = towdMessage;
- towdMessage.Elements.Add(newTOWD);
- }
- TOWD towd = towdMessage.Elements[0] as TOWD;
- Util.ScanMessage(towd, reader);
+ for (int i = 1; i <= towdMessage.NumberOfExcelRows; i++)
+ {
+ string tName = string.Format("TOWD.TowageOnDepartureName_{0}", i);
+ string tFlag = string.Format("TOWD.TowageOnDepartureFlag_{0}", i);
+ string tDraft = string.Format("TOWD.TowageOnDepartureDraught_DMT_{0}", i);
+ string tLen = string.Format("TOWD.TowageOnDepartureLengthOverall_MTR_{0}", i);
+ string tBeam = string.Format("TOWD.TowageOnDepartureBeam_MTR_{0}", i);
+ string tOp = string.Format("TOWD.TowageOnDepartureOperatorCompanyName_{0}", i);
+
+ string towageName = reader.ReadText(tName);
+ if (towageName.IsNullOrEmpty()) continue;
+
+ TOWD towd = towdMessage.GetSublistElementWithIdentifier((i).ToString()) as TOWD;
+ if (towd == null)
+ {
+ towd = new TOWD();
+ towd.Identifier = (i).ToString();
+ towd.MessageHeader = towdMessage;
+ towdMessage.Elements.Add(towd);
+ }
+
+ towd.TowageOnDepartureName = towageName;
+ reader.Conf.ConfirmText(tName, towageName, ExcelReader.ReadState.OK);
+ towd.TowageOnDepartureFlag = reader.ReadText(tFlag);
+ reader.Conf.ConfirmText(tFlag, towd.TowageOnDepartureFlag, towd.TowageOnDepartureFlag.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK);
+ towd.TowageOnDepartureDraught_DMT = reader.ReadNumber(tDraft);
+ towd.TowageOnDepartureLengthOverall_MTR = reader.ReadNumber(tLen);
+ towd.TowageOnDepartureBeam_MTR = reader.ReadNumber(tBeam);
+ towd.TowageOnDepartureOperatorCompanyName = reader.ReadText(tOp);
+ reader.Conf.ConfirmText(tOp, towd.TowageOnDepartureOperatorCompanyName, towd.TowageOnDepartureOperatorCompanyName.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK);
+
}
}
@@ -1872,6 +1910,10 @@ namespace bsmd.ExcelReadService
Util.ScanMessage(serv, reader);
if (serv.ServiceBeneficiary.IsNullOrEmpty() && serv.ServiceInvoiceRecipient.IsNullOrEmpty())
servMessage.Elements.Remove(serv);
+ if (serv.ServiceBeneficiary.IsNullOrEmpty()) reader.Conf.ConfirmText("SERV.ServiceBeneficiary", null, ExcelReader.ReadState.FAIL);
+ if (serv.ServiceInvoiceRecipient.IsNullOrEmpty()) reader.Conf.ConfirmText("SERV.ServiceInvoiceRecipient", null, ExcelReader.ReadState.FAIL);
+
+
}
#endregion
@@ -1928,6 +1970,8 @@ namespace bsmd.ExcelReadService
string lnCGQ = string.Format("LADG.CargoGrossQuantity_TNE_{0}", i + 1);
string lnLoad = string.Format("LADG.CargoPortOfLoading_{0}", i + 1);
string lnDis = string.Format("LADG.CargoPortOfDischarge_{0}", i + 1);
+ string lnLACode = string.Format("LADG.CargoLACode_{0}", i + 1);
+ string lnZusatz = string.Format("LADG.CargoTypeZusatz_{0}", i + 1);
LADG ladg = ladgMessage.GetSublistElementWithIdentifier((i + 1).ToString()) as LADG;
if (ladg == null)
@@ -1940,7 +1984,14 @@ namespace bsmd.ExcelReadService
ladg.CargoHandlingType = reader.ReadCargoHandlingType(lnCHT);
- ladg.CargoCodeNST = reader.ReadText(lnType);
+ // Transit-Ladung für DE nicht übernehmen!
+ if ((reader.Mode == ExcelReader.CountryMode.DE) && ((ladg.CargoHandlingType ?? 0) == 2))
+ {
+ ladgMessage.Elements.Remove(ladg);
+ continue;
+ }
+
+ ladg.CargoCodeNST = reader.ReadText(lnType);
// Cargo Type Freitext in DK
if(reader.Mode == ExcelReader.CountryMode.DK)
{
@@ -1960,8 +2011,32 @@ namespace bsmd.ExcelReadService
{
reader.Conf.ConfirmText(lnType, ladg.CargoCodeNST, ExcelReader.ReadState.OK);
}
+ if (ladg.CargoCodeNST.IsNullOrEmpty())
+ reader.Conf.ConfirmText(lnType, null, ExcelReader.ReadState.FAIL);
}
+ ladg.CargoLACode = reader.ReadCargoLACode(lnLACode);
+
+ ladg.CargoCodeNST_3 = reader.ReadText(lnZusatz);
+ if (!ladg.CargoCodeNST_3.IsNullOrEmpty())
+ {
+ if (ladg.CargoCodeNST_3.Length == 1)
+ {
+ reader.Conf.ConfirmText(lnZusatz, ladg.CargoCodeNST_3, ExcelReader.ReadState.OK);
+ }
+ else
+ {
+ if(ladg.CargoCodeNST_3.Length > 8)
+ {
+ ladg.CargoCodeNST_3 = ladg.CargoCodeNST_3.Substring(0, 8);
+ reader.Conf.ConfirmText(lnZusatz, ladg.CargoCodeNST_3, ExcelReader.ReadState.FAIL);
+ } else
+ {
+ reader.Conf.ConfirmText(lnZusatz, ladg.CargoCodeNST_3, ExcelReader.ReadState.WARN);
+ }
+ }
+ }
+
ladg.CargoNumberOfItems = (int?) reader.ReadNumber(lnCNOI);
ladg.CargoGrossQuantity_TNE = reader.ReadNumber(lnCGQ);
@@ -2330,8 +2405,9 @@ namespace bsmd.ExcelReadService
bool isTransit = false;
// first check with visit/transit ID
- string visitTransitId = reader.ReadText("ID");
- if (visitTransitId != null)
+ string visitTransitId = reader.ReadText("ID");
+
+ if (visitTransitId != null)
{
if (bsmd.database.Util.IsVisitId(visitTransitId))
{
@@ -2349,9 +2425,7 @@ namespace bsmd.ExcelReadService
if (result.PoC.Substring(0, 2) == "DK")
reader.SetConfirmation(Properties.Settings.Default.ConfirmationDK);
else
- reader.SetConfirmation(Properties.Settings.Default.ConfirmationDE);
-
- reader.Conf.ConfirmText("ID", visitTransitId, ExcelReader.ReadState.OK);
+ reader.SetConfirmation(Properties.Settings.Default.ConfirmationDE);
// copy poc/imo/eta to return sheet
poc = reader.ReadText("Visit.PortOfCall");
@@ -2457,9 +2531,10 @@ namespace bsmd.ExcelReadService
reader.Conf.ConfirmText("Visit.PortOfCall_DK", poc, ExcelReader.ReadState.FAIL);
}
}
-
- if (result == null)
+ reader.Conf.ConfirmText("ID", visitTransitId, ExcelReader.ReadState.OK);
+
+ if (result == null)
{
if (imo == null)
{
@@ -2546,7 +2621,8 @@ namespace bsmd.ExcelReadService
Message newMessage = new Message();
newMessage.MessageNotificationClass = type;
messages.Add(newMessage);
- newMessage.MessageCore = core;
+ newMessage.MessageCore = core;
+ newMessage.MessageCoreId = core.Id;
return newMessage;
}
diff --git a/nsw/Source/bsmd.database/LADG.cs b/nsw/Source/bsmd.database/LADG.cs
index d8b6ffcc..9b954ca8 100644
--- a/nsw/Source/bsmd.database/LADG.cs
+++ b/nsw/Source/bsmd.database/LADG.cs
@@ -79,6 +79,10 @@ namespace bsmd.database
[Validation(ValidationCode.LOCODE)]
public string PortOfDischarge { get; set; }
+ [MaxLength(1)]
+ [ShowReport]
+ public string CargoCodeNST_3 { get; set; }
+
public string Identifier { get; set; }
public static Lazy> LACodes
@@ -115,25 +119,26 @@ namespace bsmd.database
scmd.Parameters.AddWithNullableValue("@P7", this.PortOfDischarge);
scmd.Parameters.AddWithNullableValue("@P8", this.Identifier);
scmd.Parameters.AddWithNullableValue("@P9", this.CargoLACode);
+ scmd.Parameters.AddWithNullableValue("@P10", this.CargoCodeNST_3);
if (this.IsNew)
{
scmd.CommandText = string.Format("INSERT INTO {0} (MessageHeaderId, CargoHandlingType, CargoCodeNST, " +
- "CargoNumberOfItems, CargoGrossQuantity_TNE, PortOfLoading, PortOfDischarge, Identifier, CargoLACode) VALUES " +
- "( @P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9 )", this.Tablename);
+ "CargoNumberOfItems, CargoGrossQuantity_TNE, PortOfLoading, PortOfDischarge, Identifier, CargoLACode, CargoCodeNST_3) VALUES " +
+ "( @P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10 )", this.Tablename);
}
else
{
scmd.Parameters.AddWithValue(@"ID", this.Id);
scmd.CommandText = string.Format("UPDATE {0} SET CargoHandlingType = @P2, CargoCodeNST = @P3, CargoNumberOfItems = @P4, " +
- "CargoGrossQuantity_TNE = @P5, PortOfLoading = @P6, PortOfDischarge = @P7, CargoLACode = @P9 WHERE Id = @ID", this.Tablename);
+ "CargoGrossQuantity_TNE = @P5, PortOfLoading = @P6, PortOfDischarge = @P7, CargoLACode = @P9, CargoCodeNST_3 = @P10 WHERE Id = @ID", this.Tablename);
}
}
public override void PrepareLoadCommand(System.Data.IDbCommand cmd, Message.LoadFilter filter, params object[] criteria)
{
string query = string.Format("SELECT Id, CargoHandlingType, CargoCodeNST, CargoNumberOfItems, CargoGrossQuantity_TNE, " +
- "PortOfLoading, PortOfDischarge, Identifier, CargoLACode FROM {0}",
+ "PortOfLoading, PortOfDischarge, Identifier, CargoLACode, CargoCodeNST_3 FROM {0}",
this.Tablename);
switch (filter)
@@ -168,6 +173,7 @@ namespace bsmd.database
if (!reader.IsDBNull(6)) ladg.PortOfDischarge = reader.GetString(6);
if (!reader.IsDBNull(7)) ladg.Identifier = reader.GetString(7);
if (!reader.IsDBNull(8)) ladg.CargoLACode = reader.GetInt32(8);
+ if (!reader.IsDBNull(9)) ladg.CargoCodeNST_3 = reader.GetString(9);
result.Add(ladg);
}
reader.Close();
diff --git a/nsw/Source/bsmd.database/Message.cs b/nsw/Source/bsmd.database/Message.cs
index 2a5f693f..b71687ec 100644
--- a/nsw/Source/bsmd.database/Message.cs
+++ b/nsw/Source/bsmd.database/Message.cs
@@ -468,8 +468,8 @@ namespace bsmd.database
case NotificationClass.CREWD: return 40;
case NotificationClass.PAS: return 30;
case NotificationClass.PASD: return 30;
- case NotificationClass.TOWA: return 1;
- case NotificationClass.TOWD: return 1;
+ case NotificationClass.TOWA: return 5;
+ case NotificationClass.TOWD: return 5;
case NotificationClass.STO: return 10;
default:
diff --git a/nsw/Source/bsmd.database/MessageCore.cs b/nsw/Source/bsmd.database/MessageCore.cs
index 0c1ac5f4..4eda3de1 100644
--- a/nsw/Source/bsmd.database/MessageCore.cs
+++ b/nsw/Source/bsmd.database/MessageCore.cs
@@ -182,7 +182,7 @@ namespace bsmd.database
scmd.Parameters.AddWithValue("@P24", this.Incoming ? 1 : 0);
scmd.Parameters.AddWithNullableValue("@P25", this.DefaultReportingPartyId);
scmd.Parameters.AddWithValue("@P26", this.CreateExcel ? 1 : 0);
- scmd.Parameters.AddWithValue("@P27", this.EditedBy);
+ scmd.Parameters.AddWithNullableValue("@P27", this.EditedBy);
if (this.IsNew)
{
diff --git a/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs b/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs
index f7b7e435..d28b01ce 100644
--- a/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs
+++ b/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs
@@ -2,6 +2,6 @@
[assembly: AssemblyCompany("Informatikbüro Daniel Schick")]
[assembly: AssemblyProduct("BSMD NSW interface")]
-[assembly: AssemblyInformationalVersion("3.4.1")]
+[assembly: AssemblyInformationalVersion("3.4.4")]
[assembly: AssemblyCopyright("Copyright © 2014-2017 Informatikbüro Daniel Schick. All rights reserved.")]
[assembly: AssemblyTrademark("")]
\ No newline at end of file
diff --git a/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs b/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs
index 775e618c..737ebda7 100644
--- a/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs
+++ b/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs
@@ -1,4 +1,4 @@
using System.Reflection;
-[assembly: AssemblyVersion("3.4.1.*")]
+[assembly: AssemblyVersion("3.4.4.*")]
diff --git a/nsw/Source/bsmd.database/TOWA.cs b/nsw/Source/bsmd.database/TOWA.cs
index 1b908e05..31af1abd 100644
--- a/nsw/Source/bsmd.database/TOWA.cs
+++ b/nsw/Source/bsmd.database/TOWA.cs
@@ -24,85 +24,69 @@ namespace bsmd.database
#region Properties
[ShowReport]
- [Validation(ValidationCode.NOT_NULL)]
- [LookupName("TOWA.TowageOnArrivalName_1")]
+ [Validation(ValidationCode.NOT_NULL)]
[MaxLength(100)]
public string TowageOnArrivalName { get; set; }
[ShowReport]
- [Validation(ValidationCode.FLAG_CODE)]
- [LookupName("TOWA.TowageOnArrivalFlag_1")]
+ [Validation(ValidationCode.FLAG_CODE)]
[MaxLength(2)]
public string TowageOnArrivalFlag { get; set; }
- [ShowReport]
- [LookupName("TOWA.TowageOnArrivalOperatorCompanyName_1")]
+ [ShowReport]
[MaxLength(100)]
public string TowageOnArrivalOperatorCompanyName { get; set; }
- [ShowReport]
- [LookupName("TOWA.TowageOnArrivalOperatorStreetAndNumber_1")]
+ [ShowReport]
[MaxLength(100)]
public string TowageOnArrivalOperatorStreetNameAndNumber { get; set; }
- [ShowReport]
- [LookupName("TOWA.TowageOnArrivalOperatorPostalCode_1")]
+ [ShowReport]
[MaxLength(24)]
public string TowageOnArrivalOperatorPostalCode { get; set; }
- [ShowReport]
- [LookupName("TOWA.TowageOnArrivalOperatorPostalCode_1")]
+ [ShowReport]
[MaxLength(100)]
public string TowageOnArrivalOperatorCity { get; set; }
- [ShowReport]
- [LookupName("TOWA.TowageOnArrivalOperatorCountry_1")]
+ [ShowReport]
[MaxLength(100)]
public string TowageOnArrivalOperatorCountry { get; set; }
- [ShowReport]
- [LookupName("TOWA.TowageOnArrivalOperatorPhone_1")]
+ [ShowReport]
[MaxLength(100)]
public string TowageOnArrivalOperatorPhone { get; set; }
- [ShowReport]
- [LookupName("TOWA.TowageOnArrivalOperatorFax_1")]
+ [ShowReport]
[MaxLength(100)]
public string TowageOnArrivalOperatorFax { get; set; }
- [ShowReport]
- [LookupName("TOWA.TowageOnArrivalOperatorEMail_1")]
+ [ShowReport]
[MaxLength(100)]
public string TowageOnArrivalOperatorEmail { get; set; }
[ShowReport]
- [Validation(ValidationCode.INT_GT_ZERO)]
- [LookupName("TOWA.TowageOnArrivalGrossTonnage_1")]
+ [Validation(ValidationCode.INT_GT_ZERO)]
public int? TowageOnArrivalGrossTonnage { get; set; }
[ShowReport]
- [Validation(ValidationCode.DOUBLE_GT_ZERO)]
- [LookupName("TOWA.TowageOnArrivalLengthOverall_MTR_1")]
+ [Validation(ValidationCode.DOUBLE_GT_ZERO)]
public double? TowageOnArrivalLengthOverall_MTR { get; set; }
[ShowReport]
- [Validation(ValidationCode.DOUBLE_GT_ZERO)]
- [LookupName("TOWA.TowageOnArrivalBeam_MTR_1")]
+ [Validation(ValidationCode.DOUBLE_GT_ZERO)]
public double? TowageOnArrivalBeam_MTR { get; set; }
[ShowReport]
- [Validation(ValidationCode.NOT_NULL)]
- [LookupName("TOWA.TowageOnArrivalPurposeOfCall_1")]
+ [Validation(ValidationCode.NOT_NULL)]
[MaxLength(100)]
public string TowageOnArrivalPurposeOfCall { get; set; }
[ShowReport]
- [Validation(ValidationCode.DOUBLE_GT_ZERO)]
- [LookupName("TOWA.TowageOnArrivalDraught_DMT_1")]
+ [Validation(ValidationCode.DOUBLE_GT_ZERO)]
public double? TowageOnArrivalDraught_DMT { get; set; }
- [ShowReport]
- [LookupName("TOWA.TowageOnArrivalRemarks_1")]
+ [ShowReport]
[MaxLength(255)]
public string TowageOnArrivalRemarks { get; set; }
diff --git a/nsw/Source/bsmd.database/TOWD.cs b/nsw/Source/bsmd.database/TOWD.cs
index 340ecb40..2fcbf393 100644
--- a/nsw/Source/bsmd.database/TOWD.cs
+++ b/nsw/Source/bsmd.database/TOWD.cs
@@ -25,67 +25,54 @@ namespace bsmd.database
#region Properties
[ShowReport]
- [Validation(ValidationCode.NOT_NULL)]
- [LookupName("TOWD.TowageOnDepartureName_1")]
+ [Validation(ValidationCode.NOT_NULL)]
[MaxLength(100)]
public string TowageOnDepartureName { get; set; }
- [ShowReport]
- [LookupName("TOWD.TowageOnDepartureFlag_1")]
+ [ShowReport]
[MaxLength(2)]
public string TowageOnDepartureFlag { get; set; }
- [ShowReport]
- [LookupName("TOWD.TowageOnDepartureOperatorCompanyName_1")]
+ [ShowReport]
[MaxLength(100)]
public string TowageOnDepartureOperatorCompanyName { get; set; }
- [ShowReport]
- [LookupName("TOWD.TowageOnDepartureOperatorStreetAndNumber_1")]
+ [ShowReport]
[MaxLength(100)]
public string TowageOnDepartureOperatorStreetNameAndNumber { get; set; }
- [ShowReport]
- [LookupName("TOWD.TowageOnDepartureOperatorPostalCode_1")]
+ [ShowReport]
[MaxLength(24)]
public string TowageOnDepartureOperatorPostalCode { get; set; }
- [ShowReport]
- [LookupName("TOWA.TowageOnArrivalOperatorCity_1")]
+ [ShowReport]
[MaxLength(100)]
public string TowageOnDepartureOperatorCity { get; set; }
- [ShowReport]
- [LookupName("TOWD.TowageOnDepartureOperatorCountry_1")]
+ [ShowReport]
[MaxLength(100)]
public string TowageOnDepartureOperatorCountry { get; set; }
- [ShowReport]
- [LookupName("TOWD.TowageOnDepartureOperatorPhone_1")]
+ [ShowReport]
[MaxLength(100)]
public string TowageOnDepartureOperatorPhone { get; set; }
- [ShowReport]
- [LookupName("TOWD.TowageOnDepartureOperatorFax_1")]
+ [ShowReport]
[MaxLength(100)]
public string TowageOnDepartureOperatorFax { get; set; }
- [ShowReport]
- [LookupName("TOWD.TowageOnDepartureOperatorEMail_1")]
+ [ShowReport]
[MaxLength(100)]
public string TowageOnDepartureOperatorEmail { get; set; }
- [ShowReport]
- [LookupName("TOWD.TowageOnDepartureLengthOverall_MTR_1")]
+ [ShowReport]
public double? TowageOnDepartureLengthOverall_MTR { get; set; }
- [ShowReport]
- [LookupName("TOWD.TowageOnDepartureBeam_MTR_1")]
+ [ShowReport]
public double? TowageOnDepartureBeam_MTR { get; set; }
[ShowReport]
- [Validation(ValidationCode.DOUBLE_GT_ZERO)]
- [LookupName("TOWD.TowageOnDepartureDraught_DMT_1")]
+ [Validation(ValidationCode.DOUBLE_GT_ZERO)]
public double? TowageOnDepartureDraught_DMT { get; set; }
[ShowReport]
diff --git a/nsw/Source/bsmd.dbh/Request.cs b/nsw/Source/bsmd.dbh/Request.cs
index 24bbc370..0bef12aa 100644
--- a/nsw/Source/bsmd.dbh/Request.cs
+++ b/nsw/Source/bsmd.dbh/Request.cs
@@ -616,27 +616,29 @@ namespace bsmd.dbh
if (ladg.CargoHandlingType.HasValue)
{
if (ladg.CargoHandlingType > 1) continue;
- cargo.CargoHandlingType = (HandlingType)(ladg.CargoHandlingType);
+ cargo.CargoHandlingType = (ladg.CargoHandlingType == 0) ? HandlingType.LOAD : HandlingType.DISCHARGE;
}
+
+ cargo.CargoCodeNST = ladg.CargoCodeNST;
if (!ladg.CargoCodeNST.IsNullOrEmpty())
{
if (cargo.CargoCodeNST.Length > 2)
{
cargo.CargoCodeNST = ladg.CargoCodeNST.Substring(0, 2);
- cargo.CargoCodeNST_3 = ladg.CargoCodeNST[3].ToString();
- }
- else
- {
- cargo.CargoCodeNST = ladg.CargoCodeNST;
}
}
+ if (!ladg.CargoCodeNST_3.IsNullOrEmpty())
+ cargo.CargoCodeNST_3 = ladg.CargoCodeNST_3.Substring(0, 1);
+
if (ladg.CargoLACode.HasValue)
cargo.CargoLACode = ladg.CargoLACode.Value;
+ cargo.CargoLACodeSpecified = ladg.CargoLACode.HasValue;
if (ladg.CargoGrossQuantity_TNE.HasValue)
cargo.CargoGrossQuantity_TNE = Decimal.Round((decimal) ladg.CargoGrossQuantity_TNE.Value, 3);
+
cargo.CargoNumberOfItemsSpecified = ladg.CargoNumberOfItems.HasValue;
if (ladg.CargoNumberOfItems.HasValue)
cargo.CargoNumberOfItems = ladg.CargoNumberOfItems.Value;
@@ -644,7 +646,7 @@ namespace bsmd.dbh
if (ladg.PortOfLoading.IsNullOrEmpty())
cargo.CargoPortOfLoading = "ZZUKN";
else
- cargo.CargoPortOfLoading = ladg.PortOfLoading;
+ cargo.CargoPortOfLoading = ladg.PortOfLoading;
if (ladg.PortOfDischarge.IsNullOrEmpty())
cargo.CargoPortOfDischarge = "ZZUKN";
@@ -815,11 +817,14 @@ namespace bsmd.dbh
choiceTypes2.Add(ItemsChoiceType2.StowawaysDetected);
mdhItems.Add(mdh.StowawaysDetected ?? false ? RootSECValidISSCOnBoard.Y : RootSECValidISSCOnBoard.N);
- foreach(StowawaysJoiningLocation sjl in mdh.StowawaysJoiningLocations)
- {
- choiceTypes2.Add(ItemsChoiceType2.StowawaysJoiningLocation);
- mdhItems.Add(sjl.StowawayJoiningLocation);
- }
+ choiceTypes2.Add(ItemsChoiceType2.StowawaysJoiningLocation);
+ string concatLocations = "";
+ foreach (StowawaysJoiningLocation sjl in mdh.StowawaysJoiningLocations)
+ {
+ if(!sjl.StowawayJoiningLocation.IsNullOrEmpty())
+ concatLocations = string.Format("{0} {1}", concatLocations, sjl.StowawayJoiningLocation);
+ }
+ mdhItems.Add(concatLocations);
choiceTypes2.Add(ItemsChoiceType2.SickAnimalOrPetOnBoard);
mdhItems.Add(mdh.SickAnimalOrPetOnBoard ?? false ? RootSECValidISSCOnBoard.Y : RootSECValidISSCOnBoard.N);
@@ -908,7 +913,7 @@ namespace bsmd.dbh
List choiceType3s = new List();
choiceType3s.Add(ItemsChoiceType3.ConfirmationOfCorrectnessAndSufficiency);
- wasteItems.Add(was.ConfirmationOfCorrectness ?? false ? RootSECValidISSCOnBoard.Y : RootSECValidISSCOnBoard.N);
+ wasteItems.Add(was.ConfirmationOfCorrectness ?? false ? "Y" : "N");
if (was.LastWasteDisposalDate.HasValue)
{
@@ -940,10 +945,9 @@ namespace bsmd.dbh
for (int j = 0; j < was.Waste.Count; j++)
{
choiceType3s.Add(ItemsChoiceType3.Waste);
- RootWASWaste rww = new RootWASWaste();
- wasteItems.Add(rww);
-
+ RootWASWaste rww = new RootWASWaste();
Waste waste = was.Waste[j];
+ if ((waste.WasteType ?? 0) == 0) continue; // not a valid waste type
rww.WasteType = new RootWASWasteWasteType();
rww.WasteType.WasteCode = waste.WasteType ?? 0;
rww.WasteType.WasteDescription = waste.WasteDescription;
@@ -956,7 +960,8 @@ namespace bsmd.dbh
rww.WasteDetails.WasteAmountRetained_MTQ = decimal.Round((decimal)(waste.WasteAmountRetained_MTQ ?? 0), 3);
rww.WasteDetails.WasteAmountGeneratedTillNextPort_MTQ = decimal.Round((decimal)(waste.WasteAmountGeneratedTillNextPort_MTQ ?? 0), 3);
rww.WasteDetails.WasteDisposalPort = waste.WasteDisposalPort;
- if (rww.WasteDetails.WasteDisposalPort.IsNullOrEmpty()) rww.WasteDetails.WasteDisposalPort = "ZZUKN";
+ if (rww.WasteDetails.WasteDisposalPort.IsNullOrEmpty()) rww.WasteDetails.WasteDisposalPort = "ZZUKN";
+ wasteItems.Add(rww);
}
rootWAS.ItemsElementName = choiceType3s.ToArray();