Imports System.Text Imports TA_OR_rework.Rework Public Class FormReworkTrayPrinter Private _aantalTrays As Integer Private _nummerTray As Integer Public Sub New() InitializeComponent() Try 'origineel aantal instellen If Domeincontroller.getInstance.geefTypeInReworkTray = ItemType.REWORK Then _aantalTrays = Domeincontroller.getInstance.geefAantalReworkTrays Else _aantalTrays = Domeincontroller.getInstance.geefSpecialAantalReworkTrays End If 'nummer welke special tray er getoond wordt instellen _nummerTray = 1 Catch ex As Exception Throw ex End Try End Sub Private Sub FormReworkTrayPrinter_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 'zorgen dat form niet kan gesloten worden Me.ControlBox = False 'tekenen gaat niet als het formulier nog niet is geladen en geen enkel event is laat genoeg Timer.Start() Try If _aantalTrays <= 0 Then LblMelding.Text = "Er zijn geen reworktrays om te tonen" LblIndexReworkTray.Text = "" btnPrintEnToonVolgende.Text = "Ga verder" ElseIf _aantalTrays = 1 Then btnPrintEnToonVolgende.Text = "Verwerk en ga verder" LblIndexReworkTray.Text = String.Format("{0}/{1}", _nummerTray, _aantalTrays) Else LblIndexReworkTray.Text = String.Format("{0}/{1}", _nummerTray, _aantalTrays) 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 Timer_Tick(sender As System.Object, e As System.EventArgs) Handles Timer.Tick Try Timer.Stop() If _aantalTrays >= 1 Then vulTextboxMetReworkTray() End If Catch ex As Exception MessageBox.Show(ex.Message, "Er is een fout opgetreden...", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub Private _builder As StringBuilder Private Sub vulBuilderMetInfo(indexSpecialTray As Integer) Try _builder = New StringBuilder Dim typelade As String Dim reworkTrayNummer As String Select Case Domeincontroller.getInstance.geefTypeInReworkTray Case ItemType.SIFONLADE typelade = "sifon lade" reworkTrayNummer = Domeincontroller.getInstance.geefSpecialLadeReworkTrayNummer(_nummerTray - 1) Case ItemType.SPOELBAKLADE typelade = "spoelbak lade" reworkTrayNummer = Domeincontroller.getInstance.geefSpecialLadeReworkTrayNummer(_nummerTray - 1) 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.geefWaardeBijEnumValue(Domeincontroller.getInstance.geefTypeInReworkTray) & " kon niet gebruikt worden voor tray printer te visualiseren") End Select _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 Domeincontroller.getInstance.geefTypeInReworkTray = ItemType.REWORK Then lijnen = Domeincontroller.getInstance.geefSlotsReworkTray(_nummerTray - 1) Else lijnen = Domeincontroller.getInstance.geefSlotsSpecialReworkTray(_nummerTray - 1) 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 Private Sub btnPrintEnToonVolgende_Click(sender As System.Object, e As System.EventArgs) Handles btnPrintEnToonVolgende.Click Try 'als er geen reworks meer zijn wordt er bij het drukken op de knop naar formGrid gegaan If _aantalTrays <= 0 Then gaVerder() ElseIf _nummerTray + 1 <= _aantalTrays Then 'er zijn nog trays te tonen If _nummerTray + 1 = _aantalTrays Then 'er is nog 1 tray If Domeincontroller.getInstance.geefTypeInReworkTray = ItemType.TESTLADE Then btnPrintEnToonVolgende.Text = "Ga verder" Else btnPrintEnToonVolgende.Text = "Verwerk en ga verder" End If End If 'de index verhogen met 1 _nummerTray += 1 'updaten van label LblIndexReworkTray.Text = String.Format("{0}/{1}", _nummerTray, _aantalTrays) vulTextboxMetReworkTray() Else 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 PrintDocument.Print() Next End If gaVerder() 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 Select Case Domeincontroller.getInstance.geefTypeInReworkTray Case ItemType.SIFONLADE, ItemType.SPOELBAKLADE, 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.geefWaardeBijEnumValue(Domeincontroller.getInstance.geefTypeInReworkTray) & " kon niet gebruikt worden voor te verwerken") End Select End Sub Private Sub opslaanBacklog() 'alle trays overlopen en builder opnieuw vullen For _nummerTray = 1 To _aantalTrays vulBuilderMetInfo(_nummerTray - 1) Select Case Domeincontroller.getInstance.geefTypeInReworkTray Case ItemType.SIFONLADE, ItemType.SPOELBAKLADE, 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.geefWaardeBijEnumValue(Domeincontroller.getInstance.geefTypeInReworkTray) & " kon niet gebruikt worden voor opslag backlog") End Select Next End Sub #Region "tonen" Private Sub vulTextboxMetReworkTray() Try vulBuilderMetInfo(_nummerTray - 1) 'scherm terug leeg maken TextBoxReworkTraySlots.CreateGraphics.Clear(DefaultBackColor) 'de tekst printen op het scherm Dim font As New Font("Courier New", 15, FontStyle.Regular) TextBoxReworkTraySlots.CreateGraphics.DrawString(_builder.ToString, font, Brushes.Black, 30, 100) 'de afbeeldingen tekenen op de textbox If Domeincontroller.getInstance.geefTypeSpecialLade = ItemType.SIFONLADE Then tekenAfbeeldingMetInfoOpSchermSifonLade() ElseIf Domeincontroller.getInstance.geefTypeSpecialLade = ItemType.SPOELBAKLADE Then tekenAfbeeldingMetInfoOpSchermSpoelbakLade() 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 tekenAfbeeldingMetInfoOpSchermSifonLade() Dim font As New Font("Courier New", 15, FontStyle.Bold) Dim posX As Integer = 150 Dim posY As Integer = 350 Dim image As Image = My.Resources.ResourceManager.GetObject("sifonLadeTekening") TextBoxReworkTraySlots.CreateGraphics.DrawImage(image, posX, posY) Dim info As List(Of String) = Domeincontroller.getInstance.geefInformatieSifonLade() Dim breedte As String = info(5) 'breedte van de lade Dim breedteUitsparing As String = info(6) Dim diepteLade As String = info(7) 'diepte van de volledige lade Dim diepteUitsparing As String = info(8) Dim positie As String = info(9) Dim rest As String = info(10) TextBoxReworkTraySlots.CreateGraphics.DrawString(breedte, font, Brushes.Black, posX + 185, posY + 200) TextBoxReworkTraySlots.CreateGraphics.DrawString(diepteLade, font, Brushes.Black, posX + 430, posY + 100) TextBoxReworkTraySlots.CreateGraphics.DrawString(positie, font, Brushes.Black, posX + 300, posY - 15) TextBoxReworkTraySlots.CreateGraphics.DrawString(breedteUitsparing, font, Brushes.Black, posX + 185, posY - 15) TextBoxReworkTraySlots.CreateGraphics.DrawString(diepteUitsparing, font, Brushes.Black, posX + 272, posY + 70) TextBoxReworkTraySlots.CreateGraphics.DrawString(rest, font, Brushes.Black, posX + 60, posY - 15) End Sub Private Sub tekenAfbeeldingMetInfoOpSchermSpoelbakLade() Dim font As New Font("Courier New", 15, FontStyle.Bold) Dim posX As Integer = 150 Dim posY As Integer = 350 Dim image As Image = My.Resources.ResourceManager.GetObject("spoelbakLadeTekening") TextBoxReworkTraySlots.CreateGraphics.DrawImage(image, posX, posY) Dim info As List(Of String) = Domeincontroller.getInstance.geefInformatieSpoelbakLade() Dim breedte As String = info(5) 'breedte van de lade Dim breedteUitsparing As String = info(6) Dim diepteLade As String = info(7) 'diepte van de volledige lade Dim diepteUitsparing As String = info(8) Dim positie As String = info(9) Dim restBreedte As String = info(10) TextBoxReworkTraySlots.CreateGraphics.DrawString(breedte, font, Brushes.Black, posX + 185, posY + 250) TextBoxReworkTraySlots.CreateGraphics.DrawString(diepteLade, font, Brushes.Black, posX + 415, posY + 100) TextBoxReworkTraySlots.CreateGraphics.DrawString(positie, font, Brushes.Black, posX + 330, posY - 15) TextBoxReworkTraySlots.CreateGraphics.DrawString(breedteUitsparing, font, Brushes.Black, posX + 185, posY - 15) TextBoxReworkTraySlots.CreateGraphics.DrawString(restBreedte, font, Brushes.Black, posX + 35, posY - 15) TextBoxReworkTraySlots.CreateGraphics.DrawString(diepteUitsparing, font, Brushes.Black, posX + 397, posY + 70) End Sub #End Region #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(_nummerTray - 1) 'de tekst "tekenen" op het printerdocument e.Graphics.DrawString(_builder.ToString, font, Brushes.Black, 30, 100) 'de afbeelding tekenen met waarden tekenen op het document If Domeincontroller.getInstance.geefTypeSpecialLade = ItemType.SIFONLADE Then tekenAfbeeldingMetInfoVoorPrinterSifonLade(e) ElseIf Domeincontroller.getInstance.geefTypeSpecialLade = ItemType.SPOELBAKLADE Then tekenAfbeeldingMetInfoVoorPrinterSpoelbakLade(e) End If '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 Private Sub tekenAfbeeldingMetInfoVoorPrinterSifonLade(e As Printing.PrintPageEventArgs) Try Dim font As New Font("Courier New", 15, FontStyle.Bold) Dim posX As Integer = 150 Dim posY As Integer = 350 Dim image As Image = My.Resources.ResourceManager.GetObject("sifonLadeTekening") e.Graphics.DrawImage(image, posX, posY) Dim info As List(Of String) = Domeincontroller.getInstance.geefInformatieSifonLade() Dim breedte As String = info(5) 'breedte van de lade Dim breedteUitsparing As String = info(6) Dim diepteLade As String = info(7) 'diepte van de volledige lade Dim diepteUitsparing As String = info(8) Dim positie As String = info(9) Dim rest As String = info(10) posX += 8 e.Graphics.DrawString(breedte, font, Brushes.Black, posX + 185, posY + 200) e.Graphics.DrawString(diepteLade, font, Brushes.Black, posX + 430, posY + 100) e.Graphics.DrawString(positie, font, Brushes.Black, posX + 300, posY - 15) e.Graphics.DrawString(breedteUitsparing, font, Brushes.Black, posX + 185, posY - 15) e.Graphics.DrawString(diepteUitsparing, font, Brushes.Black, posX + 272, posY + 70) e.Graphics.DrawString(rest, font, Brushes.Black, posX + 53, posY - 15) Catch ex As Exception MessageBox.Show(ex.Message, "Er is een fout opgetreden...", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub Private Sub tekenAfbeeldingMetInfoVoorPrinterSpoelbakLade(e As Printing.PrintPageEventArgs) Try Dim font As New Font("Courier New", 15, FontStyle.Bold) Dim posX As Integer = 150 Dim posY As Integer = 350 Dim image As Image = My.Resources.ResourceManager.GetObject("spoelbakLadeTekening") e.Graphics.DrawImage(image, posX, posY) Dim info As List(Of String) = Domeincontroller.getInstance.geefInformatieSpoelbakLade() Dim breedte As String = info(5) 'breedte van de lade Dim breedteUitsparing As String = info(6) Dim diepteLade As String = info(7) 'diepte van de volledige lade Dim diepteUitsparing As String = info(8) Dim positie As String = info(9) Dim restBreedte As String = info(10) posX += 7 e.Graphics.DrawString(breedte, font, Brushes.Black, posX + 185, posY + 250) e.Graphics.DrawString(diepteLade, font, Brushes.Black, posX + 415, posY + 100) e.Graphics.DrawString(positie, font, Brushes.Black, posX + 330, posY - 15) e.Graphics.DrawString(breedteUitsparing, font, Brushes.Black, posX + 185, posY - 15) e.Graphics.DrawString(restBreedte, font, Brushes.Black, posX + 35, posY - 15) e.Graphics.DrawString(diepteUitsparing, font, Brushes.Black, posX + 397, posY + 70) Catch ex As Exception MessageBox.Show(ex.Message, "Er is een fout opgetreden...", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub #End Region Private Sub gaVerder() Domeincontroller.getInstance.verwijderAlleReworks() Domeincontroller.getInstance.verwijderAlleSpecialLaden() Domeincontroller.getInstance.verwijderReworkTrays() Domeincontroller.getInstance.verwijderVolledigeVoorraad() FormController.getInstance.laadVorige(Me) End Sub Private Sub ButtonRefresh_Click(sender As System.Object, e As System.EventArgs) Handles ButtonRefresh.Click If _aantalTrays >= 1 Then vulTextboxMetReworkTray() End If End Sub Private Sub btnAnnuleer_Click(sender As System.Object, e As System.EventArgs) Handles btnAnnuleer.Click gaVerder() End Sub End Class