Stundenabrechnung Oktober 2018

This commit is contained in:
Daniel Schick 2018-10-31 11:31:13 +00:00
parent d0c42ca6d9
commit e3888e1105
5 changed files with 142 additions and 75 deletions

Binary file not shown.

View File

@ -1,59 +1,128 @@
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
<configuration> <configuration>
<configSections> <configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" > <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
<section name="bsmd.ExcelReadService.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
</sectionGroup> <section name="bsmd.ExcelReadService.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections> <section name="bsmd.email.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<startup> </sectionGroup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </configSections>
</startup> <log4net>
<applicationSettings> <root>
<bsmd.ExcelReadService.Properties.Settings> <level value="DEBUG" />
<setting name="ConnectionString" serializeAs="String"> <appender-ref ref="LogFileAppender" />
<value>replace me!</value> <appender-ref ref="TraceAppender" />
</setting> </root>
<setting name="SleepSeconds" serializeAs="String"> <appender name="TraceAppender" type="log4net.Appender.TraceAppender">
<value>300</value> <layout type="log4net.Layout.PatternLayout">
</setting> <conversionPattern value="%date [%thread] %level %logger - %message%newline%exception"/>
<setting name="SendEMailSubject" serializeAs="String"> </layout>
<value>Reference Excel Sheet</value> </appender>
</setting> <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" >
<setting name="TestMode" serializeAs="String"> <param name="File" value="log-ExcelReadService.txt" />
<value>True</value> <param name="AppendToFile" value="true" />
</setting> <rollingStyle value="Size" />
<setting name="ValidSender" serializeAs="Xml"> <maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%date [%thread] %-5level [%logger] - %message%newline" />
</layout>
</appender>
</log4net>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<applicationSettings>
<bsmd.ExcelReadService.Properties.Settings>
<setting name="ConnectionString" serializeAs="String">
<value>Data Source=(localdb)\Projects;Initial Catalog=nsw;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False</value>
</setting>
<setting name="SleepSeconds" serializeAs="String">
<value>300</value>
</setting>
<setting name="SendEMailSubject" serializeAs="String">
<value>Reference Excel Sheet</value>
</setting>
<setting name="TestMode" serializeAs="String">
<value>True</value>
</setting>
<setting name="ValidSender" serializeAs="Xml">
<value>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>report@bsmd.de</string>
<string>hsok@gmx.de</string>
<string>bald@puls200.de</string>
<string>d.schick@gmx.de</string>
<string>hollmann@bsmd.de</string>
</ArrayOfString>
</value>
</setting>
<setting name="SendConfirmationSheet" serializeAs="String">
<value>False</value>
</setting>
<setting name="ConfirmationDE" serializeAs="Xml">
<value>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>E:\svnlager\BSMD\nsw\Deutschland\BSMD-Formblatt.xlsx</string>
</ArrayOfString>
</value>
</setting>
<setting name="ConfirmationDK" serializeAs="Xml">
<value>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>E:\svnlager\BSMD\nsw\Dänemark\NSW-DK-Excel-Arrival.xlsx</string>
<string>E:\svnlager\BSMD\nsw\Dänemark\NSW-DK-Excel-Departure.xlsx</string>
</ArrayOfString>
</value>
</setting>
</bsmd.ExcelReadService.Properties.Settings>
<bsmd.email.Properties.Settings>
<setting name="POP3User" serializeAs="String">
<value>excel@textbausteine.net</value>
</setting>
<setting name="POP3Password" serializeAs="String">
<value>3kjasWss.;.</value>
</setting>
<setting name="POP3Server" serializeAs="String">
<value>pop3.strato.de</value>
</setting>
<setting name="POP3Port" serializeAs="String">
<value>995</value>
</setting>
<setting name="SMTPServer" serializeAs="String">
<value>mail.strato.de</value>
</setting>
<setting name="SMTPUser" serializeAs="String">
<value>excel@textbausteine.net</value>
</setting>
<setting name="SMTPPassword" serializeAs="String">
<value>3kjasWss.;.</value>
</setting>
<setting name="Sender" serializeAs="String">
<value>excel@textbausteine.net</value>
</setting>
<setting name="AdminEmail" serializeAs="String">
<value>nsw@textbausteine.net</value>
</setting>
<setting name="ArchiveFolder" serializeAs="String">
<value>E:\temp\excel</value>
</setting>
<!-- Alle zusätzlichen Empfänger des Bestätigungs-Sheets (außer dem Sender) -->
<setting name="Recipient" serializeAs="Xml">
<value> <value>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"> xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>report@bsmd.de</string> <!--string>report@bsmd.de</string-->
<string>hsok@gmx.de</string> <!--string>nsw@textbausteine.net</string-->
<string>bald@puls200.de</string> <!--string>hollmann@bsmd.de</string-->
<string>d.schick@gmx.de</string> <!--string>haese@bsmd.de</string-->
<string>hollmann@bsmd.de</string>
</ArrayOfString> </ArrayOfString>
</value> </value>
</setting> </setting>
<setting name="SendConfirmationSheet" serializeAs="String"> </bsmd.email.Properties.Settings>
<value>False</value> </applicationSettings>
</setting>
<setting name="ConfirmationDE" serializeAs="Xml">
<value>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>E:\svnlager\BSMD\nsw\Deutschland\BSMD-Formblatt.xlsx</string>
</ArrayOfString>
</value>
</setting>
<setting name="ConfirmationDK" serializeAs="Xml">
<value>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>E:\svnlager\BSMD\nsw\Dänemark\NSW-DK-Excel-Arrival.xlsx</string>
<string>E:\svnlager\BSMD\nsw\Dänemark\NSW-DK-Excel-Departure.xlsx</string>
</ArrayOfString>
</value>
</setting>
</bsmd.ExcelReadService.Properties.Settings>
</applicationSettings>
</configuration> </configuration>

