292 lines
15 KiB
VB.net
292 lines
15 KiB
VB.net
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<CAST(GETDATE() AS date) AND scc.scc_Status NOT IN (5,6) THEN 0 ELSE 1 END, scc.scc_Deadline, scc.scc_SendungID DESC "
|
||
|
||
Dim errOcc As Boolean = False
|
||
Dim dt As DataTable = VERAGSQL.loadDgvBySql_Param(hSQL, "AVISO", 1500, list, False, errOcc)
|
||
If errOcc Then
|
||
lblInfo.Text = "Fehler bei der Suche."
|
||
Exit Sub
|
||
End If
|
||
gridAviso.DataSource = dt
|
||
gridAviso_SpaltenFestlegen()
|
||
lblInfo.Text = gridAviso.Rows.Count.ToString() & " Vorgänge" & If(gridAviso.Rows.Count >= 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
|