diff --git a/UID/Mitarbeiter/frmMitarbDetails.vb b/UID/Mitarbeiter/frmMitarbDetails.vb index 5e35943..184f52e 100644 --- a/UID/Mitarbeiter/frmMitarbDetails.vb +++ b/UID/Mitarbeiter/frmMitarbDetails.vb @@ -155,6 +155,7 @@ Public Class frmMitarbDetails cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("FRONTOFFICE", "FO")) cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("IMEX", "IMEX")) cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAG AG", "VERAG AG")) + cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAG CS", "VERAG CS")) cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAG GMBH", "VERAG GMBH")) cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAG UNISPED Ltd", "VERAG UNISPED LIMITED")) cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAG CUSTOMS LOGISTICS Ltd", "VERAG CL LIMITED")) @@ -1452,70 +1453,152 @@ Public Class frmMitarbDetails Private Sub datEinstiegsdatum_ValueChanged(sender As Object, e As EventArgs) Handles datEinstiegsdatum.ValueChanged, cbUrlaubInStund.CheckedChanged, txtUrlaubsabsp.TextChanged, cboDaysPerWeek.SelectedIndexChanged - If cbxEinsteigsDat.Checked And mitarbeiter.mit_einstiegsdatum <> "" Then + If cbxEinsteigsDat.Checked AndAlso Not String.IsNullOrWhiteSpace(mitarbeiter.mit_einstiegsdatum) Then - If CDate(mitarbeiter.mit_einstiegsdatum).ToShortDateString >= DateTime.Parse("01/01/2000") Then + Dim einstiegsdat As Date + If Date.TryParse(mitarbeiter.mit_einstiegsdatum, einstiegsdat) AndAlso einstiegsdat >= #01/01/2000# Then + ' Prüfen, ob Arbeitszeit und Arbeitstage korrekt eingegeben wurden + If Not String.IsNullOrWhiteSpace(txtWoStd.Text) AndAlso IsNumeric(txtWoStd.Text) AndAlso Not String.IsNullOrWhiteSpace(cboDaysPerWeek.Text) AndAlso IsNumeric(cboDaysPerWeek.Text) Then - If txtWoStd.Text <> "" AndAlso IsNumeric(txtWoStd.Text) AndAlso cboDaysPerWeek.Text <> "" AndAlso IsNumeric(cboDaysPerWeek.Text) Then - Dim einstiegsdat As Date = CDate(mitarbeiter.mit_einstiegsdatum) + ' Ende des Jahres oder ggf. Kündigungsdatum + Dim endOfCurrentYear As Date = New DateTime(einstiegsdat.Year, 12, 31) + Dim span As TimeSpan = endOfCurrentYear - einstiegsdat - Dim endOfCurrentYear = New DateTime(einstiegsdat.Year, 12, 31) + If cbxGekuendigt.Checked AndAlso Not String.IsNullOrWhiteSpace(mitarbeiter.mit_kuendigungsdatum) Then - Dim span = endOfCurrentYear - einstiegsdat - - If cbxGekuendigt.Checked AndAlso mitarbeiter.mit_kuendigungsdatum <> "" AndAlso CDate(mitarbeiter.mit_kuendigungsdatum).ToShortDateString >= DateTime.Parse("01/01/2000") Then - Dim kuendigungsdatum As Date = CDate(mitarbeiter.mit_kuendigungsdatum) - span = kuendigungsdatum - einstiegsdat + Dim kuendigungsdatum As Date + If Date.TryParse(mitarbeiter.mit_kuendigungsdatum, kuendigungsdatum) AndAlso kuendigungsdatum >= #01/01/2000# Then + span = kuendigungsdatum - einstiegsdat + End If End If Dim days As Double = span.TotalDays Dim uansp As Double = 0 Dim aliquU As Double = 0 - calcUrlaubsabspruch(cbUrlaubInStund.Checked, uansp) + ' Urlaubsanspruch berechnen + calcUrlaubsabspruchNew(cbUrlaubInStund.Checked, uansp) If days > 0 AndAlso uansp > 0 Then - If IsNumeric(txtUrlaubsabsp.Text) Then uansp = txtUrlaubsabsp.Text - If Not cbUrlaubInStund.Checked Then - aliquU = Math.Round((uansp / 365) * span.TotalDays, 2, MidpointRounding.AwayFromZero) - txtaliquUA.Text = aliquU - lblHoursOrDays2.Text = "D" - Else - aliquU = Math.Round((uansp / 365) * span.TotalDays, 2, MidpointRounding.AwayFromZero) - txtaliquUA.Text = aliquU - lblHoursOrDays2.Text = "H" + If IsNumeric(txtUrlaubsabsp.Text) Then + uansp = CDbl(txtUrlaubsabsp.Text) End If + ' aliquoter Urlaubsanspruch + aliquU = Math.Round((uansp / 365) * days, 2, MidpointRounding.AwayFromZero) + txtaliquUA.Text = aliquU.ToString("0.00") + lblHoursOrDays2.Text = If(cbUrlaubInStund.Checked, "H", "D") End If - - End If End If - End If End Sub Private Sub calcUrlaubsabspruch(UrlaubInStunden As Boolean, ByRef urlaubsabspruch As Double) - If Not UrlaubInStunden Then - If cboDaysPerWeek.SelectedItem <> "" Then - If Not cbabwJahresurlaub.Checked Then - urlaubsabspruch = 5 * cboDaysPerWeek.SelectedItem - End If + + urlaubsabspruch = 0 ' sicherstellen, dass immer ein Wert zurückgegeben wird + + Dim daysPerWeek As Double = 0 + Dim wochenstunden As Double = 0 + + ' Tage pro Woche validieren + If cboDaysPerWeek.SelectedItem IsNot Nothing AndAlso IsNumeric(cboDaysPerWeek.SelectedItem) Then + daysPerWeek = CDbl(cboDaysPerWeek.SelectedItem) + End If + + ' Wochenstunden validieren + If IsNumeric(txtWoStd.Text) Then + wochenstunden = CDbl(txtWoStd.Text) + End If + + ' Wenn keine gültigen Werte, abbrechen + If daysPerWeek <= 0 Then Exit Sub + + ' Jahresurlaub nur berechnen, wenn nicht "abgewählter Jahresurlaub" + If Not cbabwJahresurlaub.Checked Then + If Not UrlaubInStunden Then + ' Urlaub in Tagen + urlaubsabspruch = 5 * daysPerWeek lblHoursOrDays1.Text = "D" - End If - Else - If cboDaysPerWeek.SelectedItem <> "" AndAlso IsNumeric(txtWoStd.Text) AndAlso txtWoStd.Text > 0 Then - If Not cbabwJahresurlaub.Checked Then - urlaubsabspruch = (txtWoStd.Text / cboDaysPerWeek.SelectedItem) * cboDaysPerWeek.SelectedItem * 5 + Else + ' Urlaub in Stunden + If wochenstunden > 0 Then + urlaubsabspruch = (wochenstunden / daysPerWeek) * 5 + lblHoursOrDays1.Text = "H" End If - lblHoursOrDays1.Text = "H" End If End If - txtUrlaubsabsp.Text = urlaubsabspruch + + ' Ergebnis anzeigen + txtUrlaubsabsp.Text = urlaubsabspruch.ToString("0.00") + + 'If Not UrlaubInStunden Then + ' If cboDaysPerWeek.SelectedItem <> "" Then + ' If Not cbabwJahresurlaub.Checked Then + ' urlaubsabspruch = 5 * cboDaysPerWeek.SelectedItem + ' End If + ' lblHoursOrDays1.Text = "D" + ' End If + 'Else + ' If cboDaysPerWeek.SelectedItem <> "" AndAlso IsNumeric(txtWoStd.Text) AndAlso txtWoStd.Text > 0 Then + ' If Not cbabwJahresurlaub.Checked Then + ' urlaubsabspruch = (txtWoStd.Text / cboDaysPerWeek.SelectedItem) * cboDaysPerWeek.SelectedItem * 5 + ' End If + ' lblHoursOrDays1.Text = "H" + ' End If + 'End If + 'txtUrlaubsabsp.Text = urlaubsabspruch End Sub + + Private Sub calcUrlaubsabspruchNew(UrlaubInStunden As Boolean, ByRef urlaubsabspruch As Double) + + Dim tageProWoche As Double = 0 + Dim wochenstunden As Double = 0 + + ' Eingaben validieren + If cboDaysPerWeek.SelectedItem IsNot Nothing AndAlso IsNumeric(cboDaysPerWeek.SelectedItem) Then + tageProWoche = CDbl(cboDaysPerWeek.SelectedItem) + End If + + If IsNumeric(txtWoStd.Text) Then + wochenstunden = CDbl(txtWoStd.Text) + End If + + ' Nur berechnen, wenn Jahresurlaub nicht manuell abgewählt wurde + If Not cbabwJahresurlaub.Checked Then + urlaubsabspruch = BerechneUrlaubsanspruch(tageProWoche, wochenstunden, UrlaubInStunden) + Else + urlaubsabspruch = 0 + End If + + ' UI aktualisieren + txtUrlaubsabsp.Text = urlaubsabspruch.ToString("0.00") + lblHoursOrDays1.Text = If(UrlaubInStunden, "H", "D") + + End Sub + + Public Function BerechneUrlaubsanspruch(tageProWoche As Double, wochenstunden As Double, urlaubInStunden As Boolean) As Double + + ' Sicherheitsprüfungen + If tageProWoche <= 0 Then Return 0 + If urlaubInStunden AndAlso wochenstunden <= 0 Then Return 0 + + Dim anspruch As Double = 0 + + If Not urlaubInStunden Then + ' Urlaub in Tagen + anspruch = 5 * tageProWoche + Else + ' Urlaub in Stunden: durchschnittliche Tagesarbeitszeit * 5 + anspruch = (wochenstunden / tageProWoche) * 5 + End If + + Return Math.Round(anspruch, 2, MidpointRounding.AwayFromZero) + End Function + Private Sub TabControl2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles TabControl2.SelectedIndexChanged If TabControl2.SelectedIndex = 2 Then Try diff --git a/initATLASAufschubkonten/frmNachrichtenVerarbeitung_MDM_divers.vb b/initATLASAufschubkonten/frmNachrichtenVerarbeitung_MDM_divers.vb index d505ee4..5830801 100644 --- a/initATLASAufschubkonten/frmNachrichtenVerarbeitung_MDM_divers.vb +++ b/initATLASAufschubkonten/frmNachrichtenVerarbeitung_MDM_divers.vb @@ -623,6 +623,10 @@ Public Class frmNachrichtenVerarbeitung_MDM_divers SQL.doSQL("Update [tblRMCImport] SET [rmc_daId]='" & DS.da_id & "' where [rmc_pdfFileName] = '" & DS.da_name & "' and [rmc_importDatum] > DATEADD(DAY,-4,getdate()) ", "FMZOLL") + frmStartOptions.moveFile_DateBack(fileNamePath, zielpfad & "Invoice_PDF\" & Now.Year & "\" & Now.ToString("yyyyMMdd") & "\") + If fi.Name.ToLower.Contains("pdf") Then addDGVEinarbeitung("PDF", fi.Name) + dgvEinarbeitung.Refresh() + ElseIf (fi.Name.ToString.StartsWith("maut_") AndAlso fi.Name.ToString.Contains("EGR") AndAlso Not fi.Name.ToString.Contains("ALL")) Then 'EasyTrip IT Rechnungen Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("MDM", "MDM_DATEN", "RMC", Now.Year, Now.ToString("yyyyMMdd"), frmStartOptions.getFileName(fileNamePath)) @@ -693,8 +697,11 @@ Public Class frmNachrichtenVerarbeitung_MDM_divers End If - End If + frmStartOptions.moveFile_DateBack(fileNamePath, zielpfad & "Invoice_PDF\" & Now.Year & "\" & Now.ToString("yyyyMMdd") & "\") + If fi.Name.ToLower.Contains("pdf") Then addDGVEinarbeitung("PDF", fi.Name) + dgvEinarbeitung.Refresh() + End If End If diff --git a/initATLASAufschubkonten/frmStartOptions.vb b/initATLASAufschubkonten/frmStartOptions.vb index 111d04b..2a9f8dc 100644 --- a/initATLASAufschubkonten/frmStartOptions.vb +++ b/initATLASAufschubkonten/frmStartOptions.vb @@ -661,6 +661,7 @@ Public Class frmStartOptions Dim totalPages = 0 Dim batchrequestNr = 0 Dim counTrans As Integer = 0 + Dim pages As String = "" Dim savedTrans As Integer = 0 Dim MDMEinarb As New cMDMEinarbeitung("MSE", Now()) MDMEinarb.setInvoicingDate(Now(), MDMEinarb) @@ -672,6 +673,7 @@ Public Class frmStartOptions closeMe() Exit Sub Else + pages = "1" counTrans += dt.Rows.Count End If If totalPages > 1 Then @@ -686,9 +688,10 @@ Public Class frmStartOptions counTrans += dt.Rows.Count End If i = i + 1 + pages &= " " & i Next End If - API.UPDTAE_OK(,, PARAM & " Batch-Nr: " & batchrequestNr & "-" & totalPages) + API.UPDTAE_OK(,, PARAM & " Batch-Nr: " & batchrequestNr & "-" & totalPages & " Transactions: " & counTrans & " Pages: " & pages) MDMEinarb.ds_count += savedTrans MDMEinarb.ds_total += counTrans @@ -3184,7 +3187,7 @@ Public Class frmStartOptions Function getUID_Pruefung(maxAnz As Integer, Optional finanzOnline As Boolean = True, Optional veroegerungMs As Integer = 1000) As Boolean - getUID_Pruefung(maxAnz, "VERAG", "UID Prüfung VERAG", "as@verag.ag;ih@verag.ag;kb@verag.ag", "al@verag.ag",,, True, finanzOnline, veroegerungMs) + getUID_Pruefung(maxAnz, "VERAG", "UID Prüfung VERAG", "as@verag.ag;kb@verag.ag", "al@verag.ag",,, True, finanzOnline, veroegerungMs, True) getUID_Pruefung(maxAnz, "IMEX", "UID Prüfung IMEX", "Viktoria.Leirich@imex-group.at;as@verag.ag;kb@verag.ag", "al@verag.ag",,, True, finanzOnline, veroegerungMs) getUID_Pruefung(maxAnz, "AMBAR", "UID Prüfung AMBAR", "as@verag.ag", "al@verag.ag",,, True, finanzOnline, veroegerungMs) getUID_Pruefung(maxAnz, "UNISPED", "UID Prüfung UNISPED", "al@verag.ag", "al@verag.ag",,, True, finanzOnline, veroegerungMs) @@ -3349,7 +3352,7 @@ Public Class frmStartOptions If setKundenvermerk Then For Each r As DataRow In dt.Rows - If r("Ergebnis") = "UNGÜLTIG" Then + If Not IsDBNull(r("Ergebnis")) AndAlso r("Ergebnis") = "UNGÜLTIG" Then Dim kunde As cKunde = New cKunde(r("kdNr")) Dim KdFirma = VERAG_PROG_ALLGEMEIN.cAllgemein.getFirmaFromFiliale(kunde.FilialenNr) If KdFirma = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA Then @@ -3377,15 +3380,15 @@ Public Class frmStartOptions If updateFIBU Then Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Dim firma_id As String = "" - Dim vermerkNew As String = "UID Nr." & r("UstIdKz") & r("UstIdnr") & " ungültig" + Dim vermerkNew As String = "UID Nr. " & r("UstIdKz") & r("UstIdnr") & " ungültig (" & Now().ToShortDateString & ")" Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA - Case "VERAG" : firma_id = "'1', '11'" - Case "ATILLA" : firma_id = "'7'" + Case "VERAG" : firma_id = "'1', '11', '7'" + 'Case "ATILLA" : firma_id = "'7'" 'ATILLA UND VERAG haben selben Kundenstamm!!! End Select If firma_id <> "" Then SQL.doSQL("UPDATE [FIBU2].dbo.fibu_konto SET [c_homepage]='" & vermerkNew & "',[c_text2] = isnull([c_ustidnr],''), [c_ustidnr] = '', c_manipulator = 'AUTO', dt_manipulation = Getdate() where i_konto='" & kunde.KundenNr & "' AND i_firm_refid in (" & firma_id & ")", "FIBU") End If - Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA + Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA Case "IMEX" : kunde.FiBuSchnittstelle = True : kunde.SAVE() 'IMEX-Kunden sollen neu in DVO exportiert werden! End Select @@ -5123,14 +5126,14 @@ Public Class frmStartOptions Else Dim totalPages = 0 Dim batchrequestNr = 0 - + Dim pages As String = "" Dim counTrans As Integer = 0 Dim savedTrans As Integer = 0 Dim MDMEinarb As New cMDMEinarbeitung("MSE", Now()) MDMEinarb.setInvoicingDate(Now(), MDMEinarb) fehler = mse.getNewestTransactions(token, dt, batchrequestNr, totalPages, 0, cbxOnlyBilledTransactions.Checked, savedTrans) - + pages = "0" If fehler <> "" Then MsgBox(fehler) Me.Visible = True @@ -5150,6 +5153,7 @@ Public Class frmStartOptions End If i = i + 1 + pages &= " " & i Next @@ -5294,7 +5298,7 @@ Public Class frmStartOptions Dim token = mse.createJWT(fehler) Dim transactions As New DataTable Dim invoice As New DataTable - + Dim pages As String = "" Dim counTrans As Integer = 0 Dim savedTrans As Integer = 0 Dim MDMEinarb As New cMDMEinarbeitung("MSE", Now()) @@ -5316,6 +5320,7 @@ Public Class frmStartOptions fehler = mse.getTransactionsFromBatchNrAndPage(token, transactions, batchrequestNr, totalPages, 1, savedTrans) + pages = "1" If fehler <> "" Then MsgBox(fehler) Me.Visible = True @@ -5339,13 +5344,13 @@ Public Class frmStartOptions Else counTrans += transactions.Rows.Count - + pages &= " " & i End If Next End If - MsgBox("DONE") + MsgBox("DONE" & " Transactions: " & counTrans & " Pages: " & pages) MDMEinarb.ds_count += savedTrans MDMEinarb.ds_total += counTrans