Merge branch 'newMaster2024' of https://git.it.verag.ag/edv/SDL into newMaster2024

This commit is contained in:
2026-02-24 13:54:37 +01:00
28 changed files with 926 additions and 262 deletions

View File

@@ -62,6 +62,8 @@ Public Class cUSTVAntrag
Property UStVAn_Sicherheit As Object = Nothing
Property POSITIONEN As New List(Of cUStVPositionen) '= Nothing
Public hasEntry = False
Dim SQL As New SQL
Sub New()
@@ -136,6 +138,9 @@ Public Class cUSTVAntrag
Public Sub LOAD(UStVAn_ID, Optional loadPos = True)
Try
hasEntry = False
POSITIONEN.Clear()
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
Using cmd As New SqlCommand("SELECT * FROM tblUStVAntrag WHERE UStVAn_ID=@UStVAn_ID ", conn)
@@ -151,6 +156,7 @@ Public Class cUSTVAntrag
propInfo.SetValue(Me, dr.Item(i.Text))
End If
Next
hasEntry = True
If loadPos Then LOAD_POSITIONEN()
End If
dr.Close()
@@ -351,14 +357,24 @@ Public Class cUStVPositionen
Property UStVPo_Nettobetrag As Object = Nothing
Property UStVPo_NettobetragEUR As Object = Nothing
Public hasEntry = False
Dim SQL As New SQL
Sub New(UStVAn_ID, UStVPo_ID, UStVPo_interneNr)
Me.UStVAn_ID = UStVAn_ID
Me.UStVPo_interneNr = UStVPo_interneNr
LOAD(UStVAn_ID, UStVPo_interneNr)
End Sub
Sub New(UStVAn_ID, UStVPo_ID)
Me.UStVAn_ID = UStVAn_ID
Me.UStVPo_ID = UStVPo_ID
LOAD(UStVAn_ID, UStVPo_ID)
End Sub
Sub New()
End Sub
@@ -372,6 +388,8 @@ Public Class cUStVPositionen
Public Sub LOAD(UStVAn_ID, UStVPo_ID)
Try
hasEntry = False
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
Using cmd As New SqlCommand("SELECT * FROM [tblUStVPositionen] WHERE UStVAn_ID=@UStVAn_ID AND UStVPo_ID=@UStVPo_ID ", conn)
cmd.Parameters.AddWithValue("@UStVAn_ID", UStVAn_ID)
@@ -387,7 +405,37 @@ Public Class cUStVPositionen
propInfo.SetValue(Me, dr.Item(i.Text))
End If
Next
hasEntry = True
End If
dr.Close()
End Using
End Using
Catch ex As Exception
MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace)
End Try
End Sub
Public Sub LOADInterneNr(UStVAn_ID, UStVPo_interneNr)
Try
hasEntry = False
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
Using cmd As New SqlCommand("SELECT * FROM [tblUStVPositionen] WHERE UStVAn_ID=@UStVAn_ID AND UStVPo_interneNr=@UStVPo_interneNr ", conn)
cmd.Parameters.AddWithValue("@UStVAn_ID", UStVAn_ID)
cmd.Parameters.AddWithValue("@UStVPo_interneNr", UStVPo_interneNr)
Dim dr = cmd.ExecuteReader()
If dr.Read Then
'Dim l As New cOfferte
For Each i In getParameterList()
Dim propInfo As PropertyInfo = Me.GetType.GetProperty(i.Scalarvariable)
If dr.Item(i.Text) Is DBNull.Value Then
propInfo.SetValue(Me, Nothing)
Else
propInfo.SetValue(Me, dr.Item(i.Text))
End If
Next
hasEntry = True
End If
dr.Close()
End Using

View File

