3.3.12: Schönheitskorrekturen und neuer Ablauf WASTE

This commit is contained in:
Daniel Schick 2017-01-31 07:51:08 +00:00
parent 9719252300
commit e2c4fbd05c
11 changed files with 218 additions and 45 deletions

Binary file not shown.

Binary file not shown.

View File

@ -360,6 +360,17 @@ namespace bsmd.ExcelReadService
}
}
internal DateTime? ReadBirthDate(string lookup)
{
DateTime? result = this.ReadDate(lookup);
// mark fail if date is in the future
if(result.HasValue)
{
if (result.Value > DateTime.Now) this.Conf.ConfirmDate(lookup, result, ReadState.FAIL);
}
return result;
}
internal DateTime? ReadDate(string lookup)
{
try

View File

@ -425,8 +425,10 @@ namespace bsmd.ExcelReadService
string imdg_stowagePosition = string.Format("HAZA.IMDG.StowagePosition_{0}", i);
string imdg_portOfLoading = string.Format("HAZA.IMDG.PortOfLoading_{0}", i);
string imdg_portOfDischarge = string.Format("HAZA.IMDG.PortOfDischarge_{0}", i);
string imdg_containerNumber = string.Format("HAZA.IMDG.ContainerNumber_{0}", i);
string unNumber = reader.ReadText(imdg_unno);
string unNumber = reader.ReadText(imdg_unno);
if(unNumber.IsNullOrEmpty()) // if unnumber is not set ignore this row
{
reader.Conf.ConfirmText(imdg_unno, null, ExcelReader.ReadState.WARN);
@ -467,7 +469,9 @@ namespace bsmd.ExcelReadService
reader.Conf.ConfirmText(imdg_portOfLoading, imdgPosition.PortOfLoading, imdgPosition.PortOfLoading.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK);
imdgPosition.PortOfDischarge = reader.ReadText(imdg_portOfDischarge);
reader.Conf.ConfirmText(imdg_portOfDischarge, imdgPosition.PortOfDischarge, imdgPosition.PortOfDischarge.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK);
}
imdgPosition.ContainerNumber = reader.ReadText(imdg_containerNumber);
reader.Conf.ConfirmText(imdg_containerNumber, imdgPosition.ContainerNumber, imdgPosition.ContainerNumber.IsNullOrEmpty() ? ExcelReader.ReadState.NONE : ExcelReader.ReadState.OK);
}
#endregion
@ -701,6 +705,7 @@ namespace bsmd.ExcelReadService
string imdg_stowagePosition = string.Format("HAZD.IMDG.StowagePosition_{0}", i);
string imdg_portOfLoading = string.Format("HAZD.IMDG.PortOfLoading_{0}", i);
string imdg_portOfDischarge = string.Format("HAZD.IMDG.PortOfDischarge_{0}", i);
string imdg_containerNumber = string.Format("HAZD.IMDG.ContainerNumber_{0}", i);
string unNumber = reader.ReadText(imdg_unno);
if (unNumber.IsNullOrEmpty()) // if unnumber is not set ignore this row
@ -743,6 +748,8 @@ namespace bsmd.ExcelReadService
reader.Conf.ConfirmText(imdg_portOfLoading, imdgPosition.PortOfLoading, imdgPosition.PortOfLoading.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK);
imdgPosition.PortOfDischarge = reader.ReadText(imdg_portOfDischarge);
reader.Conf.ConfirmText(imdg_portOfDischarge, imdgPosition.PortOfDischarge, imdgPosition.PortOfDischarge.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK);
imdgPosition.ContainerNumber = reader.ReadText(imdg_containerNumber);
reader.Conf.ConfirmText(imdg_containerNumber, imdgPosition.ContainerNumber, imdgPosition.ContainerNumber.IsNullOrEmpty() ? ExcelReader.ReadState.NONE : ExcelReader.ReadState.OK);
}
#endregion
@ -959,7 +966,7 @@ namespace bsmd.ExcelReadService
STAT stat = statMessage.Elements[0] as STAT;
Util.ScanMessage(stat, reader);
stat.MMSINumber = reader.ReadTextNoWhitespace("STAT.MMSINumber");
reader.Conf.ConfirmText("STAT.MMSINumber", stat.MMSINumber, stat.MMSINumber.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK);
reader.Conf.ConfirmText("STAT.MMSINumber", stat.MMSINumber, (stat.MMSINumber.IsNullOrEmpty() || (stat.MMSINumber.Length != 7)) ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK);
stat.ISMCompanyId = reader.ReadTextNoWhitespace("STAT.ISMCompanyId");
if(!stat.ISMCompanyId.IsNullOrEmpty() && stat.ISMCompanyId.Length < 7)
@ -1206,23 +1213,44 @@ namespace bsmd.ExcelReadService
}
waste.WasteType = (int?) reader.ReadNumber(wasteCode);
reader.Conf.ConfirmText(wastetype, waste.WasteTypeDisplayV4, ExcelReader.ReadState.OK);
reader.Conf.ConfirmNumber(wasteCode, waste.WasteType, ExcelReader.ReadState.OK);
if (reader.Mode == ExcelReader.CountryMode.DE)
{
reader.Conf.ConfirmText(wastetype, waste.WasteTypeDisplayV4, ExcelReader.ReadState.OK);
reader.Conf.ConfirmNumber(wasteCode, waste.WasteType, ExcelReader.ReadState.OK);
}
else if (reader.Mode == ExcelReader.CountryMode.DK)
{
reader.Conf.ConfirmText(wastetype, WAS.DKWasteTypes[i - 1], ExcelReader.ReadState.OK);
reader.Conf.ConfirmNumber(wasteCode, WAS.DKWasteCodes[i - 1], ExcelReader.ReadState.OK);
}
// Waste description Spezialfälle für DK
waste.WasteDescription = reader.ReadText(wasteDescription);
if (waste.WasteDescription.IsNullOrEmpty())
{
if (reader.Mode == ExcelReader.CountryMode.DE)
{
if (waste.WasteDescription.IsNullOrEmpty())
{
if (reader.Mode == ExcelReader.CountryMode.DE)
{
waste.WasteDescription = "-";
}
else if (reader.Mode == ExcelReader.CountryMode.DK)
{
waste.WasteDescription = "-";
if (i == 6) waste.WasteDescription = "Domestic wastes";
}
else if (reader.Mode == ExcelReader.CountryMode.DK)
{
waste.WasteDescription = "-";
if (i == 6) waste.WasteDescription = "Domestic waste";
if (i == 9) waste.WasteDescription = "Operational waste";
}
}
}
}
else
{
if (reader.Mode == ExcelReader.CountryMode.DK)
{
if (i == 6)
waste.WasteDescription = string.Format("Domestic waste - {0}", waste.WasteDescription);
if (i == 9)
waste.WasteDescription = string.Format("Operational waste - {0}", waste.WasteDescription);
}
}
reader.Conf.ConfirmText(wasteDescription, waste.WasteDescription, waste.WasteDescription.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK);
waste.WasteDisposalAmount_MTQ = reader.ReadNumberDefaultZero(wasteAmount);
waste.WasteCapacity_MTQ = reader.ReadNumberDefaultZero(wasteCapacity);
@ -1248,6 +1276,28 @@ namespace bsmd.ExcelReadService
}
try
{
// Übergangsphase: Für "DE" werden nur 9 Positionen verwendet
// EMail Christin mit angehängtem Excel Sheet vom 30.1.2017
if (reader.Mode == ExcelReader.CountryMode.DE)
{
Waste nrSeven = was.GetSublistElementWithIdentifier("7") as Waste;
Waste nrEleven = was.GetSublistElementWithIdentifier("11") as Waste;
nrSeven.WasteDescription = nrEleven.WasteDescription;
nrSeven.WasteDisposalAmount_MTQ = nrEleven.WasteDisposalAmount_MTQ;
nrSeven.WasteCapacity_MTQ = nrEleven.WasteCapacity_MTQ;
nrSeven.WasteAmountRetained_MTQ = nrEleven.WasteAmountRetained_MTQ;
nrSeven.WasteDisposalPort = nrEleven.WasteDisposalPort;
nrSeven.WasteAmountGeneratedTillNextPort_MTQ = nrEleven.WasteAmountGeneratedTillNextPort_MTQ;
was.Waste.RemoveRange(9, 6); // 9-15 entfernen
}
}
catch(Exception ex)
{
_log.ErrorFormat("Error Waste Workaround DE: {0}", ex.Message);
}
}
#endregion
@ -1275,10 +1325,12 @@ namespace bsmd.ExcelReadService
try
{
// lt. Mail von Christin am 11.10.2016
// "SEC" Mode, die Werte aus last10PortFacilitesCalled (SEC) werden übernommen
// das funktioniert, da SEC vor MDH gelesen wird
if (!kuerzelErsteZelle.IsNullOrEmpty() && kuerzelErsteZelle.Equals("sec", StringComparison.OrdinalIgnoreCase))
#region PoC last 30 days
// lt. Mail von Christin am 11.10.2016
// "SEC" Mode, die Werte aus last10PortFacilitesCalled (SEC) werden übernommen
// das funktioniert, da SEC vor MDH gelesen wird
if (!kuerzelErsteZelle.IsNullOrEmpty() && kuerzelErsteZelle.Equals("sec", StringComparison.OrdinalIgnoreCase))
{
Message secMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.SEC);
if (secMessage.Elements.Count == 0) return;
@ -1369,7 +1421,99 @@ namespace bsmd.ExcelReadService
}
}
}
#endregion
#region SanitaryMeasures
if (mdh.SanitaryMeasuresApplied ?? false)
{
for (int i = 1; i <= 3; i++)
{
string smType = string.Format("MDH.SanitaryMeasuresType_{0}", i);
string smLocation = string.Format("MDH.SanitaryMeasuresLocation_{0}", i);
string smDate = string.Format("MDH.SanitaryMeasuresDate_{0}", i);
SanitaryMeasuresDetail smd = mdh.GetSanitaryMeasuresDetailWithIdentifier(i.ToString());
if(smd == null)
{
smd = new SanitaryMeasuresDetail();
smd.Identifier = i.ToString();
mdh.SanitaryMeasuresDetails.Add(smd);
smd.MDH = mdh;
}
smd.SanitaryMeasuresType = reader.ReadText(smType);
reader.Conf.ConfirmText(smType, smd.SanitaryMeasuresType, smd.SanitaryMeasuresType.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK);
smd.SanitaryMeasuresLocation = reader.ReadText(smLocation);
reader.Conf.ConfirmText(smLocation, smd.SanitaryMeasuresLocation, smd.SanitaryMeasuresLocation.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK);
smd.SanitaryMeasuresDate = reader.ReadDate(smDate);
// dont save completely empty structs
if (!smd.SanitaryMeasuresDate.HasValue && smd.SanitaryMeasuresLocation.IsNullOrEmpty() && smd.SanitaryMeasuresType.IsNullOrEmpty())
mdh.SanitaryMeasuresDetails.Remove(smd);
}
}
#endregion
#region InfectedArea
if (mdh.InfectedAreaVisited ?? false)
{
for (int i = 1; i <= 3; i++)
{
string iaPort = string.Format("MDH.InfectedAreaPort_{0}", i);
string iaDate = string.Format("MDH.InfectedAreaDate_{0}", i);
InfectedArea ia = mdh.GetInfectedAreaWithIdentifier(i.ToString());
if (ia == null)
{
ia = new InfectedArea();
ia.Identifier = i.ToString();
mdh.InfectedAreas.Add(ia);
ia.MDH = mdh;
}
ia.InfectedAreaPort = reader.ReadText(iaPort);
reader.Conf.ConfirmText(iaPort, ia.InfectedAreaPort, ia.InfectedAreaPort.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK);
ia.InfectedAreaDate = reader.ReadDate(iaDate);
// dont save completely empty structs
if (!ia.InfectedAreaDate.HasValue && ia.InfectedAreaPort.IsNullOrEmpty())
mdh.InfectedAreas.Remove(ia);
}
}
#endregion
#region StowawaysJoiningLocation
if(mdh.StowawaysDetected ?? false)
{
for (int i = 1; i <= 3; i++)
{
string sjlLookup = string.Format("MDH.StowawaysJoiningLocation_{0}", i);
StowawaysJoiningLocation sjl = mdh.GetStowawaysJoiningLocationWithIdentifier(i.ToString());
if (sjl == null)
{
sjl = new StowawaysJoiningLocation();
sjl.Identifier = i.ToString();
sjl.MDH = mdh;
mdh.StowawaysJoiningLocations.Add(sjl);
}
sjl.StowawayJoiningLocation = reader.ReadText(sjlLookup);
if (sjl.StowawayJoiningLocation.IsNullOrEmpty())
{
reader.Conf.ConfirmText(sjlLookup, null, ExcelReader.ReadState.WARN);
mdh.StowawaysJoiningLocations.Remove(sjl);
}
else
{
reader.Conf.ConfirmText(sjlLookup, sjl.StowawayJoiningLocation, ExcelReader.ReadState.OK);
}
}
}
#endregion
}
catch(Exception ex)
{
_log.ErrorFormat("Crash during reading of MDH message: {0}", ex);
@ -1434,8 +1578,8 @@ namespace bsmd.ExcelReadService
string genDescCargo = reader.ReadText("SEC.GeneralDescriptionOfCargo");
if(genDescCargo != null)
{
if (genDescCargo.Equals("container", StringComparison.OrdinalIgnoreCase)) sec.GeneralDescriptionOfCargo = 0;
if (genDescCargo.Equals("vehicles", StringComparison.OrdinalIgnoreCase)) sec.GeneralDescriptionOfCargo = 1;
if (genDescCargo.Contains("container", StringComparison.OrdinalIgnoreCase)) sec.GeneralDescriptionOfCargo = 0;
if (genDescCargo.Contains("vehicles", StringComparison.OrdinalIgnoreCase)) sec.GeneralDescriptionOfCargo = 1;
if (genDescCargo.Contains("convent", StringComparison.OrdinalIgnoreCase)) sec.GeneralDescriptionOfCargo = 2;
if (genDescCargo.Contains("dry", StringComparison.OrdinalIgnoreCase)) sec.GeneralDescriptionOfCargo = 3;
if (genDescCargo.Contains("liquid", StringComparison.OrdinalIgnoreCase)) sec.GeneralDescriptionOfCargo = 4;
@ -1704,6 +1848,8 @@ namespace bsmd.ExcelReadService
// diese Nachricht bleibt auch wenn sie leer ist
pre72h.ConditionCargoBallastTanks = reader.ReadConditionTanks("PRE72H.ConditionCargoBallastTanks");
pre72h.TankerHullConfiguration = reader.ReadHullConfiguration("PRE72H.TankerHullConfiguration");
pre72h.PlannedWorks = reader.ReadText("PRE72H.PlannedWorks");
reader.Conf.ConfirmText("PRE72H.PlannedWorks", pre72h.PlannedWorks, pre72h.PlannedWorks.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK);
}
#endregion
@ -1878,7 +2024,7 @@ namespace bsmd.ExcelReadService
crew.CrewMemberLastName = lastName;
reader.Conf.ConfirmText(crewLastName, lastName, ExcelReader.ReadState.OK);
crew.CrewMemberFirstName = reader.ReadText(crewFirstName);
reader.Conf.ConfirmText(crewFirstName, crew.CrewMemberFirstName, ExcelReader.ReadState.OK);
reader.Conf.ConfirmText(crewFirstName, crew.CrewMemberFirstName, crew.CrewMemberFirstName.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK);
crew.CrewMemberGender = reader.ReadGender(crewGender);
crew.CrewMemberDuty = reader.ReadText(crewDuty);
reader.Conf.ConfirmText(crewDuty, crew.CrewMemberDuty, ExcelReader.ReadState.OK);
@ -1887,7 +2033,7 @@ namespace bsmd.ExcelReadService
crew.CrewMemberPlaceOfBirth = reader.ReadText(crewPlaceOfBirth);
reader.Conf.ConfirmText(crewPlaceOfBirth, crew.CrewMemberPlaceOfBirth, ExcelReader.ReadState.OK);
crew.CrewMemberDateOfBirth = reader.ReadDate(crewDateOfBirth);
crew.CrewMemberDateOfBirth = reader.ReadBirthDate(crewDateOfBirth);
crew.CrewMemberIdentityDocumentType = reader.ReadIdentityDocumentType(crewIdentDocType);
crew.CrewMemberIdentityDocumentId = reader.ReadText(crewIdentDocId);
@ -1930,7 +2076,7 @@ namespace bsmd.ExcelReadService
crew.CrewMemberLastName = lastName;
reader.Conf.ConfirmText(crewLastName, lastName, ExcelReader.ReadState.OK);
crew.CrewMemberFirstName = reader.ReadText(crewFirstName);
reader.Conf.ConfirmText(crewFirstName, crew.CrewMemberFirstName, ExcelReader.ReadState.OK);
reader.Conf.ConfirmText(crewFirstName, crew.CrewMemberFirstName, crew.CrewMemberFirstName.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK);
crew.CrewMemberGender = reader.ReadGender(crewGender);
crew.CrewMemberDuty = reader.ReadText(crewDuty);
reader.Conf.ConfirmText(crewDuty, crew.CrewMemberDuty, ExcelReader.ReadState.OK);
@ -1939,7 +2085,7 @@ namespace bsmd.ExcelReadService
crew.CrewMemberPlaceOfBirth = reader.ReadText(crewPlaceOfBirth);
reader.Conf.ConfirmText(crewPlaceOfBirth, crew.CrewMemberPlaceOfBirth, ExcelReader.ReadState.OK);
crew.CrewMemberDateOfBirth = reader.ReadDate(crewDateOfBirth);
crew.CrewMemberDateOfBirth = reader.ReadBirthDate(crewDateOfBirth);
crew.CrewMemberIdentityDocumentType = reader.ReadIdentityDocumentType(crewIdentDocType);
crew.CrewMemberIdentityDocumentId = reader.ReadText(crewIdentDocId);
@ -1989,7 +2135,7 @@ namespace bsmd.ExcelReadService
pas.PassengerLastName = lastName;
reader.Conf.ConfirmText(pasLastName, lastName, ExcelReader.ReadState.OK);
pas.PassengerFirstName = reader.ReadText(pasFirstName);
reader.Conf.ConfirmText(pasFirstName, pas.PassengerFirstName, ExcelReader.ReadState.OK);
reader.Conf.ConfirmText(pasFirstName, pas.PassengerFirstName, pas.PassengerFirstName.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK);
pas.PassengerGender = reader.ReadGender(pasGender);
pas.PassengerNationality = reader.ReadNationality(pasNationality);
// TODO: Nicht klar ob hier LOCODEs kommen oder nicht
@ -2000,7 +2146,7 @@ namespace bsmd.ExcelReadService
pas.PassengerInTransit = reader.ReadBoolean(pasTransit);
pas.PassengerPlaceOfBirth = reader.ReadText(pasPlaceOfBirth);
reader.Conf.ConfirmText(pasPlaceOfBirth, pas.PassengerPlaceOfBirth, ExcelReader.ReadState.OK);
pas.PassengerDateOfBirth = reader.ReadDate(pasDateOfBirth);
pas.PassengerDateOfBirth = reader.ReadBirthDate(pasDateOfBirth);
pas.PassengerIdentityDocumentType = reader.ReadIdentityDocumentType(pasIdentDocType);
pas.PassengerIdentityDocumentId = reader.ReadText(pasIdentDocId);
reader.Conf.ConfirmText(pasIdentDocId, pas.PassengerIdentityDocumentId, ExcelReader.ReadState.OK);
@ -2043,7 +2189,7 @@ namespace bsmd.ExcelReadService
pas.PassengerLastName = lastName;
reader.Conf.ConfirmText(pasLastName, lastName, ExcelReader.ReadState.OK);
pas.PassengerFirstName = reader.ReadText(pasFirstName);
reader.Conf.ConfirmText(pasFirstName, pas.PassengerFirstName, ExcelReader.ReadState.OK);
reader.Conf.ConfirmText(pasFirstName, pas.PassengerFirstName, pas.PassengerFirstName.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK);
pas.PassengerGender = reader.ReadGender(pasGender);
pas.PassengerNationality = reader.ReadNationality(pasNationality);
// TODO: Nicht klar ob hier LOCODEs kommen oder nicht
@ -2054,7 +2200,7 @@ namespace bsmd.ExcelReadService
pas.PassengerInTransit = reader.ReadBoolean(pasTransit);
pas.PassengerPlaceOfBirth = reader.ReadText(pasPlaceOfBirth);
reader.Conf.ConfirmText(pasPlaceOfBirth, pas.PassengerPlaceOfBirth, ExcelReader.ReadState.OK);
pas.PassengerDateOfBirth = reader.ReadDate(pasDateOfBirth);
pas.PassengerDateOfBirth = reader.ReadBirthDate(pasDateOfBirth);
pas.PassengerIdentityDocumentType = reader.ReadIdentityDocumentType(pasIdentDocType);
pas.PassengerIdentityDocumentId = reader.ReadText(pasIdentDocId);
reader.Conf.ConfirmText(pasIdentDocId, pas.PassengerIdentityDocumentId, ExcelReader.ReadState.OK);
@ -2172,13 +2318,14 @@ namespace bsmd.ExcelReadService
}
#endregion
#endregion
#region LookupMessageCore
/// <summary>
/// Check with cell values if this message core is already in our DB
/// </summary>
private static MessageCore LookupMessageCore(ExcelReader reader, out string message)
/// <summary>
/// Check with cell values if this message core is already in our DB
/// </summary>
private static MessageCore LookupMessageCore(ExcelReader reader, out string message)
{
// lookup using field values
MessageCore result = null;
@ -2379,7 +2526,10 @@ namespace bsmd.ExcelReadService
return result;
}
private static DateTime ConstructDate(string etaDateString, string etaTime)
#endregion
/*
private static DateTime ConstructDate(string etaDateString, string etaTime)
{
DateTime result = DateTime.Now;
if (DateTime.TryParse(etaDateString, out result))
@ -2390,8 +2540,11 @@ namespace bsmd.ExcelReadService
}
return result;
}
*/
private static Message GetMessageWithType(List<Message> messages, MessageCore core, Message.NotificationClass type)
#region GetMessageWithType
private static Message GetMessageWithType(List<Message> messages, MessageCore core, Message.NotificationClass type)
{
foreach(Message message in messages)
if (message.MessageNotificationClass == type) return message;
@ -2404,5 +2557,7 @@ namespace bsmd.ExcelReadService
return newMessage;
}
}
#endregion
}
}

