2021-12-09 11:00:04 +01:00

350 lines
17 KiB
VB.net

Public Class frmAbschluss
Dim Mandant As String
Dim Mandant_ID As Integer
Private Sub frmAbschluss_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Try
Me.VWAbschlussTableAdapter.Connection.ConnectionString = My.Settings.ConfigConnectionString
Me.TBKOMMCOLLI_MANDANTTableAdapter.Connection.ConnectionString = My.Settings.ConfigConnectionString
Me.TBKOMMCOLLI_PAKET_KOPFTableAdapter.Connection.ConnectionString = My.Settings.ConfigConnectionString
Me.TBKOMMCOLLI_PAKET_POSTableAdapter.Connection.ConnectionString = My.Settings.ConfigConnectionString
Me.TBKOMMCOLLI_PAKET_POS_LSTableAdapter.Connection.ConnectionString = My.Settings.ConfigConnectionString
'TODO: Diese Codezeile lädt Daten in die Tabelle "MyDataset.VWKOMMCOLLI_UEBERSICHT". Sie können sie bei Bedarf verschieben oder entfernen.
Me.VWKOMMCOLLI_UEBERSICHTTableAdapter.Connection.ConnectionString = My.Settings.ConfigConnectionString
Me.VWKOMMCOLLI_UEBERSICHTTableAdapter.Fill(Me.MyDataset.VWKOMMCOLLI_UEBERSICHT)
Me.VKKOPFTableAdapter.Connection.ConnectionString = My.Settings.ConfigConnStringMercator
Me.TBKOMMCOLLI_MANDANTTableAdapter.Fill(MyDataset.TBKOMMCOLLI_MANDANT)
LoadProfilesInCombobox()
Catch ex As Exception
MsgBox("Fehler bei Load: " & vbNewLine & ex.Message, MsgBoxStyle.Exclamation)
End Try
End Sub
Private Sub LoadProfilesInCombobox()
Try
Me.cmbMandant.Items.Clear()
For Each row As DataRow In MyDataset.TBKOMMCOLLI_MANDANT
cmbMandant.Items.Add(row.Item("KURZNAME"))
Next
If My.Settings.Default_Mandant <> String.Empty Then
cmbMandant.SelectedIndex = cmbMandant.FindStringExact(My.Settings.Default_Mandant)
Else
cmbMandant.SelectedIndex = -1
End If
Catch ex As Exception
MsgBox("Fehler beim Laden der Mandanten in die Auswahlliste" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
Private Function AbschlussPaket(Mandant_ID As Integer, Speicherort As String)
Try
'Schreibt Daten aus View_Export in Datei!!!
Dim Save_Datei As String = Speicherort & "/" & Date.Now.ToShortDateString & "_exp.ar" '"E:\" & Date.Now.ToShortDateString & "_exp.ar" '
Dim Version As Integer = 0
Do While IO.File.Exists(Save_Datei)
Version += 1
Save_Datei = Speicherort & "/" & Date.Now.ToShortDateString & "_exp~" & Version & ".ar"
Loop
'Setzt das Code-Format auf ASCII
Dim streamwriter As New System.IO.StreamWriter(Save_Datei, False, System.Text.Encoding.Default)
Dim anz As Integer = 0
Dim PAKET_ID As String
'Jedes Paket durchlaufen
For Each dbRow As DataRow In MyDataset.VWKOMMCOLLI_ABSCHLUSS_PAKET.Rows
If CBool(dbRow.Item("Auswahl")) = True Then
PAKET_ID = dbRow.Item("PAKET_ID").ToString
If Verarbeite_Paket(streamwriter, dbRow.Item("GUID"), PAKET_ID, dbRow.Item("TERMIN_KZ").ToString, dbRow.Item("ANZ_PACKSTUECK").ToString, dbRow.Item("GESAMTGEWICHT").ToString) = True Then
anz += 1
VWAbschlussTableAdapter.cmdAbschluss(Save_Datei, dbRow.Item("GUID"))
End If
End If
Next
streamwriter.Flush()
streamwriter.Close()
MsgBox("Es wurden " & anz.ToString & " Pakete erfolgreich abgeschlossen")
Catch ex As Exception
MsgBox("Fehler bei AbschlussPaket: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
'
End Function
Function Verarbeite_Paket(sw As System.IO.StreamWriter, PAKET_GUID As Integer, PAKET_ID As String, Terminart As String, AnzPaket As Integer, GewichtGESAMT As String)
Try
Dim Paketschluessel As String = PAKET_ID
Dim LieferscheinString As String
'Das Gewicht "berechnen", hierzu wird das hitnerlegte Gewicht durch die Anzahl der Paakete geteilt
GewichtGESAMT = GewichtGESAMT / AnzPaket
If CDbl(GewichtGESAMT) > 40.0 Then
MsgBox("Achtung: Das Gewicht des Pakets '" & PAKET_ID & "' überschreitet das Maximalgewicht von 40 kg!" & vbNewLine & "Bitte verständigen Sie Ihren Systembetreuuer", MsgBoxStyle.Critical, "Fehler")
Return False
End If
Me.TBKOMMCOLLI_PAKET_POS_LSTableAdapter.Fill(Me.MyDataset.TBKOMMCOLLI_PAKET_POS_LS, PAKET_GUID)
'Lieferschein-String laden
Dim DTLS As DataTable = MyDataset.TBKOMMCOLLI_PAKET_POS_LS
Dim a As Integer = 0
Dim tempLS As String = ""
If DTLS.Rows.Count > 0 Then
For Each row As DataRow In DTLS.Rows
If a = 0 Then
tempLS = row.Item(0)
Else
tempLS = tempLS & "," & row.Item(0)
End If
a += 1
Next
Else
tempLS = ""
End If
LieferscheinString = tempLS
If GewichtGESAMT.Contains(".") Then
GewichtGESAMT = GewichtGESAMT.Replace(".", ",")
End If
If GewichtGESAMT.Contains(",") = False Then
GewichtGESAMT = GewichtGESAMT & ",0"
Else
If GewichtGESAMT.Contains(",00") = True Then
GewichtGESAMT = GewichtGESAMT.Replace(",00", ",0")
End If
End If
For i As Integer = 1 To AnzPaket
PAKET_ID = Paketschluessel & "." & i.ToString
'Den Builder für die Zeile definieren
Dim ZeilenBuilder As System.Text.StringBuilder
Dim DT As DataTable = MyDataset.TBKOMMCOLLI_PAKET_POS
ZeilenBuilder = New System.Text.StringBuilder
ZeilenBuilder.Append(PAKET_ID.PadRight(25))
ZeilenBuilder.Append(";")
Dim Name1, Name2, Name3, Strasse, PLZ, Ort, LAND As String
Dim exists As Integer = TBKOMMCOLLI_PAKET_KOPFTableAdapter.cmdAllVerweiseExists(PAKET_GUID)
'Für die Bestellnummer konnten Zeilen gefunden werden
If exists > 0 Then
Name1 = TBKOMMCOLLI_PAKET_KOPFTableAdapter.cmdAllVerweiseFirma1(PAKET_GUID)
Name2 = TBKOMMCOLLI_PAKET_KOPFTableAdapter.cmdAllVerweiseFirma2(PAKET_GUID)
Name3 = TBKOMMCOLLI_PAKET_KOPFTableAdapter.cmdAllVerweiseFirma3(PAKET_GUID)
Strasse = TBKOMMCOLLI_PAKET_KOPFTableAdapter.cmdAllVerweiseStrasse(PAKET_GUID)
PLZ = TBKOMMCOLLI_PAKET_KOPFTableAdapter.cmdAllVerweisePLZ(PAKET_GUID)
Ort = TBKOMMCOLLI_PAKET_KOPFTableAdapter.cmdAllVerweiseOrt(PAKET_GUID)
LAND = TBKOMMCOLLI_PAKET_KOPFTableAdapter.cmdAllVerweiseLAND(PAKET_GUID)
'Gewicht = TBKOMMCOLLI_PAKET_KOPFTableAdapter.cmdAllVerweiseGewicht(PAKET_GUID)
Else
Name1 = TBKOMMCOLLI_PAKET_KOPFTableAdapter.cmdBestellNrFirma1(PAKET_GUID)
Name2 = TBKOMMCOLLI_PAKET_KOPFTableAdapter.cmdBestellNrFirma2(PAKET_GUID)
Name3 = TBKOMMCOLLI_PAKET_KOPFTableAdapter.cmdBestellNrFirma3(PAKET_GUID)
Strasse = TBKOMMCOLLI_PAKET_KOPFTableAdapter.cmdBEstellNrStrasse(PAKET_GUID)
PLZ = TBKOMMCOLLI_PAKET_KOPFTableAdapter.cmdBestellNrPLZ(PAKET_GUID)
Ort = TBKOMMCOLLI_PAKET_KOPFTableAdapter.cmdBestellNrOrt(PAKET_GUID)
LAND = TBKOMMCOLLI_PAKET_KOPFTableAdapter.cmdBestellNrLand(PAKET_GUID)
' Gewicht = TBKOMMCOLLI_PAKET_KOPFTableAdapter.cmdBestellNrGewicht(PAKET_GUID)
End If
If Name1 <> String.Empty Then
ZeilenBuilder.Append(Name1.PadRight(30))
ZeilenBuilder.Append(";")
ZeilenBuilder.Append(Name2.PadRight(30))
ZeilenBuilder.Append(";")
ZeilenBuilder.Append(Name3.PadRight(30))
ZeilenBuilder.Append(";")
ZeilenBuilder.Append(Strasse.PadRight(30))
ZeilenBuilder.Append(";")
ZeilenBuilder.Append(PLZ.PadRight(10))
ZeilenBuilder.Append(";")
ZeilenBuilder.Append(Ort.PadRight(30))
ZeilenBuilder.Append(";")
ZeilenBuilder.Append(Paketschluessel.PadRight(30))
ZeilenBuilder.Append(";")
ZeilenBuilder.Append(LAND.PadRight(3))
ZeilenBuilder.Append(";")
ZeilenBuilder.Append(GewichtGESAMT.PadRight(6))
ZeilenBuilder.Append(";")
Else
MsgBox("Fehler beim Abschluss des Pakets '" & PAKET_ID & "#" & PAKET_GUID & "'!" & vbNewLine & "Kein eindeutiger Datensatz zu VKOPF_BESTELLNR Und VKOPF_EINGANSNR gefunden oder Adresse ist leer (Mercator Tabelle fehlerhaft)." &
vbNewLine & "Bitte verständigen Sie Ihren Systembetreuuer", MsgBoxStyle.Critical, "Fehler")
Return False
End If
ZeilenBuilder.Append(Terminart.PadRight(3))
ZeilenBuilder.Append(";")
ZeilenBuilder.Append(LieferscheinString)
ZeilenBuilder.Append(";")
'ZeilenBuilder.Append(AnzPaket.ToString.PadRight(3))
'ZeilenBuilder.Append(";")
sw.WriteLine(ZeilenBuilder.ToString)
Next
Return True
Catch ex As Exception
MsgBox("Fehler bei Verarbeite_Paket: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
End Function
Private Sub tsbtcheck_all_Click(sender As System.Object, e As System.EventArgs) Handles tsbtcheck_all.Click
If cmbMandant.Text = "GLS" Then
Dim DT As DataTable = MyDataset.VWKOMMCOLLI_ABSCHLUSS_PAKET
For Each DR As DataRow In DT.Rows
DR.Item("Auswahl") = True
Next
Else
Dim DT As DataTable = MyDataset.VWKOMMCOLLI_UEBERSICHT
For Each DR As DataRow In DT.Rows
DR.Item("SELECTED") = True
Next
End If
End Sub
Private Sub tsbtde_check_all_Click(sender As System.Object, e As System.EventArgs) Handles tsbtde_check_all.Click
If cmbMandant.Text = "GLS" Then
Dim DT As DataTable = MyDataset.VWKOMMCOLLI_ABSCHLUSS_PAKET
For Each DR As DataRow In DT.Rows
DR.Item("Auswahl") = False
Next
Else
Dim DT As DataTable = MyDataset.VWKOMMCOLLI_UEBERSICHT
For Each DR As DataRow In DT.Rows
DR.Item("SELECTED") = False
Next
End If
End Sub
Sub Load_Pakete(vMandant As String)
Try
Mandant = vMandant
Me.VWAbschlussTableAdapter.Fill(Me.MyDataset.VWKOMMCOLLI_ABSCHLUSS_PAKET, Mandant)
Catch ex As Exception
MsgBox("Fehler bei Load_Pakete: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
Private Sub btnAbschluss_Click(sender As System.Object, e As System.EventArgs) Handles btnAbschluss.Click
Me.Validate()
VWAbschlussBindingSource.EndEdit()
' Fragen ob das Profil wirklich gelöscht werden soll
Dim result As DialogResult = MessageBox.Show("Dies wird die Sendungsdaten exportieren und verschicken." & vbNewLine & vbNewLine & "DIES KANN NICHT RÜCKGÄNGIG GEMACHT WERDEN!" & vbNewLine & vbNewLine & "Sind Sie sicher dass Sie den Tageschluss durchführen wollen?", "Tagesabschluss", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2)
' wenn das Profil gelöscht werden soll
If result = MsgBoxResult.Yes Then
If cmbMandant.Text = "GLS" Then
Dim Speicherort As String
Mandant_ID = 0
Mandant_ID = TBKOMMCOLLI_MANDANTTableAdapter.cmdGetGUIDbyKurzname(Mandant)
Speicherort = TBKOMMCOLLI_MANDANTTableAdapter.cmdgetSpeicherort(Mandant_ID)
If Speicherort IsNot Nothing Then
AbschlussPaket(Mandant_ID, Speicherort)
Else
MsgBox("Achtung: Ein Mandant konnte nicht bestimmt werden!", MsgBoxStyle.Exclamation)
End If
Load_Pakete(Mandant)
ElseIf cmbMandant.Text = "HuP" Then
bw_Tagesabschluss.RunWorkerAsync()
End If
End If
End Sub
Private Sub btndelete_Click(sender As System.Object, e As System.EventArgs) Handles btndelete.Click
Me.Validate()
' Fragen ob das Profil wirklich gelöscht werden soll
Dim result As MsgBoxResult = MsgBox("Sind Sie sicher, dass sie die ausgewählten Einheiten löschen wollen?", MsgBoxStyle.YesNo, "Löschen bestätigen")
' wenn das Profil gelöscht werden soll
If result = MsgBoxResult.Yes Then
If cmbMandant.Text = "GLS" Then
VWAbschlussBindingSource.EndEdit()
For Each dbRow As DataRow In MyDataset.VWKOMMCOLLI_ABSCHLUSS_PAKET.Rows
If CBool(dbRow.Item("Auswahl")) = True Then
'Positionen löschen
TBKOMMCOLLI_PAKET_POSTableAdapter.cmdDeletePos(dbRow.Item("GUID"))
'Kopf löschen
TBKOMMCOLLI_PAKET_KOPFTableAdapter.CmdDeleteGUID(dbRow.Item("GUID"))
End If
Next
Load_Pakete(Mandant)
ElseIf cmbMandant.Text = "HuP" Then
'Sendung löschen bei HuP
VWKOMMCOLLI_UEBERSICHTBindingSource.EndEdit()
For Each row As DataGridViewRow In VWKOMMCOLLI_UEBERSICHTDataGridView.Rows
If row.Cells("SELECTED").Value = True Then
Dim cmd = String.Format("EXECUTE PRKOMMCOLLI_SDG_LOESCHEN {0}", row.Cells("GUID").Value)
ClassDatabase.Execute_non_Query(cmd, True)
End If
Next
Load_Sendungen()
End If
End If
End Sub
Sub Refresh_Grid()
VWAbschlussDataGridView.Visible = False
VWAbschlussDataGridView.Dock = DockStyle.None
VWKOMMCOLLI_UEBERSICHTDataGridView.Visible = False
btndelete.Enabled = False
If cmbMandant.SelectedIndex <> -1 Then
Select Case cmbMandant.SelectedIndex
Case 0
Load_Sendungen()
VWKOMMCOLLI_UEBERSICHTDataGridView.Dock = DockStyle.Fill
VWKOMMCOLLI_UEBERSICHTDataGridView.Visible = True
btndelete.Text = "Sendung(en)" & vbNewLine & "löschen"
btndelete.Enabled = True
Case 1
VWAbschlussDataGridView.Visible = True
VWAbschlussDataGridView.Dock = DockStyle.Fill
Load_Pakete(cmbMandant.Text)
btndelete.Enabled = True
btndelete.Text = "Paket(e)" & vbNewLine & "löschen"
End Select
btnAbschluss.Text = "Mandanten '" & cmbMandant.Text & "' abschliessen"
End If
End Sub
Private Sub cmbMandant_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles cmbMandant.SelectedIndexChanged
Refresh_Grid()
End Sub
Private Sub bw_Tagesabschluss_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles bw_Tagesabschluss.DoWork
Dim Result As Boolean = True
Result = ClassDatabase.Execute_non_Query("EXEC PRKOMMCOLLI_BORDERO_EXPORTIEREN", False)
e.Result = Result
End Sub
Private Sub bw_Tagesabschluss_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles bw_Tagesabschluss.RunWorkerCompleted
If e.Result = True Then
MsgBox("Abschluss erfolgreich ausgeführt.", MsgBoxStyle.Information, "Tagesabschluss")
Load_Sendungen()
Else
MsgBox("Fehler bei Abschluss, bitte Log prüfen.")
End If
End Sub
Private Sub Load_Sendungen()
Try
VWKOMMCOLLI_UEBERSICHTTableAdapter.Connection.ConnectionString = My.Settings.ConfigConnectionString
VWKOMMCOLLI_UEBERSICHTTableAdapter.Fill(MyDataset.VWKOMMCOLLI_UEBERSICHT)
Catch ex As System.Exception
MsgBox("Fehler bei Load_Sendungen: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
Private Sub frmAbschluss_Shown(sender As Object, e As EventArgs) Handles Me.Shown
Refresh_Grid()
End Sub
End Class