@@ -3,7 +3,6 @@ Imports System.Data.SqlClient
Imports System.IO
Imports System.Net
Imports System.Reflection
Imports DocumentFormat.OpenXml.Office2016.Drawing.ChartDrawing
Public Class cIDS
@@ -664,12 +663,43 @@ Public Class cIDS
Return ""
End Function
Public Shared Function checkInvoices() As DataTable
Public Shared Function checkPDFInvoices(Optional reDatVon As Date = Nothing, Optional reDatBis As Date = Nothing) As DataTable
Try
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
Dim sqlTime As String = ""
Dim SQLstr = "select * from tblIDSInvoicesNew where invoice_id not in (select TotalInvoiceId from tblIDSInvoicesNewSplittedByCountry) and Year(YearMonthDay) >= 2025"
If IsDate(reDatVon) AndAlso CDate(reDatVon) > "01.01.2020" AndAlso IsDate(reDatBis) AndAlso CDate(reDatBis) > "01.01.2020" Then
sqlTime = " And cast(YearMonthDay as Date) between '" & reDatVon.ToShortDateString & "' and '" & reDatBis.ToShortDateString & "'"
End If
Dim SQLstr = "select Invoicenumber as RechnungsNr,YearMonthDay as Rechnungsdatum, Adressen.AdressenNr as KundenNr,Adressen.[Name 1] as Kunde, kde_keineMWSt from tblIDSInvoicesNew Inner join [tbl_IDS_Kunden] on [tbl_IDS_Kunden].CustomerCode =tblIDSInvoicesNew.CustomerCode and isnull([tbl_IDS_Kunden].KdNrAlt, 1) = 0 Inner join Adressen on Adressen.AdressenNr = [tbl_IDS_Kunden].KdNrVERAG INNER JOIN tblKundenErweitert on Adressen.AdressenNr = kde_KundenNr where DocumentName is null " & sqlTime & " group by Invoicenumber, Adressen.AdressenNr, Adressen.[Name 1], YearMonthDay, kde_keineMWSt"
Dim dt = (New VERAG_PROG_ALLGEMEIN.SQL).loadDgvBySql(SQLstr, "FMZOLL")
Return dt
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
Return Nothing
End Function
Public Shared Function checkPartInvoices(Optional reDatVon As Date = Nothing, Optional reDatBis As Date = Nothing) As DataTable
Try
'Prüft, ob es zu Gesamtrechnungen Teilrechnungen gibt!
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
Dim SQLstr = " "
If IsDate(reDatVon) AndAlso CDate(reDatVon) > "01.01.2020" AndAlso IsDate(reDatBis) AndAlso CDate(reDatBis) > "01.01.2020" Then
SQLstr &= "select Invoicenumber as RechnungsNr ,YearMonthDay as Rechnungsdatum, Adressen.AdressenNr as KundenNr,Adressen.[Name 1] as Kunde, kde_keineMWSt,daId from tblIDSInvoicesNew Inner join [tbl_IDS_Kunden] on [tbl_IDS_Kunden].CustomerCode =tblIDSInvoicesNew.CustomerCode and isnull([tbl_IDS_Kunden].KdNrAlt, 1) = 0 Inner join Adressen on Adressen.AdressenNr = [tbl_IDS_Kunden].KdNrVERAG INNER JOIN tblKundenErweitert on Adressen.AdressenNr = kde_KundenNr where invoice_id not in (select TotalInvoiceId from tblIDSInvoicesNewSplittedByCountry) AND YearMonthDay >= '" & reDatVon.ToShortDateString & "' and YearMonthDay < '" & reDatBis.ToShortDateString & "'"
Else
SQLstr &= "select * from tblIDSInvoicesNew where invoice_id not in (select TotalInvoiceId from tblIDSInvoicesNewSplittedByCountry) AND Year(YearMonthDay) >= 2025"
End If
Dim dt = (New VERAG_PROG_ALLGEMEIN.SQL).loadDgvBySql(SQLstr, "FMZOLL")

View File

