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 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 & "'!" & vbNewLine & "Kein eindeutiger Datensatz zu VKOPF_BESTELLNR Und VKOPF_EINGANSNR gefunden." & _ 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 Dim DT As DataTable = MyDataset.VWKOMMCOLLI_ABSCHLUSS_PAKET For Each DR As DataRow In DT.Rows DR.Item("Auswahl") = True Next End Sub Private Sub tsbtde_check_all_Click(sender As System.Object, e As System.EventArgs) Handles tsbtde_check_all.Click Dim DT As DataTable = MyDataset.VWKOMMCOLLI_ABSCHLUSS_PAKET For Each DR As DataRow In DT.Rows DR.Item("Auswahl") = False Next 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() VWAbschlussBindingSource.EndEdit() ' Fragen ob das Profil wirklich gelöscht werden soll Dim result As MsgBoxResult = MsgBox("Sind Sie sicher, dass sie die ausgewählten Pakete 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 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 'TODO: Sendung löschen bei HuP End If End If End Sub Private Sub cmbMandant_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles cmbMandant.SelectedIndexChanged If cmbMandant.SelectedIndex <> -1 Then Load_Pakete(cmbMandant.Text) btnAbschluss.Text = "Mandanten '" & cmbMandant.Text & "' abschliessen" btnAbschluss.Enabled = True btndelete.Enabled = True End If 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") Else MsgBox("Fehler bei Abschluss, bitte Log prüfen.") End If End Sub End Class