View File

@ -52,7 +52,7 @@ namespace bsmd.database
[ShowReport]
[Validation(ValidationCode.NOT_NULL)]
[LookupName("PRE72H.PlannedWorks")]
// nach Util verschoben
[MaxLength(255)]
public string PlannedWorks { get; set; }

View File

@ -2,6 +2,6 @@
[assembly: AssemblyCompany("Informatikbüro Daniel Schick")]
[assembly: AssemblyProduct("BSMD NSW interface")]
[assembly: AssemblyInformationalVersion("3.3.11")]
[assembly: AssemblyInformationalVersion("3.3.12")]
[assembly: AssemblyCopyright("Copyright © 2014-2017 Informatikbüro Daniel Schick. All rights reserved.")]
[assembly: AssemblyTrademark("")]

View File

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

View File

@ -21,6 +21,9 @@ namespace bsmd.database
private List<Waste> waste = new List<Waste>();
private static readonly int[] dkWasteCodes = { 1100, 1200, 1300, 2100, 2200, 2300, 2311, 2308, 2300, 2309, 3000, 5100, 5200, 5300, 2300 };
private static readonly string[] dkWasteTypes = { "Waste oils - Sludge", "Waste oils - Bilge water", "Waste oils - Other", "Garbage - Food waste", "Garbage - Plastic", "Garbage - Other", "Garbage - Other - Cooking oil", "Garbage - Other - Incinerator ashes and clinkers", "Garbage - Other", "Garbage - Other - Animal carcasses", "Sewage", "Cargo residues - Marpol Annex I - Other", "Cargo residues - Marpol Annex II - Other", "Cargo residues - Marpol Annex V - Other", "Garbage - Other" };
public WAS()
{
this.tablename = "[dbo].[WAS]";
@ -28,6 +31,10 @@ namespace bsmd.database
#region Properties
public static int[] DKWasteCodes { get { return dkWasteCodes; } }
public static string[] DKWasteTypes { get { return dkWasteTypes; } }
[ShowReport]
public bool? WasteDisposalValidExemption { get; set; }