@@ -308,7 +308,7 @@ Public Class cMessenger
Next
Me.LOAD_MEMBERS()
If dateTmp Is Nothing Then
Me.LOAD_MESSAGES(topMax)
Me.LOAD_MESSAGES_NEW(topMax)
Else
Me.LOAD_MESSAGES_DATE(dateTmp)
End If
@@ -346,7 +346,7 @@ Public Class cMessenger
Me.LOAD_MEMBERS()
If dateTmp Is Nothing Then
Me.LOAD_MESSAGES()
Me.LOAD_MESSAGES_NEW()
Else
Me.LOAD_MESSAGES_DATE(dateTmp)
End If
@@ -415,9 +415,9 @@ Public Class cMessenger
cmd.Parameters.AddWithValue("@top", top)
Dim dr = cmd.ExecuteReader()
While dr.Read
Dim MSG As New cMessenger_ChatMessages(dr.Item("chatMg_id")) ' ----> 100 messages = 101 SQL calls
'Dim MSG As New cMessenger_ChatMessages(dr.Item("chatMg_id")) ' ----> 100 messages = 101 SQL calls
'Hier werden die einzelnen MSg-Obj nicht mehr per SQL geladen, sondern direkt als Objekt übergeben -> schneller!
'Dim MSG As New cMessenger_ChatMessages(dr.Item("chatMg_id"), dr.Item("chatMg_maId"), dr.Item("chatMg_datetime"), dr.Item("chatMg_maName"), dr.Item("chatMg_maFirma"), dr.Item("chatMg_type"), dr.Item("chatMg_text"), IIf(IsDBNull(dr.Item("chatMg_anhang_docId")), Nothing, dr.Item("chatMg_anhang_docId")), IIf(IsDBNull(dr.Item("chatMg_referenz_AvisoId")), Nothing, dr.Item("chatMg_referenz_AvisoId")), IIf(IsDBNull(dr.Item("chatMg_referenz_SendungsId")), Nothing, dr.Item("chatMg_referenz_SendungsId")), dr.Item("chatMg_referenz_KundenNr")) 'Me.chat_id, dr.Item("chatMb_maId")) 'yxc
Dim MSG As New cMessenger_ChatMessages(dr.Item("chatMg_id"), dr.Item("chatMg_chatId"), dr.Item("chatMg_maId"), dr.Item("chatMg_datetime"), dr.Item("chatMg_maName"), dr.Item("chatMg_maFirma"), dr.Item("chatMg_type"), dr.Item("chatMg_text"), IIf(IsDBNull(dr.Item("chatMg_anhang_docId")), Nothing, dr.Item("chatMg_anhang_docId")), IIf(IsDBNull(dr.Item("chatMg_referenz_AvisoId")), Nothing, dr.Item("chatMg_referenz_AvisoId")), IIf(IsDBNull(dr.Item("chatMg_referenz_SendungsId")), Nothing, dr.Item("chatMg_referenz_SendungsId")), dr.Item("chatMg_referenz_KundenNr")) 'Me.chat_id, dr.Item("chatMb_maId")) 'yxc
Me.CHAT_MESSAGES.Add(MSG)
End While
dr.Close()
@@ -431,6 +431,64 @@ Public Class cMessenger
End Try
End Sub
Public Sub LOAD_MESSAGES_NEW(Optional top As Integer = 100)
Try
Me.CHAT_MESSAGES.Clear()
Using conn As SqlConnection = SQL.GetNewOpenConnectionADMIN()
Using cmd As New SqlCommand(
"SELECT TOP (@top) chatMg_id, chatMg_chatId, chatMg_maId, chatMg_maName, chatMg_maFirma, chatMg_datetime, chatMg_type, chatMg_text, chatMg_anhang_docId, chatMg_referenz_AvisoId, chatMg_referenz_SendungsId, chatMg_referenz_KundenNr
FROM tblMessenger_ChatMessages
WHERE chatMg_chatId = @chat_id
ORDER BY chatMg_datetime DESC", conn)
cmd.Parameters.AddWithValue("@chat_id", chat_id)
cmd.Parameters.AddWithValue("@top", top)
Using dr As SqlDataReader = cmd.ExecuteReader()
While dr.Read()
Dim chatMg_id As Integer? = SafeInt(dr("chatMg_id"))
Dim chatMg_chatId As Integer? = SafeInt(dr("chatMg_chatId"))
Dim chatMg_maId As Integer? = SafeInt(dr("chatMg_maId"))
Dim chatMg_type As String = If(IsDBNull(dr("chatMg_type")), "", dr("chatMg_type").ToString())
Dim chatMg_anhang_docId As Integer? = SafeInt(dr("chatMg_anhang_docId"))
Dim chatMg_referenz_AvisoId As Integer? = SafeInt(dr("chatMg_referenz_AvisoId"))
Dim chatMg_referenz_SendungsId As Integer? = SafeInt(dr("chatMg_referenz_SendungsId"))
Dim chatMg_datetime As DateTime = If(IsDBNull(dr("chatMg_datetime")), DateTime.MinValue, Convert.ToDateTime(dr("chatMg_datetime")))
Dim chatMg_maName As String = If(IsDBNull(dr("chatMg_maName")), "", dr("chatMg_maName").ToString())
Dim chatMg_maFirma As String = If(IsDBNull(dr("chatMg_maFirma")), "", dr("chatMg_maFirma").ToString())
Dim chatMg_text As String = If(IsDBNull(dr("chatMg_text")), "", dr("chatMg_text").ToString())
Dim chatMg_referenz_KundenNr As String = If(IsDBNull(dr("chatMg_referenz_KundenNr")), "", dr("chatMg_referenz_KundenNr").ToString())
' Message-Objekt direkt erstellen
Dim MSG As New cMessenger_ChatMessages(dr.Item("chatMg_id"), dr.Item("chatMg_chatId"), dr.Item("chatMg_maId"), dr.Item("chatMg_datetime"), dr.Item("chatMg_maName"), dr.Item("chatMg_maFirma"), dr.Item("chatMg_type"), dr.Item("chatMg_text"), IIf(IsDBNull(dr.Item("chatMg_anhang_docId")), Nothing, dr.Item("chatMg_anhang_docId")), IIf(IsDBNull(dr.Item("chatMg_referenz_AvisoId")), Nothing, dr.Item("chatMg_referenz_AvisoId")), IIf(IsDBNull(dr.Item("chatMg_referenz_SendungsId")), Nothing, dr.Item("chatMg_referenz_SendungsId")), dr.Item("chatMg_referenz_KundenNr"))
Me.CHAT_MESSAGES.Add(MSG)
End While
End Using
End Using
End Using
' Nachrichten umdrehen, damit älteste zuerst angezeigt werden
Me.CHAT_MESSAGES.Reverse()
Catch ex As Exception
MsgBox("Fehler in LOAD_MESSAGES: " & vbNewLine & ex.Message & vbNewLine & ex.StackTrace)
End Try
End Sub
Private Function SafeInt(value As Object) As Integer?
If IsDBNull(value) Then Return Nothing
Dim s As String = value.ToString().Trim()
Dim result As Integer
If Integer.TryParse(s, result) Then
Return result
Else
Return Nothing
End If
End Function
Public Sub LOAD_MESSAGES_DATE(dateTmp As Date)
Try
Me.CHAT_MESSAGES.Clear()
@@ -442,9 +500,9 @@ Public Class cMessenger
While dr.Read
Dim MSG As New cMessenger_ChatMessages(dr.Item("chatMg_id")) '----> 100 messages = 101 SQL calls
'Dim MSG As New cMessenger_ChatMessages(dr.Item("chatMg_id")) '----> 100 messages = 101 SQL calls
'Hier werden die einzelnen MSg-Obj nicht mehr per SQL geladen, sondern direkt als Objekt übergeben -> schneller!
'Dim MSG As New cMessenger_ChatMessages(dr.Item("chatMg_id"), dr.Item("chatMg_maId"), dr.Item("chatMg_datetime"), dr.Item("chatMg_maName"), dr.Item("chatMg_maFirma"), dr.Item("chatMg_type"), dr.Item("chatMg_text"), IIf(IsDBNull(dr.Item("chatMg_anhang_docId")), Nothing, dr.Item("chatMg_anhang_docId")), IIf(IsDBNull(dr.Item("chatMg_referenz_AvisoId")), Nothing, dr.Item("chatMg_referenz_AvisoId")), IIf(IsDBNull(dr.Item("chatMg_referenz_SendungsId")), Nothing, dr.Item("chatMg_referenz_SendungsId")), dr.Item("chatMg_referenz_KundenNr")) 'Me.chat_id, dr.Item("chatMb_maId")) 'yxc
Dim MSG As New cMessenger_ChatMessages(dr.Item("chatMg_id"), dr.Item("chatMg_chatId"), dr.Item("chatMg_maId"), dr.Item("chatMg_datetime"), dr.Item("chatMg_maName"), dr.Item("chatMg_maFirma"), dr.Item("chatMg_type"), dr.Item("chatMg_text"), IIf(IsDBNull(dr.Item("chatMg_anhang_docId")), Nothing, dr.Item("chatMg_anhang_docId")), IIf(IsDBNull(dr.Item("chatMg_referenz_AvisoId")), Nothing, dr.Item("chatMg_referenz_AvisoId")), IIf(IsDBNull(dr.Item("chatMg_referenz_SendungsId")), Nothing, dr.Item("chatMg_referenz_SendungsId")), dr.Item("chatMg_referenz_KundenNr")) 'Me.chat_id, dr.Item("chatMb_maId")) 'yxc
Me.CHAT_MESSAGES.Add(MSG)
End While
@@ -780,7 +838,8 @@ Public Class cMessenger
Me.chatMg_maId = chatMg_maId
End Sub
Sub New(chatMg_chatId, chatMg_maId, chatMg_datetime, chatMg_maName, chatMg_maFirma, chatMg_type, chatMg_text, chatMg_anhang_docId, chatMg_referenz_AvisoId, chatMg_referenz_SendungsId, chatMg_referenz_KundenNr)
Sub New(chatMg_id, chatMg_chatId, chatMg_maId, chatMg_datetime, chatMg_maName, chatMg_maFirma, chatMg_type, chatMg_text, chatMg_anhang_docId, chatMg_referenz_AvisoId, chatMg_referenz_SendungsId, chatMg_referenz_KundenNr)
Me.chatMg_id = chatMg_id
Me.chatMg_chatId = chatMg_chatId
Me.chatMg_maId = chatMg_maId
Me.chatMg_datetime = chatMg_datetime

