454 lines
17 KiB
VB.net
454 lines
17 KiB
VB.net
|
|
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
|
|
Dim ADMIN As New cADMIN
|
|
Dim myAviso As New cAviso
|
|
Dim VermerkeDAL As New cVermerkeDAL
|
|
Dim aktChanged As Boolean = False
|
|
|
|
Dim Neuanlage As Boolean = False
|
|
Dim hStatus As Integer
|
|
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
|
|
|
|
Public Sub New()
|
|
InitializeComponent()
|
|
Icon = cMeineFunktionenAVISO.GetProgrammIcon
|
|
End Sub
|
|
|
|
Public Sub New(AvisoID, SendungID)
|
|
InitializeComponent()
|
|
Me.AvisoID = AvisoID
|
|
Me.SendungID = SendungID
|
|
Icon = cMeineFunktionenAVISO.GetProgrammIcon
|
|
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
|
|
If e.KeyCode = Keys.Escape Then
|
|
' btnAbbruch.PerformClick()
|
|
Me.Close()
|
|
End If
|
|
|
|
If e.KeyCode = Keys.Return Then
|
|
btnOK.PerformClick()
|
|
End If
|
|
|
|
|
|
End Sub
|
|
|
|
Dim listentoCheckChange As Boolean = True
|
|
Sub selectionChanged(sender As Object, e As EventArgs)
|
|
If listentoCheckChange Then
|
|
listentoCheckChange = False
|
|
For Each c In Me.Controls
|
|
If c.GetType.Name.ToString = "RadioButton" Then
|
|
' DirectCast(c, RadioButton).Checked = False
|
|
End If
|
|
Next
|
|
' DirectCast(sender, RadioButton).Checked = True
|
|
listentoCheckChange = True
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub frmEintragVermerk_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
|
|
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
|
|
End If
|
|
Next
|
|
myAviso = AvisoDAL.LesenAviso(AvisoID, "")
|
|
|
|
If SendungID > 0 Then
|
|
txtSendung.Text = ADMIN.getValueTxtBySql(" SELECT convert(varchar(2),[tblSnd_PosUnterNr]) +' - ' +isnull([tblSnd_Empfaenger],'') FROM tblSendungen WHERE [tblSnd_SendungID]=" & SendungID & "", "AVISO")
|
|
Else
|
|
txtSendung.Text = "KOMPLETT"
|
|
End If
|
|
|
|
hStatus = myAviso.Status
|
|
If hStatus = cGlobal.Status_Vorbereitet Or hStatus = cGlobal.Status_Vorgeschrieben Or hStatus = cGlobal.Status_Erfasst Then
|
|
optSendungInVorbereitung.Visible = True
|
|
|
|
If hStatus = cGlobal.Status_Vorgeschrieben Then
|
|
optSendungInVorbereitung.Visible = False
|
|
End If
|
|
Else
|
|
optSendungInVorbereitung.Visible = False
|
|
End If
|
|
|
|
SetupDynamicAnforderungCheckboxes()
|
|
|
|
'bereits vorhandene Vermerke laden
|
|
'txtInfo.Text = VermerkeDAL.Vermerke_einlesen(myAviso.AvisoID)
|
|
Me.Text = "AKT " & myAviso.LKW_Nr & ""
|
|
' optKeineAuswahl.Checked = True
|
|
' optDokumente.Focus()
|
|
|
|
|
|
If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("WARENORT", "AVISO") Then
|
|
For Each c As Control In Me.Controls
|
|
Dim enabledTmp = False
|
|
If c Is btnCLose Then enabledTmp = True
|
|
If c Is optFremd_SendungAvisiert Then enabledTmp = True
|
|
If c Is optFremd_ATB Then enabledTmp = True
|
|
If c Is optATAangefordert Then enabledTmp = True
|
|
If c Is txtDetail Then enabledTmp = True
|
|
If c Is btnOK Then enabledTmp = True
|
|
c.Enabled = enabledTmp
|
|
Next
|
|
End If
|
|
|
|
End Sub
|
|
|
|
|
|
' Private Sub btnAbbruch_Click(sender As System.Object, e As System.EventArgs) Handles btnAbbruch.Click
|
|
' 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
|
|
|
|
|
|
Private Sub btnOK_Click(sender As System.Object, e As System.EventArgs) Handles btnOK.Click
|
|
|
|
If insertVermerke() Then
|
|
|
|
'Jetzt wird Fenster geschlossen
|
|
frmHauptfenster.avisoAktualisierenAktiveIdBehalten(myAviso.AvisoID)
|
|
Me.Close()
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Function insertVermerke() As Boolean
|
|
|
|
If txtDetail.Text <> "" Then
|
|
If txtDetail.Text.Length > 240 Then
|
|
showErr(lblErr240Zeichen)
|
|
txtDetail.Focus()
|
|
Return False
|
|
End If
|
|
End If
|
|
|
|
'Plausibilität prüfen
|
|
If optFreierText.Checked Then
|
|
If txtFreierText.Text.Trim = "" Then
|
|
showErr(lblErrGrund)
|
|
txtFreierText.Focus()
|
|
Return False
|
|
End If
|
|
insertSendungsVermerk(SendungID, myAviso.AvisoID, txtFreierText.Text.Trim & " - offen", 101)
|
|
End If
|
|
|
|
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()
|
|
|
|
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 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 optSpeditionWeitergeleitet.Checked = True Then
|
|
If txtSpedition.Text.Trim = "" Then
|
|
showErr(lblErrSpedition)
|
|
txtSpedition.Focus()
|
|
Return False
|
|
End If
|
|
insertSendungsVermerk(SendungID, myAviso.AvisoID, "Fahrer muss die Sendung bei '" & txtSpedition.Text.Trim & "' abfertigen - weitergeleitet", 28)
|
|
End If
|
|
If optSendungInVorbereitung.Checked = True Then
|
|
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 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)
|
|
'End If
|
|
If optATAangefordert.Checked = True Then
|
|
|
|
insertSendungsVermerk(SendungID, myAviso.AvisoID, "ATA/ATC-Nr. bei Sendung " & txtSendung.Text.Trim & " - angefordert", 33)
|
|
|
|
' ElseIf optATAerhalten.Checked = True Then
|
|
' If txtSendung.Text.Trim = "" Then
|
|
'showErr(lblErrSendungProbleme)
|
|
' txtSendung.Focus()
|
|
' Return False
|
|
' End If
|
|
'insertSendungsVermerk(SendungID,myAviso.AvisoID,"ATA-Nr. bei Sendung " & txtSendung.Text.Trim & " erhalten", 34)
|
|
|
|
End If
|
|
'If cbxDispoliste.Checked = True Then insertSendungsVermerk(SendungID, myAviso.AvisoID, "Dispoliste bei " & txtSendung.Text.Trim & " angefordert", 57)
|
|
|
|
|
|
'If optFach.Checked = True Then
|
|
' If txtFach.Text.Trim = "" Then
|
|
' showErr(lblErrFach)
|
|
' txtFach.Focus()
|
|
' Return False
|
|
' End If
|
|
' insertSendungsVermerk(SendungID,myAviso.AvisoID, "Akt liegt im Fach '" & txtFach.Text.Trim & "'", 35)
|
|
|
|
'End If
|
|
|
|
If txtDetail.Text <> "" Then
|
|
If txtDetail.Text.Length <= 80 Then
|
|
insertSendungsVermerk(SendungID, myAviso.AvisoID, txtDetail.Text, 46)
|
|
ElseIf txtDetail.Text.Length <= 160 Then
|
|
insertSendungsVermerk(SendungID, myAviso.AvisoID, txtDetail.Text.Substring(0, 80), 46)
|
|
insertSendungsVermerk(SendungID, myAviso.AvisoID, txtDetail.Text.Substring(80, 80), 46)
|
|
ElseIf txtDetail.Text.Length <= 240 Then
|
|
insertSendungsVermerk(SendungID, myAviso.AvisoID, txtDetail.Text.Substring(0, 80), 46)
|
|
insertSendungsVermerk(SendungID, myAviso.AvisoID, txtDetail.Text.Substring(80, 80), 46)
|
|
insertSendungsVermerk(SendungID, myAviso.AvisoID, txtDetail.Text.Substring(160, 80), 46)
|
|
End If
|
|
End If
|
|
Return True
|
|
End Function
|
|
|
|
Sub insertVermerk(Text As String, VermerkCodeId As Integer, Optional Beschreibung As String = "")
|
|
'Daten zuweisen und speichern
|
|
Dim myVermerk As New cVermerk
|
|
myVermerk.VermerkID = 0
|
|
myVermerk.AvisoID = myAviso.AvisoID
|
|
myVermerk.Datum = Now
|
|
myVermerk.Mitarbeiter = cGlobal.AktiverMitarbeiter.Mitarbeiter
|
|
myVermerk.MitarbeiterId = cGlobal.AktiverMitarbeiter.MitarbeiterID
|
|
myVermerk.Hinweis_Vermerk = Text
|
|
myVermerk.VermerkCodeId = VermerkCodeId
|
|
myVermerk.VermerkArt = "A"
|
|
|
|
VermerkeDAL.SpeichernVermerk(myVermerk)
|
|
|
|
If myVermerk.VermerkCodeId = 18 Then
|
|
VermerkeDAL.UpdateLKW(myVermerk.AvisoID, False)
|
|
frmHauptfenster.avisoAktualisierenAktiveIdBehalten(myVermerk.AvisoID)
|
|
End If
|
|
End Sub
|
|
|
|
Sub showErr(l As Label)
|
|
' lblErrFach.Visible = False
|
|
lblErrGrund.Visible = False
|
|
' lblErrSendungProbleme.Visible = False
|
|
' lblErrSendungSpedition.Visible = False
|
|
'lblErrSendungVorbereitung.Visible = False
|
|
lblErrSpedition.Visible = False
|
|
l.Visible = True
|
|
End Sub
|
|
|
|
|
|
|
|
Private Sub txtFreierText_TextChanged(sender As Object, e As EventArgs) Handles txtFreierText.TextChanged
|
|
If txtFreierText.Text <> "" Then
|
|
optFreierText.Checked = True
|
|
End If
|
|
End Sub
|
|
|
|
' Private Sub cboDokumente_SelectedIndexChanged(sender As Object, e As EventArgs)
|
|
' cboDokumente.SelectedIndex = CInt(Not cboDokumente.SelectedIndex = 0) + 1
|
|
' cbxAuftrag.Focus()
|
|
' optDokumente.Checked = True
|
|
'End Sub
|
|
|
|
Private Sub cbxAuftrag_CheckedChanged(sender As Object, e As EventArgs)
|
|
' optDokumente.Checked = True
|
|
End Sub
|
|
Private Sub SonstChanged(sender As Object, e As EventArgs)
|
|
' optDokumente.Checked = True
|
|
End Sub
|
|
Private Sub txtSendungSpedition_TextChanged(sender As Object, e As EventArgs) Handles txtSendungSpedition.TextChanged, txtSpedition.TextChanged
|
|
optSpeditionWeitergeleitet.Checked = True
|
|
End Sub
|
|
|
|
' Private Sub txtFach_TextChanged(sender As Object, e As EventArgs)
|
|
' optFach.Checked = True
|
|
' End Sub
|
|
|
|
|
|
Private Sub txtDetail_TextChanged(sender As Object, e As EventArgs) Handles txtDetail.TextChanged
|
|
If txtDetail.Text.Length = 240 Then
|
|
showErr(lblErr240Zeichen)
|
|
End If
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
|
|
Private Sub frmAddSendungsvermerk_Shown(sender As Object, e As EventArgs) Handles Me.Shown
|
|
txtSendung.SelectionLength = 0
|
|
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)
|
|
insertSendungsVermerk(SendungID, myAviso.AvisoID, "In die Neukunden-Abteilung gegeben.", 46)
|
|
frmHauptfenster.avisoAktualisierenAktiveIdBehalten(myAviso.AvisoID)
|
|
Me.Close()
|
|
End If
|
|
End Sub
|
|
End Class
|