This commit is contained in:
2026-04-27 15:24:29 +02:00
parent 2e9b3b0f6b
commit 0349685cfd
7 changed files with 2031 additions and 433 deletions

View File

@@ -1,7 +1,13 @@
Imports AVISO.AvisoStatusFunctions
Imports SDL

Imports System.Configuration
Imports System.IO
Imports System.Net
Imports System.Net.Mail
Imports System.Text
Imports Newtonsoft.Json
Imports Newtonsoft.Json.Linq
Imports VERAG_PROG_ALLGEMEIN
Imports AVISO.AvisoStatusFunctions
Public Class frmAddSendungsvermerkShort
Dim AvisoDAL As New cAvisoDAL
@@ -15,6 +21,9 @@ Public Class frmAddSendungsvermerkShort
Public SendungID As Integer = -1
Public AvisoID As Integer = -1
Private _anforderungCheckboxes As New List(Of CheckBox)
Private _backendBezeichnungByCodeId As New Dictionary(Of Integer, String)
Private Const BereichAngefordert As Integer = 2
Dim txtSendung As New TextBox
@@ -31,7 +40,7 @@ Public Class frmAddSendungsvermerkShort
End Sub
Private Sub frmEintragVermerk_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
'Escape händisch abfangen und auf Abbruch-Taste legen
'Escape händisch abfangen und auf Abbruch-Taste legen
If e.KeyCode = Keys.Escape Then
' btnAbbruch.PerformClick()
Me.Close()
@@ -59,16 +68,18 @@ Public Class frmAddSendungsvermerkShort
End Sub
Private Sub frmEintragVermerk_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
VERAG_PROG_ALLGEMEIN.cAllgemein._TRANSLATE(Me)
'cboDokumente.Items.Clear()
' cboDokumente.Items.Add(New MyListItem("nachgefordert", CStr(0)))
'cboDokumente.Items.Add(New MyListItem("erhalten", CStr(1)))
'cboDokumente.SelectedIndex = 0
Me.CenterToParent()
If My.Computer.Screen.WorkingArea.Height < Me.Height Then
Me.Height = My.Computer.Screen.WorkingArea.Height
Dim pt As Point = Cursor.Position
Dim screenBounds As Rectangle = Screen.FromPoint(pt).WorkingArea
If pt.X + Me.Width > screenBounds.Right Then
pt.X = screenBounds.Right - Me.Width
End If
If pt.Y + Me.Height > screenBounds.Bottom Then
pt.Y = screenBounds.Bottom - Me.Height
End If
Me.Location = pt
VERAG_PROG_ALLGEMEIN.cAllgemein._TRANSLATE(Me)
For Each c In Me.Controls
If c.GetType.Name.ToString = "RadioButton" Then
AddHandler DirectCast(c, RadioButton).CheckedChanged, AddressOf selectionChanged
@@ -92,6 +103,9 @@ Public Class frmAddSendungsvermerkShort
Else
optSendungInVorbereitung.Visible = False
End If
SetupDynamicAnforderungCheckboxes()
'bereits vorhandene Vermerke laden
'txtInfo.Text = VermerkeDAL.Vermerke_einlesen(myAviso.AvisoID)
Me.Text = "AKT " & myAviso.LKW_Nr & ""
@@ -119,6 +133,81 @@ Public Class frmAddSendungsvermerkShort
' Me.Close()
' End Sub
Private Sub SetupDynamicAnforderungCheckboxes()
_anforderungCheckboxes.Clear()
_backendBezeichnungByCodeId.Clear()
Dim dt As DataTable = Nothing
Try
dt = AvisoDAL.loadDataTableBySQL("SELECT [VermerkCodeId],[Bezeichnung],[FrontendBezeichnung],[AnforderungBereich] FROM [VermerkeCodes] WHERE [Anforderung]=1 ORDER BY [Bezeichnung]")
Catch
Try
dt = AvisoDAL.loadDataTableBySQL("SELECT [VermerkCodeId],[Bezeichnung],[AnforderungBereich] FROM [VermerkeCodes] WHERE [Anforderung]=1 ORDER BY [Bezeichnung]")
Catch
Return
End Try
End Try
If dt Is Nothing OrElse dt.Rows.Count = 0 Then
Return
End If
flpAngefordert.Controls.Clear()
For Each row As DataRow In dt.Rows
Dim id As Integer
Try
id = CInt(row("VermerkCodeId"))
Catch
Continue For
End Try
Dim bezeichnung = If(IsDBNull(row("Bezeichnung")), "", CStr(row("Bezeichnung"))).Trim()
If bezeichnung = "" Then Continue For
_backendBezeichnungByCodeId(id) = bezeichnung
Dim frontendBezeichnung = bezeichnung
If dt.Columns.Contains("FrontendBezeichnung") Then
frontendBezeichnung = If(IsDBNull(row("FrontendBezeichnung")), "", CStr(row("FrontendBezeichnung"))).Trim()
If frontendBezeichnung = "" Then frontendBezeichnung = bezeichnung
End If
Dim bereich As Integer = BereichAngefordert
Try
If Not IsDBNull(row("AnforderungBereich")) Then
bereich = CInt(row("AnforderungBereich"))
End If
Catch
End Try
If bereich = BereichAngefordert Then
Dim cb As New CheckBox()
cb.Text = frontendBezeichnung
cb.Tag = id
cb.Margin = New Padding(0, 0, 4, 0)
ConfigureAnforderungCheckbox(cb, flpAngefordert)
flpAngefordert.Controls.Add(cb)
_anforderungCheckboxes.Add(cb)
End If
Next
End Sub
Private Sub ConfigureAnforderungCheckbox(cb As CheckBox, container As Control)
If cb Is Nothing OrElse container Is Nothing Then Return
cb.AutoSize = False
cb.Height = 18
Dim cols As Integer = 2
Dim colGap As Integer = 14
Dim minCbWidth As Integer = 180
Dim usableWidth = Math.Max(120, container.Width - 20)
Dim cbWidth = CInt(Math.Floor((usableWidth - ((cols - 1) * colGap)) / cols))
cb.Width = Math.Max(minCbWidth, Math.Min(cbWidth, 220))
End Sub
Private Sub txtFeld_GotFocus(sender As Object, e As System.EventArgs) Handles txtFreierText.GotFocus, txtSpedition.GotFocus
CType(sender, TextBox).SelectAll()
End Sub
@@ -145,8 +234,7 @@ Public Class frmAddSendungsvermerkShort
End If
End If
'Plausibilität prüfen
'Plausibilität prüfen
If optFreierText.Checked Then
If txtFreierText.Text.Trim = "" Then
showErr(lblErrGrund)
@@ -156,44 +244,32 @@ Public Class frmAddSendungsvermerkShort
insertSendungsVermerk(SendungID, myAviso.AvisoID, txtFreierText.Text.Trim & " - offen", 101)
End If
If cbxAuftrag.Checked Then insertSendungsVermerk(SendungID, myAviso.AvisoID, "Auftrag für Sendung '" & txtSendung.Text.Trim & "' fehlt - angefordert", 1)
If cbxRechnung.Checked Then insertSendungsVermerk(SendungID, myAviso.AvisoID, "Rechnung für Sendung '" & txtSendung.Text.Trim & "' fehlt / mangelhaft - angefordert", 3)
If cbxLS.Checked Then insertSendungsVermerk(SendungID, myAviso.AvisoID, "Lieferschein für Sendung '" & txtSendung.Text.Trim & "' fehlt - angefordert", 5)
If cbxATR.Checked Then insertSendungsVermerk(SendungID, myAviso.AvisoID, "ATR für Sendung '" & txtSendung.Text.Trim & "' fehlt - angefordert", 7)
If cbxVollmacht.Checked Then insertSendungsVermerk(SendungID, myAviso.AvisoID, "Vollmacht für Sendung '" & txtSendung.Text.Trim & "' fehlt - angefordert", 9)
If cbxCMR.Checked Then insertSendungsVermerk(SendungID, myAviso.AvisoID, "CMR bei Sendung '" & txtSendung.Text.Trim & "' - angefordert", 11)
If cbxPackliste.Checked Then insertSendungsVermerk(SendungID, myAviso.AvisoID, "Packliste bei Sendung '" & txtSendung.Text.Trim & "' - angefordert", 90)
If cbxRgBest.Checked Then insertSendungsVermerk(SendungID, myAviso.AvisoID, "Rechnungsbestätigung bei Sendung '" & txtSendung.Text.Trim & "' - angefordert", 55)
If optGewPackAngefordert.Checked Then insertSendungsVermerk(SendungID, myAviso.AvisoID, "Gewicht/Packstücke bei Sendung '" & txtSendung.Text.Trim & "' mangelhaft - angefordert", 103)
If optZolltarifnummerAngefordert.Checked Then insertSendungsVermerk(SendungID, myAviso.AvisoID, "Zolltarifnummer bei Sendung '" & txtSendung.Text.Trim & "' - angefordert", 105)
If optKostenbestaetigungAngefordert.Checked Then insertSendungsVermerk(SendungID, myAviso.AvisoID, "Kostenbestaetigung bei Sendung '" & txtSendung.Text.Trim & "' - angefordert", 107)
For Each cb In _anforderungCheckboxes
If cb IsNot Nothing AndAlso cb.Checked Then
Dim codeId As Integer = 0
If Integer.TryParse(If(cb.Tag, "").ToString(), codeId) Then
Dim text = ""
If _backendBezeichnungByCodeId.ContainsKey(codeId) Then
text = If(_backendBezeichnungByCodeId(codeId), "").Trim()
End If
If text = "" Then text = cb.Text.Trim()
If optFrachtkostenAngefordert.Checked Then insertSendungsVermerk(SendungID, myAviso.AvisoID, "Frachtkosten bei Sendung '" & txtSendung.Text.Trim & "' - angefordert", 74)
If optAbsenderbestätigung.Checked Then insertSendungsVermerk(SendungID, myAviso.AvisoID, "Absenderbestätigung bei Sendung '" & txtSendung.Text.Trim & "' - angefordert", 76)
Dim sendText = txtSendung.Text.Trim()
If text <> "" AndAlso sendText <> "" AndAlso InStr(text, "sendung", CompareMethod.Text) = 0 Then
text &= " bei Sendung '" & sendText & "'"
End If
If text <> "" Then
insertSendungsVermerk(SendungID, myAviso.AvisoID, text, codeId)
End If
End If
End If
Next
If optKundeNichtErreichbar.Checked Then insertSendungsVermerk(SendungID, myAviso.AvisoID, "Kunde bei Sendung '" & txtSendung.Text.Trim & "' nicht erreichbar", 70)
If optFahrerKeinATR.Checked Then insertSendungsVermerk(SendungID, myAviso.AvisoID, "Fahrer ohne A.TR bei Sendung '" & txtSendung.Text.Trim & "'", 71)
If optFremd_ATB.Checked Then insertSendungsVermerk(SendungID, myAviso.AvisoID, "ATB von Fremdeinsteller erhalten bei Sendung '" & txtSendung.Text.Trim & "' ", 72)
If optFremd_SendungAvisiert.Checked Then insertSendungsVermerk(SendungID, myAviso.AvisoID, "Sendung '" & txtSendung.Text.Trim & "' an Fremdeinsteller avisiert", 73)
' If optSndUmmelden.Checked Then insertSendungsVermerk(SendungID, myAviso.AvisoID, "Sendung '" & txtSendung.Text.Trim & "' umgemeldet", 94)
If optDraft.Checked Then insertSendungsVermerk(SendungID, myAviso.AvisoID, "T2 Draft OK bei Sendung '" & txtSendung.Text.Trim & "' - angefordert", 118)
If optUeberwachungsdok.Checked Then insertSendungsVermerk(SendungID, myAviso.AvisoID, "Ü-Dok bei Sendung '" & txtSendung.Text.Trim & "' - angefordert", 53)
If cbxSonstDok.Checked Then
If txtSonstigesDokumentFehlt.Text.Trim = "" Then
showErr(lblErrDokument) : txtSonstigesDokumentFehlt.Focus() : Return False
End If
insertSendungsVermerk(SendungID, myAviso.AvisoID, "Dokument '" & txtSonstigesDokumentFehlt.Text.Trim & "' fehlt - angefordert.", 25)
End If
If cbxNichtLeserlich.Checked Then insertSendungsVermerk(SendungID, myAviso.AvisoID, "Dokument(e) nachgefordert, da nicht leserlich.", 42)
If optVorkasseAngefordert.Checked = True Then
insertSendungsVermerk(SendungID, myAviso.AvisoID, "Vorauskasse bei Sendung '" & txtSendung.Text.Trim & "' angefordert", 13)
End If
If optSpeditionWeitergeleitet.Checked = True Then
If txtSpedition.Text.Trim = "" Then
showErr(lblErrSpedition)
@@ -206,9 +282,6 @@ Public Class frmAddSendungsvermerkShort
insertSendungsVermerk(SendungID, myAviso.AvisoID, "Sendung '" & txtSendung.Text.Trim & "' in Vorbereitung.", 31)
VermerkeDAL.UpdateSendungVorbereitet(AvisoID, SendungID, VERAG_PROG_ALLGEMEIN.cGlobal.AktiverMitarbeiter.MitarbeiterID, True)
End If
If optKontaktdatenAngefordert.Checked = True Then
insertSendungsVermerk(SendungID, myAviso.AvisoID, "Kontaktdaten bei Sendung '" & txtSendung.Text.Trim & "' - angefordert", 36)
End If
' If optSendungVorbereitet.Checked = True Then
'insertSendungsVermerk(SendungID,myAviso.AvisoID, "Sendung '" & txtSendung.Text.Trim & "' Vorbereitung abgeschlossen.", 32)
' VermerkeDAL.UpdateSendungVorbereitet(AvisoID, SendungID, VERAG_PROG_ALLGEMEIN.cglobal.AktiverMitarbeiter.MitarbeiterID, False)
@@ -275,7 +348,6 @@ Public Class frmAddSendungsvermerkShort
End Sub
Sub showErr(l As Label)
lblErrDokument.Visible = False
' lblErrFach.Visible = False
lblErrGrund.Visible = False
' lblErrSendungProbleme.Visible = False
@@ -299,13 +371,11 @@ Public Class frmAddSendungsvermerkShort
' optDokumente.Checked = True
'End Sub
Private Sub cbxAuftrag_CheckedChanged(sender As Object, e As EventArgs) Handles cbxAuftrag.CheckedChanged, cbxRechnung.CheckedChanged, cbxLS.CheckedChanged,
cbxCMR.CheckedChanged, cbxATR.CheckedChanged, cbxVollmacht.CheckedChanged, cbxSonstDok.CheckedChanged, cbxNichtLeserlich.CheckedChanged, cbxPackliste.CheckedChanged
Private Sub cbxAuftrag_CheckedChanged(sender As Object, e As EventArgs)
' optDokumente.Checked = True
End Sub
Private Sub SonstChanged(sender As Object, e As EventArgs) Handles txtSonstigesDokumentFehlt.TextChanged
Private Sub SonstChanged(sender As Object, e As EventArgs)
' optDokumente.Checked = True
cbxSonstDok.Checked = (sender.text <> "")
End Sub
Private Sub txtSendungSpedition_TextChanged(sender As Object, e As EventArgs) Handles txtSendungSpedition.TextChanged, txtSpedition.TextChanged
optSpeditionWeitergeleitet.Checked = True
@@ -327,18 +397,51 @@ Public Class frmAddSendungsvermerkShort
Private Sub frmAddSendungsvermerk_Shown(sender As Object, e As EventArgs) Handles Me.Shown
Dim p = Cursor.Position
If (p.X + Me.Width) > My.Computer.Screen.WorkingArea.Width Then p.X = My.Computer.Screen.WorkingArea.Width - Me.Width
If (p.Y + Me.Height) > My.Computer.Screen.WorkingArea.Height Then p.Y = My.Computer.Screen.WorkingArea.Height - Me.Height
Me.Location = p '.Me.PointToClient(System.Cursor.Position)
txtSendung.SelectionLength = 0
cbxAuftrag.Focus()
txtFreierText.Focus()
End Sub
Private drag As Boolean
Private mouseX As Integer
Private mouseY As Integer
Private Sub Form_MouseDown(sender As Object, e As MouseEventArgs) Handles lblDragIndicator.MouseDown
If e.Button = MouseButtons.Left Then
drag = True
mouseX = Cursor.Position.X - Me.Left
mouseY = Cursor.Position.Y - Me.Top
End If
End Sub
Private Sub Form_MouseMove(sender As Object, e As MouseEventArgs) Handles lblDragIndicator.MouseMove
If drag Then
Me.Top = Cursor.Position.Y - mouseY
Me.Left = Cursor.Position.X - mouseX
End If
End Sub
Private Sub Form_MouseUp(sender As Object, e As MouseEventArgs) Handles lblDragIndicator.MouseUp
drag = False
End Sub
' ----------------------
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btnCLose.Click
Me.Close()
End Sub
Private Sub btnDokumtanforderung_Click(sender As Object, e As EventArgs) Handles btnDokumtanforderung.Click
Dim resolvedAvisoId As Integer = AvisoID
If resolvedAvisoId <= 0 AndAlso myAviso IsNot Nothing AndAlso IsNumeric(myAviso.AvisoID) Then
resolvedAvisoId = CInt(myAviso.AvisoID)
End If
Dim resolvedSendungId As Integer = SendungID
Using frm As New frmSendungsDokumentanforderung(resolvedAvisoId, resolvedSendungId, Nothing)
If frm.ShowDialog(Me) = DialogResult.OK Then
frmHauptfenster.avisoAktualisierenAktiveIdBehalten(myAviso.AvisoID)
Me.Close()
End If
End Using
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs)
If insertVermerke() Then
VERAG_PROG_ALLGEMEIN.cAvisoBenachrichtigungen.INSERT_BENACHRICHTIGUNG(myAviso.AvisoID, SendungID, 1, "T", 13, , 1)