View File

@@ -363,6 +363,31 @@ Public Class cRMC
End Function
Public Shared Function checkPDFInvoices(Optional reDatVon As Date = Nothing, Optional reDatBis As Date = Nothing) As DataTable
Try
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
Dim sqlTime As String = ""
If IsDate(reDatVon) AndAlso CDate(reDatVon) > "01.01.2020" AndAlso IsDate(reDatBis) AndAlso CDate(reDatBis) > "01.01.2020" Then
sqlTime = " And cast([rmc_reDatum] As Date) between '" & reDatVon.ToShortDateString & "' and '" & reDatBis.ToShortDateString & "'"
End If
Dim SQLstr = "Select rmc_reNr As RechnungsNr,rmc_reDatum As Rechnungsdatum, Adressen.AdressenNr As KundenNr,Adressen.[Name 1] As Kunde, kde_keineMWSt As keineMWST from [tblRMCImport] INNER JOIN Adressen On WölflKundenNr=[rmc_kdNr] Or weitereWölflKundenNr=[rmc_kdNr] INNER JOIN tblKundenErweitert On AdressenNr = kde_KundenNr where rmc_daId Is null " & sqlTime & " group by rmc_reNr, Adressen.AdressenNr, Adressen.[Name 1],rmc_reDatum, kde_keineMWSt"
Dim dt = (New VERAG_PROG_ALLGEMEIN.SQL).loadDgvBySql(SQLstr, "FMZOLL")
Return dt
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
Return Nothing
End Function
Public Class Paramter

View File

@@ -45,6 +45,31 @@ Public Class cUTA
Return SQL.getValueTxtBySql("SELECT count(InvToCustomer) FROM [tblUTAImportNew] where InvToCustomer Is null ", "FMZOLL",,, -1)
End Function
Public Shared Function checkPDFInvoices(Optional reDatVon As Date = Nothing, Optional reDatBis As Date = Nothing) As DataTable
Try
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
Dim sqlTime As String = ""
If IsDate(reDatVon) AndAlso CDate(reDatVon) > "01.01.2020" AndAlso IsDate(reDatBis) AndAlso CDate(reDatBis) > "01.01.2020" Then
sqlTime = " And CAST(U.Rechnungsdatum As Date) BETWEEN '" & reDatVon.ToShortDateString & "' and '" & reDatBis.ToShortDateString & "'"
End If
Dim SQLstr = "Select U.Abrechnungsnummer As Abrechnungsnummer,U.Rechnungsnummer_pro_Lieferland,U.Lieferland,CAST(U.Rechnungsdatum As Date) As Rechnungsdatum,A.AdressenNr As KundenNr,A.UTAKundenNr As UTAKundenNr,A.[Name 1] As Kunde,A.LandKz, kde_keineMWSt As keineMWST FROM tblUTAImportNew U INNER JOIN Adressen A On A.UTAKundenNr = U.Kundennummer INNER JOIN tblKundenErweitert On A.AdressenNr = kde_KundenNr WHERE U.daId Is NULL " & sqlTime & " AND NOT (A.LandKz = 'RO' AND U.Lieferland = 'ROM') GROUP BY U.Abrechnungsnummer,U.Rechnungsnummer_pro_Lieferland,U.Lieferland,U.Rechnungsdatum,A.AdressenNr,A.UTAKundenNr ,A.[Name 1],A.LandKz, kde_keineMWSt ORDER BY U.Rechnungsdatum"
Dim dt = (New VERAG_PROG_ALLGEMEIN.SQL).loadDgvBySql(SQLstr, "FMZOLL")
Return dt
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
Return Nothing
End Function
Public Class UTAHeader
Property Übertragungsnummer As Integer

