diff --git a/Stundensheet.xlsx b/Stundensheet.xlsx index 74e3b04a..e886a0aa 100644 Binary files a/Stundensheet.xlsx and b/Stundensheet.xlsx differ diff --git a/nsw/Source/SQL/Update_2.0_To_2.4.sql b/nsw/Source/SQL/Update_2.0_To_2.4.sql new file mode 100644 index 00000000..ae1ec365 --- /dev/null +++ b/nsw/Source/SQL/Update_2.0_To_2.4.sql @@ -0,0 +1,10 @@ +PRINT N'Updating MessageCore..'; + +ALTER TABLE [dbo].[MessageCore] ADD [DefaultReportingPartyId] UNIQUEIDENTIFIER NULL; +GO + +ALTER TABLE [dbo].[HAZA] ADD [TransmissionType] NVARCHAR (50) NULL; +GO + +ALTER TABLE [dbo].[HAZD] ADD [TransmissionType] NVARCHAR (50) NULL; +GO diff --git a/nsw/Source/SendNSWMessageService/NSWSendService.cs b/nsw/Source/SendNSWMessageService/NSWSendService.cs index 5c138aaf..7babdc59 100644 --- a/nsw/Source/SendNSWMessageService/NSWSendService.cs +++ b/nsw/Source/SendNSWMessageService/NSWSendService.cs @@ -110,6 +110,8 @@ namespace SendNSWMessageService _log.Debug("Visit/Transit not found, SENDING VISIT/TRANSIT message"); if (message.HIS == Message.NSWProvider.UNDEFINED) message.HIS = core.InitialHIS; + if (core.DefaultReportingPartyId.HasValue) + message.ReportingPartyId = core.DefaultReportingPartyId; toSendMessageList.Add(message); } } @@ -159,6 +161,7 @@ namespace SendNSWMessageService if (haz != null) { if (haz.NoDPGOnBoardOnArrival ?? false) continue; + if (haz.TransmissionType != "EU-NOAD") continue; } } } @@ -181,6 +184,8 @@ namespace SendNSWMessageService { if (message.HIS == Message.NSWProvider.UNDEFINED) message.HIS = core.InitialHIS; + if (core.DefaultReportingPartyId.HasValue) + message.ReportingPartyId = core.DefaultReportingPartyId; toSendMessageList.Add(message); } diff --git a/nsw/Source/bsmd.database/HAZ.cs b/nsw/Source/bsmd.database/HAZ.cs index fba16957..65f627bc 100644 --- a/nsw/Source/bsmd.database/HAZ.cs +++ b/nsw/Source/bsmd.database/HAZ.cs @@ -22,6 +22,7 @@ namespace bsmd.database private List igcPositions = new List(); private List imsbcPositions = new List(); private List marpolPositions = new List(); + private bool _isDeparture; public HAZ() { @@ -66,8 +67,21 @@ namespace bsmd.database public List MARPOLPositions { get { return this.marpolPositions; } } + // selektor HAZA / HAZD [ShowReport] - public bool IsDeparture { get; set; } // selektor HAZA / HAZD + public bool IsDeparture { get { return this._isDeparture; } + set + { + this._isDeparture = value; + this.tablename = this._isDeparture ? "[dbo].[HAZD]" : "[dbo].[HAZA]"; + } + } + + /// + /// No NSW field! Set to determine whether HAZ info should be reported to the NSW + /// + [ShowReport] + public string TransmissionType { get; set; } #endregion @@ -86,29 +100,55 @@ namespace bsmd.database scmd.Parameters.AddWithNullableValue("@P7", this.DPGClassificationIBC); scmd.Parameters.AddWithNullableValue("@P8", this.DPGClassificationIMSBC); scmd.Parameters.AddWithNullableValue("@P9", this.DPGClassificationMARPOL_ANNEX_I); + scmd.Parameters.AddWithNullableValue("@P10", this.TransmissionType); if (this.IsNew) { this.CreateId(); scmd.Parameters.AddWithValue("@ID", this.Id); - scmd.CommandText = string.Format("INSERT INTO {0} (Id, MessageHeaderId, NoDPGOnBoardOnArrival, DPGManifestOnBoardOnArrival, " + - "INFShipClass, DPGClassificationIMDG, DPGClassificationIGC, DPGClassificationIBC, DPGClassificationIMSBC, " + - "DPGClassificationMARPOL_ANNEX_I) VALUES (@ID, @P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9)", this.Tablename); + if (IsDeparture) + { + scmd.CommandText = string.Format("INSERT INTO {0} (Id, MessageHeaderId, NoDPGOnBoardOnDeparture, DPGManifestOnBoardOnDeparture, " + + "INFShipClass, DPGClassificationIMDG, DPGClassificationIGC, DPGClassificationIBC, DPGClassificationIMSBC, " + + "DPGClassificationMARPOL_ANNEX_I, TransmissionType) VALUES (@ID, @P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10)", this.Tablename); + } + else + { + scmd.CommandText = string.Format("INSERT INTO {0} (Id, MessageHeaderId, NoDPGOnBoardOnArrival, DPGManifestOnBoardOnArrival, " + + "INFShipClass, DPGClassificationIMDG, DPGClassificationIGC, DPGClassificationIBC, DPGClassificationIMSBC, " + + "DPGClassificationMARPOL_ANNEX_I, TransmissionType) VALUES (@ID, @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 NODPGOnBoardOnArrival = @P2, DPGManifestOnBoardOnArrival = @P3, " + - "INFShipClass = @P4, DPGClassificationIMDG = @P5, DPGClassificationIGC = @P6, DPGClassificationIBC = @P7, " + - "DPGClassificationIMSBC = @P8, DPGClassificationMARPOL_ANNEX_I = @P9 WHERE Id = @ID", this.Tablename); + if (IsDeparture) + { + scmd.CommandText = string.Format("UPDATE {0} SET NODPGOnBoardOnDeparture = @P2, DPGManifestOnBoardOnDeparture = @P3, " + + "INFShipClass = @P4, DPGClassificationIMDG = @P5, DPGClassificationIGC = @P6, DPGClassificationIBC = @P7, " + + "DPGClassificationIMSBC = @P8, DPGClassificationMARPOL_ANNEX_I = @P9, TransmissionType = @P10 WHERE Id = @ID", this.Tablename); + } + else + { + scmd.CommandText = string.Format("UPDATE {0} SET NODPGOnBoardOnArrival = @P2, DPGManifestOnBoardOnArrival = @P3, " + + "INFShipClass = @P4, DPGClassificationIMDG = @P5, DPGClassificationIGC = @P6, DPGClassificationIBC = @P7, " + + "DPGClassificationIMSBC = @P8, DPGClassificationMARPOL_ANNEX_I = @P9, TransmissionType = @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, NoDPGOnBoardOnArrival, DPGManifestOnBoardOnArrival, INFShipClass, " + "DPGClassificationIMDG, DPGClassificationIGC, DPGClassificationIBC, DPGClassificationIMSBC, " + - "DPGClassificationMARPOL_ANNEX_I FROM {0} ", this.Tablename); + "DPGClassificationMARPOL_ANNEX_I, TransmissionType FROM {0} ", this.Tablename); + + if (this.IsDeparture) + { + query = string.Format("SELECT Id, NoDPGOnBoardOnDeparture, DPGManifestOnBoardOnDeparture, INFShipClass, " + + "DPGClassificationIMDG, DPGClassificationIGC, DPGClassificationIBC, DPGClassificationIMSBC, " + + "DPGClassificationMARPOL_ANNEX_I, TransmissionType FROM {0} ", this.Tablename); + } switch (filter) { @@ -142,6 +182,7 @@ namespace bsmd.database if (!reader.IsDBNull(6)) haz.DPGClassificationIBC = reader.GetBoolean(6); if (!reader.IsDBNull(7)) haz.DPGClassificationIMSBC = reader.GetBoolean(7); if (!reader.IsDBNull(8)) haz.DPGClassificationMARPOL_ANNEX_I = reader.GetBoolean(8); + if (!reader.IsDBNull(9)) haz.TransmissionType = reader.GetString(9); result.Add(haz); } diff --git a/nsw/Source/bsmd.database/LastTenPortFacilitiesCalled.cs b/nsw/Source/bsmd.database/LastTenPortFacilitiesCalled.cs index 952d3ff0..dc90688c 100644 --- a/nsw/Source/bsmd.database/LastTenPortFacilitiesCalled.cs +++ b/nsw/Source/bsmd.database/LastTenPortFacilitiesCalled.cs @@ -138,14 +138,14 @@ namespace bsmd.database public override void Validate(List errors, List violations) { - bool locationOK = (!this.PortFacilityPortLoCode.IsNullOrEmpty()) || - (!this.PortFacilityPortName.IsNullOrEmpty() && !this.PortFacilityPortCountry.IsNullOrEmpty()); + bool locationInsufficient = (this.PortFacilityPortLoCode.IsNullOrEmpty()) && + (this.PortFacilityPortName.IsNullOrEmpty() || this.PortFacilityPortCountry.IsNullOrEmpty()); - if (!locationOK) + if (locationInsufficient) { string val = string.Format("LoCode:{0} Port:{1} Country:{2}", this.PortFacilityPortLoCode ?? "", this.PortFacilityPortName ?? "", this.PortFacilityPortCountry ?? ""); - RuleEngine.CreateViolation(ValidationCode.V703, "Either LoCode or Country + Name must be given", val); + RuleEngine.CreateViolation(ValidationCode.V703, "Last 10 Port facilities: Either LoCode or Country + Name must be given", val); } } diff --git a/nsw/Source/bsmd.database/MDH.cs b/nsw/Source/bsmd.database/MDH.cs index f1a5ebb5..91487882 100644 --- a/nsw/Source/bsmd.database/MDH.cs +++ b/nsw/Source/bsmd.database/MDH.cs @@ -261,7 +261,7 @@ namespace bsmd.database } public override void Validate(List errors, List violations) - { + { if (this.GetValidationBlock() == ValidationBlock.BLOCK1) { @@ -270,10 +270,10 @@ namespace bsmd.database } else { - if((this.NonAccidentalDeathsDuringVoyage ?? false) && ((this.NonAccidentalDeathsDuringVoyageCount ?? 0) == 0)) + if ((this.NonAccidentalDeathsDuringVoyage ?? false) && ((this.NonAccidentalDeathsDuringVoyageCount ?? 0) == 0)) violations.Add(RuleEngine.CreateViolation(ValidationCode.V761, "NonAccidentalDeathsDuringVoyageCount missing", null)); - if((this.NumberOfIllPersonsHigherThanExpected ?? false) && ((this.NumberOfIllPersons ?? 0) == 0)) + if ((this.NumberOfIllPersonsHigherThanExpected ?? false) && ((this.NumberOfIllPersons ?? 0) == 0)) violations.Add(RuleEngine.CreateViolation(ValidationCode.V762, "Number of ill persons missing", null)); if ((this.SanitaryMeasuresApplied ?? false) && ( @@ -293,12 +293,16 @@ namespace bsmd.database (!this.InfectedAreaDate.HasValue || this.InfectedAreaPort.IsNullOrEmpty())) violations.Add(RuleEngine.CreateViolation(ValidationCode.V766, "Infected area date or port missing", null)); - } + if (this.portOfCallLast30Days.Count == 0) + { + errors.Add(RuleEngine.CreateError(ValidationCode.NOT_NULL, "Port of Call last 30 day list is EMPTY", null)); + } - foreach (PortOfCallLast30Days poc30d in this.portOfCallLast30Days) - { - RuleEngine.ValidateProperties(poc30d, errors); - poc30d.Validate(errors, violations); + foreach (PortOfCallLast30Days poc30d in this.portOfCallLast30Days) + { + RuleEngine.ValidateProperties(poc30d, errors); + poc30d.Validate(errors, violations); + } } } diff --git a/nsw/Source/bsmd.database/Message.cs b/nsw/Source/bsmd.database/Message.cs index 43c3de3b..36ed8ea1 100644 --- a/nsw/Source/bsmd.database/Message.cs +++ b/nsw/Source/bsmd.database/Message.cs @@ -212,6 +212,11 @@ namespace bsmd.database /// public List ViolationList { get { return this.violationList; } } + /// + /// Property to overwrite reporting party in certain circumstances (other melder meldet) + /// + public Guid? ReportingPartyId { get { return this.reportingPartyId; } set { this.reportingPartyId = value; } } + #endregion #region IDatabaseEntity implementation diff --git a/nsw/Source/bsmd.database/MessageCore.cs b/nsw/Source/bsmd.database/MessageCore.cs index 8086eaa1..c5cc3fe0 100644 --- a/nsw/Source/bsmd.database/MessageCore.cs +++ b/nsw/Source/bsmd.database/MessageCore.cs @@ -99,6 +99,8 @@ namespace bsmd.database public string SietasSheetVersion { get; set; } + public Guid? DefaultReportingPartyId { get; set; } + #endregion #region DatabaseEntity implementation @@ -142,6 +144,7 @@ namespace bsmd.database scmd.Parameters.AddWithValue("@P22", this.ReportStatus); scmd.Parameters.AddWithNullableValue("@P23", this.SietasSheetVersion); scmd.Parameters.AddWithValue("@P24", this.Incoming ? 1 : 0); + scmd.Parameters.AddWithNullableValue("@P25", this.DefaultReportingPartyId); if (this.IsNew) { @@ -150,9 +153,9 @@ namespace bsmd.database string query = string.Format("INSERT INTO {0} (Id, VisitId, TransitId, IMO, ENI, PoC, Portname, ETA, CustomerId, " + "Previous, Next, IsTransit, Wetris_zz_56_datensatz_id, BSMDStatus, InitialHIS, HerbergFormGuid, " + "HerbergFormTemplateGuid, HerbergReportType, HerbergEmailcontactReportingVessel, HerbergEmail24HrsContact, " + - "ETAKielCanal, HerbergRevDate, ReportStatus, SietasSheetVersion, Incoming) VALUES " + + "ETAKielCanal, HerbergRevDate, ReportStatus, SietasSheetVersion, Incoming, DefaultReportingPartyId) VALUES " + "(@ID, @P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10, @P11, @P12, @P13, @P14, @P15, @P16, @P17, " + - "@P18, @P19, @P20, @P21, @P22, @P23, @P24)", + "@P18, @P19, @P20, @P21, @P22, @P23, @P24, @P25)", this.Tablename); scmd.CommandText = query; } @@ -164,7 +167,7 @@ namespace bsmd.database "Wetris_zz_56_datensatz_id = @P12, BSMDStatus = @P13, InitialHIS = @P14, HerbergFormGuid = @P15, " + "HerbergFormTemplateGuid = @P16, HerbergReportType = @P17, HerbergEmailContactReportingVessel = @P18, " + "HerbergEmail24HrsContact = @P19, ETAKielCanal = @P20, HerbergRevDate = @P21, ReportStatus = @P22, " + - "SietasSheetVersion = @P23, Incoming = @P24 WHERE Id = @ID", this.Tablename); + "SietasSheetVersion = @P23, Incoming = @P24, DefaultReportingPartyId = @P25 WHERE Id = @ID", this.Tablename); scmd.CommandText = query; } } @@ -174,7 +177,8 @@ namespace bsmd.database string query = string.Format("SELECT Id, VisitId, TransitId, IMO, ENI, PoC, Portname, " + "ETA, CustomerId, Previous, Next, IsTransit, Wetris_zz_56_datensatz_id, BSMDStatus, InitialHIS, " + "HerbergFormGuid, HerbergFormTemplateGuid, HerbergReportType, HerbergEmailContactReportingVessel, " + - "HerbergEmail24HrsContact, ETAKielCanal, HerbergRevDate, ReportStatus, SietasSheetVersion, Incoming FROM {0} ", + "HerbergEmail24HrsContact, ETAKielCanal, HerbergRevDate, ReportStatus, SietasSheetVersion, Incoming, " + + "DefaultReportingPartyId FROM {0} ", this.Tablename); switch (filter) @@ -256,6 +260,7 @@ namespace bsmd.database if (!reader.IsDBNull(22)) core.ReportStatus = (ReportStatusEnum) Enum.ToObject(typeof(ReportStatusEnum), reader.GetByte(22)); if (!reader.IsDBNull(23)) core.SietasSheetVersion = reader.GetString(23); if (!reader.IsDBNull(24)) core.Incoming = reader.GetBoolean(24); + if (!reader.IsDBNull(25)) core.DefaultReportingPartyId = reader.GetGuid(25); result.Add(core); } diff --git a/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs b/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs index d684ec1b..b9ea5645 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("2.4.3")] +[assembly: AssemblyInformationalVersion("2.4.6")] [assembly: AssemblyCopyright("Copyright © 2014-2015 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 1ce61e7d..d4b62414 100644 --- a/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs +++ b/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs @@ -4,6 +4,6 @@ // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2.4.3.*")] +[assembly: AssemblyVersion("2.4.6.*")] // wenn das nicht auskommentiert wird erhalten wir eine Warnung // [assembly: AssemblyFileVersion("1.0.0.*")] diff --git a/nsw/Source/bsmd.database/ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.cs b/nsw/Source/bsmd.database/ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.cs index 331b970b..2e601226 100644 --- a/nsw/Source/bsmd.database/ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.cs +++ b/nsw/Source/bsmd.database/ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.cs @@ -139,14 +139,13 @@ namespace bsmd.database { // check violation 701 + bool locationInsufficient = (this.ShipToShipActivityLocationLoCode.IsNullOrEmpty()) && + (!this.ShipToShipActivityLocationCoordinatesLatitude.HasValue || !this.ShipToShipActivityLocationCoordinatesLongitude.HasValue); - bool locationOK = !this.ShipToShipActivityLocationName.IsNullOrEmpty() || - !this.ShipToShipActivityLocationLoCode.IsNullOrEmpty() || - (this.ShipToShipActivityLocationCoordinatesLatitude.HasValue && - this.ShipToShipActivityLocationCoordinatesLongitude.HasValue); - - if (!locationOK) - violations.Add(RuleEngine.CreateViolation(ValidationCode.V701, "Either LoCode, Name or Coordinates must be given", null)); + if (locationInsufficient) + { + violations.Add(RuleEngine.CreateViolation(ValidationCode.V701, "Ship To Ship: Either LoCode or Coordinates must be given", null)); + } } #endregion diff --git a/nsw/Source/bsmd.dbh/Request.cs b/nsw/Source/bsmd.dbh/Request.cs index 2b8cb6b3..5677ee84 100644 --- a/nsw/Source/bsmd.dbh/Request.cs +++ b/nsw/Source/bsmd.dbh/Request.cs @@ -570,6 +570,8 @@ namespace bsmd.dbh rootInfo.ConstructionCharacteristicsOfShip = info.ConstructionCharacteristicsOfShip; if (info.FumigatedBulkCargo.HasValue) rootInfo.FumigatedBulkCargo = (info.FumigatedBulkCargo.Value == 0) ? RootINFOFumigatedBulkCargo.Y : RootINFOFumigatedBulkCargo.N; + else + rootInfo.FumigatedBulkCargo = RootINFOFumigatedBulkCargo.N; rootInfo.DeadWeightSummer_TNESpecified = info.DeplacementSummerDraught_TNE.HasValue; if (info.DeplacementSummerDraught_TNE.HasValue) rootInfo.DeadWeightSummer_TNE = (float) info.DeplacementSummerDraught_TNE.Value; diff --git a/nsw/Source/bsmd.herberg.FormService/Util.cs b/nsw/Source/bsmd.herberg.FormService/Util.cs index 2e739d4d..d9b1381d 100644 --- a/nsw/Source/bsmd.herberg.FormService/Util.cs +++ b/nsw/Source/bsmd.herberg.FormService/Util.cs @@ -32,6 +32,7 @@ namespace bsmd.herberg.FormService if (repDict[key].Name.Equals("BSMD")) { bsmdParty = repDict[key]; + break; } } @@ -152,7 +153,10 @@ namespace bsmd.herberg.FormService List saveMessages = new List(); // 1:n messages - foreach (string groupMessageType in groupedVals.Keys) + List groupedValsKeyList = new List(groupedVals.Keys); + groupedValsKeyList.Sort(); // "AGENT" now at the beginning! + + foreach (string groupMessageType in groupedValsKeyList) { string messageType = groupMessageType; @@ -803,14 +807,19 @@ namespace bsmd.herberg.FormService info.SpecialRequirementsOfShipAtBerth = aMessageCore.Customer.Name; else { - if((aMessageCore.Customer != null) && (aMessageCore.Customer.Name != null)) + if((aMessageCore.Customer != null) && (aMessageCore.Customer.Name != null) && !info.SpecialRequirementsOfShipAtBerth.Contains("- Agent: ")) info.SpecialRequirementsOfShipAtBerth = string.Format("{0} - Agent: {1}", info.SpecialRequirementsOfShipAtBerth, aMessageCore.Customer.Name); } if (vDict.ContainsKey("ConstructionCharacteristicsOfShip")) info.ConstructionCharacteristicsOfShip = vDict["ConstructionCharacteristicsOfShip"]; if (vDict.ContainsKey("FumigatedBulkCargo") && !vDict["FumigatedBulkCargo"].IsNullOrEmpty()) + { info.FumigatedBulkCargo = (byte)Enum.Parse(typeof(Enums.FumigatedBulkCargo), vDict["FumigatedBulkCargo"]); + _log.DebugFormat("FumigatedBulkCargo {0} parsed to {1}", vDict["FumigatedBulkCargo"], info.FumigatedBulkCargo); + } else - info.FumigatedBulkCargo = (byte) Enums.FumigatedBulkCargo.N; + { + info.FumigatedBulkCargo = (byte)Enums.FumigatedBulkCargo.N; + } } catch(Exception ex) { @@ -1135,6 +1144,8 @@ namespace bsmd.herberg.FormService if (poc.PortFacilityGISISCode.IsNullOrEmpty()) { poc.PortFacilityGISISCode = "0000"; + if (poc.PortFacilitySecurityMattersToReport.IsNullOrEmpty()) poc.PortFacilitySecurityMattersToReport = string.Format("Remark: GISIS-Code not reported"); + else poc.PortFacilitySecurityMattersToReport = string.Format("{0} - Remark: GISIS-Code not reported", poc.PortFacilitySecurityMattersToReport); } else { Regex rgx = new Regex("[0-9]{4}"); @@ -1142,6 +1153,8 @@ namespace bsmd.herberg.FormService { _log.WarnFormat("PortFacilityGISISCode invalid: {0}, replacing with 0000", poc.PortFacilityGISISCode); poc.PortFacilityGISISCode = "0000"; + if (poc.PortFacilitySecurityMattersToReport.IsNullOrEmpty()) poc.PortFacilitySecurityMattersToReport = string.Format("Remark: Reported GISIS-Code: {0}", sDict["PortFacilityGISISCode"] ?? ""); + else poc.PortFacilitySecurityMattersToReport = string.Format("{0} - Remark: Reported GISIS-Code: {1}", poc.PortFacilitySecurityMattersToReport, sDict["PortFacilityGISISCode"] ?? ""); } } @@ -1347,7 +1360,8 @@ namespace bsmd.herberg.FormService if (haz != null) { try - { + { + if (vDict.ContainsKey("TransmissionType")) haz.TransmissionType = vDict["TransmissionType"]; if (vDict.ContainsKey("NoDPGOnBoard")) haz.NoDPGOnBoardOnArrival = vDict["NoDPGOnBoard"].Equals("Y"); if (vDict.ContainsKey("DPGManifestOnBoard")) haz.DPGManifestOnBoardOnArrival = vDict["DPGManifestOnBoard"].Equals("Y"); if (vDict.ContainsKey("INFShipClass")) haz.INFShipClass = (byte)Enum.Parse(typeof(Enums.INFShipClass), vDict["INFShipClass"], true);