Imports System.Data Imports System.Windows.Forms Imports VERAG_PROG_ALLGEMEIN 'Zollverfahren & Anträge – Suche auf Sendungsebene, unabhängig von AvisoID. Public Class usrCntlHauptfenster_Suche_Zollvorgaenge Public Event CaseOpenRequested(sendungId As Integer, avisoId As Integer) Public Event CaseNewRequested() Public aktiv As Boolean = False Public PARENT_FRMHAUPTFENSTER As frmHauptfensterNew Private ReadOnly VERAGSQL As New VERAG_PROG_ALLGEMEIN.SQL Private _loading As Boolean = False Private _initialized As Boolean = False Private Class ComboItem Public Property Text As String Public Property Value As String Public Sub New(t As String, v As String) Text = t : Value = v End Sub Public Overrides Function ToString() As String Return Text End Function End Class Private Sub AddItem(cbo As ComboBox, label As String, value As String) cbo.Items.Add(New ComboItem(label, value)) End Sub Private Function Selected(cbo As ComboBox) As String Dim item = TryCast(cbo.SelectedItem, ComboItem) Return If(item Is Nothing, "", item.Value) End Function Private Sub usrCntlHauptfenster_Suche_Zollvorgaenge_Load(sender As Object, e As EventArgs) Handles MyBase.Load If _initialized Then Exit Sub _initialized = True _loading = True Try cboTyp.Items.Clear() AddItem(cboTyp, "Alle Verfahren", "") AddItem(cboTyp, "Einspruch / Beschwerde", "1") AddItem(cboTyp, "NCTS-Nachforschung", "2") AddItem(cboTyp, "NCTS-Unstimmigkeit", "3") AddItem(cboTyp, "Zollamtliche Anfrage", "4") AddItem(cboTyp, "Berichtigung / Nachbesserung", "5") AddItem(cboTyp, "Änderungsantrag", "6") AddItem(cboTyp, "Erstattung / Erlass", "7") AddItem(cboTyp, "Abgabenbescheid", "8") AddItem(cboTyp, "Mahn-/Vollstreckungsverfahren", "9") AddItem(cboTyp, "Sonstiges", "10") cboTyp.SelectedIndex = 0 cboStatus.Items.Clear() AddItem(cboStatus, "Alle Status", "") AddItem(cboStatus, "Neu", "0") AddItem(cboStatus, "In Bearbeitung", "1") AddItem(cboStatus, "Unterlagen ausständig", "2") AddItem(cboStatus, "Rückmeldung Zoll ausständig", "3") AddItem(cboStatus, "Entscheidung eingegangen", "4") AddItem(cboStatus, "Erledigt", "5") AddItem(cboStatus, "Geschlossen", "6") cboStatus.SelectedIndex = 0 cboLand.Items.Clear() AddItem(cboLand, "Alle Länder", "") For Each land In {"AT", "DE", "NL", "IT", "FR", "UK", "TR"} AddItem(cboLand, land, land) Next cboLand.SelectedIndex = 0 cboTeam.Items.Clear() AddItem(cboTeam, "Alle Teams", "") Dim dt = VERAGSQL.loadDgvBySql("SELECT team_id, team_bezeichnung FROM tblTeams WHERE team_firma='" & cAllgemein.FIRMA.Replace("'", "''") & "' ORDER BY team_bezeichnung", "ADMIN") If dt IsNot Nothing Then For Each r As DataRow In dt.Rows AddItem(cboTeam, Convert.ToString(r("team_bezeichnung")), Convert.ToString(r("team_id"))) Next End If cboTeam.SelectedIndex = 0 dtFristVon.Checked = False dtFristBis.Checked = False Catch ex As Exception cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) Finally _loading = False End Try RESET() End Sub Public Sub RESET() If Not _initialized Then Exit Sub _loading = True Try txtSuche.Clear() : txtMRN.Clear() : txtGeschaeftszeichen.Clear() txtZollamt.Clear() : txtKunde.Clear() : txtSendungID.Clear() cboTyp.SelectedIndex = 0 : cboStatus.SelectedIndex = 0 cboLand.SelectedIndex = 0 : cboTeam.SelectedIndex = 0 dtFristVon.Checked = False : dtFristBis.Checked = False optOffen.Checked = True chkMeine.Checked = True Finally _loading = False End Try Aviso_anzeigen("") End Sub Private Function Wildcard(value As String) As String Return value.Trim().Replace("*", "%") & "%" End Function Public Sub Aviso_anzeigen(Optional hSort As String = "", Optional showDetails As Boolean = True) If Not _initialized OrElse _loading Then Exit Sub Try Dim hSQL As String = "SELECT TOP (1000) s.tblSnd_SendungID, s.tblSnd_AvisoID AS AvisoID, " & "scc.scc_Type AS VerfahrenNr, " & "CASE scc.scc_Type WHEN 1 THEN N'Einspruch/Beschwerde' WHEN 2 THEN N'NCTS-Nachforschung' " & "WHEN 3 THEN N'NCTS-Unstimmigkeit' WHEN 4 THEN N'Zollamtliche Anfrage' " & "WHEN 5 THEN N'Berichtigung' WHEN 6 THEN N'Änderungsantrag' " & "WHEN 7 THEN N'Erstattung/Erlass' WHEN 8 THEN N'Abgabenbescheid' " & "WHEN 9 THEN N'Mahnverfahren' ELSE N'Sonstiges' END AS Verfahren, " & "scc.scc_Subject AS Betreff, scc.scc_CustomsOffice AS Zollamt, " & "scc.scc_CustomsReference AS Geschaeftszeichen, scc.scc_ReferenceMRN AS MRN, " & "scc.scc_ReceivedDate AS Eingang, scc.scc_Deadline AS Frist, " & "scc.scc_ReminderDate AS Wiedervorlage, scc.scc_Status AS StatusNr, " & "CASE scc.scc_Status WHEN 0 THEN N'Neu' WHEN 1 THEN N'In Bearbeitung' " & "WHEN 2 THEN N'Unterlagen ausständig' WHEN 3 THEN N'Zoll ausständig' " & "WHEN 4 THEN N'Entscheidung' WHEN 5 THEN N'Erledigt' " & "WHEN 6 THEN N'Geschlossen' ELSE N'Unbekannt' END AS Fachstatus, " & "s.tblSnd_Zollsystem_Land AS Land, s.tblSnd_Auftraggeber AS Auftraggeber, " & "s.tblSnd_TeamId AS TeamId, s.tblSnd_SachbearbeiterId AS SachbearbeiterId, " & "s.LetzterMitarbeiter AS LetzterMitarbeiter, scc.scc_Amount AS Betrag, scc.scc_Currency AS Waehrung " & "FROM dbo.tblSendungCustomsCases scc " & "INNER JOIN dbo.tblSendungen s ON s.tblSnd_SendungID=scc.scc_SendungID " & "LEFT JOIN dbo.Aviso a ON a.AvisoID=s.tblSnd_AvisoID " & "WHERE (s.tblSnd_Firma=@firma OR s.tblSnd_Cluster=@cluster OR s.LetzterMitarbeiterId=@maId) " Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) From { New VERAG_PROG_ALLGEMEIN.SQLVariable("firma", cAllgemein.FIRMA), New VERAG_PROG_ALLGEMEIN.SQLVariable("cluster", cAllgemein.CLUSTER), New VERAG_PROG_ALLGEMEIN.SQLVariable("maId", cAllgemein.USRID) } If chkMeine.Checked Then hSQL &= " AND (s.tblSnd_SachbearbeiterId=@maId OR s.LetzterMitarbeiterId=@maId) " End If If Selected(cboTyp) <> "" Then hSQL &= " AND scc.scc_Type=@type " list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("type", CShort(Selected(cboTyp)))) End If If Selected(cboStatus) <> "" Then hSQL &= " AND scc.scc_Status=@status " list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("status", CShort(Selected(cboStatus)))) End If If Selected(cboLand) <> "" Then hSQL &= " AND s.tblSnd_Zollsystem_Land=@land " list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("land", Selected(cboLand))) End If If Selected(cboTeam) <> "" Then hSQL &= " AND s.tblSnd_TeamId=@team " list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("team", CInt(Selected(cboTeam)))) End If If txtSuche.Text.Trim() <> "" Then hSQL &= " AND (scc.scc_Subject LIKE @search OR s.tblSnd_Anmerkung LIKE @search) " list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("search", Wildcard(txtSuche.Text))) End If If txtMRN.Text.Trim() <> "" Then hSQL &= " AND scc.scc_ReferenceMRN LIKE @mrn " list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("mrn", Wildcard(txtMRN.Text))) End If If txtGeschaeftszeichen.Text.Trim() <> "" Then hSQL &= " AND scc.scc_CustomsReference LIKE @reference " list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("reference", Wildcard(txtGeschaeftszeichen.Text))) End If If txtZollamt.Text.Trim() <> "" Then hSQL &= " AND scc.scc_CustomsOffice LIKE @office " list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("office", Wildcard(txtZollamt.Text))) End If If txtKunde.Text.Trim() <> "" Then hSQL &= " AND s.tblSnd_Auftraggeber LIKE @kunde " list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("kunde", Wildcard(txtKunde.Text))) End If If txtSendungID.Text.Trim() <> "" Then Dim id As Integer If Not Integer.TryParse(txtSendungID.Text.Trim(), id) Then lblInfo.Text = "Ungültige Sendung-ID" Exit Sub End If hSQL &= " AND s.tblSnd_SendungID=@sendungId " list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("sendungId", id)) End If If dtFristVon.Checked Then hSQL &= " AND scc.scc_Deadline>=@fristVon " list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("fristVon", dtFristVon.Value.Date)) End If If dtFristBis.Checked Then hSQL &= " AND scc.scc_Deadline<=@fristBis " list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("fristBis", dtFristBis.Value.Date)) End If If optOffen.Checked Then hSQL &= " AND scc.scc_Status NOT IN (5,6) " ElseIf optAbgeschlossen.Checked Then hSQL &= " AND scc.scc_Status IN (5,6) " ElseIf optFristen.Checked Then hSQL &= " AND scc.scc_Status NOT IN (5,6) AND (scc.scc_Deadline<=DATEADD(DAY,14,CAST(GETDATE() AS date)) OR scc.scc_ReminderDate<=CAST(GETDATE() AS date)) " End If hSQL &= " ORDER BY CASE WHEN scc.scc_Deadline= 1000, " (max. 1000)", "") & " – " & Date.Now.ToString("HH:mm") Catch ex As Exception cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) lblInfo.Text = "Suche fehlgeschlagen: " & ex.Message End Try End Sub Public Sub gridAviso_SpaltenFestlegen() If gridAviso.Columns.Count = 0 Then Exit Sub For Each key In {"tblSnd_SendungID", "AvisoID", "VerfahrenNr", "StatusNr", "TeamId", "SachbearbeiterId"} If gridAviso.Columns.Contains(key) Then gridAviso.Columns(key).Visible = False Next For Each key In {"Eingang", "Frist", "Wiedervorlage"} If gridAviso.Columns.Contains(key) Then gridAviso.Columns(key).Width = 90 gridAviso.Columns(key).DefaultCellStyle.Format = "dd.MM.yyyy" End If Next If gridAviso.Columns.Contains("Betreff") Then gridAviso.Columns("Betreff").Width = 250 End If If gridAviso.Columns.Contains("Verfahren") Then gridAviso.Columns("Verfahren").Width = 155 If gridAviso.Columns.Contains("Auftraggeber") Then gridAviso.Columns("Auftraggeber").Width = 180 If gridAviso.Columns.Contains("Geschaeftszeichen") Then gridAviso.Columns("Geschaeftszeichen").HeaderText = "Geschäftszeichen" If gridAviso.Columns.Contains("Fachstatus") Then gridAviso.Columns("Fachstatus").Width = 135 If gridAviso.Columns.Contains("Betrag") Then gridAviso.Columns("Betrag").DefaultCellStyle.Format = "N2" End Sub Private Sub btnSuchen_Click(sender As Object, e As EventArgs) Handles btnSuchen.Click Aviso_anzeigen("") End Sub Private Sub btnNeu_Click(sender As Object, e As EventArgs) Handles btnNeu.Click RaiseEvent CaseNewRequested() End Sub Private Sub Ansicht_CheckedChanged(sender As Object, e As EventArgs) Handles optOffen.CheckedChanged, optAlle.CheckedChanged, optFristen.CheckedChanged, optAbgeschlossen.CheckedChanged Dim opt = DirectCast(sender, RadioButton) If Not opt.Checked Then Exit Sub For Each rb As RadioButton In New RadioButton() {optOffen, optAlle, optFristen, optAbgeschlossen} rb.BackColor = If(rb.Checked, Color.FromArgb(28, 77, 150), Color.White) rb.ForeColor = If(rb.Checked, Color.White, Color.FromArgb(44, 66, 103)) Next Aviso_anzeigen("") End Sub Private Sub filter_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboTyp.SelectedIndexChanged, cboStatus.SelectedIndexChanged, cboLand.SelectedIndexChanged, cboTeam.SelectedIndexChanged, chkMeine.CheckedChanged Aviso_anzeigen("") End Sub Private Sub filter_KeyDown(sender As Object, e As KeyEventArgs) Handles txtSuche.KeyDown, txtMRN.KeyDown, txtGeschaeftszeichen.KeyDown, txtZollamt.KeyDown, txtKunde.KeyDown, txtSendungID.KeyDown If e.KeyCode = Keys.Enter Then e.SuppressKeyPress = True Aviso_anzeigen("") End If End Sub Private Sub gridAviso_DoubleClick(sender As Object, e As EventArgs) Handles gridAviso.DoubleClick OpenSelectedCase() End Sub Private Sub gridAviso_KeyDown(sender As Object, e As KeyEventArgs) Handles gridAviso.KeyDown If e.KeyCode = Keys.Enter Then e.Handled = True : e.SuppressKeyPress = True OpenSelectedCase() End If End Sub Private Sub OpenSelectedCase() If gridAviso.CurrentRow Is Nothing Then Exit Sub Dim row = gridAviso.CurrentRow If row.Cells("tblSnd_SendungID").Value Is DBNull.Value Then Exit Sub Dim sendungId As Integer = Convert.ToInt32(row.Cells("tblSnd_SendungID").Value) Dim avisoId As Integer = 0 If row.Cells("AvisoID").Value IsNot DBNull.Value AndAlso row.Cells("AvisoID").Value IsNot Nothing Then avisoId = Convert.ToInt32(row.Cells("AvisoID").Value) End If If avisoId < 0 Then avisoId = 0 cGlobal.Aktive_SendungsID = sendungId cGlobal.Aktive_ID = avisoId RaiseEvent CaseOpenRequested(sendungId, avisoId) End Sub End Class