View File

@@ -64,7 +64,7 @@ Public Class frmMessenger
End Sub
Private Sub MyDatagridview1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvChats.CellClick '.CellContentClick
If dgvChats.Rows(e.RowIndex).Cells("ungelesen").Value <> "" Then
If dgvChats.Rows(e.RowIndex).Cells("ungelesen").Value <> 0 Then 'If dgvChats.Rows(e.RowIndex).Cells("ungelesen").Value <> "" Then
Dim dgv_ChatID = If(dgvChats.SelectedRows.Count > 0, dgvChats.SelectedRows(0).Cells("chat_id").Value, -1)
intiDGVChats(dgv_ChatID, False) ' Splate ungelesen sol sich ändern
End If
@@ -216,7 +216,54 @@ Public Class frmMessenger
" & where & "
) as T " & whereName & " ORDER BY chat_lastMsg DESC"
.DataSource = SQL.loadDgvBySql(sqlQery, "ADMIN")
Dim sqlQery_optimiced As String = "SELECT TOP 200
c.chat_id,
CASE
WHEN ISNULL(c.chat_name, '') <> '' THEN c.chat_name
ELSE names.chat_name
END AS chat_name,
ISNULL(unread.ungelesen, 0) AS ungelesen,
c.chat_lastMsg
FROM tblMessenger_Chat c
-- ensure current user is member
INNER JOIN tblMessenger_ChatMembers m
ON m.chatMb_chatId = c.chat_id
AND m.chatMb_maId = " & VERAG_PROG_ALLGEMEIN.cAllgemein.USRID & "
-- 🔹 get participant names (distinct!)
OUTER APPLY (
SELECT STRING_AGG(name, ', ') AS chat_name
FROM (
SELECT DISTINCT
mit.mit_vname + ' ' + mit.mit_nname AS name
FROM tblMessenger_ChatMembers m2
INNER JOIN tblMitarbeiter mit
ON mit.mit_id = m2.chatMb_maId
WHERE m2.chatMb_chatId = c.chat_id
AND m2.chatMb_maId <> " & VERAG_PROG_ALLGEMEIN.cAllgemein.USRID & "
) x
) names
-- 🔹 unread count separated (no duplication!)
OUTER APPLY (
SELECT COUNT(*) AS ungelesen
FROM tblMessenger_ChatMessages msg
INNER JOIN tblMessenger_ChatMessageStatus s
ON s.chatMgSt_chatMsgId = msg.chatMg_id
WHERE msg.chatMg_chatId = c.chat_id
AND s.chatMgSt_MaId = " & VERAG_PROG_ALLGEMEIN.cAllgemein.USRID & "
AND s.chatMgSt_gelesen = 0
) unread WHERE c.chat_aktiv = " & IIf(Not cbxInaktiveChats.Checked, 1, 0) & "" & where & "ORDER BY c.chat_lastMsg DESC"
.DataSource = SQL.loadDgvBySql(sqlQery_optimiced, "ADMIN")
If .Columns.Count = 0 Then Exit Sub
@@ -547,10 +594,19 @@ Public Class frmMessenger
If CHAT IsNot Nothing Then
CHAT.LOAD_MESSAGES(topMessages)
CHAT.LOAD_MESSAGES_NEW(topMessages)
' CHAT = New VERAG_PROG_ALLGEMEIN.cMessenger.cMessenger_Chat(dgvChats.SelectedRows(0).Cells("chat_id").Value)
Dim newMsg As Boolean = False
Dim existingIds As New HashSet(Of Integer)
For Each ctrl In MyFlowLayoutPanel1.Controls
existingIds.Add(ctrl.CHAT_MSG.chatMg_id)
Next
For Each MSG In CHAT.CHAT_MESSAGES
Dim found As Boolean = False
For Each I In MyFlowLayoutPanel1.Controls
@@ -602,6 +658,61 @@ Public Class frmMessenger
End Try
End Sub
Private Sub REFRESH_CHAT_NEW()
Try
If CHAT Is Nothing Then Exit Sub
' Load latest messages
CHAT.LOAD_MESSAGES_NEW(topMessages)
' Build fast lookup for existing message IDs
Dim existingIds As New HashSet(Of Integer)
For Each ctrl As Control In MyFlowLayoutPanel1.Controls
Select Case ctrl.GetType()
Case GetType(usrCntlMessenger_ChatElement)
existingIds.Add(DirectCast(ctrl, usrCntlMessenger_ChatElement).CHAT_MSG.chatMg_id)
Case GetType(usrCntlMessenger_ChatAnhang)
existingIds.Add(DirectCast(ctrl, usrCntlMessenger_ChatAnhang).CHAT_MSG.chatMg_id)
Case GetType(usrCntlMessenger_ChatEmoji)
existingIds.Add(DirectCast(ctrl, usrCntlMessenger_ChatEmoji).CHAT_MSG.chatMg_id)
Case GetType(usrCntlMessenger_ChatElementDEL)
existingIds.Add(DirectCast(ctrl, usrCntlMessenger_ChatElementDEL).CHAT_MSG.chatMg_id)
End Select
Next
Dim newMessageAdded As Boolean = False
MyFlowLayoutPanel1.SuspendLayout()
For Each MSG In CHAT.CHAT_MESSAGES
If Not existingIds.Contains(MSG.chatMg_id) Then
Dim ctrl = getControlFromMSG(MSG)
If ctrl IsNot Nothing Then
MyFlowLayoutPanel1.Controls.Add(ctrl)
newMessageAdded = True
End If
End If
Next
MyFlowLayoutPanel1.ResumeLayout()
If newMessageAdded Then
MyFlowLayoutPanel1.VerticalScroll.Value = MyFlowLayoutPanel1.VerticalScroll.Maximum
End If
checkOnlineOffline()
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace,
System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Sub
'Sub ORDER_CHAT_MSG()
' If Not CHECK_CHATMSG_ORDER() Then
@@ -689,15 +800,16 @@ Public Class frmMessenger
MSG.chatMg_maFirma = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
If MSG.SAVE(True, CHAT.CHAT_MEMBERS) Then
SEND_TOKEN_NEW_MESSAGE()
' CHAT.CHAT_MESSAGES.Add(MSG)
SET_ALL_READ()
REFRESH_CHAT()
rtbChatMessage.Text = ""
rtbChatMessage.Focus()
End If
End If
SEND_TOKEN_NEW_MESSAGE()
CHAT.CHAT_MESSAGES.Add(MSG)
SET_ALL_READ()
REFRESH_CHAT_NEW()
rtbChatMessage.Text = ""
rtbChatMessage.Focus()
End If
End If
End If
End Sub
@@ -753,13 +865,13 @@ Public Class frmMessenger
If CHAT IsNot Nothing And VERAG_PROG_ALLGEMEIN.cMessenger.NEW_MESSGE = True Then
VERAG_PROG_ALLGEMEIN.cMessenger.NEW_MESSGE = False
' MsgBox("asd")
REFRESH_CHAT()
REFRESH_CHAT_NEW()
End If
End Sub
Private Sub Timer_REFRESH_Tick(sender As Object, e As EventArgs) Handles Timer_REFRESH.Tick
loaded = False
REFRESH_CHAT()
REFRESH_CHAT_NEW()
Dim dgv_ChatID = If(dgvChats.SelectedRows.Count > 0, dgvChats.SelectedRows(0).Cells("chat_id").Value, -1)
If checkNewestShit() Then ' prüft, ob neue Nachrichten gekommen sind, sont kein Refresh (stört das scrollen)
intiDGVChats(dgv_ChatID, False)
@@ -871,7 +983,7 @@ Public Class frmMessenger
If dgvChats.Columns.Count > 0 Then
If e.ColumnIndex = dgvChats.Columns("ungelesen").Index Then
If dgvChats.Rows(e.RowIndex).Cells("ungelesen").Value <> "" Then
If dgvChats.Rows(e.RowIndex).Cells("ungelesen").Value <> 0 Then ' If dgvChats.Rows(e.RowIndex).Cells("ungelesen").Value <> "" Then
dgvChats.Rows(e.RowIndex).Cells("ungelesen").Style.BackColor = Color.Red
End If
'For Each r As DataGridViewRow In .Rows
@@ -946,10 +1058,10 @@ Public Class frmMessenger
If MSG.SAVE(True, CHAT.CHAT_MEMBERS) Then
If reloadChat Then
CHAT.CHAT_MESSAGES.Add(MSG)
SEND_TOKEN_NEW_MESSAGE()
' CHAT.CHAT_MESSAGES.Add(MSG)
SET_ALL_READ()
REFRESH_CHAT()
REFRESH_CHAT_NEW()
rtbChatMessage.Text = ""
rtbChatMessage.Focus()
End If
@@ -972,7 +1084,7 @@ Public Class frmMessenger
SEND_TOKEN_NEW_MESSAGE()
' CHAT.CHAT_MESSAGES.Add(MSG)
SET_ALL_READ()
REFRESH_CHAT()
REFRESH_CHAT_NEW()
'rtbChatMessage.Text = filePath
'rtbChatMessage.Focus()
End If
@@ -1155,7 +1267,7 @@ Public Class frmMessenger
'CHAT neu laden!
SEND_TOKEN_NEW_MESSAGE()
SET_ALL_READ()
REFRESH_CHAT()
REFRESH_CHAT_NEW()
rtbChatMessage.Text = ""
rtbChatMessage.Focus()
End If

