Index: TAOR rework/TAOR rework/formulieren/FormGrid.vb =================================================================== diff -u -r1879 -r2418 --- TAOR rework/TAOR rework/formulieren/FormGrid.vb (.../FormGrid.vb) (revision 1879) +++ TAOR rework/TAOR rework/formulieren/FormGrid.vb (.../FormGrid.vb) (revision 2418) @@ -1,5 +1,4 @@ ' robin de bock 10/08/2017 -Imports System.Data.Odbc Imports TA_OR_rework.Domeincontroller Public Class FormGrid @@ -528,7 +527,11 @@ FormController.getInstance.laadFormSelectID(Me) Else 'Zijkant reworks - FormController.getInstance.laadFormReworkTrayPrinter(Me) + Dim printerService = New ReworkTrayPrinterService() + printerService.VerwerkReworks() + printerService.KuisDataOp() + + FormController.getInstance.laadVorige(Me) End If Catch ex As Exception MessageBox.Show(ex.Message, "Er is een fout opgetreden...", MessageBoxButtons.OK, MessageBoxIcon.Error) Index: TAOR rework/TAOR rework/Rework/ReworkTrayPrinterService.vb =================================================================== diff -u --- TAOR rework/TAOR rework/Rework/ReworkTrayPrinterService.vb (revision 0) +++ TAOR rework/TAOR rework/Rework/ReworkTrayPrinterService.vb (revision 2418) @@ -0,0 +1,214 @@ +Imports System.Drawing.Printing +Imports System.Text + +Public Class ReworkTrayPrinterService + Private _aantalTrays As Integer + Private _nummerTray As Integer + Private _isNieuweSifonDomein As Boolean + Private _isDubbeleSifonlade As Boolean + Private WithEvents PrintDocument As PrintDocument + + Public Sub New(Optional isNieuweSifonDomein As Boolean = False, Optional isDubbeleSifonLade As Boolean = False) + 'nummer welke special tray er getoond wordt instellen + _nummerTray = 1 + + If isNieuweSifonDomein Then + _aantalTrays = SifonLadeController.GetInstance().GeefAantalTrays() + _isNieuweSifonDomein = isNieuweSifonDomein + _isDubbeleSifonlade = isDubbeleSifonLade + Else + 'origineel aantal instellen + If Domeincontroller.getInstance.geefTypeInReworkTray = ItemType.Rework Then + _aantalTrays = Domeincontroller.getInstance.geefAantalReworkTrays + Else + _aantalTrays = Domeincontroller.getInstance.geefSpecialAantalReworkTrays + End If + End If + + ' Set printer (default, or let user choose if default printer isn't available) + Try + Me.PrintDocument = New PrintDocument() + Dim availablePrinters As New List(Of String) + For Each printer As String In PrinterSettings.InstalledPrinters + availablePrinters.Add(printer) + Next + + Dim defaultPrinter As String = PrintDocument.PrinterSettings.PrinterName + Dim message As String + + If Not availablePrinters.Contains(defaultPrinter) Then + MessageBox.Show("De ingestelde printer '" & defaultPrinter & "' is niet gevonden." & vbCrLf & "Selecteer de printer om op af te drukken.", + "Selecteer printer", MessageBoxButtons.OK, MessageBoxIcon.Information) + + Dim dlg As New PrintDialog() + dlg.Document = PrintDocument + If dlg.ShowDialog() = DialogResult.OK Then + PrintDocument.PrinterSettings = dlg.PrinterSettings + message = "Printer geselecteerd door de gebruiker: '" & PrintDocument.PrinterSettings.PrinterName & "'." + LogBestandTextMapper.WriteToFile("Printer", message, False) + Else + ' User cancelled dialog + message = "Printopdracht geannuleerd door de gebruiker: geen printer geselecteerd." + LogBestandTextMapper.WriteToFile("Printer", message, False) + MessageBox.Show("Geen printer geselecteerd, rework gaat niet door.", "Geannuleerd", MessageBoxButtons.OK, MessageBoxIcon.Warning) + Return + End If + End If + Catch ex As Exception + MessageBox.Show(ex.Message, "Er is een fout opgetreden...", MessageBoxButtons.OK, MessageBoxIcon.Error) + End Try + End Sub + + Public Sub VerwerkReworks() + Try + 'als er geen reworks meer zijn wordt er bij het drukken op de knop naar formGrid gegaan + If _aantalTrays > 0 Then + verwerkDeItems() + + If Configs.geefVerwerkStatus Then + Try + opslaanBacklog() + Catch ex As Exception + MessageBox.Show("Backlog kon niet worden opgeslagen" & vbNewLine & ex.Message, "Opgepast!", MessageBoxButtons.OK, MessageBoxIcon.Warning) + End Try + 'printen van document met default printer van de pc + 'alle trays overlopen + For _nummerTray = 1 To _aantalTrays + LogBestandTextMapper.WriteToFile("Printer", "Printopdracht wordt gestuurd naar printer '" & PrintDocument.PrinterSettings.PrinterName & "'.", False) + PrintDocument.Print() + LogBestandTextMapper.WriteToFile("Printer", "Printopdracht voltooid.", True) + Next + End If + Else + KuisDataOp() + End If + Catch ex As Exception + MessageBox.Show(ex.Message, "Er is een fout opgetreden...", MessageBoxButtons.OK, MessageBoxIcon.Error) + End Try + End Sub + + Private Sub verwerkDeItems() 'verwerken, onderscheid tussen reworks en special laden + If _isNieuweSifonDomein Then + If _isDubbeleSifonlade Then + SifonLadeController.GetInstance().ProduceerDubbeleSifonladen() + Else + SifonLadeController.GetInstance().ProduceerSifonladen() + End If + Else + Select Case Domeincontroller.getInstance.geefTypeInReworkTray + Case ItemType.Sifonlade, ItemType.DubbeleSifonlade, ItemType.Voorraad + Domeincontroller.getInstance.verwerkSpecialLaden() + Case ItemType.Rework + Domeincontroller.getInstance.verwerkReworks() + Case ItemType.Testlade + Domeincontroller.getInstance.verwerkTestLaden() + Case Else + Throw New Exception("Het type: " & EnumMapper.GeefTekstVanEnumOptie(Domeincontroller.getInstance.geefTypeInReworkTray) & " kon niet gebruikt worden voor te verwerken") + End Select + End If + End Sub + + Private Sub opslaanBacklog() + 'alle trays overlopen en builder opnieuw vullen + LogBestandTextMapper.WriteToFile("Backlog", "backlogdocumenten opslaan", False) + For _nummerTray = 1 To _aantalTrays + vulBuilderMetInfo() + + If _isNieuweSifonDomein Then + PrinterBacklogDocMapper.addPrinterBacklogDoc(SifonLadeController.GetInstance.GeefSpecialLadeReworkTrayNummer(_nummerTray - 1), _builder.ToString(), True) + Else + Select Case Domeincontroller.getInstance.geefTypeInReworkTray + Case ItemType.Sifonlade, ItemType.DubbeleSifonlade, ItemType.Voorraad, ItemType.Testlade + PrinterBacklogDocMapper.addPrinterBacklogDoc(Domeincontroller.getInstance.geefSpecialLadeReworkTrayNummer(_nummerTray - 1), _builder.ToString(), True) + Case ItemType.Rework + PrinterBacklogDocMapper.addPrinterBacklogDoc(Domeincontroller.getInstance.geefReworkTrayNummer(_nummerTray - 1), _builder.ToString(), False) + Case Else + Throw New Exception("Het type: " & EnumMapper.GeefTekstVanEnumOptie(Domeincontroller.getInstance.geefTypeInReworkTray) & " kon niet gebruikt worden voor opslag backlog") + End Select + End If + + Next + LogBestandTextMapper.WriteToFile("Backlog", "backlogdocumenten opslaan", True) + End Sub + + Private _builder As StringBuilder + Private Sub vulBuilderMetInfo() + Try + _builder = New StringBuilder + Dim typelade As String + Dim reworkTrayNummer As String + + If _isNieuweSifonDomein Then + typelade = "sifonlade" + reworkTrayNummer = SifonLadeController.GetInstance.GeefSpecialLadeReworkTrayNummer(_nummerTray - 1) + Else + Select Case Domeincontroller.getInstance.geefTypeInReworkTray + Case ItemType.Voorraad + typelade = "voorraad" + reworkTrayNummer = Domeincontroller.getInstance.geefSpecialLadeReworkTrayNummer(_nummerTray - 1) + Case ItemType.Testlade + typelade = "test lade" + reworkTrayNummer = Domeincontroller.getInstance.geefSpecialLadeReworkTrayNummer(_nummerTray - 1) + Case ItemType.Rework + typelade = "rework" + reworkTrayNummer = Domeincontroller.getInstance.geefReworkTrayNummer(_nummerTray - 1) + Case Else + Throw New Exception("Het type: " & EnumMapper.GeefTekstVanEnumOptie(Domeincontroller.getInstance.geefTypeInReworkTray) & " kon niet gebruikt worden voor tray printer te visualiseren") + End Select + End If + + _builder.AppendLine("Rework tray " & reworkTrayNummer & " | " & typelade) + _builder.AppendLine() + _builder.AppendLine(String.Format("{0,4}{1,13}{2,7}{3,13}{4,8}{5,8}", "Slot", "Barcode", "Batch", "Color", "Length", "Height")) + + 'elk "slot" overlopen en toevoegen als lijn + Dim lijnen As List(Of List(Of String)) + + If _isNieuweSifonDomein Then + lijnen = SifonLadeController.GetInstance.GeefSlotsSpecialReworkTray(_nummerTray - 1) + Else + If Domeincontroller.getInstance.geefTypeInReworkTray = ItemType.Rework Then + lijnen = Domeincontroller.getInstance.geefSlotsReworkTray(_nummerTray - 1) + Else + lijnen = Domeincontroller.getInstance.geefSlotsSpecialReworkTray(_nummerTray - 1) + End If + End If + + For Each lijn As List(Of String) In lijnen + _builder.AppendLine(String.Format("{0,4}{1,13}{2,7}{3,13}{4,8}{5,8}", lijn(0), lijn(1), lijn(2), lijn(3), lijn(4), lijn(5))) + Next + Catch ex As Exception + Throw New Exception("Kon builder niet vullen met info" & vbNewLine & ex.Message) + End Try + End Sub + + Public Sub KuisDataOp() + If Not _isNieuweSifonDomein Then + Domeincontroller.getInstance.verwijderAlleReworks() + Domeincontroller.getInstance.verwijderAlleSpecialLaden() + Domeincontroller.getInstance.verwijderReworkTrays() + Domeincontroller.getInstance.verwijderVolledigeZijkantVoorraad() + Else + SifonLadeController.GetInstance().WisSifonladen() + End If + + End Sub + +#Region "printen" + + Private Sub PrintDocument1_PrintPage(sender As System.Object, e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument.PrintPage + 'font instellen van de tekst + Dim font As New Font("Courier New", 15, FontStyle.Regular) + Try + 'builder opnieuw vullen + vulBuilderMetInfo() + 'de tekst "tekenen" op het printerdocument + e.Graphics.DrawString(_builder.ToString, font, Brushes.Black, 30, 100) + 'e.HasMorePages = _aantalTrays > 1 + Catch ex As Exception + MessageBox.Show(ex.Message, "Er is een fout opgetreden...", MessageBoxButtons.OK, MessageBoxIcon.Error) + End Try + End Sub + +#End Region +End Class