3.0.13 / 3.0.14

Korrekturen nach Tests für den Versand HIS-Nord und Dakosy
This commit is contained in:
Daniel Schick 2016-04-27 18:58:06 +00:00
parent 0ae6ec8605
commit fb436f8536
6 changed files with 90 additions and 33 deletions

Binary file not shown.

View File

@ -128,17 +128,20 @@ namespace bsmd.dakosy
vList.Visit[0].AGNT = new AGNT();
vList.Visit[0].AGNT.CompanyName = agnt.AgentCompanyName;
int lastBlank = agnt.AgentStreetAndNumber.LastIndexOf(' ');
string number = (lastBlank > 0) ? agnt.AgentStreetAndNumber.Substring(lastBlank) : "";
if ((lastBlank > 0) && (number.Length > 0) && (Char.IsNumber(number[0])))
if (agnt.AgentStreetAndNumber != null)
{
vList.Visit[0].AGNT.StreetName = agnt.AgentStreetAndNumber.Substring(0, lastBlank);
vList.Visit[0].AGNT.StreetNumber = agnt.AgentStreetAndNumber.Substring(lastBlank);
}
else
{
vList.Visit[0].AGNT.StreetName = agnt.AgentStreetAndNumber;
vList.Visit[0].AGNT.StreetNumber = "";
int lastBlank = agnt.AgentStreetAndNumber.LastIndexOf(' ');
string number = (lastBlank > 0) ? agnt.AgentStreetAndNumber.Substring(lastBlank) : "";
if ((lastBlank > 0) && (number.Length > 0) && (Char.IsNumber(number[0])))
{
vList.Visit[0].AGNT.StreetName = agnt.AgentStreetAndNumber.Substring(0, lastBlank);
vList.Visit[0].AGNT.StreetNumber = agnt.AgentStreetAndNumber.Substring(lastBlank);
}
else
{
vList.Visit[0].AGNT.StreetName = agnt.AgentStreetAndNumber;
vList.Visit[0].AGNT.StreetNumber = "";
}
}
vList.Visit[0].AGNT.PostalCode = agnt.AgentPostalCode;
@ -282,11 +285,11 @@ namespace bsmd.dakosy
vList.Visit[0].CREW[i].FirstName = crew.CrewMemberFirstName;
vList.Visit[0].CREW[i].GenderSpecified = crew.CrewMemberGender.HasValue;
byte gender = crew.CrewMemberGender ?? 0;
vList.Visit[0].CREW[i].Gender = (GenderType)gender;
vList.Visit[0].CREW[i].Gender = (gender == 1) ? GenderType.FEMALE : GenderType.MALE;
vList.Visit[0].CREW[i].IdentityDocumentId = crew.CrewMemberIdentityDocumentId;
vList.Visit[0].CREW[i].IdentityDocumentTypeSpecified = crew.CrewMemberIdentityDocumentType.HasValue;
byte dType = crew.CrewMemberIdentityDocumentType ?? 0;
vList.Visit[0].CREW[i].IdentityDocumentType = (IdentityDocumentType)dType;
vList.Visit[0].CREW[i].IdentityDocumentType = CrewDocumentFromNSWEnumeration(dType);
vList.Visit[0].CREW[i].LastName = crew.CrewMemberLastName;
vList.Visit[0].CREW[i].Nationality = crew.CrewMemberNationality;
vList.Visit[0].CREW[i].PlaceOfBirth = crew.CrewMemberPlaceOfBirth;
@ -433,11 +436,11 @@ namespace bsmd.dakosy
vList.Visit[0].PAS[i].FirstName = pas.PassengerFirstName;
vList.Visit[0].PAS[i].GenderSpecified = pas.PassengerGender.HasValue;
if (pas.PassengerGender.HasValue)
vList.Visit[0].PAS[i].Gender = (GenderType)pas.PassengerGender.Value;
vList.Visit[0].PAS[i].Gender = (pas.PassengerGender.Value == 1) ? GenderType.FEMALE : GenderType.MALE;
vList.Visit[0].PAS[i].IdentityDocumentId = pas.PassengerIdentityDocumentId;
vList.Visit[0].PAS[i].IdentityDocumentTypeSpecified = pas.PassengerIdentityDocumentType.HasValue;
if (pas.PassengerIdentityDocumentType.HasValue)
vList.Visit[0].PAS[i].IdentityDocumentType = (IdentityDocumentType)pas.PassengerIdentityDocumentType.Value;
vList.Visit[0].PAS[i].IdentityDocumentType = CrewDocumentFromNSWEnumeration(pas.PassengerIdentityDocumentType.Value);
vList.Visit[0].PAS[i].InTransitSpecified = pas.PassengerInTransit.HasValue;
if (pas.PassengerInTransit.HasValue)
vList.Visit[0].PAS[i].InTransit = pas.PassengerInTransit.Value;
@ -536,8 +539,7 @@ namespace bsmd.dakosy
vList.Visit[0].SEC.PortFacilityOfArrival = sec.PortFacilityOfArrival;
vList.Visit[0].SEC.GeneralDescriptionOfCargoSpecified = sec.GeneralDescriptionOfCargo.HasValue;
byte gdc = sec.GeneralDescriptionOfCargo ?? 0;
vList.Visit[0].SEC.GeneralDescriptionOfCargo = (GeneralCargoType)gdc;
if (sec.LastTenPortFacilitesCalled.Count > 0)
vList.Visit[0].SEC.GeneralDescriptionOfCargo = CargoTypeFromNSWEnumeration(gdc); if (sec.LastTenPortFacilitesCalled.Count > 0)
{
vList.Visit[0].SEC.LastTenPortFacilitiesCalled = new LastTenPortFacilitiesCalled[sec.LastTenPortFacilitesCalled.Count];
for (int i = 0; i < sec.LastTenPortFacilitesCalled.Count; i++)
@ -950,5 +952,34 @@ namespace bsmd.dakosy
#endregion
static IdentityDocumentType CrewDocumentFromNSWEnumeration(byte nswValue)
{
switch(nswValue)
{
case 0: return IdentityDocumentType.IDENTITY_CARD;
case 1: return IdentityDocumentType.PASSPORT;
case 2: return IdentityDocumentType.MUSTER_BOOK;
case 3: return IdentityDocumentType.PICTURE_ID;
case 4: return IdentityDocumentType.RESIDENTAL_PERMIT;
default:
return IdentityDocumentType.OTHER_LEGAL_IDENTITY_DOCUMENT;
}
}
static GeneralCargoType CargoTypeFromNSWEnumeration(byte nswValue)
{
switch(nswValue)
{
case 0: return GeneralCargoType.CONTAINER;
case 1: return GeneralCargoType.VEHICLES;
case 2: return GeneralCargoType.CONVENTIONAL_GENERAL_CARGO;
case 3: return GeneralCargoType.DRY_CARGO_IN_BULK;
case 4: return GeneralCargoType.LIQUID_CARGO_IN_BULK;
case 5:
default:
return GeneralCargoType.EMPTY;
}
}
}
}

