3.4.4 Stand "Vor" der Umstellung auf NSW 4.0: Es gibt immer noch 3 Meldeklassen, die nicht ins ANSW übertragen werden: SEC, MDH und WAS (wahrscheinlich liegt es an den untergeordneten Listen)

This commit is contained in:
Daniel Schick 2017-03-20 17:31:24 +00:00
parent 5bf1684886
commit 7e4284c787
16 changed files with 321 additions and 138 deletions

View File

@ -78,6 +78,30 @@
<Reference Include="WindowsBase" /> <Reference Include="WindowsBase" />
<Reference Include="PresentationCore" /> <Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" /> <Reference Include="PresentationFramework" />
<Reference Include="Xceed.Wpf.AvalonDock, Version=3.0.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
<HintPath>packages\Extended.Wpf.Toolkit.3.0\lib\net40\Xceed.Wpf.AvalonDock.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Xceed.Wpf.AvalonDock.Themes.Aero, Version=3.0.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
<HintPath>packages\Extended.Wpf.Toolkit.3.0\lib\net40\Xceed.Wpf.AvalonDock.Themes.Aero.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Xceed.Wpf.AvalonDock.Themes.Metro, Version=3.0.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
<HintPath>packages\Extended.Wpf.Toolkit.3.0\lib\net40\Xceed.Wpf.AvalonDock.Themes.Metro.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Xceed.Wpf.AvalonDock.Themes.VS2010, Version=3.0.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
<HintPath>packages\Extended.Wpf.Toolkit.3.0\lib\net40\Xceed.Wpf.AvalonDock.Themes.VS2010.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Xceed.Wpf.DataGrid, Version=3.0.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
<HintPath>packages\Extended.Wpf.Toolkit.3.0\lib\net40\Xceed.Wpf.DataGrid.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Xceed.Wpf.Toolkit, Version=3.0.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
<HintPath>packages\Extended.Wpf.Toolkit.3.0\lib\net40\Xceed.Wpf.Toolkit.dll</HintPath>
<Private>True</Private>
</Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ApplicationDefinition Include="App.xaml"> <ApplicationDefinition Include="App.xaml">

View File

@ -3,11 +3,45 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
xmlns:local="clr-namespace:ENI2" xmlns:local="clr-namespace:ENI2"
mc:Ignorable="d" mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"> d:DesignHeight="300" d:DesignWidth="300">
<Grid Background="#FFEC9090"> <Grid>
<Label x:Name="label" Content="Platzhalter für Suche " HorizontalAlignment="Left" Margin="48,128,0,0" VerticalAlignment="Top"/> <!--Label x:Name="label" Content="Platzhalter für Suche " HorizontalAlignment="Left" Margin="48,128,0,0" VerticalAlignment="Top"/-->
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="25" />
<RowDefinition Height="25" />
<RowDefinition Height="25" />
<RowDefinition Height="25" />
<RowDefinition Height="25" />
<RowDefinition Height="25" />
<RowDefinition Height="25" />
<RowDefinition Height="10" />
<RowDefinition Height="30" />
<RowDefinition Height="20" />
</Grid.RowDefinitions>
<Label Grid.Column="0" Grid.Row="0" Content="Id"/>
<Label Grid.Column="0" Grid.Row="1" Content="IMO / ENI Nr."/>
<Label Grid.Column="0" Grid.Row="2" Content="Schiffsname"/>
<Label Grid.Column="0" Grid.Row="3" Content="Anlaufhafen"/>
<Label Grid.Column="0" Grid.Row="4" Content="ETA"/>
<Label Grid.Column="0" Grid.Row="5" Content="Ticket-Nr."/>
<TextBox Grid.Column="1" Grid.Row="0" Name="textBoxId" Margin="2"/>
<TextBox Grid.Column="1" Grid.Row="1" Name="textBoxIMO" Margin="2"/>
<TextBox Grid.Column="1" Grid.Row="2" Name="textBoxName" Margin="2"/>
<TextBox Grid.Column="1" Grid.Row="3" Name="textBoxHafen" Margin="2"/>
<xctk:DateTimePicker Grid.Column="1" Grid.Row="4" Name="dateTimePickerETA" Margin="2"/>
<TextBox Grid.Column="1" Grid.Row="5" Name="textBoxTicketNr" Margin="2"/>
<Button Grid.Column="0" Grid.Row="8" Content="Eingaben löschen" Name="buttonClearInput" Click="Button_Click" Margin="2"/>
<Button Grid.Column="1" Grid.Row="8" Content="Suche" Name="buttonSuche" Click="buttonSuche_Click" Margin="2"/>
</Grid> </Grid>
</UserControl> </UserControl>

