diff --git a/AppData/AppData.csproj b/AppData/AppData.csproj
index c573657..17d6eb2 100644
--- a/AppData/AppData.csproj
+++ b/AppData/AppData.csproj
@@ -77,6 +77,7 @@
+
diff --git a/AppData/ProdLib.cs b/AppData/ProdLib.cs
new file mode 100644
index 0000000..bd5b8c3
--- /dev/null
+++ b/AppData/ProdLib.cs
@@ -0,0 +1,256 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace AppData
+{
+ ///
+ /// Classe con metodi di supporto per PROD
+ ///
+ public class ProdLib
+ {
+
+ #region definizione classi impiegate
+
+ ///
+ /// Stati degli oggetti TAKT e Stack
+ ///
+ public enum CStatus
+ {
+ ///
+ /// Programmato
+ ///
+ Programmed = 0,
+ ///
+ /// In corso
+ ///
+ Running,
+ ///
+ /// Completato
+ ///
+ Done
+ }
+ ///
+ /// Stati degli oggetti PANEL/SHEET
+ ///
+ public enum PStatus
+ {
+ ///
+ /// Programmato
+ ///
+ Programmed = 0,
+ ///
+ /// Presente / letto su PROD e pronto su scissor lift
+ ///
+ Present,
+ ///
+ /// Stampa in corso
+ ///
+ Printing,
+ ///
+ /// Stampa completata
+ ///
+ Printed,
+ ///
+ /// Lavorazione in corso
+ ///
+ Machining,
+ ///
+ /// Lavorazione completata
+ ///
+ Machined,
+ ///
+ /// Completato / scaricato da macchina (anche su tavola di scarico)
+ ///
+ Out
+ }
+ ///
+ /// dati del materiale
+ ///
+ public class MaterialData
+ {
+ ///
+ /// Identificativo univoco del materiale (DA ANAGRAFICA db)
+ ///
+ public int MaterialId { get; set; }
+ ///
+ /// Codice P/N del materiale (cliente)
+ ///
+ public string MaterialPN { get; set; }
+ ///
+ /// Codice P/N del materiale (cliente)
+ ///
+ public string MaterialDescription { get; set; }
+ }
+ ///
+ /// Dati delal lavorazione
+ ///
+ public class WorkData
+ {
+ ///
+ /// Percorso del programma da eseguire
+ ///
+ public string ProgramPath { get; set; }
+ ///
+ /// Data inizio processing
+ ///
+ public DateTime DtStart { get; set; }
+ ///
+ /// Data fine processing
+ ///
+ public DateTime DtEnd { get; set; }
+ ///
+ /// Tempo di lavorazione in minuti decimali
+ ///
+ public double WorkTimeMin
+ {
+ get
+ {
+ double answ = 0;
+ if (DtStart != null && DtEnd != null)
+ {
+ try
+ {
+ answ = DtEnd.Subtract(DtStart).TotalMinutes;
+ }
+ catch
+ { }
+ }
+ return answ;
+ }
+ }
+ }
+
+ ///
+ /// Singolo Pannello da lavorare
+ ///
+ public class Panel
+ {
+ ///
+ /// Identificativo univoco pannello
+ ///
+ public int PanelId { get; set; }
+ ///
+ /// Materiale
+ ///
+ public MaterialData Material { get; set; }
+ ///
+ /// Stato del pannello
+ ///
+ public PStatus Status { get; set; }
+ ///
+ /// Tempi processo x fase printing
+ ///
+ public WorkData Printing { get; set; }
+ ///
+ /// Tempi processo x fase CNC
+ ///
+ public WorkData Machining { get; set; }
+ ///
+ /// Tempi processo x scarico
+ ///
+ public WorkData Unloading { get; set; }
+
+ }
+
+ ///
+ /// Classe che rappresenta gli stack da lavorare
+ ///
+ public class WStack
+ {
+ ///
+ /// Identificativo univoco stack
+ ///
+ public int StackId { get; set; }
+ ///
+ /// Stato dello Stack di pannelli
+ ///
+ public CStatus Status { get; set; }
+ ///
+ /// Codice dataMAtrix dello stack
+ ///
+ public string DataMatrix { get; set; }
+ ///
+ /// Data inizio processing dello Stack
+ ///
+ public DateTime DtStart { get; set; }
+ ///
+ /// Data inizio processing dello Stack
+ ///
+ public DateTime DtEnd { get; set; }
+ ///
+ /// Elenco dei pannelli(sheets) dello Stack
+ ///
+ public List PanelsList { get; set; }
+ ///
+ /// Numero di Panels da lavorare
+ ///
+ public int NumPanels
+ {
+ get
+ {
+ int answ = 0;
+ try
+ {
+ answ = PanelsList.Count;
+ }
+ catch
+ { }
+ return answ;
+ }
+ }
+ }
+
+ ///
+ /// Oggetto globale TAKT
+ ///
+ public class Takt
+ {
+ ///
+ /// Codice univoco oggetto TAKT (data.num)
+ ///
+ public string TaktId { get; set; }
+ ///
+ /// Stato del TAKT
+ ///
+ public CStatus Status { get; set; }
+ ///
+ /// Elenco degli Stack da lavorare
+ ///
+ public List StackList { get; set; }
+ ///
+ /// Numero di Stack da lavorare
+ ///
+ public int NumStack
+ {
+ get
+ {
+ int answ = 0;
+ try
+ {
+ answ = StackList.Count;
+ }
+ catch
+ { }
+ return answ;
+ }
+ }
+ }
+
+
+ #endregion
+
+
+ ///
+ /// Fornisce il prossimo TAKT da elaborare oppure null se non ce ne fossero altri da elaborare per la data CORRENTE
+ ///
+ ///
+ public int getNextTakt()
+ {
+ return 0;
+ }
+
+ }
+}