View File

@@ -71,6 +71,31 @@ Public Class cMSEAPI
Return SQL.getValueTxtBySql("SELECT count(InvToCustomer) FROM [tblMSEInvoices] where InvToCustomer Is null ", "FMZOLL",,, -1)
End Function
Public Shared Function checkPDFInvoices(Optional reDatVon As Date = Nothing, Optional reDatBis As Date = Nothing) As DataTable
Try
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
Dim sqlTime As String = ""
If IsDate(reDatVon) AndAlso CDate(reDatVon) > "01.01.2020" AndAlso IsDate(reDatBis) AndAlso CDate(reDatBis) > "01.01.2020" Then
sqlTime = " And cast(invoice_date As Date) between '" & reDatVon.ToShortDateString & "' and '" & reDatBis.ToShortDateString & "'"
End If
Dim SQLstr = "Select invoice_id As RechnungsNr,[invoice_date] As Rechnungsdatum, Adressen.AdressenNr As KundenNr,Adressen.[Name 1] As Kunde, kde_keineMWSt As keineMWST from tblMSEInvoices inner join [tblMSECustomers] On [customer_number] = [customer_id] INNER JOIN Adressen On Adressen.MSEKundenNr = [customer_number] INNER JOIN tblKundenErweitert On AdressenNr = kde_KundenNr where daId Is null " & sqlTime & " group by invoice_id, Adressen.AdressenNr, Adressen.[Name 1], invoice_date, kde_keineMWSt"
Dim dt = (New VERAG_PROG_ALLGEMEIN.SQL).loadDgvBySql(SQLstr, "FMZOLL")
Return dt
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
Return Nothing
End Function