View File

@ -18,7 +18,7 @@ namespace bsmd.ExcelReadService
{ {
public static class Util public static class Util
{ {
private static ILog _log = LogManager.GetLogger(typeof(Util)); private static readonly ILog _log = LogManager.GetLogger(typeof(Util));
internal static bool ProcessSheet(ExcelReader reader, out string readMessage, out MessageCore messageCore) internal static bool ProcessSheet(ExcelReader reader, out string readMessage, out MessageCore messageCore)
{ {
@ -1290,7 +1290,7 @@ namespace bsmd.ExcelReadService
was.DeleteElements(); was.DeleteElements();
Util.ScanMessage(was, reader); Util.ScanMessage(was, reader);
was.WasteDisposalDelivery = reader.ReadDelivery("WAS.WasteDisposalDelivery"); was.WasteDisposalDelivery = reader.ReadDelivery("WAS.WasteDisposalDelivery");
if ((was.LastWasteDisposalPort != null) && (was.LastWasteDisposalPort.Length > 5)) if (was.LastWasteDisposalPort?.Length > 5)
{ {
string lastWasteDisposalPort = reader.ReadText("WAS.LastWasteDisposalPort"); string lastWasteDisposalPort = reader.ReadText("WAS.LastWasteDisposalPort");
List<string> deliveryLocodes = LocodeDB.AllLocodesForCityName(lastWasteDisposalPort); List<string> deliveryLocodes = LocodeDB.AllLocodesForCityName(lastWasteDisposalPort);
@ -1435,7 +1435,7 @@ namespace bsmd.ExcelReadService
was.Waste.Remove(waste); was.Waste.Remove(waste);
// 24.3.: - Für Waste-Type 15: Wenn in dieser Zeile andere Werte enthalten, als die nachfolgenden, ist die ganze Zeile rot zu markieren. // 24.3.: - Für Waste-Type 15: Wenn in dieser Zeile andere Werte enthalten, als die nachfolgenden, ist die ganze Zeile rot zu markieren.
bool highlightRow15 = !(waste.WasteType == null); bool highlightRow15 = waste.WasteType != null;
highlightRow15 &= (waste.WasteDisposalAmount_MTQ > 0); highlightRow15 &= (waste.WasteDisposalAmount_MTQ > 0);
highlightRow15 &= (waste.WasteCapacity_MTQ > 0); highlightRow15 &= (waste.WasteCapacity_MTQ > 0);
highlightRow15 &= (waste.WasteAmountRetained_MTQ > 0); highlightRow15 &= (waste.WasteAmountRetained_MTQ > 0);
@ -1829,7 +1829,7 @@ namespace bsmd.ExcelReadService
if (l10fc.PortFacilityGISISCode.IsNullOrEmpty() || l10fc.PortFacilityGISISCode == "0") if (l10fc.PortFacilityGISISCode.IsNullOrEmpty() || l10fc.PortFacilityGISISCode == "0")
l10fc.PortFacilityGISISCode = "0000"; l10fc.PortFacilityGISISCode = "0000";
if((l10fc.PortFacilityGISISCode != null) && (l10fc.PortFacilityGISISCode.Length < 4)) if(l10fc.PortFacilityGISISCode?.Length < 4)
{ {
while (l10fc.PortFacilityGISISCode.Length < 4) l10fc.PortFacilityGISISCode = "0" + l10fc.PortFacilityGISISCode; while (l10fc.PortFacilityGISISCode.Length < 4) l10fc.PortFacilityGISISCode = "0" + l10fc.PortFacilityGISISCode;
} }
@ -2204,7 +2204,7 @@ namespace bsmd.ExcelReadService
} }
if (reader.Mode == ExcelReader.CountryMode.DE) if (reader.Mode == ExcelReader.CountryMode.DE)
{ {
if ((ladg.CargoCodeNST != null) && (ladg.CargoCodeNST.Length == 1)) if (ladg.CargoCodeNST?.Length == 1)
ladg.CargoCodeNST = "0" + ladg.CargoCodeNST; ladg.CargoCodeNST = "0" + ladg.CargoCodeNST;
if ((ladg.CargoCodeNST != null) && (ladg.CargoCodeNST.Length != 2)) if ((ladg.CargoCodeNST != null) && (ladg.CargoCodeNST.Length != 2))
@ -2707,7 +2707,7 @@ namespace bsmd.ExcelReadService
// okay, könnte DK Locode etc sein.. // okay, könnte DK Locode etc sein..
if(poc == null) if(poc == null)
{ {
if((aGermanPortName != null) && (aGermanPortName.Length == 5)) // possible locode? if(aGermanPortName?.Length == 5) // possible locode?
{ {
if (LocodeDB.PortNameFromLocode(aGermanPortName) != null) if (LocodeDB.PortNameFromLocode(aGermanPortName) != null)
poc = aGermanPortName; poc = aGermanPortName;

View File

@ -39,7 +39,7 @@
<HintPath>..\packages\log4net.2.0.8\lib\net45-full\log4net.dll</HintPath> <HintPath>..\packages\log4net.2.0.8\lib\net45-full\log4net.dll</HintPath>
<Private>True</Private> <Private>True</Private>
</Reference> </Reference>
<Reference Include="Microsoft.Office.Interop.Excel, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL"> <Reference Include="Microsoft.Office.Interop.Excel, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL">
<EmbedInteropTypes>True</EmbedInteropTypes> <EmbedInteropTypes>True</EmbedInteropTypes>
</Reference> </Reference>
<Reference Include="OpenPop, Version=2.0.6.1120, Culture=neutral, PublicKeyToken=6bdb97f144b7efc8, processorArchitecture=MSIL"> <Reference Include="OpenPop, Version=2.0.6.1120, Culture=neutral, PublicKeyToken=6bdb97f144b7efc8, processorArchitecture=MSIL">

View File

@ -23,12 +23,12 @@ namespace bsmd.database
private SqlConnection _con; private SqlConnection _con;
private static DBManager _instance; private static DBManager _instance;
private static ILog _log = LogManager.GetLogger(typeof(DBManager)); private static readonly ILog _log = LogManager.GetLogger(typeof(DBManager));
private static Dictionary<Guid, ReportingParty> allReportingParties; private static Dictionary<Guid, ReportingParty> allReportingParties;
private static Dictionary<string, PortArea> allPortAreas; private static Dictionary<string, PortArea> allPortAreas;
private object _lock = new object(); private readonly object _lock = new object();
private bool _closeConnectionAfterUse = false; private bool _closeConnectionAfterUse = false;
private List<string> truncatedFieldCollection = new List<string>(); private readonly List<string> truncatedFieldCollection = new List<string>();
#endregion #endregion
@ -50,9 +50,7 @@ namespace bsmd.database
{ {
get get
{ {
if (_instance == null) return _instance ?? (_instance = new DBManager());
_instance = new DBManager();
return _instance;
} }
} }
@ -91,13 +89,13 @@ namespace bsmd.database
public void Disconnect() public void Disconnect()
{ {
if ((this._con != null) && (this._con.State == ConnectionState.Open)) if (this._con?.State == ConnectionState.Open)
this._con.Close(); this._con.Close();
} }
public bool IsConnected public bool IsConnected
{ {
get { return (this._con != null) && (this._con.State == ConnectionState.Open); } get { return (this._con?.State == ConnectionState.Open); }
} }
@ -346,7 +344,7 @@ namespace bsmd.database
Message statMessage = this.GetMessage(core, Message.NotificationClass.STAT); Message statMessage = this.GetMessage(core, Message.NotificationClass.STAT);
if ((statMessage != null) && (statMessage.Elements.Count > 0)) if (statMessage?.Elements.Count > 0)
{ {
STAT stat = statMessage.Elements[0] as STAT; STAT stat = statMessage.Elements[0] as STAT;
if (stat != null) if (stat != null)
@ -406,7 +404,7 @@ namespace bsmd.database
{ {
Message aMessage = new Message(); Message aMessage = new Message();
SqlCommand cmd = new SqlCommand(); SqlCommand cmd = new SqlCommand();
Message.LoadFilter filter = Message.LoadFilter.BY_ID; const Message.LoadFilter filter = Message.LoadFilter.BY_ID;
aMessage.PrepareLoadCommand(cmd, filter, id); aMessage.PrepareLoadCommand(cmd, filter, id);
SqlDataReader reader = this.PerformCommand(cmd); SqlDataReader reader = this.PerformCommand(cmd);
@ -429,7 +427,7 @@ namespace bsmd.database
{ {
MessageCore aCore = new MessageCore(); MessageCore aCore = new MessageCore();
SqlCommand cmd = new SqlCommand(); SqlCommand cmd = new SqlCommand();
Message.LoadFilter filter = Message.LoadFilter.BY_ID; const Message.LoadFilter filter = Message.LoadFilter.BY_ID;
aCore.PrepareLoadCommand(cmd, filter, id); aCore.PrepareLoadCommand(cmd, filter, id);
SqlDataReader reader = this.PerformCommand(cmd); SqlDataReader reader = this.PerformCommand(cmd);
@ -460,7 +458,7 @@ namespace bsmd.database
{ {
MessageCore aCore = new MessageCore(); MessageCore aCore = new MessageCore();
SqlCommand cmd = new SqlCommand(); SqlCommand cmd = new SqlCommand();
Message.LoadFilter filter = Message.LoadFilter.BY_VISITID; const Message.LoadFilter filter = Message.LoadFilter.BY_VISITID;
aCore.PrepareLoadCommand(cmd, filter, visitId); aCore.PrepareLoadCommand(cmd, filter, visitId);
SqlDataReader reader = this.PerformCommand(cmd); SqlDataReader reader = this.PerformCommand(cmd);
@ -489,7 +487,7 @@ namespace bsmd.database
{ {
MessageCore aCore = new MessageCore(); MessageCore aCore = new MessageCore();
SqlCommand cmd = new SqlCommand(); SqlCommand cmd = new SqlCommand();
Message.LoadFilter filter = Message.LoadFilter.BY_TRANSITID; const Message.LoadFilter filter = Message.LoadFilter.BY_TRANSITID;
aCore.PrepareLoadCommand(cmd, filter, transitId); aCore.PrepareLoadCommand(cmd, filter, transitId);
SqlDataReader reader = this.PerformCommand(cmd); SqlDataReader reader = this.PerformCommand(cmd);
@ -520,7 +518,7 @@ namespace bsmd.database
{ {
MessageCore aCore = new MessageCore(); MessageCore aCore = new MessageCore();
SqlCommand cmd = new SqlCommand(); SqlCommand cmd = new SqlCommand();
Message.LoadFilter filter = Message.LoadFilter.IMO_ETA_POC; const Message.LoadFilter filter = Message.LoadFilter.IMO_ETA_POC;
aCore.PrepareLoadCommand(cmd, filter, imo, eta, poc); aCore.PrepareLoadCommand(cmd, filter, imo, eta, poc);
SqlDataReader reader = this.PerformCommand(cmd); SqlDataReader reader = this.PerformCommand(cmd);
List<DatabaseEntity> cores = aCore.LoadList(reader); List<DatabaseEntity> cores = aCore.LoadList(reader);
@ -544,9 +542,9 @@ namespace bsmd.database
foreach (Message message in coreMessages) foreach (Message message in coreMessages)
{ {
if (message is ISublistContainer) if (message is ISublistContainer sublistContainer)
{ {
((ISublistContainer)message).DeleteElements(); (sublistContainer).DeleteElements();
} }
this.Delete(message); this.Delete(message);
} }
@ -694,8 +692,8 @@ namespace bsmd.database
{ {
if(message.MessageNotificationClass == Message.NotificationClass.HAZD) if(message.MessageNotificationClass == Message.NotificationClass.HAZD)
{ {
if(derivedMessage is HAZ) if(derivedMessage is HAZ hAZ)
((HAZ)derivedMessage).IsDeparture = true; (hAZ).IsDeparture = true;
} }
message.Elements.Add(derivedMessage); message.Elements.Add(derivedMessage);
derivedMessage.MessageHeader = message; derivedMessage.MessageHeader = message;