View File

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

View File

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

View File

@ -102,6 +102,28 @@ namespace bsmd.hisnord
if (messages[0].MessageCore.IsTransit) visitTransitHeader = message;
break;
#region AGNT
case Message.NotificationClass.AGNT:
if (message.Elements.Count > 0)
{
AGNT agnt = message.Elements[0] as AGNT;
_nsw.conveyance.AGNT = new global::agnt();
_nsw.conveyance.AGNT.AgentCity = agnt.AgentCity;
_nsw.conveyance.AGNT.AgentCompanyName = agnt.AgentCompanyName;
_nsw.conveyance.AGNT.AgentCountry = agnt.AgentCountry;
_nsw.conveyance.AGNT.AgentEMail = agnt.AgentEMail;
_nsw.conveyance.AGNT.AgentFax = agnt.AgentFax;
_nsw.conveyance.AGNT.AgentFirstName = agnt.AgentFirstName;
_nsw.conveyance.AGNT.AgentLastName = agnt.AgentLastName;
_nsw.conveyance.AGNT.AgentPhone = agnt.AgentPhone;
_nsw.conveyance.AGNT.AgentPostalCode = agnt.AgentPostalCode;
_nsw.conveyance.AGNT.AgentStreetAndNumber = agnt.AgentStreetAndNumber;
}
break;
#endregion
#region ATA/ATD
case Message.NotificationClass.ATA:
if (message.MessageCore.Incoming)
@ -596,6 +618,7 @@ namespace bsmd.hisnord
_nsw.conveyance.Info.FumigatedBulkCargo = (info.FumigatedBulkCargo.Value == 1) ? yorntype.Y : yorntype.N;
else
_nsw.conveyance.Info.FumigatedBulkCargo = yorntype.N;
_nsw.conveyance.Info.PortArea = info.PortArea;
_nsw.conveyance.Info.RequestedPositionInPortOfCall = info.RequestedPositionInPortOfCall;
if (info.ShippingArea.HasValue)
_nsw.conveyance.Info.ShippingArea = (shippingareatype)info.ShippingArea.Value;
@ -641,8 +664,8 @@ namespace bsmd.hisnord
if (mdh.AwareOfFurtherInfections.HasValue)
_mdh.AwareOfConditionsForFurtherInfections = mdh.AwareOfFurtherInfections.Value ? yorntype.Y : yorntype.N;
if (mdh.InfectedAreas.Count > 0)
{
// if (mdh.InfectedAreas.Count > 0)
// {
_mdh.InfectedAreas = new infectedarea[mdh.InfectedAreas.Count];
for (int i = 0; i < mdh.InfectedAreas.Count; i++)
{
@ -651,10 +674,12 @@ namespace bsmd.hisnord
_mdh.InfectedAreas[i].InfectedAreaDate = mdh.InfectedAreas[i].InfectedAreaDate.Value;
_mdh.InfectedAreas[i].InfectedAreaPort = mdh.InfectedAreas[i].InfectedAreaPort;
}
}
// }
if (mdh.InfectedAreaVisited.HasValue)
_mdh.InfectedAreaVisited = mdh.InfectedAreaVisited.Value ? yorntype.Y : yorntype.N;
_mdh.InfectedAreaVisited = mdh.InfectedAreaVisited ?? false ? yorntype.Y : yorntype.N;
if (mdh.MedicalConsulted.HasValue)
_mdh.MedicalConsulted = mdh.MedicalConsulted.Value ? yorntype.Y : yorntype.N;
if (mdh.NonAccidentalDeathsDuringVoyage.HasValue)
@ -665,8 +690,8 @@ namespace bsmd.hisnord
_mdh.NumberOfIllPersons = mdh.NumberOfIllPersons.Value.ToString();
if (mdh.NumberOfIllPersonsHigherThanExpected.HasValue)
_mdh.NumberOfIllPersonsHigherThanExpected = mdh.NumberOfIllPersonsHigherThanExpected.Value ? yorntype.Y : yorntype.N;
if (mdh.PortOfCallLast30Days.Count > 0)
{
// if (mdh.PortOfCallLast30Days.Count > 0)
// {
_mdh.PortsOfCallLast30Days = new portofcallmdh[mdh.PortOfCallLast30Days.Count];
for (int i = 0; i < mdh.PortOfCallLast30Days.Count; i++)
{
@ -686,14 +711,14 @@ namespace bsmd.hisnord
_mdh.PortsOfCallLast30Days[i].PortOfCallLast30DaysDateOfDeparture = mdh.PortOfCallLast30Days[i].PortOfCallLast30DaysDateOfDeparture.Value;
_mdh.PortsOfCallLast30Days[i].PortOfCallLast30DaysLocode = mdh.PortOfCallLast30Days[i].PortOfCallLast30DaysLocode;
}
}
// }
if (mdh.SanitaryControlReinspectionRequired.HasValue)
_mdh.SanitaryControlReinspectionRequired = mdh.SanitaryControlReinspectionRequired.Value ? yorntype.Y : yorntype.N;
if (mdh.SanitaryMeasuresApplied.HasValue)
_mdh.SanitaryMeasuresApplied = mdh.SanitaryMeasuresApplied.Value ? yorntype.Y : yorntype.N;
if (mdh.SanitaryMeasuresDetails.Count > 0)
{
// if (mdh.SanitaryMeasuresDetails.Count > 0)
// {
_mdh.SanitaryMeasuresDetails = new sanitarydetail[mdh.SanitaryMeasuresDetails.Count];
for (int i = 0; i < mdh.SanitaryMeasuresDetails.Count; i++)
{
@ -703,21 +728,21 @@ namespace bsmd.hisnord
_mdh.SanitaryMeasuresDetails[i].SanitaryMeasuresLocation = mdh.SanitaryMeasuresDetails[i].SanitaryMeasuresLocation;
_mdh.SanitaryMeasuresDetails[i].SanitaryMeasuresType = mdh.SanitaryMeasuresDetails[i].SanitaryMeasuresType;
}
}
// }
if (mdh.SickAnimalOrPetOnBoard.HasValue)
_mdh.SickAnimalOrPetOnBoard = mdh.SickAnimalOrPetOnBoard.Value ? yorntype.Y : yorntype.N;
if (mdh.SickPersonsOnBoard.HasValue)
_mdh.SickPersonOnBoard = mdh.SickPersonsOnBoard.Value ? yorntype.Y : yorntype.N;
_mdh.StowawaysDetected = (mdh.StowawaysDetected ?? false) ? yorntype.Y : yorntype.N;
if ((_mdh.StowawaysDetected == yorntype.Y) && (mdh.StowawaysJoiningLocations.Count > 0))
{
// if ((_mdh.StowawaysDetected == yorntype.Y) && (mdh.StowawaysJoiningLocations.Count > 0))
// {
_mdh.StowawayJoiningLocations = new string[mdh.StowawaysJoiningLocations.Count];
for (int i = 0; i < mdh.StowawaysJoiningLocations.Count; i++)
{
_mdh.StowawayJoiningLocations[i] = mdh.StowawaysJoiningLocations[i].StowawayJoiningLocation;
}
}
// }
if (mdh.SuspisionInfectiousNature.HasValue)
_mdh.SuspisionInfectiousNature = mdh.SuspisionInfectiousNature.Value ? yorntype.Y : yorntype.N;
@ -1072,6 +1097,7 @@ namespace bsmd.hisnord
_nsw.conveyance.vessel.MMSINumber = stat.MMSINumber;
_nsw.conveyance.vessel.PortOfRegistry = stat.PortOfRegistry;
_nsw.conveyance.vessel.ShipName = stat.ShipName;
_nsw.conveyance.vessel.TransportMode = stat.TransportMode;
_nsw.conveyance.vessel.ShipType = stat.ShipType;
break;
#endregion

View File

@ -100,12 +100,12 @@ o Falls was beim Import in unsere Datenbank bzw. beim Senden an das NSW schief
· Grundsätzlich orientiert sich das an Ihnen überreichte XML-Schema an diesen Vorgaben mit folgenden Abweichungen
Meldetypen
Abweichungen
NOA_NOD
In IMPORT, EXPORT, TRANSIT vorkommend,
In IMPORT, EXPORT, TRANSIT vorkommend,
wobei zusätzlich Hafengebiet oder GISIS-Code gemeldet werden kann, ansonsten wird das Standard-Hafengebiet genommen, z.B. ÜSH für Überseehafen Rostock
ATA/ATD