View File

@ -14,6 +14,8 @@ using System.Windows.Media.Imaging;
using System.Windows.Navigation; using System.Windows.Navigation;
using System.Windows.Shapes; using System.Windows.Shapes;
using Xceed.Wpf.Toolkit;
namespace ENI2 namespace ENI2
{ {
/// <summary> /// <summary>
@ -25,5 +27,21 @@ namespace ENI2
{ {
InitializeComponent(); 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)
{
}
} }
} }

View File

@ -3,5 +3,6 @@
Sample license text. Sample license text.
--> -->
<packages> <packages>
<package id="Extended.Wpf.Toolkit" version="3.0" targetFramework="net452" />
<package id="log4net" version="2.0.8" targetFramework="net452" /> <package id="log4net" version="2.0.8" targetFramework="net452" />
</packages> </packages>

Binary file not shown.

View File

@ -27,3 +27,12 @@ GO
-- bis hierhin schon aktualisiert -- bis hierhin schon aktualisiert
PRINT N'Altering [dbo].[LADG]...';
GO
ALTER TABLE [dbo].[LADG]
ADD [CargoCodeNST_3] NVARCHAR (8) NULL;
GO

View File

@ -106,6 +106,28 @@ namespace bsmd.ExcelReadService
return val; 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) internal byte? ReadGender(string lookup)
{ {
byte? result = null; byte? result = null;
@ -267,11 +289,28 @@ namespace bsmd.ExcelReadService
if (val == "III") result = 3; if (val == "III") result = 3;
if (val.Equals("NONE", StringComparison.OrdinalIgnoreCase)) result = 0; 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; 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) internal byte? ReadConditionTanks(string lookup)
{ {
string val = this.ReadText(lookup); string val = this.ReadText(lookup);

View File

@ -1413,7 +1413,7 @@ namespace bsmd.ExcelReadService
reader.Conf.ConfirmText(crewName, crewNameString, ExcelReader.ReadState.OK); reader.Conf.ConfirmText(crewName, crewNameString, ExcelReader.ReadState.OK);
} else } 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.ShipToShipActivityLocationCoordinatesLongitude = null;
s2sActivity.ShipToShipActivityDateFrom = reader.ReadDate(s2sFromDate); s2sActivity.ShipToShipActivityDateFrom = reader.ReadDate(s2sFromDate);
s2sActivity.ShipToShipActivityDateTo = reader.ReadDate(s2sToDate); s2sActivity.ShipToShipActivityDateTo = reader.ReadDate(s2sToDate);
s2sActivity.ShipToShipActivityType = reader.ReadText(s2sActivityString); s2sActivity.ShipToShipActivityType = reader.ReadShip2ShipActivityType(s2sActivityString);
reader.Conf.ConfirmText(s2sActivityString, s2sActivity.ShipToShipActivityType, ExcelReader.ReadState.OK);
s2sActivity.ShipToShipActivitySecurityMattersToReport = reader.ReadText(s2sSec); s2sActivity.ShipToShipActivitySecurityMattersToReport = reader.ReadText(s2sSec);
reader.Conf.ConfirmText(s2sSec, s2sActivity.ShipToShipActivitySecurityMattersToReport, s2sActivity.ShipToShipActivitySecurityMattersToReport.IsNullOrEmpty() ? ExcelReader.ReadState.NONE : ExcelReader.ReadState.OK); reader.Conf.ConfirmText(s2sSec, s2sActivity.ShipToShipActivitySecurityMattersToReport, s2sActivity.ShipToShipActivitySecurityMattersToReport.IsNullOrEmpty() ? ExcelReader.ReadState.NONE : ExcelReader.ReadState.OK);
} }
@ -1711,15 +1710,16 @@ namespace bsmd.ExcelReadService
static void ScanBKRA(List<Message> messages, MessageCore messageCore, ExcelReader reader) static void ScanBKRA(List<Message> messages, MessageCore messageCore, ExcelReader reader)
{ {
Message bkraMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.BKRA); 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 lnQuantity = string.Format("BKRA.BunkerFuelQuantity_TNE_{0}", i);
string lnType = string.Format("BKRA.BunkerFuelType_{0}", i + 1); string lnType = string.Format("BKRA.BunkerFuelType_{0}", i);
BRKA bkra = bkraMessage.GetSublistElementWithIdentifier((i + 1).ToString()) as BRKA;
BRKA bkra = bkraMessage.GetSublistElementWithIdentifier((i).ToString()) as BRKA;
if (bkra == null) if (bkra == null)
{ {
bkra = new BRKA(); bkra = new BRKA();
bkra.Identifier = (i + 1).ToString(); bkra.Identifier = (i).ToString();
bkra.MessageHeader = bkraMessage; bkra.MessageHeader = bkraMessage;
bkraMessage.Elements.Add(bkra); bkraMessage.Elements.Add(bkra);
} }
@ -1751,15 +1751,15 @@ namespace bsmd.ExcelReadService
static void ScanBKRD(List<Message> messages, MessageCore messageCore, ExcelReader reader) static void ScanBKRD(List<Message> messages, MessageCore messageCore, ExcelReader reader)
{ {
Message bkrdMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.BKRD); 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 lnQuantity = string.Format("BKRD.BunkerFuelQuantity_TNE_{0}", i);
string lnType = string.Format("BKRD.BunkerFuelType_{0}", i + 1); string lnType = string.Format("BKRD.BunkerFuelType_{0}", i);
BRKD bkrd = bkrdMessage.GetSublistElementWithIdentifier((i + 1).ToString()) as BRKD; BRKD bkrd = bkrdMessage.GetSublistElementWithIdentifier((i).ToString()) as BRKD;
if (bkrd == null) if (bkrd == null)
{ {
bkrd = new BRKD(); bkrd = new BRKD();
bkrd.Identifier = (i + 1).ToString(); bkrd.Identifier = (i).ToString();
bkrd.MessageHeader = bkrdMessage; bkrd.MessageHeader = bkrdMessage;
bkrdMessage.Elements.Add(bkrd); bkrdMessage.Elements.Add(bkrd);
} }
@ -1790,22 +1790,42 @@ namespace bsmd.ExcelReadService
static void ScanTOWA(List<Message> messages, MessageCore messageCore, ExcelReader reader) static void ScanTOWA(List<Message> 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); 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"); string towageName = reader.ReadText(tName);
if (!towageName.IsNullOrEmpty()) if (towageName.IsNullOrEmpty()) continue;
TOWA towa = towaMessage.GetSublistElementWithIdentifier((i).ToString()) as TOWA;
if (towa == null)
{ {
reader.Conf.ConfirmText("TOWA.TowageOnArrivalName_1", towageName, ExcelReader.ReadState.OK); towa = new TOWA();
if (towaMessage.Elements.Count == 0) towa.Identifier = (i).ToString();
{ towa.MessageHeader = towaMessage;
TOWA newTOWA = new TOWA(); towaMessage.Elements.Add(towa);
newTOWA.MessageHeader = towaMessage;
towaMessage.Elements.Add(newTOWA);
} }
TOWA towa = towaMessage.Elements[0] as TOWA; towa.TowageOnArrivalName = towageName;
Util.ScanMessage(towa, reader); 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);
} }
} }
@ -1815,21 +1835,39 @@ namespace bsmd.ExcelReadService
static void ScanTOWD(List<Message> messages, MessageCore messageCore, ExcelReader reader) static void ScanTOWD(List<Message> 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); Message towdMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.TOWD);
string towageName = reader.ReadText("TOWD.TowageOnDepartureName_1");
if(!towageName.IsNullOrEmpty()) for (int i = 1; i <= towdMessage.NumberOfExcelRows; i++)
{ {
reader.Conf.ConfirmText("TOWD.TowageOnDepartureName_1", towageName, ExcelReader.ReadState.OK); string tName = string.Format("TOWD.TowageOnDepartureName_{0}", i);
if(towdMessage.Elements.Count == 0) 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 newTOWD = new TOWD(); towd = new TOWD();
newTOWD.MessageHeader = towdMessage; towd.Identifier = (i).ToString();
towdMessage.Elements.Add(newTOWD); towd.MessageHeader = towdMessage;
towdMessage.Elements.Add(towd);
} }
TOWD towd = towdMessage.Elements[0] as TOWD; towd.TowageOnDepartureName = towageName;
Util.ScanMessage(towd, reader); 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); Util.ScanMessage(serv, reader);
if (serv.ServiceBeneficiary.IsNullOrEmpty() && serv.ServiceInvoiceRecipient.IsNullOrEmpty()) if (serv.ServiceBeneficiary.IsNullOrEmpty() && serv.ServiceInvoiceRecipient.IsNullOrEmpty())
servMessage.Elements.Remove(serv); 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 #endregion
@ -1928,6 +1970,8 @@ namespace bsmd.ExcelReadService
string lnCGQ = string.Format("LADG.CargoGrossQuantity_TNE_{0}", i + 1); string lnCGQ = string.Format("LADG.CargoGrossQuantity_TNE_{0}", i + 1);
string lnLoad = string.Format("LADG.CargoPortOfLoading_{0}", i + 1); string lnLoad = string.Format("LADG.CargoPortOfLoading_{0}", i + 1);
string lnDis = string.Format("LADG.CargoPortOfDischarge_{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; LADG ladg = ladgMessage.GetSublistElementWithIdentifier((i + 1).ToString()) as LADG;
if (ladg == null) if (ladg == null)
@ -1940,6 +1984,13 @@ namespace bsmd.ExcelReadService
ladg.CargoHandlingType = reader.ReadCargoHandlingType(lnCHT); ladg.CargoHandlingType = reader.ReadCargoHandlingType(lnCHT);
// 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); ladg.CargoCodeNST = reader.ReadText(lnType);
// Cargo Type Freitext in DK // Cargo Type Freitext in DK
if(reader.Mode == ExcelReader.CountryMode.DK) if(reader.Mode == ExcelReader.CountryMode.DK)
@ -1960,6 +2011,30 @@ namespace bsmd.ExcelReadService
{ {
reader.Conf.ConfirmText(lnType, ladg.CargoCodeNST, ExcelReader.ReadState.OK); 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.CargoNumberOfItems = (int?) reader.ReadNumber(lnCNOI);
@ -2331,6 +2406,7 @@ namespace bsmd.ExcelReadService
// first check with visit/transit ID // first check with visit/transit ID
string visitTransitId = reader.ReadText("ID"); string visitTransitId = reader.ReadText("ID");
if (visitTransitId != null) if (visitTransitId != null)
{ {
if (bsmd.database.Util.IsVisitId(visitTransitId)) if (bsmd.database.Util.IsVisitId(visitTransitId))
@ -2351,8 +2427,6 @@ namespace bsmd.ExcelReadService
else else
reader.SetConfirmation(Properties.Settings.Default.ConfirmationDE); reader.SetConfirmation(Properties.Settings.Default.ConfirmationDE);
reader.Conf.ConfirmText("ID", visitTransitId, ExcelReader.ReadState.OK);
// copy poc/imo/eta to return sheet // copy poc/imo/eta to return sheet
poc = reader.ReadText("Visit.PortOfCall"); poc = reader.ReadText("Visit.PortOfCall");
reader.Conf.ConfirmText("Visit.PortOfCall", poc, ExcelReader.ReadState.OK); reader.Conf.ConfirmText("Visit.PortOfCall", poc, ExcelReader.ReadState.OK);
@ -2458,6 +2532,7 @@ namespace bsmd.ExcelReadService
} }
} }
reader.Conf.ConfirmText("ID", visitTransitId, ExcelReader.ReadState.OK);
if (result == null) if (result == null)
{ {
@ -2547,6 +2622,7 @@ namespace bsmd.ExcelReadService
newMessage.MessageNotificationClass = type; newMessage.MessageNotificationClass = type;
messages.Add(newMessage); messages.Add(newMessage);
newMessage.MessageCore = core; newMessage.MessageCore = core;
newMessage.MessageCoreId = core.Id;
return newMessage; return newMessage;
} }

View File

@ -79,6 +79,10 @@ namespace bsmd.database
[Validation(ValidationCode.LOCODE)] [Validation(ValidationCode.LOCODE)]
public string PortOfDischarge { get; set; } public string PortOfDischarge { get; set; }
[MaxLength(1)]
[ShowReport]
public string CargoCodeNST_3 { get; set; }
public string Identifier { get; set; } public string Identifier { get; set; }
public static Lazy<Dictionary<int, string>> LACodes public static Lazy<Dictionary<int, string>> LACodes
@ -115,25 +119,26 @@ namespace bsmd.database
scmd.Parameters.AddWithNullableValue("@P7", this.PortOfDischarge); scmd.Parameters.AddWithNullableValue("@P7", this.PortOfDischarge);
scmd.Parameters.AddWithNullableValue("@P8", this.Identifier); scmd.Parameters.AddWithNullableValue("@P8", this.Identifier);
scmd.Parameters.AddWithNullableValue("@P9", this.CargoLACode); scmd.Parameters.AddWithNullableValue("@P9", this.CargoLACode);
scmd.Parameters.AddWithNullableValue("@P10", this.CargoCodeNST_3);
if (this.IsNew) if (this.IsNew)
{ {
scmd.CommandText = string.Format("INSERT INTO {0} (MessageHeaderId, CargoHandlingType, CargoCodeNST, " + scmd.CommandText = string.Format("INSERT INTO {0} (MessageHeaderId, CargoHandlingType, CargoCodeNST, " +
"CargoNumberOfItems, CargoGrossQuantity_TNE, PortOfLoading, PortOfDischarge, Identifier, CargoLACode) VALUES " + "CargoNumberOfItems, CargoGrossQuantity_TNE, PortOfLoading, PortOfDischarge, Identifier, CargoLACode, CargoCodeNST_3) VALUES " +
"( @P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9 )", this.Tablename); "( @P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10 )", this.Tablename);
} }
else else
{ {
scmd.Parameters.AddWithValue(@"ID", this.Id); scmd.Parameters.AddWithValue(@"ID", this.Id);
scmd.CommandText = string.Format("UPDATE {0} SET CargoHandlingType = @P2, CargoCodeNST = @P3, CargoNumberOfItems = @P4, " + 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) 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, " + 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); this.Tablename);
switch (filter) switch (filter)
@ -168,6 +173,7 @@ namespace bsmd.database
if (!reader.IsDBNull(6)) ladg.PortOfDischarge = reader.GetString(6); if (!reader.IsDBNull(6)) ladg.PortOfDischarge = reader.GetString(6);
if (!reader.IsDBNull(7)) ladg.Identifier = reader.GetString(7); if (!reader.IsDBNull(7)) ladg.Identifier = reader.GetString(7);
if (!reader.IsDBNull(8)) ladg.CargoLACode = reader.GetInt32(8); if (!reader.IsDBNull(8)) ladg.CargoLACode = reader.GetInt32(8);
if (!reader.IsDBNull(9)) ladg.CargoCodeNST_3 = reader.GetString(9);
result.Add(ladg); result.Add(ladg);
} }
reader.Close(); reader.Close();

View File

@ -468,8 +468,8 @@ namespace bsmd.database
case NotificationClass.CREWD: return 40; case NotificationClass.CREWD: return 40;
case NotificationClass.PAS: return 30; case NotificationClass.PAS: return 30;
case NotificationClass.PASD: return 30; case NotificationClass.PASD: return 30;
case NotificationClass.TOWA: return 1; case NotificationClass.TOWA: return 5;
case NotificationClass.TOWD: return 1; case NotificationClass.TOWD: return 5;
case NotificationClass.STO: return 10; case NotificationClass.STO: return 10;
default: default:

View File

@ -182,7 +182,7 @@ namespace bsmd.database
scmd.Parameters.AddWithValue("@P24", this.Incoming ? 1 : 0); scmd.Parameters.AddWithValue("@P24", this.Incoming ? 1 : 0);
scmd.Parameters.AddWithNullableValue("@P25", this.DefaultReportingPartyId); scmd.Parameters.AddWithNullableValue("@P25", this.DefaultReportingPartyId);
scmd.Parameters.AddWithValue("@P26", this.CreateExcel ? 1 : 0); scmd.Parameters.AddWithValue("@P26", this.CreateExcel ? 1 : 0);
scmd.Parameters.AddWithValue("@P27", this.EditedBy); scmd.Parameters.AddWithNullableValue("@P27", this.EditedBy);
if (this.IsNew) if (this.IsNew)
{ {

View File

@ -2,6 +2,6 @@
[assembly: AssemblyCompany("Informatikbüro Daniel Schick")] [assembly: AssemblyCompany("Informatikbüro Daniel Schick")]
[assembly: AssemblyProduct("BSMD NSW interface")] [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: AssemblyCopyright("Copyright © 2014-2017 Informatikbüro Daniel Schick. All rights reserved.")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]

View File

@ -1,4 +1,4 @@
using System.Reflection; using System.Reflection;
[assembly: AssemblyVersion("3.4.1.*")] [assembly: AssemblyVersion("3.4.4.*")]

View File

@ -25,84 +25,68 @@ namespace bsmd.database
#region Properties #region Properties
[ShowReport] [ShowReport]
[Validation(ValidationCode.NOT_NULL)] [Validation(ValidationCode.NOT_NULL)]
[LookupName("TOWA.TowageOnArrivalName_1")]
[MaxLength(100)] [MaxLength(100)]
public string TowageOnArrivalName { get; set; } public string TowageOnArrivalName { get; set; }
[ShowReport] [ShowReport]
[Validation(ValidationCode.FLAG_CODE)] [Validation(ValidationCode.FLAG_CODE)]
[LookupName("TOWA.TowageOnArrivalFlag_1")]
[MaxLength(2)] [MaxLength(2)]
public string TowageOnArrivalFlag { get; set; } public string TowageOnArrivalFlag { get; set; }
[ShowReport] [ShowReport]
[LookupName("TOWA.TowageOnArrivalOperatorCompanyName_1")]
[MaxLength(100)] [MaxLength(100)]
public string TowageOnArrivalOperatorCompanyName { get; set; } public string TowageOnArrivalOperatorCompanyName { get; set; }
[ShowReport] [ShowReport]
[LookupName("TOWA.TowageOnArrivalOperatorStreetAndNumber_1")]
[MaxLength(100)] [MaxLength(100)]
public string TowageOnArrivalOperatorStreetNameAndNumber { get; set; } public string TowageOnArrivalOperatorStreetNameAndNumber { get; set; }
[ShowReport] [ShowReport]
[LookupName("TOWA.TowageOnArrivalOperatorPostalCode_1")]
[MaxLength(24)] [MaxLength(24)]
public string TowageOnArrivalOperatorPostalCode { get; set; } public string TowageOnArrivalOperatorPostalCode { get; set; }
[ShowReport] [ShowReport]
[LookupName("TOWA.TowageOnArrivalOperatorPostalCode_1")]
[MaxLength(100)] [MaxLength(100)]
public string TowageOnArrivalOperatorCity { get; set; } public string TowageOnArrivalOperatorCity { get; set; }
[ShowReport] [ShowReport]
[LookupName("TOWA.TowageOnArrivalOperatorCountry_1")]
[MaxLength(100)] [MaxLength(100)]
public string TowageOnArrivalOperatorCountry { get; set; } public string TowageOnArrivalOperatorCountry { get; set; }
[ShowReport] [ShowReport]
[LookupName("TOWA.TowageOnArrivalOperatorPhone_1")]
[MaxLength(100)] [MaxLength(100)]
public string TowageOnArrivalOperatorPhone { get; set; } public string TowageOnArrivalOperatorPhone { get; set; }
[ShowReport] [ShowReport]
[LookupName("TOWA.TowageOnArrivalOperatorFax_1")]
[MaxLength(100)] [MaxLength(100)]
public string TowageOnArrivalOperatorFax { get; set; } public string TowageOnArrivalOperatorFax { get; set; }
[ShowReport] [ShowReport]
[LookupName("TOWA.TowageOnArrivalOperatorEMail_1")]
[MaxLength(100)] [MaxLength(100)]
public string TowageOnArrivalOperatorEmail { get; set; } public string TowageOnArrivalOperatorEmail { get; set; }
[ShowReport] [ShowReport]
[Validation(ValidationCode.INT_GT_ZERO)] [Validation(ValidationCode.INT_GT_ZERO)]
[LookupName("TOWA.TowageOnArrivalGrossTonnage_1")]
public int? TowageOnArrivalGrossTonnage { get; set; } public int? TowageOnArrivalGrossTonnage { get; set; }
[ShowReport] [ShowReport]
[Validation(ValidationCode.DOUBLE_GT_ZERO)] [Validation(ValidationCode.DOUBLE_GT_ZERO)]
[LookupName("TOWA.TowageOnArrivalLengthOverall_MTR_1")]
public double? TowageOnArrivalLengthOverall_MTR { get; set; } public double? TowageOnArrivalLengthOverall_MTR { get; set; }
[ShowReport] [ShowReport]
[Validation(ValidationCode.DOUBLE_GT_ZERO)] [Validation(ValidationCode.DOUBLE_GT_ZERO)]
[LookupName("TOWA.TowageOnArrivalBeam_MTR_1")]
public double? TowageOnArrivalBeam_MTR { get; set; } public double? TowageOnArrivalBeam_MTR { get; set; }
[ShowReport] [ShowReport]
[Validation(ValidationCode.NOT_NULL)] [Validation(ValidationCode.NOT_NULL)]
[LookupName("TOWA.TowageOnArrivalPurposeOfCall_1")]
[MaxLength(100)] [MaxLength(100)]
public string TowageOnArrivalPurposeOfCall { get; set; } public string TowageOnArrivalPurposeOfCall { get; set; }
[ShowReport] [ShowReport]
[Validation(ValidationCode.DOUBLE_GT_ZERO)] [Validation(ValidationCode.DOUBLE_GT_ZERO)]
[LookupName("TOWA.TowageOnArrivalDraught_DMT_1")]
public double? TowageOnArrivalDraught_DMT { get; set; } public double? TowageOnArrivalDraught_DMT { get; set; }
[ShowReport] [ShowReport]
[LookupName("TOWA.TowageOnArrivalRemarks_1")]
[MaxLength(255)] [MaxLength(255)]
public string TowageOnArrivalRemarks { get; set; } public string TowageOnArrivalRemarks { get; set; }

View File

@ -26,66 +26,53 @@ namespace bsmd.database
[ShowReport] [ShowReport]
[Validation(ValidationCode.NOT_NULL)] [Validation(ValidationCode.NOT_NULL)]
[LookupName("TOWD.TowageOnDepartureName_1")]
[MaxLength(100)] [MaxLength(100)]
public string TowageOnDepartureName { get; set; } public string TowageOnDepartureName { get; set; }
[ShowReport] [ShowReport]
[LookupName("TOWD.TowageOnDepartureFlag_1")]
[MaxLength(2)] [MaxLength(2)]
public string TowageOnDepartureFlag { get; set; } public string TowageOnDepartureFlag { get; set; }
[ShowReport] [ShowReport]
[LookupName("TOWD.TowageOnDepartureOperatorCompanyName_1")]
[MaxLength(100)] [MaxLength(100)]
public string TowageOnDepartureOperatorCompanyName { get; set; } public string TowageOnDepartureOperatorCompanyName { get; set; }
[ShowReport] [ShowReport]
[LookupName("TOWD.TowageOnDepartureOperatorStreetAndNumber_1")]
[MaxLength(100)] [MaxLength(100)]
public string TowageOnDepartureOperatorStreetNameAndNumber { get; set; } public string TowageOnDepartureOperatorStreetNameAndNumber { get; set; }
[ShowReport] [ShowReport]
[LookupName("TOWD.TowageOnDepartureOperatorPostalCode_1")]
[MaxLength(24)] [MaxLength(24)]
public string TowageOnDepartureOperatorPostalCode { get; set; } public string TowageOnDepartureOperatorPostalCode { get; set; }
[ShowReport] [ShowReport]
[LookupName("TOWA.TowageOnArrivalOperatorCity_1")]
[MaxLength(100)] [MaxLength(100)]
public string TowageOnDepartureOperatorCity { get; set; } public string TowageOnDepartureOperatorCity { get; set; }
[ShowReport] [ShowReport]
[LookupName("TOWD.TowageOnDepartureOperatorCountry_1")]
[MaxLength(100)] [MaxLength(100)]
public string TowageOnDepartureOperatorCountry { get; set; } public string TowageOnDepartureOperatorCountry { get; set; }
[ShowReport] [ShowReport]
[LookupName("TOWD.TowageOnDepartureOperatorPhone_1")]
[MaxLength(100)] [MaxLength(100)]
public string TowageOnDepartureOperatorPhone { get; set; } public string TowageOnDepartureOperatorPhone { get; set; }
[ShowReport] [ShowReport]
[LookupName("TOWD.TowageOnDepartureOperatorFax_1")]
[MaxLength(100)] [MaxLength(100)]
public string TowageOnDepartureOperatorFax { get; set; } public string TowageOnDepartureOperatorFax { get; set; }
[ShowReport] [ShowReport]
[LookupName("TOWD.TowageOnDepartureOperatorEMail_1")]
[MaxLength(100)] [MaxLength(100)]
public string TowageOnDepartureOperatorEmail { get; set; } public string TowageOnDepartureOperatorEmail { get; set; }
[ShowReport] [ShowReport]
[LookupName("TOWD.TowageOnDepartureLengthOverall_MTR_1")]
public double? TowageOnDepartureLengthOverall_MTR { get; set; } public double? TowageOnDepartureLengthOverall_MTR { get; set; }
[ShowReport] [ShowReport]
[LookupName("TOWD.TowageOnDepartureBeam_MTR_1")]
public double? TowageOnDepartureBeam_MTR { get; set; } public double? TowageOnDepartureBeam_MTR { get; set; }
[ShowReport] [ShowReport]
[Validation(ValidationCode.DOUBLE_GT_ZERO)] [Validation(ValidationCode.DOUBLE_GT_ZERO)]
[LookupName("TOWD.TowageOnDepartureDraught_DMT_1")]
public double? TowageOnDepartureDraught_DMT { get; set; } public double? TowageOnDepartureDraught_DMT { get; set; }
[ShowReport] [ShowReport]

View File

@ -616,27 +616,29 @@ namespace bsmd.dbh
if (ladg.CargoHandlingType.HasValue) if (ladg.CargoHandlingType.HasValue)
{ {
if (ladg.CargoHandlingType > 1) continue; 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 (!ladg.CargoCodeNST.IsNullOrEmpty())
{ {
if (cargo.CargoCodeNST.Length > 2) if (cargo.CargoCodeNST.Length > 2)
{ {
cargo.CargoCodeNST = ladg.CargoCodeNST.Substring(0, 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) if (ladg.CargoLACode.HasValue)
cargo.CargoLACode = ladg.CargoLACode.Value; cargo.CargoLACode = ladg.CargoLACode.Value;
cargo.CargoLACodeSpecified = ladg.CargoLACode.HasValue;
if (ladg.CargoGrossQuantity_TNE.HasValue) if (ladg.CargoGrossQuantity_TNE.HasValue)
cargo.CargoGrossQuantity_TNE = Decimal.Round((decimal) ladg.CargoGrossQuantity_TNE.Value, 3); cargo.CargoGrossQuantity_TNE = Decimal.Round((decimal) ladg.CargoGrossQuantity_TNE.Value, 3);
cargo.CargoNumberOfItemsSpecified = ladg.CargoNumberOfItems.HasValue; cargo.CargoNumberOfItemsSpecified = ladg.CargoNumberOfItems.HasValue;
if (ladg.CargoNumberOfItems.HasValue) if (ladg.CargoNumberOfItems.HasValue)
cargo.CargoNumberOfItems = ladg.CargoNumberOfItems.Value; cargo.CargoNumberOfItems = ladg.CargoNumberOfItems.Value;
@ -815,11 +817,14 @@ namespace bsmd.dbh
choiceTypes2.Add(ItemsChoiceType2.StowawaysDetected); choiceTypes2.Add(ItemsChoiceType2.StowawaysDetected);
mdhItems.Add(mdh.StowawaysDetected ?? false ? RootSECValidISSCOnBoard.Y : RootSECValidISSCOnBoard.N); mdhItems.Add(mdh.StowawaysDetected ?? false ? RootSECValidISSCOnBoard.Y : RootSECValidISSCOnBoard.N);
foreach(StowawaysJoiningLocation sjl in mdh.StowawaysJoiningLocations)
{
choiceTypes2.Add(ItemsChoiceType2.StowawaysJoiningLocation); choiceTypes2.Add(ItemsChoiceType2.StowawaysJoiningLocation);
mdhItems.Add(sjl.StowawayJoiningLocation); 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); choiceTypes2.Add(ItemsChoiceType2.SickAnimalOrPetOnBoard);
mdhItems.Add(mdh.SickAnimalOrPetOnBoard ?? false ? RootSECValidISSCOnBoard.Y : RootSECValidISSCOnBoard.N); mdhItems.Add(mdh.SickAnimalOrPetOnBoard ?? false ? RootSECValidISSCOnBoard.Y : RootSECValidISSCOnBoard.N);
@ -908,7 +913,7 @@ namespace bsmd.dbh
List<ItemsChoiceType3> choiceType3s = new List<ItemsChoiceType3>(); List<ItemsChoiceType3> choiceType3s = new List<ItemsChoiceType3>();
choiceType3s.Add(ItemsChoiceType3.ConfirmationOfCorrectnessAndSufficiency); choiceType3s.Add(ItemsChoiceType3.ConfirmationOfCorrectnessAndSufficiency);
wasteItems.Add(was.ConfirmationOfCorrectness ?? false ? RootSECValidISSCOnBoard.Y : RootSECValidISSCOnBoard.N); wasteItems.Add(was.ConfirmationOfCorrectness ?? false ? "Y" : "N");
if (was.LastWasteDisposalDate.HasValue) if (was.LastWasteDisposalDate.HasValue)
{ {
@ -941,9 +946,8 @@ namespace bsmd.dbh
{ {
choiceType3s.Add(ItemsChoiceType3.Waste); choiceType3s.Add(ItemsChoiceType3.Waste);
RootWASWaste rww = new RootWASWaste(); RootWASWaste rww = new RootWASWaste();
wasteItems.Add(rww);
Waste waste = was.Waste[j]; Waste waste = was.Waste[j];
if ((waste.WasteType ?? 0) == 0) continue; // not a valid waste type
rww.WasteType = new RootWASWasteWasteType(); rww.WasteType = new RootWASWasteWasteType();
rww.WasteType.WasteCode = waste.WasteType ?? 0; rww.WasteType.WasteCode = waste.WasteType ?? 0;
rww.WasteType.WasteDescription = waste.WasteDescription; rww.WasteType.WasteDescription = waste.WasteDescription;
@ -957,6 +961,7 @@ namespace bsmd.dbh
rww.WasteDetails.WasteAmountGeneratedTillNextPort_MTQ = decimal.Round((decimal)(waste.WasteAmountGeneratedTillNextPort_MTQ ?? 0), 3); rww.WasteDetails.WasteAmountGeneratedTillNextPort_MTQ = decimal.Round((decimal)(waste.WasteAmountGeneratedTillNextPort_MTQ ?? 0), 3);
rww.WasteDetails.WasteDisposalPort = waste.WasteDisposalPort; 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(); rootWAS.ItemsElementName = choiceType3s.ToArray();