From be978be025c3808b98f5f15fc79184aa62e5c477 Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Mon, 10 Dec 2018 09:23:09 +0000 Subject: [PATCH] 5.1.13 Restpunkte bearbeitet --- .../ENI2/ENI2/Controls/LocodeControl.xaml.cs | 4 +-- ENI-2/ENI2/ENI2/LocalizedLookup.cs | 22 +------------ ENI-2/ENI2/ENI2/Util/GlobalStructures.cs | 2 +- Stundensheet.xlsx | Bin 39546 -> 39678 bytes .../SendNSWMessageService.csproj | 1 + .../bsmd.ExcelReadService/ExcelReader.cs | 27 ++++++++-------- nsw/Source/bsmd.ExcelReadService/LocodeDB.cs | 24 ++++++++++++++ nsw/Source/bsmd.ExcelReadService/Util.cs | 30 ++++++++++-------- nsw/Source/bsmd.dakosy/bsmd.dakosy.csproj | 1 + .../Properties/AssemblyProductInfo.cs | 2 +- .../Properties/AssemblyProjectInfo.cs | 2 +- nsw/Source/bsmd.database/RuleEngine.cs | 2 +- nsw/Source/bsmd.database/SEC.cs | 5 +++ nsw/Source/bsmd.dbh/bsmd.dbh.csproj | 1 + nsw/Source/bsmd.hisnord/Request.cs | 22 ++++++------- nsw/Source/bsmd.hisnord/bsmd.hisnord.csproj | 1 + nsw/Source/bsmd.status/bsmd.status.csproj | 1 + 17 files changed, 80 insertions(+), 67 deletions(-) diff --git a/ENI-2/ENI2/ENI2/Controls/LocodeControl.xaml.cs b/ENI-2/ENI2/ENI2/Controls/LocodeControl.xaml.cs index 23315ba9..a4a83408 100644 --- a/ENI-2/ENI2/ENI2/Controls/LocodeControl.xaml.cs +++ b/ENI-2/ENI2/ENI2/Controls/LocodeControl.xaml.cs @@ -58,7 +58,7 @@ namespace ENI2.Controls case RuleEngine.LocodeMode.STANDARD: portName = LocodeDB.PortNameFromLocode(value); break; case RuleEngine.LocodeMode.SSN: - portName = LocalizedLookup.SSNPortNameFromLocode(value); break; + portName = LocodeDB.SSNPortNameFromLocode(value); break; } LocodeState locodeState = portName.IsNullOrEmpty() ? LocodeState.INVALID : LocodeState.OK; this.SetLocodeStateImage(this.imageLocodeState, locodeState); @@ -143,7 +143,7 @@ namespace ENI2.Controls case RuleEngine.LocodeMode.STANDARD: portname = LocodeDB.PortNameFromLocode(directLocode); break; case RuleEngine.LocodeMode.SSN: - portname = LocalizedLookup.SSNPortNameFromLocode(directLocode); break; + portname = LocodeDB.SSNPortNameFromLocode(directLocode); break; } bool isLocode = !portname.IsNullOrEmpty(); diff --git a/ENI-2/ENI2/ENI2/LocalizedLookup.cs b/ENI-2/ENI2/ENI2/LocalizedLookup.cs index 37ddc170..a3253ab1 100644 --- a/ENI-2/ENI2/ENI2/LocalizedLookup.cs +++ b/ENI-2/ENI2/ENI2/LocalizedLookup.cs @@ -214,27 +214,7 @@ namespace ENI2 } reader.Close(); return result; - } - - public static string SSNPortNameFromLocode(string locode) - { - if (locode.IsNullOrEmpty()) return null; - if (locode.Length != 5) return null; - - string result = null; - string query = string.Format("SELECT LocationName FROM SSN_LOCODES WHERE LocationCode = '{0}'", locode); - - SQLiteCommand cmd = new SQLiteCommand(query, _con); - IDataReader reader = cmd.ExecuteReader(); - while (reader.Read()) - { - if (!reader.IsDBNull(0)) - result = reader.GetString(0); - break; - } - reader.Close(); - return result; - } + } public static List SSNAllLocodesForCityNameAsEntries(string city) { diff --git a/ENI-2/ENI2/ENI2/Util/GlobalStructures.cs b/ENI-2/ENI2/ENI2/Util/GlobalStructures.cs index 73e01eff..26984a1e 100644 --- a/ENI-2/ENI2/ENI2/Util/GlobalStructures.cs +++ b/ENI-2/ENI2/ENI2/Util/GlobalStructures.cs @@ -206,7 +206,7 @@ namespace ENI2.Util case RuleEngine.LocodeMode.NO_PORT_FLAG: return !LocodeDB.LocationNameFromLocode(locode).IsNullOrEmpty(); case RuleEngine.LocodeMode.SSN: - return !LocalizedLookup.SSNPortNameFromLocode(locode).IsNullOrEmpty(); + return !LocodeDB.SSNPortNameFromLocode(locode).IsNullOrEmpty(); default: return !LocodeDB.PortNameFromLocode(locode).IsNullOrEmpty(); } diff --git a/Stundensheet.xlsx b/Stundensheet.xlsx index d70f5d0245ca4d29de29854d31026c623afc92ac..d9c2567fd414a87c9051270a67b041bc25e045e6 100644 GIT binary patch delta 20497 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 delta 20363 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 diff --git a/nsw/Source/SendNSWMessageService/SendNSWMessageService.csproj b/nsw/Source/SendNSWMessageService/SendNSWMessageService.csproj index 72dac250..33d9864a 100644 --- a/nsw/Source/SendNSWMessageService/SendNSWMessageService.csproj +++ b/nsw/Source/SendNSWMessageService/SendNSWMessageService.csproj @@ -21,6 +21,7 @@ DEBUG;TRACE prompt 4 + ..\..\..\..\mtc\puls200.frame\frame.ruleset AnyCPU diff --git a/nsw/Source/bsmd.ExcelReadService/ExcelReader.cs b/nsw/Source/bsmd.ExcelReadService/ExcelReader.cs index dacb021f..333581ab 100644 --- a/nsw/Source/bsmd.ExcelReadService/ExcelReader.cs +++ b/nsw/Source/bsmd.ExcelReadService/ExcelReader.cs @@ -21,12 +21,10 @@ using bsmd.database; namespace bsmd.ExcelReadService { internal class ExcelReader : ExcelBase - { - private Dictionary stringVals = new Dictionary(); + { + internal enum ReadState { NONE, OK, WARN, FAIL }; - internal enum ReadState { NONE, OK, WARN, FAIL }; - - internal Dictionary ImportValues { get { return this.stringVals; } } + internal Dictionary ImportValues { get; } = new Dictionary(); public ExcelReader(string filePath) { @@ -129,7 +127,7 @@ namespace bsmd.ExcelReadService if (result != null) { result = result.Trim(); - this.stringVals[lookup] = result; + this.ImportValues[lookup] = result; } return result; @@ -147,6 +145,7 @@ namespace bsmd.ExcelReadService string val = this.ReadText(lookup); if(!val.IsNullOrEmpty()) { + val = val.ToUpper(); string portName = LocodeDB.PortNameFromLocode(val); if(portName == null) { @@ -292,9 +291,9 @@ namespace bsmd.ExcelReadService if(val != null) { - if (val.IndexOf("load", StringComparison.OrdinalIgnoreCase) >= 0) result = 0; - if (val.IndexOf("discharge", StringComparison.OrdinalIgnoreCase) >= 0) result = 1; - if (val.IndexOf("transit", StringComparison.OrdinalIgnoreCase) >= 0) result = 2; + 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 (result == null) this.Conf.ConfirmText(lookup, val, ReadState.WARN); else @@ -422,9 +421,9 @@ namespace bsmd.ExcelReadService if (val != null) { - if (val.IndexOf("all", StringComparison.OrdinalIgnoreCase) >= 0) result = 0; - if (val.IndexOf("some", StringComparison.OrdinalIgnoreCase) >= 0) result = 1; - if (val.IndexOf("none", StringComparison.OrdinalIgnoreCase) >= 0) result = 2; + if ((val.IndexOf("all", StringComparison.OrdinalIgnoreCase) >= 0) || val.Equals("1")) result = 0; + if ((val.IndexOf("some", StringComparison.OrdinalIgnoreCase) >= 0) || val.Equals("2")) result = 1; + if ((val.IndexOf("none", StringComparison.OrdinalIgnoreCase) >= 0) || val.Equals("3")) result = 2; if (result == null) this.Conf.ConfirmText(lookup, val, ReadState.WARN); else @@ -473,7 +472,7 @@ namespace bsmd.ExcelReadService { CultureInfo provider = CultureInfo.InvariantCulture; string dateString = val.ToString(); - string format = "yyyyMMdd"; + const string format = "yyyyMMdd"; if (DateTime.TryParseExact(dateString, format, provider, DateTimeStyles.None, out DateTime tmpDate)) date = tmpDate; } @@ -562,7 +561,7 @@ namespace bsmd.ExcelReadService string dateString = val.ToString(); if (!dateString.Contains(":")) { - string format = "HHmm"; + const string format = "HHmm"; if (DateTime.TryParseExact(dateString, format, provider, DateTimeStyles.None, out DateTime tmpDate)) result = tmpDate; } diff --git a/nsw/Source/bsmd.ExcelReadService/LocodeDB.cs b/nsw/Source/bsmd.ExcelReadService/LocodeDB.cs index fcbf524f..a39fece0 100644 --- a/nsw/Source/bsmd.ExcelReadService/LocodeDB.cs +++ b/nsw/Source/bsmd.ExcelReadService/LocodeDB.cs @@ -162,6 +162,30 @@ namespace bsmd.ExcelReadService return result; } + /// + /// SSN Portname from Locode (for validation) + /// + public static string SSNPortNameFromLocode(string locode) + { + if (locode.IsNullOrEmpty()) return null; + if (locode.Length != 5) return null; + + string result = null; + string query = string.Format("SELECT LocationName FROM SSN_LOCODES WHERE LocationCode = '{0}'", locode); + + SQLiteCommand cmd = new SQLiteCommand(query, _con); + IDataReader reader = cmd.ExecuteReader(); + while (reader.Read()) + { + if (!reader.IsDBNull(0)) + result = reader.GetString(0); + break; + } + reader.Close(); + return result; + } + + /// /// Get Locationname from LOCODE /// diff --git a/nsw/Source/bsmd.ExcelReadService/Util.cs b/nsw/Source/bsmd.ExcelReadService/Util.cs index 7143fd90..51512b41 100644 --- a/nsw/Source/bsmd.ExcelReadService/Util.cs +++ b/nsw/Source/bsmd.ExcelReadService/Util.cs @@ -147,7 +147,7 @@ namespace bsmd.ExcelReadService #region ATA - static void ScanATA(List messages, MessageCore messageCore, ExcelReader reader) + private static void ScanATA(List messages, MessageCore messageCore, ExcelReader reader) { Message ataMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.ATA); if (ataMessage.Elements.Count == 0) @@ -172,7 +172,7 @@ namespace bsmd.ExcelReadService #region ATD - static void ScanATD(List messages, MessageCore messageCore, ExcelReader reader) + private static void ScanATD(List messages, MessageCore messageCore, ExcelReader reader) { Message atdMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.ATD); if (atdMessage.Elements.Count == 0) @@ -197,7 +197,7 @@ namespace bsmd.ExcelReadService #region TIEFA - static void ScanTIEFA(List messages, MessageCore messageCore, ExcelReader reader) + private static void ScanTIEFA(List messages, MessageCore messageCore, ExcelReader reader) { Message tiefaMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.TIEFA); if (tiefaMessage.Elements.Count == 0) @@ -297,8 +297,7 @@ namespace bsmd.ExcelReadService if (!bpolNameValue.IsNullOrEmpty() || !bpolLocodeValue.IsNullOrEmpty()) { - PortOfItinerary poi = bpol.GetSublistElementWithIdentifier(i.ToString()) as PortOfItinerary; - if (poi == null) + if (!(bpol.GetSublistElementWithIdentifier(i.ToString()) is PortOfItinerary poi)) { poi = new PortOfItinerary(); poi.BPOL = bpol; @@ -1098,7 +1097,7 @@ namespace bsmd.ExcelReadService reader.Conf.ConfirmText("STAT.MMSINumber", stat.MMSINumber, (stat.MMSINumber.IsNullOrEmpty() || (stat.MMSINumber.Length != 9)) ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); stat.CallSign = reader.ReadTextNoWhitespace("STAT.CallSign"); - reader.Conf.ConfirmText("STAT.CallSign", stat.CallSign, (stat.CallSign.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK)); + reader.Conf.ConfirmText("STAT.CallSign", stat.CallSign, stat.CallSign.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); stat.ISMCompanyId = reader.ReadTextNoWhitespace("STAT.ISMCompanyId"); @@ -1220,14 +1219,19 @@ namespace bsmd.ExcelReadService reader.Conf.ConfirmText("NOA_NOD.LastPort", lastPort, noa_nod.LastPort.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); string nextPort = reader.ReadText("NOA_NOD.NextPort"); + bool? isValidSSNPort = false; if (!nextPort.IsNullOrEmpty()) { noa_nod.NextPort = nextPort.Trim(); if (noa_nod.NextPort.Length > 5) noa_nod.NextPort = noa_nod.NextPort.Substring(0, 5); //trunc - } + isValidSSNPort = !LocodeDB.SSNPortNameFromLocode(noa_nod.NextPort).IsNullOrEmpty(); + } - reader.Conf.ConfirmText("NOA_NOD.NextPort", nextPort, noa_nod.NextPort.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); + if(!isValidSSNPort.HasValue) + reader.Conf.ConfirmText("NOA_NOD.NextPort", nextPort, ExcelReader.ReadState.WARN); + else + reader.Conf.ConfirmText("NOA_NOD.NextPort", nextPort, isValidSSNPort.Value ? ExcelReader.ReadState.OK : ExcelReader.ReadState.FAIL); if(messageCore.IsTransit) { @@ -1248,7 +1252,7 @@ namespace bsmd.ExcelReadService noa_nod.ETDFromLastPort = reader.ReadDateTime("NOA_NOD.ETDDateFromLastPort", "NOA_NOD.ETDTimeFromLastPort"); noa_nod.ETAToNextPort = reader.ReadDateTime("NOA_NOD.ETADateToNextPort", "NOA_NOD.ETATimeToNextPort"); // DK - noa_nod.IsAnchored = reader.ReadBoolean("NOA_NOD.IsAnchored", (reader.Mode == ExcelReader.CountryMode.DE)); + noa_nod.IsAnchored = reader.ReadBoolean("NOA_NOD.IsAnchored", reader.Mode == ExcelReader.CountryMode.DE); } @@ -1728,9 +1732,9 @@ namespace bsmd.ExcelReadService string isscType = reader.ReadText("SEC.ISSCType"); if(isscType != null) { - if (isscType.Equals("full", StringComparison.OrdinalIgnoreCase)) + if (isscType.Equals("full", StringComparison.OrdinalIgnoreCase) || isscType.Equals("1")) sec.ISSCType = 0; - if (isscType.Equals("interim", StringComparison.OrdinalIgnoreCase)) + if (isscType.Equals("interim", StringComparison.OrdinalIgnoreCase) || isscType.Equals("2")) sec.ISSCType = 1; } @@ -1752,9 +1756,9 @@ namespace bsmd.ExcelReadService string isscIssuerType = reader.ReadText("SEC.ISSCIssuerType"); if(isscIssuerType != null) { - if (isscIssuerType.Equals("rso", StringComparison.OrdinalIgnoreCase)) + if (isscIssuerType.Equals("rso", StringComparison.OrdinalIgnoreCase) || isscIssuerType.Equals("2")) sec.ISSCIssuerType = 1; - if (isscIssuerType.Contains("admin", StringComparison.OrdinalIgnoreCase)) + if (isscIssuerType.Contains("admin", StringComparison.OrdinalIgnoreCase) || isscIssuerType.Equals("1")) sec.ISSCIssuerType = 0; } diff --git a/nsw/Source/bsmd.dakosy/bsmd.dakosy.csproj b/nsw/Source/bsmd.dakosy/bsmd.dakosy.csproj index dae872b1..9f568b04 100644 --- a/nsw/Source/bsmd.dakosy/bsmd.dakosy.csproj +++ b/nsw/Source/bsmd.dakosy/bsmd.dakosy.csproj @@ -20,6 +20,7 @@ DEBUG;TRACE prompt 4 + ..\..\..\..\mtc\puls200.frame\frame.ruleset pdbonly diff --git a/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs b/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs index f4455e15..427dad81 100644 --- a/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs +++ b/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs @@ -2,6 +2,6 @@ [assembly: AssemblyCompany("schick Informatik")] [assembly: AssemblyProduct("BSMD NSW interface")] -[assembly: AssemblyInformationalVersion("5.1.2")] +[assembly: AssemblyInformationalVersion("5.1.3")] [assembly: AssemblyCopyright("Copyright © 2014-2018 schick Informatik")] [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 f7afc150..c3fff841 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("5.1.2.*")] +[assembly: AssemblyVersion("5.1.3.*")] diff --git a/nsw/Source/bsmd.database/RuleEngine.cs b/nsw/Source/bsmd.database/RuleEngine.cs index adbbbed4..ed67fa6f 100644 --- a/nsw/Source/bsmd.database/RuleEngine.cs +++ b/nsw/Source/bsmd.database/RuleEngine.cs @@ -401,7 +401,7 @@ namespace bsmd.database // individuelle Fehler nach Nachrichtenklasse prüfen derivedEntity.MessageCore = aMessage.MessageCore; // some instance we need info from core (NOA / Transit) if ((derivedEntity is LADG) && aMessage.MessageCore.IsTransit) continue; // kein error reporting für LADG bei Transit (CH, 1.2.16) - if ((derivedEntity is SEC) && aMessage.MessageCore.IsSmallShip) continue; // keine STAT Validierung für kleine Schiffe (CH, 1.11.18) + if ((derivedEntity is SEC) && aMessage.MessageCore.IsSmallShip) continue; // keine SEC Validierung für kleine Schiffe (CH, 1.11.18) RuleEngine.ValidateProperties(derivedEntity, errors, violations); derivedEntity.Validate(errors, violations); } diff --git a/nsw/Source/bsmd.database/SEC.cs b/nsw/Source/bsmd.database/SEC.cs index 533e33c5..615a443c 100644 --- a/nsw/Source/bsmd.database/SEC.cs +++ b/nsw/Source/bsmd.database/SEC.cs @@ -383,6 +383,11 @@ namespace bsmd.database L10Called.Validate(errors, violations); } + if(this.LastTenPortFacilitesCalled.Count != 10) + { + violations.Add(RuleEngine.CreateViolation(ValidationCode.IMPLAUSIBLE, "Number of last port facilities != 10", null, this.Title, null, this.Tablename)); + } + foreach (ShipToShipActivitiesDuringLastTenPortFacilitiesCalled s2s in this.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled) { RuleEngine.ValidateProperties(s2s, errors, violations); diff --git a/nsw/Source/bsmd.dbh/bsmd.dbh.csproj b/nsw/Source/bsmd.dbh/bsmd.dbh.csproj index 31cbde11..43316a89 100644 --- a/nsw/Source/bsmd.dbh/bsmd.dbh.csproj +++ b/nsw/Source/bsmd.dbh/bsmd.dbh.csproj @@ -20,6 +20,7 @@ DEBUG;TRACE prompt 4 + ..\..\..\..\mtc\puls200.frame\frame.ruleset pdbonly diff --git a/nsw/Source/bsmd.hisnord/Request.cs b/nsw/Source/bsmd.hisnord/Request.cs index b36aa0c3..8f9a957c 100644 --- a/nsw/Source/bsmd.hisnord/Request.cs +++ b/nsw/Source/bsmd.hisnord/Request.cs @@ -19,21 +19,17 @@ namespace bsmd.hisnord { public class Request { - private static ILog _log = LogManager.GetLogger(typeof(Request)); + private static readonly ILog _log = LogManager.GetLogger(typeof(Request)); private static Dictionary _reportingPartyDict = null; - private static Dictionary> coreFilenameDict = new Dictionary>(); - private static Dictionary coreUseTestDict = new Dictionary(); + private static readonly Dictionary> coreFilenameDict = new Dictionary>(); + private static readonly Dictionary coreUseTestDict = new Dictionary(); //private static Dictionary noteMessageDict = new Dictionary(); internal static Dictionary ReportingPartyDict { get { - if (_reportingPartyDict == null) - { - _reportingPartyDict = DBManager.Instance.GetReportingPartyDict(); - } - return _reportingPartyDict; + return _reportingPartyDict ?? (_reportingPartyDict = DBManager.Instance.GetReportingPartyDict()); } } @@ -105,8 +101,8 @@ namespace bsmd.hisnord return false; } - _nsw.conveyance.owner_sender.name_short = @"BSMD"; - _nsw.conveyance.owner_sender.name_long = @"BSMD";// rp.Name; // core.Customer.Name; + _nsw.conveyance.owner_sender.name_short = "BSMD"; + _nsw.conveyance.owner_sender.name_long = "BSMD";// rp.Name; // core.Customer.Name; _nsw.conveyance.owner_sender.address = new addresstype(); @@ -116,7 +112,7 @@ namespace bsmd.hisnord // das hier ist der e-mail(!) Empfänger für Error/Violation Meldungen _nsw.conveyance.owner_sender.contact = new contacts(); - _nsw.conveyance.owner_sender.contact.name = @"BSMD"; // rp.LastName; + _nsw.conveyance.owner_sender.contact.name = "BSMD"; // rp.LastName; _nsw.conveyance.owner_sender.contact.email = rp.EMail; _nsw.conveyance.owner_sender.contact.firstname = string.Format("{0} {1}", rp.FirstName, rp.LastName); _nsw.conveyance.owner_sender.contact.phone = rp.Phone; @@ -207,7 +203,7 @@ namespace bsmd.hisnord hn_stat.InmarsatCallNumbers.InmarsatCallNumber = callNumbers.ToArray(); } - if (!stat.ISMCompanyName.IsNullOrEmpty() || ((stat.GrossTonnage ?? 0) > 500)) // Vio. 821 + if (!stat.ISMCompanyName.IsNullOrEmpty() && ((stat.GrossTonnage ?? 0) >= 500)) // Vio. 821 { hn_stat.ISMCompany = new ismcompany(); if (!stat.ISMCompanyCity.IsNullOrEmpty()) @@ -1024,7 +1020,7 @@ namespace bsmd.hisnord List mdh_items = new List(); List mdh_types = new List(); - if (mdh.MDHSimplification.HasValue && mdh.MDHSimplification.Value) + if (mdh.MDHSimplification == true) { mdh_items.Add(ytype.Y); mdh_types.Add(ItemsChoiceType5.MDHSimplification); diff --git a/nsw/Source/bsmd.hisnord/bsmd.hisnord.csproj b/nsw/Source/bsmd.hisnord/bsmd.hisnord.csproj index 3f164053..bf96dbe8 100644 --- a/nsw/Source/bsmd.hisnord/bsmd.hisnord.csproj +++ b/nsw/Source/bsmd.hisnord/bsmd.hisnord.csproj @@ -20,6 +20,7 @@ DEBUG;TRACE prompt 4 + ..\..\..\..\mtc\puls200.frame\frame.ruleset pdbonly diff --git a/nsw/Source/bsmd.status/bsmd.status.csproj b/nsw/Source/bsmd.status/bsmd.status.csproj index bfb15ccb..e5015984 100644 --- a/nsw/Source/bsmd.status/bsmd.status.csproj +++ b/nsw/Source/bsmd.status/bsmd.status.csproj @@ -21,6 +21,7 @@ DEBUG;TRACE prompt 4 + ..\..\..\..\mtc\puls200.frame\frame.ruleset pdbonly