namespace NKC_SDK
{
    /// <summary>
    /// modalità funzionamento batch list
    /// </summary>
    public enum BatchListMode
    {
        /// <summary>
        /// Modalità normale (stima/nesting)
        /// </summary>
        Standard,

        /// <summary>
        /// Modalità validazione particolari
        /// </summary>
        PartsEval,

        /// <summary>
        /// Modalità validazione file (NON ancora particolari in ordini CSV)
        /// </summary>
        FileEval,

        /// <summary>
        /// Modalità normale (stima/nesting)
        /// </summary>
        FullHistory
    }

    /// <summary>
    /// Posizione / Activity degli oggetti Batch
    /// </summary>
    public enum BatchPosition
    {
        /// <summary>
        /// Non iniziato
        /// </summary>
        NotStarted = 0,

        /// <summary>
        /// Stack In corso
        /// </summary>
        StackStarted,

        /// <summary>
        /// Stack Completato
        /// </summary>
        StackDone,

        /// <summary>
        /// Stack currently in LOAD
        /// </summary>
        Current,

        /// <summary>
        /// Stack completed
        /// </summary>
        Completed
    }

    /// <summary>
    /// Stati degli oggetti Batch
    /// </summary>
    public enum BatchStatus
    {
        /// <summary>
        /// CSV importato
        /// </summary>
        Imported = 0,

        /// <summary>
        /// Nesting richiesto (In corso)
        /// </summary>
        EstimationRequested,

        /// <summary>
        /// Nesting Completato
        /// </summary>
        EstimationDone,

        /// <summary>
        /// Nesting richiesto (In corso)
        /// </summary>
        NestRequested,

        /// <summary>
        /// Nesting Completato
        /// </summary>
        NestDone,

        /// <summary>
        /// Nesting approvato
        /// </summary>
        Approved,

        /// <summary>
        /// Nesting scartato
        /// </summary>
        Discarded,

        /// <summary>
        /// Errori in fase di import o calcolo
        /// </summary>
        Errors,

        /// <summary>
        /// Impiegato per effettuare un test di validazione di un SINGOLO ITEM/PART
        /// </summary>
        PartEval,

        /// <summary>
        /// Test di validazione KO per un SINGOLO ITEM/PART
        /// </summary>
        PartKo,

        /// <summary>
        /// Test di validazione OK per un SINGOLO ITEM/PART
        /// </summary>
        PartOk
    }

    /// <summary>
    /// Tipologia Batch
    /// </summary>
    public enum BatchType
    {
        Original = 0
        , Ancestor = 1
        , Descendant = 2
    }

    /// <summary>
    /// Tipi di barcode gestiti
    /// </summary>
    public enum codeType
    {
        UNK = 0,
        Item,
        ItemGeneric,
        OtherItem,
        Material,
        Sheet,
        Stack,
        Batch,
        Cart,
        Bin,
        BinProcessed,
        SecScreen,
        MachSelection
    }

    /// <summary>
    /// Stati degli oggetti TAKT e Stack
    /// </summary>
    public enum CStatus
    {
        /// <summary>
        /// Programmato
        /// </summary>
        Programmed = 0,

        /// <summary>
        /// In corso
        /// </summary>
        Running,

        /// <summary>
        /// Completato
        /// </summary>
        Done
    }

    /// <summary>
    /// Destinazioni per ITEM post CNC WORK
    /// </summary>
    public enum ItemDest
    {
        /// <summary>
        /// Destinato a BIN (painting)
        /// </summary>
        Bin,

        /// <summary>
        /// Destinato a Cart (KIT)
        /// </summary>
        Cart,

        /// <summary>
        /// Indefinito
        /// </summary>
        Undef
    }

    /// <summary>
    /// Stati ammessi per ITEM
    /// </summary>
    public enum ItemStatus
    {
        /// <summary>
        /// Programmato
        /// </summary>
        Programmed,

        /// <summary>
        /// Completato/Fatto/tagliato
        /// </summary>
        Made,

        /// <summary>
        /// Preso da operatore
        /// </summary>
        PickUp,

        /// <summary>
        /// Depositato su Bin/Cesta
        /// </summary>
        Removed,

        /// <summary>
        /// Indefinito
        /// </summary>
        Undef
    }

    /// <summary>
    /// Tipologia di macchina
    /// </summary>
    public enum mType
    {
        Multiax = 0,
        Offline
    }

    /// <summary>
    /// Tipologia di ordine
    /// </summary>
    public enum oType
    {
        BatchRequest = 0,
        OfflineOrder
    }

    /// <summary>
    /// Enum degli stati ammessi per il Nesting
    /// </summary>
    public enum procStatus
    {
        waiting = 0,
        running,
        error,
        completed,
        aborted,
        accepted,
        refused
    }

    /// <summary>
    /// Stati degli oggetti PANEL/SHEET
    /// </summary>
    public enum PStatus
    {
        /// <summary>
        /// Programmato
        /// </summary>
        Programmed = 0,

        /// <summary>
        /// Stampa in corso
        /// </summary>
        Printing,

        /// <summary>
        /// Stampa completata
        /// </summary>
        Printed,

        /// <summary>
        /// Lavorazione in corso
        /// </summary>
        Machining,

        /// <summary>
        /// Lavorazione completata
        /// </summary>
        Machined,

        /// <summary>
        /// In fase di scaricamento
        /// </summary>
        Unloading,

        /// <summary>
        /// Completato / scaricato da macchina (anche su tavola di scarico)
        /// </summary>
        Unloaded,

        /// <summary>
        /// Presente / letto su PROD e pronto su scissor lift
        /// </summary>
        Present,

        /// <summary>
        /// Da rilavorare
        /// </summary>
        ToBeRedone
    }

    /// <summary>
    /// tipologia di report (FILE rdlc) gestito in stampa...
    /// </summary>
    public enum reportRichiesto
    {
        binPre,
        binPost,
        bunkGroup,
        bunkList,
        cart,
        offline,
        part,
        otherPart,
        cartIRKList,
        cartIRKGroup
    }

    /// <summary>
    /// tipologia di  DOCUMENTO gestito in stampa...
    /// </summary>
    public enum tipoDocumento
    {
        /// <summary>
        /// Etichetta per un BIN (pre esecuzione compito, es verniciatura)
        /// </summary>
        docBinPre,

        /// <summary>
        /// Etichetta per un BIN (POST esecuzione compito, es verniciatura)
        /// </summary>
        docBinPost,

        /// <summary>
        /// Etichetta per un CART
        /// </summary>
        docCart,

        /// <summary>
        /// Documento per singolo ITEM:
        ///  - QR code
        ///  - num cart/bin
        ///  - T/P/* (se va fatto qualcosa di speciale)
        ///  - codice dmtx leggibile (es IT000023) su NUOVA riga
        /// </summary>
        docPart,

        /// <summary>
        /// Documento per singolo OtherItem:
        ///  - QR code
        ///  - cod originale
        ///  - descrizione
        /// </summary>
        docOtherPart,

        /// <summary>
        /// doc per STACK
        /// </summary>
        docStack,

        /// <summary>
        /// NON DEFINITO
        /// </summary>
        docND,

        /// <summary>
        /// Dettaglio massimo CART --> Item Requested Kitting
        /// </summary>
        docCartIRK,

        /// <summary>
        /// Dettaglio aggregato CART --> Item Requested Kitting
        /// </summary>
        docCartIRKSum
    }
}