View File

@@ -26,6 +26,11 @@ Partial Class frmDatumsabfrage
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Me.MyPanel1 = New VERAG_PROG_ALLGEMEIN.MyPanel(Me.components)
Me.MyPanel2 = New VERAG_PROG_ALLGEMEIN.MyPanel(Me.components)
Me.Label2 = New System.Windows.Forms.Label()
Me.lbLaender = New VERAG_PROG_ALLGEMEIN.MyListBox()
Me.btnKeine = New System.Windows.Forms.Button()
Me.btnAlle = New System.Windows.Forms.Button()
Me.pnlKunde = New System.Windows.Forms.Panel()
Me.cbxKunden = New System.Windows.Forms.CheckBox()
Me.cboKundenkreis = New VERAG_PROG_ALLGEMEIN.MyComboBox()
@@ -35,13 +40,17 @@ Partial Class frmDatumsabfrage
Me.lbl = New System.Windows.Forms.Label()
Me.Label1 = New System.Windows.Forms.Label()
Me.MyPanel1.SuspendLayout()
Me.MyPanel2.SuspendLayout()
Me.pnlKunde.SuspendLayout()
Me.SuspendLayout()
'
'MyPanel1
'
Me.MyPanel1.AutoSize = True
Me.MyPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink
Me.MyPanel1.BackColor = System.Drawing.Color.White
Me.MyPanel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.MyPanel1.Controls.Add(Me.MyPanel2)
Me.MyPanel1.Controls.Add(Me.pnlKunde)
Me.MyPanel1.Controls.Add(Me.dtp_date)
Me.MyPanel1.Controls.Add(Me.btnClose)
@@ -54,6 +63,60 @@ Partial Class frmDatumsabfrage
Me.MyPanel1.Size = New System.Drawing.Size(286, 84)
Me.MyPanel1.TabIndex = 3
'
'MyPanel2
'
Me.MyPanel2.AutoSize = True
Me.MyPanel2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink
Me.MyPanel2.Controls.Add(Me.Label2)
Me.MyPanel2.Controls.Add(Me.lbLaender)
Me.MyPanel2.Controls.Add(Me.btnKeine)
Me.MyPanel2.Controls.Add(Me.btnAlle)
Me.MyPanel2.Location = New System.Drawing.Point(3, 82)
Me.MyPanel2.Name = "MyPanel2"
Me.MyPanel2.Size = New System.Drawing.Size(253, 364)
Me.MyPanel2.TabIndex = 49
'
'Label2
'
Me.Label2.AutoSize = True
Me.Label2.Location = New System.Drawing.Point(22, 3)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(40, 13)
Me.Label2.TabIndex = 50
Me.Label2.Text = "Länder"
'
'lbLaender
'
Me.lbLaender._value = ""
Me.lbLaender.FormattingEnabled = True
Me.lbLaender.Location = New System.Drawing.Point(25, 16)
Me.lbLaender.Name = "lbLaender"
Me.lbLaender.SelectionMode = System.Windows.Forms.SelectionMode.MultiSimple
Me.lbLaender.Size = New System.Drawing.Size(225, 316)
Me.lbLaender.TabIndex = 46
'
'btnKeine
'
Me.btnKeine.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.btnKeine.Location = New System.Drawing.Point(150, 338)
Me.btnKeine.Margin = New System.Windows.Forms.Padding(0)
Me.btnKeine.Name = "btnKeine"
Me.btnKeine.Size = New System.Drawing.Size(100, 26)
Me.btnKeine.TabIndex = 47
Me.btnKeine.Text = "Keine"
Me.btnKeine.UseVisualStyleBackColor = True
'
'btnAlle
'
Me.btnAlle.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.btnAlle.Location = New System.Drawing.Point(25, 338)
Me.btnAlle.Margin = New System.Windows.Forms.Padding(0)
Me.btnAlle.Name = "btnAlle"
Me.btnAlle.Size = New System.Drawing.Size(100, 26)
Me.btnAlle.TabIndex = 48
Me.btnAlle.Text = "Alle"
Me.btnAlle.UseVisualStyleBackColor = True
'
'pnlKunde
'
Me.pnlKunde.Controls.Add(Me.cbxKunden)
@@ -149,6 +212,7 @@ Partial Class frmDatumsabfrage
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.AutoSize = True
Me.ClientSize = New System.Drawing.Size(286, 84)
Me.Controls.Add(Me.MyPanel1)
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
@@ -157,9 +221,12 @@ Partial Class frmDatumsabfrage
Me.Text = "frmDatumsabfrage"
Me.MyPanel1.ResumeLayout(False)
Me.MyPanel1.PerformLayout()
Me.MyPanel2.ResumeLayout(False)
Me.MyPanel2.PerformLayout()
Me.pnlKunde.ResumeLayout(False)
Me.pnlKunde.PerformLayout()
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
@@ -172,4 +239,9 @@ Partial Class frmDatumsabfrage
Friend WithEvents pnlKunde As Panel
Public WithEvents cboKundenkreis As VERAG_PROG_ALLGEMEIN.MyComboBox
Public WithEvents cbxKunden As CheckBox
Friend WithEvents btnAlle As Button
Friend WithEvents lbLaender As MyListBox
Friend WithEvents btnKeine As Button
Friend WithEvents MyPanel2 As MyPanel
Friend WithEvents Label2 As Label
End Class

