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