Hm, eigendlich dachte ich ja .net-Forms wäre tot. Aber in Verbindung mit Powershell und den JTL-Workflows, kann man einfach ein Fenster rein basteln, dass der Mitarbeiter nicht weg schieben kann, oder irgendwie sonst übersehen, da die Wawi so lange eingefroren bleibt, bis der Nutzer den Knopf zum bestätigen drückt.
Finde ich lustig und waren irgendwie lustige 15 Minuten rum probieren:
Ausgangspunkt:
- Ihr möchtet, dass bspw. beim Versand, nach dem Verpacken, ein Fenster mit einer spezifischen Meldung (hier: Gefahrgutaufkleber anbringen) anzeigen
- Dieses Fenster soll nicht weg geschoben oder minimierbar sein
- Der Packtisch / WMS bleibt eingefroren, bis die Meldung bestätigt wurde
Lösung
Hintergrund
Ihr legt einfach einen Workflow für Ausgeliefert an. Dieser wird unmittelbar nach dem Auslieferungsprozess ausgelöst.
Wir nutzen Windows-Boardmittel, Powershell und das .Net-Framework. Die GUI ist eine Forms-Anwendung, die innerhalb von Powershell läuft
Der Workflow
In das Feld Parameter kommt dann folgender Inhalt:
-Command "#Copyright (c) 2021 T4DT GmbH
#Jedem, der eine Kopie dieser Software und der zugehörigen Dokumentationsdateien (die Software) erhält, wird hiermit kostenlos die Erlaubnis erteilt, ohne Einschränkung mit der Software zu handeln, einschließlich und ohne Einschränkung der Rechte zur Nutzung, zum Kopieren, Ändern, Zusammenführen, Veröffentlichen, Verteilen, Unterlizenzieren und/oder Verkaufen von Kopien der Software, und Personen, denen die Software zur Verfügung gestellt wird, dies unter den folgenden Bedingungen zu gestatten:
#Der obige Urheberrechtshinweis und dieser Genehmigungshinweis müssen in allen Kopien oder wesentlichen Teilen der Software enthalten sein.
function Show-gefahrguthinweis_psf {
#----------------------------------------------
#region Import the Assemblies
#----------------------------------------------
[void][reflection.assembly]::Load('System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089')
[void][reflection.assembly]::Load('System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a')
#endregion Import Assemblies
#----------------------------------------------
#region Generated Form Objects
#----------------------------------------------
[System.Windows.Forms.Application]::EnableVisualStyles()
$formWarnung = New-Object 'System.Windows.Forms.Form'
$labelGefahrgutaufkleberAn = New-Object 'System.Windows.Forms.Label'
$buttonOK = New-Object 'System.Windows.Forms.Button'
$InitialFormWindowState = New-Object 'System.Windows.Forms.FormWindowState'
#endregion Generated Form Objects
#----------------------------------------------
# User Generated Script
#----------------------------------------------
$formWarnung_Load={
#TODO: Initialize Form Controls here
}
# --End User Generated Script--
#----------------------------------------------
#region Generated Events
#----------------------------------------------
$Form_StateCorrection_Load=
{
#Correct the initial state of the form to prevent the .Net maximized form issue
$formWarnung.WindowState = $InitialFormWindowState
}
$Form_Cleanup_FormClosed=
{
#Remove all event handlers from the controls
try
{
$formWarnung.remove_Load($formWarnung_Load)
$formWarnung.remove_Load($Form_StateCorrection_Load)
$formWarnung.remove_FormClosed($Form_Cleanup_FormClosed)
}
catch { Out-Null <# Prevent PSScriptAnalyzer warning #> }
}
#endregion Generated Events
#----------------------------------------------
#region Generated Form Code
#----------------------------------------------
$formWarnung.SuspendLayout()
#
# formWarnung
#
$formWarnung.Controls.Add($labelGefahrgutaufkleberAn)
$formWarnung.Controls.Add($buttonOK)
$formWarnung.AcceptButton = $buttonOK
$formWarnung.AutoScaleDimensions = New-Object System.Drawing.SizeF(6, 13)
$formWarnung.AutoScaleMode = 'Font'
$formWarnung.CausesValidation = $False
$formWarnung.ClientSize = New-Object System.Drawing.Size(384, 140)
$formWarnung.ControlBox = $False
$formWarnung.ForeColor = [System.Drawing.Color]::FromArgb(255, 192, 0, 0)
$formWarnung.FormBorderStyle = 'None'
$formWarnung.MaximizeBox = $False
$formWarnung.MinimizeBox = $False
$formWarnung.Name = 'formWarnung'
$formWarnung.ShowIcon = $False
$formWarnung.ShowInTaskbar = $False
$formWarnung.StartPosition = 'CenterScreen'
$formWarnung.Text = 'Warnung'
$formWarnung.TopMost = $True
$formWarnung.add_Load($formWarnung_Load)
#
# labelGefahrgutaufkleberAn
#
$labelGefahrgutaufkleberAn.AutoSize = $True
$labelGefahrgutaufkleberAn.Dock = 'Fill'
$labelGefahrgutaufkleberAn.Font = [System.Drawing.Font]::new('Microsoft Sans Serif', '20')
$labelGefahrgutaufkleberAn.Location = New-Object System.Drawing.Point(0, 0)
$labelGefahrgutaufkleberAn.Name = 'labelGefahrgutaufkleberAn'
$labelGefahrgutaufkleberAn.Size = New-Object System.Drawing.Size(382, 31)
$labelGefahrgutaufkleberAn.TabIndex = 1
$labelGefahrgutaufkleberAn.Text = 'Gefahrgutaufkleber anbringen!'
$labelGefahrgutaufkleberAn.TextAlign = 'MiddleCenter'
#
# buttonOK
#
$buttonOK.Anchor = 'Bottom, Right'
$buttonOK.DialogResult = 'OK'
$buttonOK.ForeColor = [System.Drawing.SystemColors]::ControlText
$buttonOK.Location = New-Object System.Drawing.Point(223, 93)
$buttonOK.Name = 'buttonOK'
$buttonOK.Size = New-Object System.Drawing.Size(149, 35)
$buttonOK.TabIndex = 0
$buttonOK.Text = '&OK'
$buttonOK.UseCompatibleTextRendering = $True
$buttonOK.UseVisualStyleBackColor = $True
$formWarnung.ResumeLayout()
#endregion Generated Form Code
#----------------------------------------------
#Save the initial state of the form
$InitialFormWindowState = $formWarnung.WindowState
#Init the OnLoad event to correct the initial state of the form
$formWarnung.add_Load($Form_StateCorrection_Load)
#Clean up the control events
$formWarnung.add_FormClosed($Form_Cleanup_FormClosed)
#Show the Form
return $formWarnung.ShowDialog()
} #End Function
#Call the form
Show-gefahrguthinweis_psf | Out-Null"
Kommentare
0 Kommentare
Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.