View File

@@ -1,10 +1,10 @@
Imports System.Windows.Forms
Imports GrapeCity.Viewer.Common.Model
Imports VERAG_PROG_ALLGEMEIN
Public Class frmDatumsabfrage
Dim onlypastDate As Boolean = True
Dim panelKunde As Boolean = False
Dim panelLaender As Boolean = False
Sub New()
@@ -31,9 +31,13 @@ Public Class frmDatumsabfrage
onlypastDate = _onlypastDate
lbl.Text = title
panelKunde = _mitKundengruppe
panelLaender = _mitKundengruppe
End Sub
Public Datum As Date = CDate(Now.ToShortDateString)
Public exceptedCountries As String
Private Sub btn_Click(sender As Object, e As EventArgs) Handles btn.Click
Label1.Text = ""
@@ -43,6 +47,9 @@ Public Class frmDatumsabfrage
Exit Sub
End If
Datum = CDate(dtp_date.Value)
If panelLaender Then
exceptedCountries = getValues()
End If
Me.DialogResult = DialogResult.OK
End Sub
@@ -54,12 +61,26 @@ Public Class frmDatumsabfrage
Private Sub btnClose_Click(sender As Object, e As EventArgs) Handles btnClose.Click
Datum = CDate(Now.ToShortDateString)
If panelLaender Then
exceptedCountries = getValues()
End If
Me.Close()
End Sub
Private Sub frmDatumsabfrage(sender As Object, e As EventArgs) Handles Me.Load
dtp_date.Value = Now.ToShortDateString
pnlKunde.Visible = panelKunde
MyPanel2.Visible = panelLaender
If panelLaender Then
Me.Height = 462
Else
Me.Height = 84
End If
If panelKunde Then
cboKundenkreis.Items.Clear()
@@ -74,10 +95,42 @@ Public Class frmDatumsabfrage
cboKundenkreis.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem(" 400000-499999: YU - KUNDEN", "400000-499999"))
End If
If panelLaender Then
lbLaender.fillWithSQL(" select L.LandKz, L.LandBez FROM [Länderverzeichnis für die Außenhandelsstatistik] L
INNER JOIN (Adressen A INNER JOIN Währungstabelle W ON A.LandKz = W.LandKz INNER JOIN tblSteuernummern S ON A.AdressenNr = S.AdressenNr) ON L.LandNr = S.LandNr
WHERE S.StNrGültigkeitsdatum IS NOT NULL AND W.MitgliedslandEU = 0 GROUP BY L.LandBez, L.LandKz
order by L.LandBez ", , "FMZOLL")
End If
End Sub
Private Sub cbxKunden_CheckedChanged(sender As Object, e As EventArgs) Handles cbxKunden.CheckedChanged
cboKundenkreis.Enabled = cbxKunden.Checked
End Sub
Private Sub btnAlle_Click(sender As Object, e As EventArgs) Handles btnAlle.Click
For i = 0 To lbLaender.Items.Count - 1
lbLaender.SetSelected(i, True)
Next
End Sub
Private Sub btnKeine_Click(sender As Object, e As EventArgs) Handles btnKeine.Click
For i = 0 To lbLaender.Items.Count - 1
lbLaender.SetSelected(i, False)
Next
End Sub
Function getValues() As String
Dim s As String = ""
For Each i As VERAG_PROG_ALLGEMEIN.MyListItem In lbLaender.Items
If Not lbLaender.GetSelected(lbLaender.Items.IndexOf(i)) Then
s += "'" & i.Value & "', "
End If
Next
If s.EndsWith(", ") Then
s = s.Substring(0, s.Length - 2)
End If
Return s
End Function
End Class