diff --git a/SDL/Fakturierung/cFakturierung.vb b/SDL/Fakturierung/cFakturierung.vb index 604e6139..7d884dfd 100644 --- a/SDL/Fakturierung/cFakturierung.vb +++ b/SDL/Fakturierung/cFakturierung.vb @@ -1706,7 +1706,7 @@ Public Class cFakturierung Return getSignature(RECHNUNG.RechnungsLandKz, RECHNUNG.Firma_ID) End Function - Shared Function getSignature(Optional landKz = "", Optional firma = -1, Optional individuell = False, Optional displayFirmenmane = True, Optional special = "", Optional additionalLine = "") As String + Shared Function getSignature(Optional landKz = "", Optional firma = -1, Optional individuell = False, Optional displayFirmenmane = True, Optional special = "", Optional additionalLine = "", Optional departmentmailadress = True) As String getSignature = "" firma = getFirmaNr(firma) @@ -1751,8 +1751,8 @@ Public Class cFakturierung getSignature &= "
A 4975 Suben, Autobahngrenze 15
T +43 7711 31630 | F +43 7711 31630-1 | @ " & If(individuell, emailindividuell, "info@imex-group.at") & " | www.imex-group.at | FN 410356s
" If additionalLine <> "" Then getSignature &= vbNewLine & additionalLine & vbNewLine Case 24 'AMBAR - Dim defaultMail = getDefaultMail("AMBAR") - getSignature &= "" + Dim defaultMail = getDefaultMail("AMBAR", departmentmailadress) + getSignature &= "" If displayFirmenmane Then getSignature &= "
AMBAR Logistic Services GmbH
" getSignature &= "
D 83435 Bad Reichenhall, Reichenhallerstrasse 62
T +49 8651 99624911 | F +49 8651 9962493 | @ " & If(individuell, emailindividuell, defaultMail) & " | www.ambarlog.com | DE309105428
" If additionalLine <> "" Then getSignature &= vbNewLine & additionalLine & vbNewLine @@ -1824,15 +1824,17 @@ Public Class cFakturierung End Select End Function - Shared Function getDefaultMail(firma) + Shared Function getDefaultMail(firma, Optional useDepartmentmailadress = True) As String Dim defaultMail = "" Select Case firma Case "AMBAR" defaultMail = "import@ambarlog.de" - If VERAG_PROG_ALLGEMEIN.cAllgemein.ABTEILUNG = "BH" Then defaultMail = "buchhaltung@ambarlog.de" - If VERAG_PROG_ALLGEMEIN.cAllgemein.ABTEILUNG = "EXPORT" Then defaultMail = "office@ambarlog.de" - + If useDepartmentmailadress Then + If VERAG_PROG_ALLGEMEIN.cAllgemein.ABTEILUNG = "BH" Then defaultMail = "buchhaltung@ambarlog.de" + If VERAG_PROG_ALLGEMEIN.cAllgemein.ABTEILUNG = "EXPORT" Then defaultMail = "office@ambarlog.de" + End If End Select + Return defaultMail End Function Shared Function Abrechnugsdaten_AKTUALISIEREN(ByRef RECHNUNG As VERAG_PROG_ALLGEMEIN.cRechnungsausgang, Optional RechnungsDatum As Object = Nothing) As Boolean diff --git a/SDL/My Project/AssemblyInfo.vb b/SDL/My Project/AssemblyInfo.vb index 1c26304e..1770e68a 100644 --- a/SDL/My Project/AssemblyInfo.vb +++ b/SDL/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - - + + diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cFeiertage.vb b/VERAG_PROG_ALLGEMEIN/Classes/cFeiertage.vb index d3976ec1..bbb4617c 100644 --- a/VERAG_PROG_ALLGEMEIN/Classes/cFeiertage.vb +++ b/VERAG_PROG_ALLGEMEIN/Classes/cFeiertage.vb @@ -50,22 +50,24 @@ Public Class cFeiertage End Get End Property - Public Function GetFirstyDayInxMonth(ByVal day As DayOfWeek, ByVal month As Integer, ByVal year As Integer) As DateTime + Public Function GetFirstyDayYInxMonth(ByVal day As DayOfWeek, ByVal month As Integer, ByVal year As Integer, Optional irgnoreDay As Boolean = False) As DateTime ' Create a start date for the 1st day of the month Dim startDate As DateTime = New DateTime(year, month, 1) - While startDate.DayOfWeek <> day - startDate = startDate.AddDays(1) - End While + If Not irgnoreDay Then + While startDate.DayOfWeek <> day + startDate = startDate.AddDays(1) + End While + End If Return startDate End Function - Public Function GetLastyDayInxMonth(ByVal day As DayOfWeek, ByVal month As Integer, ByVal year As Integer) As DateTime + Public Function GetLastyDayYInxMonth(ByVal day As DayOfWeek, ByVal month As Integer, ByVal year As Integer, Optional irgnoreDay As Boolean = False) As DateTime ' Create a start date for the last weekday of the month Dim startDate As DateTime @@ -77,9 +79,14 @@ Public Class cFeiertage startDate = startDate.AddDays(-1) End If - While (startDate.DayOfWeek <> day) + If irgnoreDay Then startDate = startDate.AddDays(-1) - End While + Else + While (startDate.DayOfWeek <> day) + startDate = startDate.AddDays(-1) + End While + End If + Return startDate @@ -268,9 +275,9 @@ Public Class cFeiertage Case "GB" If datum = Karfreitag Then Return True - If datum = GetFirstyDayInxMonth(DayOfWeek.Monday, 5, _Year) Then Return True 'Early May Bank Holiday Erster Montag im Mai - If datum = GetLastyDayInxMonth(DayOfWeek.Monday, 5, _Year) Then Return True 'Spring Bank Holiday Letzter Montag im Mai - If datum = GetLastyDayInxMonth(DayOfWeek.Monday, 8, _Year) Then Return True 'Summer Bank Holiday Letzter Montag im August + If datum = GetFirstyDayYInxMonth(DayOfWeek.Monday, 5, _Year) Then Return True 'Early May Bank Holiday Erster Montag im Mai + If datum = GetLastyDayYInxMonth(DayOfWeek.Monday, 5, _Year) Then Return True 'Spring Bank Holiday Letzter Montag im Mai + If datum = GetLastyDayYInxMonth(DayOfWeek.Monday, 8, _Year) Then Return True 'Summer Bank Holiday Letzter Montag im August Return False Case Else diff --git a/VERAG_PROG_ALLGEMEIN/Mitarbeiterverzeichnis/frmMitarbeitersuche.Designer.vb b/VERAG_PROG_ALLGEMEIN/Mitarbeiterverzeichnis/frmMitarbeitersuche.Designer.vb index c7ffafee..ba0df4b4 100644 --- a/VERAG_PROG_ALLGEMEIN/Mitarbeiterverzeichnis/frmMitarbeitersuche.Designer.vb +++ b/VERAG_PROG_ALLGEMEIN/Mitarbeiterverzeichnis/frmMitarbeitersuche.Designer.vb @@ -28,8 +28,10 @@ Partial Class frmMitarbeitersuche Me.Button4 = New System.Windows.Forms.Button() Me.btnClose = New System.Windows.Forms.Button() Me.PictureBox2 = New System.Windows.Forms.PictureBox() + Me.sbMitarbeiter = New VERAG_PROG_ALLGEMEIN.MySearchBox() Me.pnlMain = New System.Windows.Forms.Panel() Me.pnl = New System.Windows.Forms.Panel() + Me.Button3 = New System.Windows.Forms.Button() Me.Panel2 = New System.Windows.Forms.Panel() Me.lblStatusZE = New System.Windows.Forms.Label() Me.Label13 = New System.Windows.Forms.Label() @@ -81,7 +83,6 @@ Partial Class frmMitarbeitersuche Me.lblFirma = New System.Windows.Forms.Label() Me.Label4 = New System.Windows.Forms.Label() Me.Label3 = New System.Windows.Forms.Label() - Me.sbMitarbeiter = New VERAG_PROG_ALLGEMEIN.MySearchBox() Me.pnlSrch.SuspendLayout() CType(Me.PictureBox2, System.ComponentModel.ISupportInitialize).BeginInit() Me.pnlMain.SuspendLayout() @@ -154,6 +155,32 @@ Partial Class frmMitarbeitersuche Me.PictureBox2.TabIndex = 18 Me.PictureBox2.TabStop = False ' + 'sbMitarbeiter + ' + Me.sbMitarbeiter._allowFreitext = False + Me.sbMitarbeiter._AllowSetValue = False + Me.sbMitarbeiter._allowSpaceAsSplitter = True + Me.sbMitarbeiter._autoSizeGross = False + Me.sbMitarbeiter._hideIfListEmpty = True + Me.sbMitarbeiter._value = Nothing + Me.sbMitarbeiter.conn_art = "FMZOLL" + Me.sbMitarbeiter.dgvpos = "LEFT" + Me.sbMitarbeiter.DISPLAY_PARAM = Nothing + Me.sbMitarbeiter.Font = New System.Drawing.Font("Microsoft Sans Serif", 14.0!) + Me.sbMitarbeiter.INVISIBLE_COLUMNS = Nothing + Me.sbMitarbeiter.key_visible = False + Me.sbMitarbeiter.KEYPARAM = Nothing + Me.sbMitarbeiter.Location = New System.Drawing.Point(45, 11) + Me.sbMitarbeiter.Name = "sbMitarbeiter" + Me.sbMitarbeiter.searchActive = True + Me.sbMitarbeiter.Size = New System.Drawing.Size(582, 29) + Me.sbMitarbeiter.SQL_ORDER_BY = Nothing + Me.sbMitarbeiter.SQL_SELECT = Nothing + Me.sbMitarbeiter.SQL_WHERE = Nothing + Me.sbMitarbeiter.SQL_WhereParamList = Nothing + Me.sbMitarbeiter.TabIndex = 0 + Me.sbMitarbeiter.usrcntl = Nothing + ' 'pnlMain ' Me.pnlMain.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink @@ -169,6 +196,7 @@ Partial Class frmMitarbeitersuche ' Me.pnl.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink Me.pnl.BackColor = System.Drawing.Color.FromArgb(CType(CType(250, Byte), Integer), CType(CType(254, Byte), Integer), CType(CType(255, Byte), Integer)) + Me.pnl.Controls.Add(Me.Button3) Me.pnl.Controls.Add(Me.Panel2) Me.pnl.Controls.Add(Me.pnlZeiten) Me.pnl.Controls.Add(Me.lblMAId) @@ -199,6 +227,21 @@ Partial Class frmMitarbeitersuche Me.pnl.Size = New System.Drawing.Size(774, 480) Me.pnl.TabIndex = 24 ' + 'Button3 + ' + Me.Button3.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom + Me.Button3.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.Button3.Image = Global.VERAG_PROG_ALLGEMEIN.My.Resources.Resources.zeiterfassung_s + Me.Button3.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft + Me.Button3.Location = New System.Drawing.Point(647, 138) + Me.Button3.Name = "Button3" + Me.Button3.Size = New System.Drawing.Size(125, 40) + Me.Button3.TabIndex = 129 + Me.Button3.Text = "ÜS auszahlen" + Me.Button3.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.Button3.UseVisualStyleBackColor = True + Me.Button3.Visible = False + ' 'Panel2 ' Me.Panel2.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) @@ -415,7 +458,7 @@ Partial Class frmMitarbeitersuche Me.btnSettings.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft Me.btnSettings.Location = New System.Drawing.Point(646, 95) Me.btnSettings.Name = "btnSettings" - Me.btnSettings.Size = New System.Drawing.Size(125, 61) + Me.btnSettings.Size = New System.Drawing.Size(125, 40) Me.btnSettings.TabIndex = 29 Me.btnSettings.Text = "Einstellungen" Me.btnSettings.TextAlign = System.Drawing.ContentAlignment.MiddleRight @@ -592,7 +635,7 @@ Partial Class frmMitarbeitersuche Me.lblHandyNr.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold) Me.lblHandyNr.Location = New System.Drawing.Point(360, 164) Me.lblHandyNr.Name = "lblHandyNr" - Me.lblHandyNr.Size = New System.Drawing.Size(411, 25) + Me.lblHandyNr.Size = New System.Drawing.Size(281, 25) Me.lblHandyNr.TabIndex = 22 Me.lblHandyNr.Text = "+43 7711 / 2777 0" Me.lblHandyNr.TextAlign = System.Drawing.ContentAlignment.MiddleLeft @@ -613,7 +656,7 @@ Partial Class frmMitarbeitersuche Me.lblTelefon.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold) Me.lblTelefon.Location = New System.Drawing.Point(360, 138) Me.lblTelefon.Name = "lblTelefon" - Me.lblTelefon.Size = New System.Drawing.Size(411, 25) + Me.lblTelefon.Size = New System.Drawing.Size(281, 25) Me.lblTelefon.TabIndex = 16 Me.lblTelefon.Text = "+43 7711 / 2777 0" Me.lblTelefon.TextAlign = System.Drawing.ContentAlignment.MiddleLeft @@ -772,32 +815,6 @@ Partial Class frmMitarbeitersuche Me.Label3.Text = "Niederlassung:" Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft ' - 'sbMitarbeiter - ' - Me.sbMitarbeiter._allowFreitext = False - Me.sbMitarbeiter._AllowSetValue = False - Me.sbMitarbeiter._allowSpaceAsSplitter = True - Me.sbMitarbeiter._autoSizeGross = False - Me.sbMitarbeiter._hideIfListEmpty = True - Me.sbMitarbeiter._value = Nothing - Me.sbMitarbeiter.conn_art = "FMZOLL" - Me.sbMitarbeiter.dgvpos = "LEFT" - Me.sbMitarbeiter.DISPLAY_PARAM = Nothing - Me.sbMitarbeiter.Font = New System.Drawing.Font("Microsoft Sans Serif", 14.0!) - Me.sbMitarbeiter.INVISIBLE_COLUMNS = Nothing - Me.sbMitarbeiter.key_visible = False - Me.sbMitarbeiter.KEYPARAM = Nothing - Me.sbMitarbeiter.Location = New System.Drawing.Point(45, 11) - Me.sbMitarbeiter.Name = "sbMitarbeiter" - Me.sbMitarbeiter.searchActive = True - Me.sbMitarbeiter.Size = New System.Drawing.Size(582, 29) - Me.sbMitarbeiter.SQL_ORDER_BY = Nothing - Me.sbMitarbeiter.SQL_SELECT = Nothing - Me.sbMitarbeiter.SQL_WHERE = Nothing - Me.sbMitarbeiter.SQL_WhereParamList = Nothing - Me.sbMitarbeiter.TabIndex = 0 - Me.sbMitarbeiter.usrcntl = Nothing - ' 'frmMitarbeitersuche ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -894,4 +911,5 @@ Partial Class frmMitarbeitersuche Friend WithEvents Button2 As Windows.Forms.Button Friend WithEvents PictureBox5 As Windows.Forms.PictureBox Friend WithEvents btnAkten As Windows.Forms.Button + Friend WithEvents Button3 As Windows.Forms.Button End Class diff --git a/VERAG_PROG_ALLGEMEIN/Mitarbeiterverzeichnis/frmMitarbeitersuche.vb b/VERAG_PROG_ALLGEMEIN/Mitarbeiterverzeichnis/frmMitarbeitersuche.vb index 90c83e11..1b8a2c25 100644 --- a/VERAG_PROG_ALLGEMEIN/Mitarbeiterverzeichnis/frmMitarbeitersuche.vb +++ b/VERAG_PROG_ALLGEMEIN/Mitarbeiterverzeichnis/frmMitarbeitersuche.vb @@ -72,6 +72,7 @@ Public Class frmMitarbeitersuche lblTimasSaldo.Visible = False Panel1.Visible = False btnSettings.Visible = False + Button3.Visible = False ' Dim MA As cMitarbeiter = Nothing If sbMitarbeiter._value <> "" Then MA = New cMitarbeiter(sbMitarbeiter._value) @@ -190,6 +191,8 @@ Public Class frmMitarbeitersuche If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("ZE_AKTENGANG", "SDL") Then btnAkten.Visible = True + If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("Überstunden_auszahlen", "SDL") Then Button3.Visible = True = True + End If End Sub @@ -423,7 +426,7 @@ Public Class frmMitarbeitersuche Dim dtZeiten As New DataTable If timas IsNot Nothing Then Dim isServiceRunning As Boolean = True - timas.getTimeSaldo(MA.mit_timasId, lblTimasSaldo.Text, isServiceRunning) + timas.getTimeSaldo(MA.mit_timasId, lblTimasSaldo.Text, "dailyBalanceYesterday", isServiceRunning) If Not isServiceRunning Then 'Abfrage konnte nicht durchgeführt werden. MsgBox("Abfragefehler am Timas-Server!") @@ -484,4 +487,9 @@ Public Class frmMitarbeitersuche Process.Start(webAddress) End Sub + Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click + If sbMitarbeiter._value = "" Then Exit Sub + Dim f As New frmUeberstundenauszahlen(sbMitarbeiter._value) + f.ShowDialog(Me) + End Sub End Class \ No newline at end of file diff --git a/VERAG_PROG_ALLGEMEIN/Mitarbeiterverzeichnis/frmUeberstundenauszahlen.Designer.vb b/VERAG_PROG_ALLGEMEIN/Mitarbeiterverzeichnis/frmUeberstundenauszahlen.Designer.vb new file mode 100644 index 00000000..9ef13fef --- /dev/null +++ b/VERAG_PROG_ALLGEMEIN/Mitarbeiterverzeichnis/frmUeberstundenauszahlen.Designer.vb @@ -0,0 +1,447 @@ + +Partial Class frmUeberstundenauszahlen + Inherits System.Windows.Forms.Form + + 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen. + + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Wird vom Windows Form-Designer benötigt. + Private components As System.ComponentModel.IContainer + + 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich. + 'Das Bearbeiten ist mit dem Windows Form-Designer möglich. + 'Das Bearbeiten mit dem Code-Editor ist nicht möglich. + + Private Sub InitializeComponent() + Me.components = New System.ComponentModel.Container() + Me.dtpMonat = New System.Windows.Forms.DateTimePicker() + Me.lblMonat = New System.Windows.Forms.Label() + Me.Label2 = New System.Windows.Forms.Label() + Me.Label3 = New System.Windows.Forms.Label() + Me.Label4 = New System.Windows.Forms.Label() + Me.txt100 = New System.Windows.Forms.TextBox() + Me.txt50 = New System.Windows.Forms.TextBox() + Me.txtMehr = New System.Windows.Forms.TextBox() + Me.Label5 = New System.Windows.Forms.Label() + Me.txtAusz = New System.Windows.Forms.TextBox() + Me.lblMA = New System.Windows.Forms.Label() + Me.Label7 = New System.Windows.Forms.Label() + Me.Button1 = New System.Windows.Forms.Button() + Me.txt100x2 = New System.Windows.Forms.TextBox() + Me.txt50x15 = New System.Windows.Forms.TextBox() + Me.txtAusz100 = New System.Windows.Forms.TextBox() + Me.txtAusz50 = New System.Windows.Forms.TextBox() + Me.CheckVatTestService1 = New VERAG_PROG_ALLGEMEIN.eu.europa.ec.checkVatTestService() + Me.cbxabwDatum = New System.Windows.Forms.CheckBox() + Me.lblBis = New System.Windows.Forms.Label() + Me.dtpBis = New System.Windows.Forms.DateTimePicker() + Me.txtSummeAuszb = New System.Windows.Forms.TextBox() + Me.txtberAusz50 = New System.Windows.Forms.TextBox() + Me.txtberAusz100 = New System.Windows.Forms.TextBox() + Me.Label1 = New System.Windows.Forms.Label() + Me.txtlfdSaldo = New System.Windows.Forms.TextBox() + Me.Label6 = New System.Windows.Forms.Label() + Me.picDel = New System.Windows.Forms.PictureBox() + Me.txtAusz50vonSaldo = New System.Windows.Forms.TextBox() + Me.Panel1 = New System.Windows.Forms.Panel() + Me.dgvUeberstunden = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components) + Me.txt50x1 = New System.Windows.Forms.TextBox() + Me.Label8 = New System.Windows.Forms.Label() + CType(Me.picDel, System.ComponentModel.ISupportInitialize).BeginInit() + Me.Panel1.SuspendLayout() + CType(Me.dgvUeberstunden, System.ComponentModel.ISupportInitialize).BeginInit() + Me.SuspendLayout() + ' + 'dtpMonat + ' + Me.dtpMonat.CustomFormat = "yyyy/MM" + Me.dtpMonat.Format = System.Windows.Forms.DateTimePickerFormat.Custom + Me.dtpMonat.Location = New System.Drawing.Point(15, 41) + Me.dtpMonat.Name = "dtpMonat" + Me.dtpMonat.Size = New System.Drawing.Size(81, 20) + Me.dtpMonat.TabIndex = 0 + ' + 'lblMonat + ' + Me.lblMonat.AutoSize = True + Me.lblMonat.Location = New System.Drawing.Point(12, 25) + Me.lblMonat.Name = "lblMonat" + Me.lblMonat.Size = New System.Drawing.Size(37, 13) + Me.lblMonat.TabIndex = 1 + Me.lblMonat.Text = "Monat" + ' + 'Label2 + ' + Me.Label2.AutoSize = True + Me.Label2.Location = New System.Drawing.Point(13, 11) + Me.Label2.Name = "Label2" + Me.Label2.Size = New System.Drawing.Size(196, 13) + Me.Label2.TabIndex = 2 + Me.Label2.Text = "Überstunden 100% (So/Nacht/Feiertag)" + ' + 'Label3 + ' + Me.Label3.AutoSize = True + Me.Label3.Location = New System.Drawing.Point(12, 131) + Me.Label3.Name = "Label3" + Me.Label3.Size = New System.Drawing.Size(138, 13) + Me.Label3.TabIndex = 3 + Me.Label3.Text = "Mehrarbeit (autom. ausbez.)" + ' + 'Label4 + ' + Me.Label4.AutoSize = True + Me.Label4.Location = New System.Drawing.Point(13, 53) + Me.Label4.Name = "Label4" + Me.Label4.Size = New System.Drawing.Size(113, 13) + Me.Label4.TabIndex = 4 + Me.Label4.Text = "Überstunden 50% (Sa)" + ' + 'txt100 + ' + Me.txt100.Location = New System.Drawing.Point(16, 27) + Me.txt100.Name = "txt100" + Me.txt100.ReadOnly = True + Me.txt100.Size = New System.Drawing.Size(47, 20) + Me.txt100.TabIndex = 5 + Me.txt100.Text = "0" + ' + 'txt50 + ' + Me.txt50.Location = New System.Drawing.Point(16, 69) + Me.txt50.Name = "txt50" + Me.txt50.ReadOnly = True + Me.txt50.Size = New System.Drawing.Size(47, 20) + Me.txt50.TabIndex = 6 + Me.txt50.Text = "0" + ' + 'txtMehr + ' + Me.txtMehr.Location = New System.Drawing.Point(15, 147) + Me.txtMehr.Name = "txtMehr" + Me.txtMehr.ReadOnly = True + Me.txtMehr.Size = New System.Drawing.Size(47, 20) + Me.txtMehr.TabIndex = 7 + Me.txtMehr.Text = "0" + ' + 'Label5 + ' + Me.Label5.AutoSize = True + Me.Label5.Location = New System.Drawing.Point(75, 179) + Me.Label5.Name = "Label5" + Me.Label5.Size = New System.Drawing.Size(86, 13) + Me.Label5.TabIndex = 8 + Me.Label5.Text = "max. auszahlbar:" + ' + 'txtAusz + ' + Me.txtAusz.Location = New System.Drawing.Point(192, 196) + Me.txtAusz.Name = "txtAusz" + Me.txtAusz.Size = New System.Drawing.Size(54, 20) + Me.txtAusz.TabIndex = 9 + Me.txtAusz.Text = "0" + ' + 'lblMA + ' + Me.lblMA.AutoSize = True + Me.lblMA.Location = New System.Drawing.Point(238, 6) + Me.lblMA.Name = "lblMA" + Me.lblMA.Size = New System.Drawing.Size(56, 13) + Me.lblMA.TabIndex = 10 + Me.lblMA.Text = "Mitarbeiter" + ' + 'Label7 + ' + Me.Label7.AutoSize = True + Me.Label7.Location = New System.Drawing.Point(238, 26) + Me.Label7.Name = "Label7" + Me.Label7.Size = New System.Drawing.Size(65, 13) + Me.Label7.TabIndex = 11 + Me.Label7.Text = "Mustermann" + ' + 'Button1 + ' + Me.Button1.DialogResult = System.Windows.Forms.DialogResult.OK + Me.Button1.Location = New System.Drawing.Point(321, 170) + Me.Button1.Name = "Button1" + Me.Button1.Size = New System.Drawing.Size(87, 30) + Me.Button1.TabIndex = 12 + Me.Button1.Text = "Auszahlen" + Me.Button1.UseVisualStyleBackColor = True + ' + 'txt100x2 + ' + Me.txt100x2.Location = New System.Drawing.Point(112, 27) + Me.txt100x2.Name = "txt100x2" + Me.txt100x2.ReadOnly = True + Me.txt100x2.Size = New System.Drawing.Size(49, 20) + Me.txt100x2.TabIndex = 14 + Me.txt100x2.Text = "0" + ' + 'txt50x15 + ' + Me.txt50x15.Location = New System.Drawing.Point(112, 69) + Me.txt50x15.Name = "txt50x15" + Me.txt50x15.ReadOnly = True + Me.txt50x15.Size = New System.Drawing.Size(49, 20) + Me.txt50x15.TabIndex = 15 + Me.txt50x15.Text = "0" + ' + 'txtAusz100 + ' + Me.txtAusz100.Location = New System.Drawing.Point(197, 27) + Me.txtAusz100.Name = "txtAusz100" + Me.txtAusz100.ReadOnly = True + Me.txtAusz100.Size = New System.Drawing.Size(54, 20) + Me.txtAusz100.TabIndex = 16 + Me.txtAusz100.Text = "0" + ' + 'txtAusz50 + ' + Me.txtAusz50.Location = New System.Drawing.Point(197, 69) + Me.txtAusz50.Name = "txtAusz50" + Me.txtAusz50.ReadOnly = True + Me.txtAusz50.Size = New System.Drawing.Size(54, 20) + Me.txtAusz50.TabIndex = 17 + Me.txtAusz50.Text = "0" + ' + 'CheckVatTestService1 + ' + Me.CheckVatTestService1.Credentials = Nothing + Me.CheckVatTestService1.Url = "http://ec.europa.eu/taxation_customs/vies/services/checkVatTestService" + Me.CheckVatTestService1.UseDefaultCredentials = False + ' + 'cbxabwDatum + ' + Me.cbxabwDatum.AutoSize = True + Me.cbxabwDatum.Location = New System.Drawing.Point(15, 5) + Me.cbxabwDatum.Name = "cbxabwDatum" + Me.cbxabwDatum.Size = New System.Drawing.Size(129, 17) + Me.cbxabwDatum.TabIndex = 18 + Me.cbxabwDatum.Text = "abweichendes Datum" + Me.cbxabwDatum.UseVisualStyleBackColor = True + ' + 'lblBis + ' + Me.lblBis.AutoSize = True + Me.lblBis.Location = New System.Drawing.Point(134, 25) + Me.lblBis.Name = "lblBis" + Me.lblBis.Size = New System.Drawing.Size(20, 13) + Me.lblBis.TabIndex = 20 + Me.lblBis.Text = "bis" + Me.lblBis.Visible = False + ' + 'dtpBis + ' + Me.dtpBis.CustomFormat = "yyyy/MM/dd" + Me.dtpBis.Format = System.Windows.Forms.DateTimePickerFormat.Custom + Me.dtpBis.Location = New System.Drawing.Point(137, 41) + Me.dtpBis.Name = "dtpBis" + Me.dtpBis.Size = New System.Drawing.Size(81, 20) + Me.dtpBis.TabIndex = 19 + Me.dtpBis.Visible = False + ' + 'txtSummeAuszb + ' + Me.txtSummeAuszb.Location = New System.Drawing.Point(110, 196) + Me.txtSummeAuszb.Name = "txtSummeAuszb" + Me.txtSummeAuszb.ReadOnly = True + Me.txtSummeAuszb.Size = New System.Drawing.Size(49, 20) + Me.txtSummeAuszb.TabIndex = 21 + Me.txtSummeAuszb.Text = "0" + ' + 'txtberAusz50 + ' + Me.txtberAusz50.Location = New System.Drawing.Point(291, 69) + Me.txtberAusz50.Name = "txtberAusz50" + Me.txtberAusz50.ReadOnly = True + Me.txtberAusz50.Size = New System.Drawing.Size(54, 20) + Me.txtberAusz50.TabIndex = 24 + Me.txtberAusz50.Text = "0" + ' + 'txtberAusz100 + ' + Me.txtberAusz100.Location = New System.Drawing.Point(291, 27) + Me.txtberAusz100.Name = "txtberAusz100" + Me.txtberAusz100.ReadOnly = True + Me.txtberAusz100.Size = New System.Drawing.Size(54, 20) + Me.txtberAusz100.TabIndex = 23 + Me.txtberAusz100.Text = "0" + ' + 'Label1 + ' + Me.Label1.AutoSize = True + Me.Label1.Location = New System.Drawing.Point(289, 11) + Me.Label1.Name = "Label1" + Me.Label1.Size = New System.Drawing.Size(92, 13) + Me.Label1.TabIndex = 25 + Me.Label1.Text = "bereits ausgezahlt" + ' + 'txtlfdSaldo + ' + Me.txtlfdSaldo.Location = New System.Drawing.Point(17, 108) + Me.txtlfdSaldo.Name = "txtlfdSaldo" + Me.txtlfdSaldo.ReadOnly = True + Me.txtlfdSaldo.Size = New System.Drawing.Size(49, 20) + Me.txtlfdSaldo.TabIndex = 26 + Me.txtlfdSaldo.Text = "0" + ' + 'Label6 + ' + Me.Label6.AutoSize = True + Me.Label6.Location = New System.Drawing.Point(18, 92) + Me.Label6.Name = "Label6" + Me.Label6.Size = New System.Drawing.Size(48, 13) + Me.Label6.TabIndex = 27 + Me.Label6.Text = "lfd Saldo" + ' + 'picDel + ' + Me.picDel.BackgroundImage = Global.VERAG_PROG_ALLGEMEIN.My.Resources.Resources.del + Me.picDel.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom + Me.picDel.Location = New System.Drawing.Point(387, 11) + Me.picDel.Name = "picDel" + Me.picDel.Size = New System.Drawing.Size(21, 16) + Me.picDel.TabIndex = 28 + Me.picDel.TabStop = False + ' + 'txtAusz50vonSaldo + ' + Me.txtAusz50vonSaldo.Location = New System.Drawing.Point(197, 108) + Me.txtAusz50vonSaldo.Name = "txtAusz50vonSaldo" + Me.txtAusz50vonSaldo.ReadOnly = True + Me.txtAusz50vonSaldo.Size = New System.Drawing.Size(49, 20) + Me.txtAusz50vonSaldo.TabIndex = 29 + Me.txtAusz50vonSaldo.Text = "0" + ' + 'Panel1 + ' + Me.Panel1.Controls.Add(Me.Label8) + Me.Panel1.Controls.Add(Me.txt50x1) + Me.Panel1.Controls.Add(Me.Label2) + Me.Panel1.Controls.Add(Me.txtAusz50vonSaldo) + Me.Panel1.Controls.Add(Me.Label3) + Me.Panel1.Controls.Add(Me.picDel) + Me.Panel1.Controls.Add(Me.Label4) + Me.Panel1.Controls.Add(Me.Label6) + Me.Panel1.Controls.Add(Me.txt100) + Me.Panel1.Controls.Add(Me.txtlfdSaldo) + Me.Panel1.Controls.Add(Me.txt50) + Me.Panel1.Controls.Add(Me.Label1) + Me.Panel1.Controls.Add(Me.txtMehr) + Me.Panel1.Controls.Add(Me.txtberAusz50) + Me.Panel1.Controls.Add(Me.Label5) + Me.Panel1.Controls.Add(Me.txtberAusz100) + Me.Panel1.Controls.Add(Me.txtAusz) + Me.Panel1.Controls.Add(Me.txtSummeAuszb) + Me.Panel1.Controls.Add(Me.Button1) + Me.Panel1.Controls.Add(Me.txt100x2) + Me.Panel1.Controls.Add(Me.txt50x15) + Me.Panel1.Controls.Add(Me.txtAusz100) + Me.Panel1.Controls.Add(Me.txtAusz50) + Me.Panel1.Location = New System.Drawing.Point(15, 67) + Me.Panel1.Name = "Panel1" + Me.Panel1.Size = New System.Drawing.Size(421, 219) + Me.Panel1.TabIndex = 30 + ' + 'dgvUeberstunden + ' + Me.dgvUeberstunden.AKTUALISIERUNGS_INTERVALL = -1 + Me.dgvUeberstunden.AllowUserToAddRows = False + Me.dgvUeberstunden.AllowUserToDeleteRows = False + Me.dgvUeberstunden.BackgroundColor = System.Drawing.Color.White + Me.dgvUeberstunden.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize + Me.dgvUeberstunden.Location = New System.Drawing.Point(381, 12) + Me.dgvUeberstunden.Name = "dgvUeberstunden" + Me.dgvUeberstunden.ReadOnly = True + Me.dgvUeberstunden.Size = New System.Drawing.Size(32, 20) + Me.dgvUeberstunden.TabIndex = 13 + Me.dgvUeberstunden.Visible = False + ' + 'txt50x1 + ' + Me.txt50x1.Location = New System.Drawing.Point(112, 108) + Me.txt50x1.Name = "txt50x1" + Me.txt50x1.ReadOnly = True + Me.txt50x1.Size = New System.Drawing.Size(49, 20) + Me.txt50x1.TabIndex = 32 + Me.txt50x1.Text = "0" + ' + 'Label8 + ' + Me.Label8.AutoSize = True + Me.Label8.Location = New System.Drawing.Point(194, 179) + Me.Label8.Name = "Label8" + Me.Label8.Size = New System.Drawing.Size(56, 13) + Me.Label8.TabIndex = 33 + Me.Label8.Text = "Auszahlen" + ' + 'frmUeberstundenauszahlen + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(463, 337) + Me.Controls.Add(Me.Panel1) + Me.Controls.Add(Me.lblBis) + Me.Controls.Add(Me.dtpBis) + Me.Controls.Add(Me.cbxabwDatum) + Me.Controls.Add(Me.dgvUeberstunden) + Me.Controls.Add(Me.Label7) + Me.Controls.Add(Me.lblMA) + Me.Controls.Add(Me.lblMonat) + Me.Controls.Add(Me.dtpMonat) + Me.Name = "frmUeberstundenauszahlen" + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen + Me.Text = "Überstunden auszahlen" + CType(Me.picDel, System.ComponentModel.ISupportInitialize).EndInit() + Me.Panel1.ResumeLayout(False) + Me.Panel1.PerformLayout() + CType(Me.dgvUeberstunden, System.ComponentModel.ISupportInitialize).EndInit() + Me.ResumeLayout(False) + Me.PerformLayout() + + End Sub + + Friend WithEvents dtpMonat As Windows.Forms.DateTimePicker + Friend WithEvents lblMonat As Windows.Forms.Label + Friend WithEvents Label2 As Windows.Forms.Label + Friend WithEvents Label3 As Windows.Forms.Label + Friend WithEvents Label4 As Windows.Forms.Label + Friend WithEvents txt100 As Windows.Forms.TextBox + Friend WithEvents txt50 As Windows.Forms.TextBox + Friend WithEvents txtMehr As Windows.Forms.TextBox + Friend WithEvents Label5 As Windows.Forms.Label + Friend WithEvents txtAusz As Windows.Forms.TextBox + Friend WithEvents lblMA As Windows.Forms.Label + Friend WithEvents Label7 As Windows.Forms.Label + Friend WithEvents Button1 As Windows.Forms.Button + Friend WithEvents dgvUeberstunden As MyDatagridview + Friend WithEvents txt100x2 As Windows.Forms.TextBox + Friend WithEvents txt50x15 As Windows.Forms.TextBox + Friend WithEvents txtAusz100 As Windows.Forms.TextBox + Friend WithEvents txtAusz50 As Windows.Forms.TextBox + Friend WithEvents CheckVatTestService1 As eu.europa.ec.checkVatTestService + Friend WithEvents cbxabwDatum As Windows.Forms.CheckBox + Friend WithEvents lblBis As Windows.Forms.Label + Friend WithEvents dtpBis As Windows.Forms.DateTimePicker + Friend WithEvents txtSummeAuszb As Windows.Forms.TextBox + Friend WithEvents txtberAusz50 As Windows.Forms.TextBox + Friend WithEvents txtberAusz100 As Windows.Forms.TextBox + Friend WithEvents Label1 As Windows.Forms.Label + Friend WithEvents txtlfdSaldo As Windows.Forms.TextBox + Friend WithEvents Label6 As Windows.Forms.Label + Friend WithEvents picDel As Windows.Forms.PictureBox + Friend WithEvents txtAusz50vonSaldo As Windows.Forms.TextBox + Friend WithEvents Panel1 As Windows.Forms.Panel + Friend WithEvents txt50x1 As Windows.Forms.TextBox + Friend WithEvents Label8 As Windows.Forms.Label +End Class diff --git a/VERAG_PROG_ALLGEMEIN/Mitarbeiterverzeichnis/frmUeberstundenauszahlen.resx b/VERAG_PROG_ALLGEMEIN/Mitarbeiterverzeichnis/frmUeberstundenauszahlen.resx new file mode 100644 index 00000000..3fd7695d --- /dev/null +++ b/VERAG_PROG_ALLGEMEIN/Mitarbeiterverzeichnis/frmUeberstundenauszahlen.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/VERAG_PROG_ALLGEMEIN/Mitarbeiterverzeichnis/frmUeberstundenauszahlen.vb b/VERAG_PROG_ALLGEMEIN/Mitarbeiterverzeichnis/frmUeberstundenauszahlen.vb new file mode 100644 index 00000000..c42434a2 --- /dev/null +++ b/VERAG_PROG_ALLGEMEIN/Mitarbeiterverzeichnis/frmUeberstundenauszahlen.vb @@ -0,0 +1,439 @@ +Imports System.Runtime.InteropServices.ComTypes +Imports System.Threading +Imports System.Windows.Forms +Imports Microsoft.Office.Interop.Outlook + +Public Class frmUeberstundenauszahlen + + Dim MA As cMitarbeiter = Nothing + Dim timas As cTimasAPI = New cTimasAPI + Dim dt As New DataTable + Dim timeaccountdt As New DataTable + Dim dtResult As New DataTable + Dim tag As cFeiertage + Dim auszahlugsdatum As New Date + + Dim stunden100ausz, stunden50ausz, stunden100auszbere, stunden50auszbere, stunden100bereitsausbezahl, stunden50bereitsausbezahlt, mehrabeit, stundenlfdSaldo, stundenlfdSaldobere As Double + + + Sub New(mit_id) + + ' Dieser Aufruf ist für den Designer erforderlich. + InitializeComponent() + + ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. + MA = New cMitarbeiter(mit_id) + tag = New cFeiertage(DateTime.Parse(dtpMonat.Value).Year) + Label7.Text = MA.mit_vname & " " & MA.mit_nname + timas.getTimeaccountList(dt) + + + Dim dv = New DataView(dt) + dv.RowFilter = "info like '%zuschlag%' Or name = 'Mehrarbeit' Or name like 'Überstunden%' Or info like 'Auszahlungskonto%' Or name like '%01-Lfd Saldo%'" + timeaccountdt = dv.ToTable + + getUeberstunden(False) + + End Sub + + Private Sub DateTimePicker1_ValueChanged(sender As Object, e As EventArgs) Handles dtpMonat.ValueChanged, dtpBis.ValueChanged + getUeberstunden(cbxabwDatum.Checked) + + End Sub + + Private Sub getUeberstunden(abwDatum As Boolean) + + Dim startdate, enddate As Date + If timeaccountdt IsNot Nothing Then + + If abwDatum Then + startdate = (dtpMonat.Value) + enddate = (dtpBis.Value) + auszahlugsdatum = enddate + Else + startdate = tag.GetFirstyDayYInxMonth(DateTime.Parse(dtpMonat.Value).DayOfWeek, DateTime.Parse(dtpMonat.Value).Month, DateTime.Parse(dtpMonat.Value).Year, True) + enddate = tag.GetLastyDayYInxMonth(DateTime.Parse(dtpMonat.Value).DayOfWeek, DateTime.Parse(dtpMonat.Value).Month, DateTime.Parse(dtpMonat.Value).Year, True) + auszahlugsdatum = enddate + End If + + timas.getTimeAccounts(startdate, enddate, MA.mit_timasId, timeaccountdt, dtResult) + + If dtResult.Rows.Count < 1 Then + MsgBox("Es konnten keine Stunden ermittelt werden!") + Panel1.Enabled = False + Exit Sub + Else + Panel1.Enabled = True + End If + + Dim dt = calcUeberstunden(timeaccountdt, dtResult) + fillFields(dt) + dgvUeberstunden.DataSource = dt + + End If + End Sub + + + Private Function calcUeberstunden(dtAccouts As DataTable, dtSumUeberstunden As DataTable) As DataTable + Dim dtmerged As DataTable + If dtAccouts IsNot Nothing AndAlso dtSumUeberstunden IsNot Nothing Then + + dtmerged = dtAccouts.Clone + dtmerged.Merge(dtSumUeberstunden, False, MissingSchemaAction.Add) + + If (dtmerged.Columns.Contains("accountType")) Then + dtmerged.Columns.Remove("accountType") + dtmerged.AcceptChanges() + End If + + If (dtmerged.Columns.Contains("info")) Then + dtmerged.Columns.Remove("info") + dtmerged.AcceptChanges() + End If + + If (dtmerged.Columns.Contains("number")) Then + dtmerged.Columns.Remove("number") + dtmerged.AcceptChanges() + End If + + If (dtmerged.Columns.Contains("date")) Then + dtmerged.Columns.Remove("date") + dtmerged.AcceptChanges() + End If + + + Dim groups = dtmerged.AsEnumerable(). + GroupBy(Function(row) New With { + Key .Id = row.Field(Of Integer)("accountid"), + Key .Multi = row.Field(Of String)("multiplier") + }) + + Dim tableResult = dtmerged.Clone() + For Each grp In groups + + tableResult.Rows.Add(grp.Key.Id, grp.Key.Multi, + grp.Sum(Function(row) + Dim value = 0 + If Not IsDBNull(row.Item("value")) Then value = row.Item("value") + Return value + End Function)) + Next + + + End If + Return dtmerged + End Function + + Public Sub fillFields(dt As DataTable) + + '69 10-Na 22-06 + '70 11-Sa 00-24 ===> 50% + '72 13-So 00-24 + '73 14-FtN 00-24 + '1209 Mehrarbeit + '1235 Überstunden 100% gesamt ===> 100% + + picDel.Visible = False + + For Each c As Control In Panel1.Controls + If TypeOf c Is TextBox Then + c.Text = "0" + End If + Next + + stunden50bereitsausbezahlt = 0 + stunden100bereitsausbezahl = 0 + + + If dt IsNot Nothing AndAlso dt.Rows.Count > 0 Then + Dim calc As Double = 0 + For Each r As DataRow In dt.Rows + If Not IsDBNull(r.Item("value")) Then + + If r.Item("accountid") = "1209" Then + calc = CDbl(txtMehr.Text) + calc += r.Item("value") * (r.Item("multiplier") & "1") + txtMehr.Text = calc + mehrabeit = calc + End If + + If r.Item("accountid") = "1235" Then + calc = CDbl(txt100.Text) + calc += r.Item("value") * (r.Item("multiplier") & "1") + txt100.Text = calc + stunden100ausz = calc + End If + + If r.Item("accountid") = "70" Then + calc = CDbl(txt50.Text) + calc += r.Item("value") * (r.Item("multiplier") & "1") + txt50.Text = calc + stunden50ausz = calc + End If + + + If r.Item("accountid") = "1550" Then + calc = CDbl(txtberAusz100.Text) + calc += r.Item("value") * (r.Item("multiplier") & "1") + txtberAusz100.Text = calc + stunden100bereitsausbezahl = calc + End If + + If r.Item("accountid") = "1551" Then + calc = CDbl(txtberAusz50.Text) + calc += r.Item("value") * (r.Item("multiplier") & "1") + txtberAusz50.Text = calc + stunden50bereitsausbezahlt = calc + End If + + 'If r.Item("accountid") = "65" Then + ' calc = CDbl(txtlfdSaldo.Text) + ' calc += r.Item("value") * (r.Item("multiplier") & "1") + ' txtlfdSaldo.Text = calc + 'End If + + End If + Next + + If (stunden100bereitsausbezahl + stunden50bereitsausbezahlt) > 0 Then + picDel.Visible = True + Button1.Enabled = False + txtAusz.Enabled = False + Else + Button1.Enabled = True + txtAusz.Enabled = True + End If + + stunden100auszbere = stunden100ausz * 2 + stunden50auszbere = stunden50ausz * 1.5 + + txt100x2.Text = stunden100auszbere + txt50x15.Text = stunden50auszbere + + txtlfdSaldo.Text = timas.getTimeSaldo(MA.mit_timasId, "", "overallBalance") 'Saldo zu Stichtag, nicht aktueller Saldo!!! + + stundenlfdSaldo = CDbl(txtlfdSaldo.Text) + stundenlfdSaldobere = stundenlfdSaldo + + stundenlfdSaldobere -= stunden100auszbere + stundenlfdSaldobere -= stunden50auszbere + stundenlfdSaldobere = Math.Round(stundenlfdSaldobere, 2) + + + If stundenlfdSaldo <= 0 Then Button1.Enabled = False + + txtSummeAuszb.Text = stundenlfdSaldo + + End If + + End Sub + + Private Sub txtAusz_TextChanged(sender As Object, e As EventArgs) Handles txtAusz.TextChanged + + + + If txtAusz.Text <> "" AndAlso IsNumeric(txtAusz.Text) Then + + Dim summeAusz = CDbl(txtAusz.Text) + If summeAusz <= 0 Then + txtAusz50vonSaldo.Text = "0" + txtAusz50.Text = "0" + txtAusz100.Text = "0" + txtAusz.Text = "0" + Button1.Enabled = False + Exit Sub + End If + + txt100x2.Text = stunden100auszbere + txt50x15.Text = stunden50auszbere + txt50x1.Text = stundenlfdSaldobere + + + + If stundenlfdSaldo >= summeAusz Then 'Prüfung, damit nicht zuviele ÜS ausbezahlt werden können! + Button1.Enabled = True + Else + Button1.Enabled = False + End If + + + If summeAusz >= stunden100auszbere Then + txtAusz100.Text = stunden100auszbere + Else + txtAusz100.Text = summeAusz + End If + + summeAusz = Math.Round(summeAusz - stunden100auszbere, 2) + + If summeAusz >= stunden50auszbere Then + txtAusz50.Text = stunden50auszbere + summeAusz = Math.Round(summeAusz - stunden50auszbere, 2) + ElseIf summeAusz < 0 Then + txtAusz50.Text = "0" + Else + txtAusz50.Text = summeAusz + summeAusz = Math.Round(summeAusz - stunden50auszbere, 2) + End If + + If summeAusz >= stundenlfdSaldo Then + txtAusz50vonSaldo.Text = stundenlfdSaldo + summeAusz = Math.Round(summeAusz - stundenlfdSaldo, 2) + ElseIf summeAusz < 0 Then + txtAusz50vonSaldo.Text = "0" + Else + txtAusz50vonSaldo.Text = summeAusz + summeAusz = Math.Round(summeAusz - stundenlfdSaldo, 2) + End If + + + 'Dim ausz100 As Double = (CDbl(txt100x2.Text)) + 'Dim ausz50 As Double = (CDbl(txt50x15.Text)) + 'Dim ausz50vonldfSaldo As Double = CDbl(txtlfdSaldo.Text) + + 'If ausz50 + ausz100 + ausz50vonldfSaldo >= summeAusz Then 'Prüfung, damit nicht zuviele ÜS ausbezahlt werden! + ' Button1.Enabled = True + 'Else + ' Button1.Enabled = False + 'End If + + + 'If summeAusz >= ausz100 Then + ' txtAusz100.Text = ausz100 + ' summeAusz = summeAusz - ausz100 + 'Else + ' txtAusz100.Text = summeAusz + ' summeAusz = summeAusz - ausz100 + 'End If + + 'If summeAusz >= ausz50 Then + ' summeAusz = summeAusz - ausz50 + ' txtAusz50.Text = ausz50 + 'ElseIf summeAusz < 0 Then + ' txtAusz50.Text = "0" + 'Else + ' txtAusz50.Text = summeAusz + ' summeAusz = ausz50 - summeAusz + 'End If + + 'If summeAusz >= ausz50vonldfSaldo Then + ' summeAusz = summeAusz - ausz50vonldfSaldo + ' txtAusz50vonSaldo.Text = ausz50vonldfSaldo + 'ElseIf summeAusz < 0 Then + ' txtAusz50vonSaldo.Text = "0" + 'Else + ' txtAusz50vonSaldo.Text = summeAusz + ' summeAusz = ausz50vonldfSaldo - summeAusz + 'End If + + + + + End If + + + + End Sub + + Private Sub cbxabwDatum_CheckedChanged(sender As Object, e As EventArgs) Handles cbxabwDatum.CheckedChanged + If cbxabwDatum.Checked Then + lblBis.Visible = True + dtpBis.Visible = True + lblMonat.Text = "bis" + dtpMonat.CustomFormat = "yyyy/MM/dd" + + Else + lblBis.Visible = False + dtpBis.Visible = False + lblMonat.Text = "Monat" + dtpMonat.CustomFormat = "yyyy/MM" + + End If + End Sub + + Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click + + + Dim sum100, sum50, gesamt As Double + sum100 = Math.Round(CDbl(txtAusz100.Text) * 0.5, 2) 'Übergabe in ZE-System als heruntergerechnete 100%ige bzw. 50%ige ÜS! + sum50 = Math.Round(CDbl(txtAusz50.Text) * 0.67, 2) + CDbl(txtAusz50vonSaldo.Text) + gesamt = CDbl(txtAusz.Text) + + Dim aksAuszahlung As MsgBoxResult = MsgBox("Überstunden für " & MA.mit_vname & " " & MA.mit_nname & " mit " & auszahlugsdatum.ToShortDateString() & " auszahlen?" & vbNewLine & sum100 & "x 100% ÜS :" & txtAusz100.Text & vbNewLine & sum50 & "x 50% ÜS: " & CDbl(txtAusz50.Text) + CDbl(txtAusz50vonSaldo.Text) & vbNewLine & "ÜS gesamt: " & gesamt, vbYesNo) + + If aksAuszahlung = vbYes Then + Dim dtsetEntries As New DataTable + + dtsetEntries.Columns.Add("accountid", GetType(Integer)) + dtsetEntries.Columns.Add("value", GetType(String)) + + If sum100 >= 0 Then + Dim row = dtsetEntries.NewRow + row.Item("accountid") = 1550 + row.Item("value") = sum100.ToString.Replace(",", ".") + dtsetEntries.Rows.InsertAt(row, dtsetEntries.Rows.Count) + End If + + If sum50 >= 0 Then + Dim row = dtsetEntries.NewRow + row.Item("accountid") = 1551 + row.Item("value") = sum50.ToString.Replace(",", ".") + dtsetEntries.Rows.InsertAt(row, dtsetEntries.Rows.Count) + End If + + If gesamt >= 0 Then 'vom ldf Saldo, ev. über API Möglich monatliche Korrektur direkt zu befüllen, dann muss dieser If Zweig überarbeitet werden!!!!!!!!!!!!!! + Dim row = dtsetEntries.NewRow + row.Item("accountid") = 993 + row.Item("value") = gesamt.ToString.Replace(",", ".") + dtsetEntries.Rows.InsertAt(row, dtsetEntries.Rows.Count) + End If + + + Dim info As String = "" + If timas.setTimeAccountEntries(MA, dtsetEntries, auszahlugsdatum, info) Then + + MsgBox("Erfolgreich in Timas eingetragen") + Else + MsgBox(info) + End If + + End If + + End Sub + + Private Sub picDel_Click(sender As Object, e As EventArgs) Handles picDel.Click + Dim aksAuszahlung As MsgBoxResult = MsgBox("Ausbezahlte Überstunden für " & MA.mit_vname & " " & MA.mit_nname & " mit " & auszahlugsdatum.ToShortDateString() & " zurücksetzen?" & vbNewLine & "100% ÜS: " & txtberAusz100.Text & vbNewLine & "50% ÜS: " & txtberAusz50.Text & vbNewLine & "ÜS gesamt: " & CDbl(txtberAusz100.Text) + CDbl(txtberAusz50.Text), vbYesNo) + If aksAuszahlung = vbYes Then + Dim dtdeleteEntries As New DataTable + + dtdeleteEntries.Columns.Add("accountid", GetType(Integer)) + + + Dim rowNew = dtdeleteEntries.NewRow + rowNew.Item("accountid") = 993 + dtdeleteEntries.Rows.InsertAt(rowNew, dtdeleteEntries.Rows.Count) + + If txtAusz100.Text <> "" AndAlso IsNumeric(txtAusz100.Text) Then + Dim row = dtdeleteEntries.NewRow + row.Item("accountid") = 1550 + dtdeleteEntries.Rows.InsertAt(row, dtdeleteEntries.Rows.Count) + End If + + If txtAusz50.Text <> "" AndAlso IsNumeric(txtAusz50.Text) Then + Dim row = dtdeleteEntries.NewRow + row.Item("accountid") = 1551 + dtdeleteEntries.Rows.InsertAt(row, dtdeleteEntries.Rows.Count) + End If + + If timas.deleteTimeAccounts(auszahlugsdatum, auszahlugsdatum, MA.mit_timasId, dtdeleteEntries) Then + + MsgBox("Erfolgreich aus Timas zurückgesetzt!") + picDel.Visible = False + Thread.Sleep(1000) 'warten bis Eintrag in Timas-DB + getUeberstunden(cbxabwDatum.Checked) + + End If + + End If + + End Sub +End Class \ No newline at end of file diff --git a/VERAG_PROG_ALLGEMEIN/Schnittstellen/TIMAS/cTimasAPI.vb b/VERAG_PROG_ALLGEMEIN/Schnittstellen/TIMAS/cTimasAPI.vb index 145626e9..e9b75163 100644 --- a/VERAG_PROG_ALLGEMEIN/Schnittstellen/TIMAS/cTimasAPI.vb +++ b/VERAG_PROG_ALLGEMEIN/Schnittstellen/TIMAS/cTimasAPI.vb @@ -4,6 +4,7 @@ Imports System.Runtime.Remoting Imports System.Text Imports System.Threading Imports System.Windows.Forms +Imports Microsoft.Office.Interop.Outlook Public Class cTimasAPI @@ -49,18 +50,19 @@ Public Class cTimasAPI End Function - Public Sub getTimeSaldo(maid As Integer, ByRef info As String, ByRef Optional isEndpointRunning As Boolean = True) + Public Function getTimeSaldo(maid As Integer, ByRef info As String, kindofbalance As String, ByRef Optional isEndpointRunning As Boolean = True) As Double Try Dim returnText As String = "" Dim failureText As String = "" + Dim timesaldo As Double = -1 If maid < 1 Then - Exit Sub + Return timesaldo End If If Not checkConnectionTImas(failureText) Then - Exit Sub + Return timesaldo End If @@ -72,13 +74,13 @@ Public Class cTimasAPI Debug.WriteLine(rest.LastErrorText) isEndpointRunning = rest.LastMethodSuccess rest.IdleTimeoutMs = 30000 'defualt - Exit Sub + Return timesaldo End If If (rest.ResponseStatusCode <> 200) Then Debug.WriteLine(rest.ResponseHeader) 'lblTimas.Text = rest.ResponseStatusCode & " " & rest.ResponseStatusText - Exit Sub + Return timesaldo End If Debug.WriteLine(responseJson) @@ -97,27 +99,30 @@ Public Class cTimasAPI '"monthlyBalance": -328380, '"actualTimeOfDay": 4260, - - Dim saldo = json.StringOf("dailyBalanceYesterday") 'Tagessaldo (gestern) in Sekunden - - If saldo IsNot Nothing Then - Dim saldoAsDouble = CDbl(saldo) - saldoAsDouble = Math.Round(saldoAsDouble / 3600, 2) - Dim infoBuilder As New StringBuilder - 'infoBuilder.Append("Vortag ") - infoBuilder.Append(saldoAsDouble) - infoBuilder.Append(" h") - info = infoBuilder.ToString() + If kindofbalance = "" Then + info = "kindOfBalance nicht definiert! " + Return timesaldo + Else + Dim saldo = json.StringOf(kindofbalance) 'Tagessaldo (gestern) in Sekunden + If saldo IsNot Nothing Then + Dim saldoAsDouble = CDbl(saldo) + saldoAsDouble = Math.Round(saldoAsDouble / 3600, 2) + Dim infoBuilder As New StringBuilder + 'infoBuilder.Append("Vortag ") + infoBuilder.Append(saldoAsDouble) + infoBuilder.Append(" h") + info = infoBuilder.ToString() + timesaldo = saldoAsDouble + Return timesaldo + End If + Return timesaldo End If - - - Catch ex As WebException VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try - End Sub + End Function Public Function getTimeEntries(ByVal maid As Integer, ByRef dtZeiten As DataTable, Optional ByRef entryExistingToday As Boolean = True, Optional ByRef requestDone As Boolean = False, Optional ByRef isEndpointRunning As Boolean = True) As Boolean Try @@ -186,7 +191,7 @@ Public Class cTimasAPI Dim timeEntry As Chilkat.JsonObject = jsonArray.ObjectAt(j) If IsDate(timeEntry.StringOf("stamp")) Then - If CDate(timeEntry.StringOf("stamp")) >= CDate(Today()) Then + If CDate(timeEntry.StringOf("stamp")) >= CDate(Today()) Or CDate(timeEntry.StringOf("stamp")) >= CDate(Today().AddDays(-1)) AndAlso CDate(timeEntry.StringOf("stamp")).Hour >= 16 Then 'entweder heute keine Stempelung oder gestern > 16 Uhr (wegen Nachtschicht!) Dim R As DataRow = dt.NewRow @@ -910,24 +915,22 @@ Public Class cTimasAPI dt.Columns.Add("Ausweis-Nr", GetType(Integer)) dt.Columns.Add("Info", GetType(String)) End If - dt.Clear() - Dim j As Integer = 0 - While j < num + Dim j As Integer = 0 + While j < num - Dim employee As Chilkat.JsonObject = jsonArray.ObjectAt(j) - - Dim R As DataRow = dt.NewRow - R("Id") = employee.IntOf("id") - '("externid") = employee.StringOf("externid") - R("Personal-Nr (Lohn)") = employee.StringOf("pnr1") - R("Vorname") = employee.StringOf("firstname") - R("Nachname") = employee.StringOf("lastname") - R("Geschlecht") = employee.StringOf("gender") - R("Ausweis-Nr") = employee.IntOf("card") - R("Info") = employee.StringOf("info") - dt.Rows.Add(R) + Dim employee As Chilkat.JsonObject = jsonArray.ObjectAt(j) + Dim R As DataRow = dt.NewRow + R("Id") = employee.IntOf("id") + '("externid") = employee.StringOf("externid") + R("Personal-Nr (Lohn)") = employee.StringOf("pnr1") + R("Vorname") = employee.StringOf("firstname") + R("Nachname") = employee.StringOf("lastname") + R("Geschlecht") = employee.StringOf("gender") + R("Ausweis-Nr") = employee.IntOf("card") + R("Info") = employee.StringOf("info") + dt.Rows.Add(R) j = j + 1 End While @@ -937,6 +940,274 @@ Public Class cTimasAPI End Try End Function + Public Sub getTimeAccounts(ByRef from As Date, ByRef toDate As Date, ByRef employeeNr As Integer, ByRef accountsdt As DataTable, ByRef dt As DataTable) + + Try + + Dim failureText As String = "" + If Not checkConnectionTImas(failureText) Then + Exit Sub + End If + + Dim success As Boolean + + rest.ClearAllQueryParams() + rest.AddQueryParam("from", from.Date.ToString("yyyy-MM-dd")) + rest.AddQueryParam("to", toDate.Date.ToString("yyyy-MM-dd")) + + Dim id As String = "" + For Each row As DataRow In accountsdt.Rows + id &= row("accountid") & "," + Next + rest.AddQueryParam("accounts", id) + rest.AddQueryParam("employees", employeeNr) + + Dim sbResponseBody As String + + sbResponseBody = rest.FullRequestNoBody("GET", API_STRING & "/rest/web-api/accounts/values") + If (rest.LastMethodSuccess <> True) Then + Debug.WriteLine(rest.LastErrorText) + Exit Sub + End If + + If (rest.ResponseStatusCode <> 200) Then + Debug.WriteLine(rest.ResponseStatusCode & " " & rest.ResponseStatusText & sbResponseBody.ToString) + End If + + Debug.WriteLine(sbResponseBody) + + Dim jsonArray As New Chilkat.JsonArray + success = jsonArray.Load(sbResponseBody) + If (success <> True) Then + Debug.WriteLine(jsonArray.LastErrorText) + Exit Sub + End If + + + Dim num As Integer = jsonArray.Size + If num = -1 Then + Exit Sub + End If + + If dt IsNot Nothing And Not dt.Columns.Contains("accountid") Then + + dt.Columns.Add("accountid", GetType(Integer)) + dt.Columns.Add("date", GetType(String)) + dt.Columns.Add("value", GetType(Double)) + dt.Columns.Add("multiplier", GetType(String)) + Else + dt.Clear() + + End If + + Dim j As Integer = 0 + While j < num + + + Dim accounts As Chilkat.JsonObject = jsonArray.ObjectAt(j) + If accounts.StringOf("value") <> "" Then + Dim R As DataRow = dt.NewRow + R("accountid") = accounts.IntOf("accountid") + R("date") = accounts.StringOf("date") + Dim timeToDouble = accounts.StringOf("value").Replace("-", "") + Dim ts As TimeSpan = New TimeSpan(Integer.Parse(timeToDouble.Split(":"c)(0)), Integer.Parse(timeToDouble.Split(":"c)(1)), 0) + R("value") = Math.Round(ts.TotalHours, 2) + R("multiplier") = IIf(accounts.StringOf("value").Contains("-"), "-", "+") + dt.Rows.Add(R) + End If + j = j + 1 + + End While + + dt.DefaultView.Sort = " accountid asc, date asc" + dt = dt.DefaultView.ToTable() + + + Catch ex As WebException + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try + + End Sub + + + Public Function getTimeaccountList(ByRef dt As DataTable) As String + + Dim failureText As String = "" + + Try + + If Not checkConnectionTImas(failureText) Then + Return failureText + + End If + + Dim responseJson As String = rest.FullRequestNoBody("GET", "/rest/web-api/accounts/") + If (rest.LastMethodSuccess <> True) Then + Debug.WriteLine(rest.LastErrorText) + Return rest.LastErrorText + End If + + If (rest.ResponseStatusCode <> 200) Then + Debug.WriteLine(rest.ResponseHeader) + failureText = rest.ResponseStatusCode & " " & rest.ResponseStatusText + Return rest.ResponseStatusCode & " " & rest.ResponseStatusText + End If + + Debug.WriteLine(responseJson) + + Dim jsonArray As New Chilkat.JsonArray + Dim success As Boolean = jsonArray.Load(responseJson) + If (success <> True) Then + Debug.WriteLine(jsonArray.LastErrorText) + Return jsonArray.LastErrorText + End If + + + Dim num As Integer = jsonArray.Size + If num = -1 Then + Return "Array Failure" + End If + + If dt IsNot Nothing AndAlso Not dt.Columns.Contains("accountid") Then + dt.Columns.Add("accountid", GetType(Integer)) + dt.Columns.Add("name", GetType(String)) + dt.Columns.Add("accountType", GetType(String)) + dt.Columns.Add("info", GetType(String)) + dt.Columns.Add("number", GetType(Integer)) + End If + + dt.Clear() + + Dim j As Integer = 0 + While j < num + + Dim R As DataRow = dt.NewRow + R("accountid") = jsonArray.ObjectAt(j).IntOf("id") + R("name") = jsonArray.ObjectAt(j).StringOf("name") + R("accountType") = jsonArray.ObjectAt(j).StringOf("accountType") + R("info") = jsonArray.ObjectAt(j).StringOf("info") + R("number") = jsonArray.ObjectAt(j).IntOf("number") + dt.Rows.Add(R) + j = j + 1 + End While + + + Catch ex As WebException + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try + End Function + + + + + Public Function setTimeAccountEntries(ByVal mitarbeiter As cMitarbeiter, ByVal accountEntrys As DataTable, ByVal accountdate As Date, ByRef info As String) + Dim failureText As String = "" + Dim timeEntryCreated As Boolean = False + + If Not checkConnectionTImas(failureText) Then + Return timeEntryCreated + End If + + If Not mitarbeiter.mit_timasId > 0 Then + info = "Mitarbeiter besitzt keine Timas-Zuordnung" + Return timeEntryCreated + End If + + Dim jsonArr As New Chilkat.JsonArray + + For Each ae As DataRow In accountEntrys.Rows + + jsonArr.AddObjectAt(-1) + Dim Json As Chilkat.JsonObject = jsonArr.ObjectAt(jsonArr.Size - 1) + Json.UpdateInt("accountid", ae.Item("accountid")) + json.UpdateInt("employeeid", mitarbeiter.mit_timasId) + json.UpdateString("date", accountdate.ToString("yyyy-MM-dd")) + json.UpdateString("value", ae.Item("value")) + + Next + + + Dim sbRequestBody As New Chilkat.StringBuilder + jsonArr.EmitSb(sbRequestBody) + + Dim sbResponseBody As New Chilkat.StringBuilder + Dim success = rest.FullRequestSb("POST", "/rest/web-api/accounts/values", sbRequestBody, sbResponseBody) + If (success <> True) Then + Debug.WriteLine(rest.LastErrorText) + Return timeEntryCreated + End If + + + If (rest.LastMethodSuccess <> True) Then + Debug.WriteLine(rest.LastErrorText) + info = rest.LastErrorText + Return timeEntryCreated + End If + + If (rest.ResponseStatusCode <> 200) Then + Debug.WriteLine(rest.ResponseHeader) + info = rest.ResponseStatusCode & " " & rest.ResponseStatusText + If sbResponseBody.GetAsString <> "" Then + info &= vbNewLine & sbResponseBody.GetAsString + End If + Return timeEntryCreated + Else + + timeEntryCreated = True + + End If + + Return timeEntryCreated + + + End Function + + Public Function deleteTimeAccounts(ByRef from As Date, ByRef toDate As Date, ByRef employeeNr As Integer, ByRef accountsdt As DataTable) As Boolean + Dim timeEntryDeleted As Boolean = False + Try + + Dim failureText As String = "" + If Not checkConnectionTImas(failureText) Then + Return timeEntryDeleted + End If + + Dim success As Boolean + + rest.ClearAllQueryParams() + rest.AddQueryParam("from", from.Date.ToString("yyyy-MM-dd")) + rest.AddQueryParam("to", toDate.Date.ToString("yyyy-MM-dd")) + + Dim id As String = "" + For Each row As DataRow In accountsdt.Rows + id &= row("accountid") & "," + Next + rest.AddQueryParam("accounts", id) + rest.AddQueryParam("employees", employeeNr) + + Dim sbResponseBody As String + + sbResponseBody = rest.FullRequestNoBody("DELETE", API_STRING & "/rest/web-api/accounts/values") + If (rest.LastMethodSuccess <> True) Then + Debug.WriteLine(rest.LastErrorText) + Return timeEntryDeleted + End If + + If (rest.ResponseStatusCode <> 200) Then + Debug.WriteLine(rest.ResponseStatusCode & " " & rest.ResponseStatusText & sbResponseBody.ToString) + Return timeEntryDeleted + Else + timeEntryDeleted = True + End If + + Return timeEntryDeleted + + Catch ex As WebException + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try + + End Function + + End Class @@ -988,6 +1259,4 @@ Public Class cTimasGruppe Me.empID = empId End Sub - - End Class \ No newline at end of file diff --git a/VERAG_PROG_ALLGEMEIN/VERAG_PROG_ALLGEMEIN.vbproj b/VERAG_PROG_ALLGEMEIN/VERAG_PROG_ALLGEMEIN.vbproj index 042c97b0..480057bc 100644 --- a/VERAG_PROG_ALLGEMEIN/VERAG_PROG_ALLGEMEIN.vbproj +++ b/VERAG_PROG_ALLGEMEIN/VERAG_PROG_ALLGEMEIN.vbproj @@ -16,12 +16,12 @@ - AnyCPU + x64 true full true true - ..\..\..\VERAG_PROG_ALLGEMEIN\bin\Debug\ + bin\Debug\ VERAG_PROG_ALLGEMEIN.xml 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 @@ -380,6 +380,12 @@ Form + + frmUeberstundenauszahlen.vb + + + Form + True True @@ -766,6 +772,9 @@ frmMitarbeitersuche.vb + + frmUeberstundenauszahlen.vb + VbMyResourcesResXFileCodeGenerator My.Resources