<?php

class TypeSuivi
{

    /**
     * Constante définissant les types de suivi
     * IMPORTANT : pour les écrans de suivi, la chaîne de caractère doit être d'une longueur inférieur à 10 (Table OXA_SUIVI_REQUETE / champs TYPE_SUIVI)
     */
    const DA = 'DA';
 // Suivi des DA
    const DS = 'DS';
 // Suivi des DS
    const CRB = 'CRB';
 // Suivi des CRB
    const CDE = 'CDE';
 // Suivi des CDE
    const BR = 'BR';
 // Suivi des BR
    const BS = 'BS';
 // Suivi des BS
    const AO = 'AO';
 // Suivi des AO
    const AO_PANIER = 'AO_PANIER';
 // Suivi des AO Panier
    const AO_PANIER_GLOB = 'AO_PAN_GLB';
 // Spec 3680 : suivi des AO Panier, mais avec un titre différent dans la fenêtre de recherche
    const AO_IMPORTDA = 'AOIMPORTDA';
 // Spec 3680 : import des lignes de DA dans un AO
    const CdeToRate = 'CdeToRate';
 // Commandes à noter
    const SCdeToRate = 'SCdeToRate';
 // Suivi des commandes à noter
    const BAP = 'BAP';
 // Suivi des BAP
    const DOC = 'DOC';
 // Suivi des documents rattachés
    const CdeToSend = 'commandeToSend';

    const DELEGATION = 'DELEGATION';

    const SignDA = 'SIGDA';

    const DelSignDA = 'DELSIGDA';

    const SignCDE = 'SIGCDE';

    const DelSignCDE = 'DELSIGCDE';

    const SignBAP = 'SIGBAP';

    const DelSignBAP = 'DELSIGBAP';

    const MOD = 'MOD';
 // Pour le suivi des modele de DOA
    const DOA = 'DOA';
 // Pour le suivi des DOA
    const DOA_Entete = 'DOA_Entete';
 // Menu action de l'entête de DOA
    const DOA_Tache = 'DOATACHE';

    const DOA_Tache_Action = 'DOATACHEACTION';

    const CAMPEVE = 'CAMP';

    const CAMPNOT = 'CAMF';

    const GESTFOURNISS = 'Gest_Fourniss';

    const GESTFOURNISS_Docs_ratt = 'Gest_Fourniss_docs_ratt';

    const GESTFOURNISS_Dem_four = 'Gest_Fourniss_dem_four';

    /**
     * Constructeur
     */
    public function __construct()
    {}

    /**
     * Fonction retourant pour un type de suivi donné la liste des codes ruptures possibles avec leur libéllé associé
     *
     * @param string $type_suivi
     *            : type de suivi dont on souhaite récupérer la liste de rupture
     */
    public static function &getListeRupture($type_suivi)
    {
        
        // Tableau associatif contenant les ruptures et leurs libélés associés
        $tab_rupture = array();
        switch ($type_suivi) {
            case TypeSuivi::DA: // Pour les DA
            case TypeSuivi::SignDA:
            case TypeSuivi::DelSignDA:
            case TypeSuivi::CRB:
                $tab_rupture = array(
                    array(
                        '!code' => '',
                        '!texte' => trad('Pas de rupture')
                    ),
                    
                    array(
                        '!code' => 'NO_DA',
                        '!texte' => trad("Numéro de demande d'achat")
                    ),
                    (Param::isAfficheTtc())? array(
                        '!code' => 'TOTAL_DA_TTC',
                        '!texte' => trad("Montant TTC"), 
                        array(
                            '!code' => 'TOTAL_DA',
                            '!texte' => trad("Montant HT")
                        )
                    ): array(
                        '!code' => 'TOTAL_DA',
                        '!texte' => trad("Montant HT")
                    ),
                   
                    array(
                        '!code' => 'DTE_LIV',
                        '!texte' => trad('Date de livraison')
                    ),
                    array(
                        '!code' => 'DTE_VAL',
                        '!texte' => trad('Date de validation')
                    ),
                    array(
                        '!code' => 'FOU',
                        '!texte' => trad('Code fournisseur')
                    ),
                    array(
                        '!code' => 'RSFOU',
                        '!texte' => trad('RS fournisseur')
                    ),
                    array(
                        '!code' => 'ACH',
                        '!texte' => trad('Acheteur')
                    ),
                    array(
                        '!code' => 'SECTIMP',
                        '!texte' => trad("Section d'imputation")
                    ),
                    array(
                        '!code' => 'SSCPTEANA',
                        '!texte' => trad("Sous-compte d'analyse")
                    ),
                    array(
                        '!code' => 'CODECOMP',
                        '!texte' => trad('Code complémentaire')
                    ),
                    array(
                        '!code' => 'CODE_STE',
                        '!texte' => trad('Société')
                    ),
                    array(
                    '!code' => 'TYP_DOC',
                    '!texte' => trad('Type de document')
                    ),
                    array(
                    '!code' => 'TYPEACHAT',
                    '!texte' => trad('Type d\'achat')
                    )
                );
                break;
            case TypeSuivi::CDE: // Pour les CDE
            case TypeSuivi::SignCDE:
            case TypeSuivi::DelSignCDE:
                $tab_rupture = array(
                    array(
                        'code' => '',
                        '!texte' => trad('Pas de rupture')
                    ),
                    array(
                        '!code' => 'NO_CDE',
                        '!texte' => trad('Numéro de commande')
                    ),
                    (Param::isAfficheTtc())? array(
                        '!code' => 'TOT_TTC',
                        '!texte' => trad("Montant TTC"), 
                        array(
                            '!code' => 'TOT_CDEHT',
                            '!texte' => trad("Montant HT")
                        )
                    ): array(
                        '!code' => 'TOT_CDEHT',
                        '!texte' => trad("Montant HT")
                    ),
                    array(
                        '!code' => 'DTE_LIV',
                        '!texte' => trad('Date de livraison')
                    ),
                    array(
                        '!code' => 'DTE_VALID',
                        '!texte' => trad('Date de validation')
                    ),
                    array(
                        '!code' => 'CODE_FOU',
                        '!texte' => trad('Code fournisseur')
                    ),
                    array(
                        '!code' => 'RSFOU',
                        '!texte' => trad('RS fournisseur')
                    ),
                    array(
                        '!code' => 'ACH',
                        '!texte' => trad('Acheteur')
                    ),
                    array(
                        '!code' => 'SECTIMP',
                        '!texte' => trad("Section d'imputation")
                    ),
                    array(
                        '!code' => 'SSCPTEANA',
                        '!texte' => trad("Sous-compte d'analyse")
                    ),
                    array(
                        '!code' => 'CODECOMP',
                        '!texte' => trad('Code complémentaire')
                    ),
                    array(
                        '!code' => 'CODE_STE',
                        '!texte' => trad('Société')
                    ),
                    array(
                        '!code' => 'TYP_DOC',
                        '!texte' => trad('Type de document')
                    ),
                    array(
                    '!code' => 'TYPEACHAT',
                    '!texte' => trad('Type d\'achat')
                    )
                );
                break;
            case TypeSuivi::BR: // Pour les BR
                $tab_rupture = array(
                    array(
                        '!code' => '',
                        '!texte' => trad('Pas de rupture')
                    ),
                    array(
                        '!code' => 'NUM_BR',
                        '!texte' => trad('Numéro de bon de réception')
                    ),
                    (Param::isAfficheTtc())? array(
                        '!code' => 'TOTAL_TTC',
                        '!texte' => trad("Montant TTC"), 
                        array(
                            '!code' => 'TOTAL_HT',
                            '!texte' => trad("Montant HT")
                        )
                    ): array(
                        '!code' => 'TOTAL_HT',
                        '!texte' => trad("Montant HT")
                    ),
                    array(
                        '!code' => 'NUM_CDE',
                        '!texte' => trad('Numéro de commande')
                    ),
                    array(
                        '!code' => 'CODE_FOU',
                        '!texte' => trad('Code fournisseur')
                    ),
                    array(
                        '!code' => 'DATE_VAL',
                        '!texte' => trad('Date de validation')
                    ),
                    array(
                        '!code' => 'CODE_STE',
                        '!texte' => trad('Société')
                    )
                );
                break;
            case TypeSuivi::BS: // Pour les BS
                $tab_rupture = array(
                    array(
                        '!code' => '',
                        '!texte' => trad('Pas de rupture')
                    ),
                    array(
                        '!code' => 'NO_BS',
                        '!texte' => trad('Numéro de bon de sortie')
                    ),
                    array(
                        '!code' => 'SITE',
                        '!texte' => trad('Site')
                    ),
                    array(
                        '!code' => 'DTE_VALID',
                        '!texte' => trad('Date de validation')
                    ),
                    array(
                        '!code' => 'DEST',
                        '!texte' => trad('Destinataire')
                    ),
                    array(
                        '!code' => 'CODE_STE',
                        '!texte' => trad('Société')
                    )
                );
                break;
            case TypeSuivi::CdeToRate: // Pour les commandes à noter
            case TypeSuivi::SCdeToRate: // Pour le suivi des notations commande
                $tab_rupture = array(
                    array(
                        '!code' => '',
                        '!texte' => trad('Pas de rupture')
                    ),
                    array(
                        '!code' => 'NO_CDE',
                        '!texte' => trad('Numéro de commande')
                    ),
                    array(
                        '!code' => 'CODE_FOU',
                        '!texte' => trad('Code fournisseur')
                    ),
                    array(
                        '!code' => 'CODE_STE',
                        '!texte' => trad('Société')
                    )
                );
                break;
            case TypeSuivi::BAP: // Pour les BAP
            case TypeSuivi::SignBAP:
            case TypeSuivi::DelSignBAP:
                $tab_rupture = array(
                    array(
                        '!code' => '',
                        '!texte' => trad('Pas de rupture')
                    ),
                    (Param::isAfficheTtc())? array(
                        '!code' => 'TOTAL_TTC',
                        '!texte' => trad("Montant TTC"), 
                        array(
                            '!code' => 'TOTAL_HT',
                            '!texte' => trad("Montant HT")
                        )
                    ): array(
                        '!code' => 'TOTAL_HT',
                        '!texte' => trad("Montant HT")
                    ),
                    array(
                        '!code' => 'NUM_FACT',
                        '!texte' => trad('Numéro de facture')
                    ),
                    array(
                        '!code' => 'CODE_FOUR',
                        '!texte' => trad('Fournisseur')
                    ),
                    array(
                        '!code' => 'RSFOU',
                        '!texte' => trad('RS fournisseur')
                    ),
                    array(
                        '!code' => 'ACH',
                        '!texte' => trad('Acheteur')
                    ),
                    array(
                        '!code' => 'CODE_STE',
                        '!texte' => trad('Société')
                    )
                );
                break;
            case TypeSuivi::MOD:
                $tab_rupture = array(
                    array(
                        '!code' => '',
                        '!texte' => trad('Pas de rupture')
                    ),
                    array(
                        '!code' => 'OPERATION',
                        '!texte' => trad('Opération')
                    ),
                    array(
                        '!code' => 'ETAT_AV',
                        '!texte' => trad('Etat avancement')
                    ),
                    array(
                        '!code' => 'PRESCRIPTEUR',
                        '!texte' => trad('Prescripteur')
                    ),
                    array(
                        '!code' => 'CENTRE_E',
                        '!texte' => trad('Centre émetteur')
                    ),
                    array(
                        '!code' => 'CODE_STE',
                        '!texte' => trad('Société')
                    )
                );
                break;
            
            case TypeSuivi::DOA:
                $tab_rupture = array(
                    array(
                        '!code' => '',
                        '!texte' => trad('Pas de rupture')
                    ),
                    array(
                        '!code' => 'OPERATION',
                        '!texte' => trad('Opération')
                    ),
                    array(
                        '!code' => 'ETAT_AV',
                        '!texte' => trad('Etat avancement')
                    ),
                    array(
                        '!code' => 'PRESCRIPTEUR',
                        '!texte' => trad('Prescripteur')
                    ),
                    array(
                        '!code' => 'CENTRE_E',
                        '!texte' => trad('Centre émetteur')
                    ),
                    array(
                        '!code' => 'CODE_STE',
                        '!texte' => trad('Société')
                    )
                );
                break;
            
            case TypeSuivi::AO_PANIER_GLOB:
            case TypeSuivi::AO_PANIER:
                $tab_rupture = array(
                    array(
                        '!code' => '',
                        '!texte' => trad('Pas de rupture')
                    ),
                    array(
                        '!code' => 'NO_AO',
                        '!texte' => trad('N° d\'AO')
                    ),
                    array(
                        '!code' => 'GRPSOC',
                        '!texte' => trad('Groupe de société')
                    ),
                    array(
                        '!code' => 'CODE_STE',
                        '!texte' => trad('Société')
                    ),
                    array(
                        '!code' => 'ACH',
                        '!texte' => trad('Acheteur')
                    ),
                    array(
                        '!code' => 'EMETTEUR',
                        '!texte' => trad('Centre émetteur')
                    ),
                    array(
                        '!code' => 'CTR_LIV',
                        '!texte' => trad('Centre de livraison')
                    ),
                    array(
                        '!code' => 'DTE_VALID_AO',
                        '!texte' => trad('Date de validation')
                    ),
                    array(
                        '!code' => 'VALCHXFOU',
                        '!texte' => trad('Date du choix des fournisseurs')
                    ),
                    array(
                        '!code' => 'RSFOU',
                        '!texte' => trad('Fournisseur')
                    )
                );
                break;
            case TypeSuivi::AO_IMPORTDA:
                $tab_rupture = array(
                    array(
                        '!code' => '',
                        '!texte' => trad('Pas de rupture')
                    ),
                    array(
                        '!code' => ChampRecherche::Groupe,
                        '!texte' => trad('Groupe de sociétés')
                    ),
                    array(
                        '!code' => ChampRecherche::Societe,
                        '!texte' => trad('Société')
                    ),
                    array(
                        '!code' => ChampRecherche::CentreEmet,
                        '!texte' => trad('Centre émetteur')
                    ),
                    array(
                        '!code' => ChampRecherche::CentreLivr,
                        '!texte' => trad('Centre de livraison')
                    ),
                    array(
                        '!code' => ChampRecherche::Demandeur,
                        '!texte' => trad('Demandeur')
                    ),
                    array(
                        '!code' => ChampRecherche::Acheteur,
                        '!texte' => trad('Acheteur')
                    ),
                    array(
                        '!code' => ChampRecherche::SI,
                        '!texte' => trad('Section d\'imputation')
                    ),
                    array(
                        '!code' => ChampRecherche::CodeCompl,
                        '!texte' => trad('Code complémentaire')
                    ),
                    array(
                        '!code' => ChampRecherche::SCA,
                        '!texte' => trad('Sous-compte d\'analyse')
                    ),
                    array(
                        '!code' => ChampRecherche::Famille,
                        '!texte' => trad('Famille')
                    ),
                    array(
                        '!code' => ChampRecherche::SousFamille,
                        '!texte' => trad('Sous-Famille')
                    ),
                    array(
                        '!code' => ChampRecherche::numdoc,
                        '!texte' => trad('N° de DA')
                    ),
                    array(
                        '!code' => ChampRecherche::chifExec,
                        '!texte' => trad('Type de DA')
                    ),
                    array(
                        '!code' => ChampRecherche::TypeDocument,
                        '!texte' => trad('Type de document')
                    ),
                    array(
                        '!code' => ChampRecherche::Fournisseur,
                        '!texte' => trad('Fournisseur')
                    )
                );
                break;
        }
        
        return $tab_rupture;
    }

    /**
     * Fonction retourant pour un type de suivi donné la liste des codes statuts possibles avec leur libéllé associé
     *
     * @param string $type_suivi
     *            : type de suivi dont on souhaite récupérer la liste de statut
     */
    public static function &getListeStatut(& $type_suivi)
    {
        
        // Tableau associatif contenant les statuts et leurs libélés associés
        $tab_statut = array();
        
        switch ($type_suivi) {
            case TypeSuivi::AO_PANIER_GLOB:
            case TypeSuivi::AO_PANIER:
                $WFAO = true;
                $tab_statut = array();
                $tab_statut[] = array(
                    '!code' => '0',
                    '!texte' => trad('Sélectionnez')
                );
                $tab_statut[] = array(
                    '!code' => 'PREP',
                    '!texte' => trad('Préparation')
                );
                if ($WFAO)
                    $tab_statut[] = array(
                        '!code' => 'VALC',
                        '!texte' => trad('Validation en cours')
                    );
                $tab_statut[] = array(
                    '!code' => 'PRCO',
                    '!texte' => trad('En préparation ou en cours')
                );
                $tab_statut[] = array(
                    '!code' => 'ENCO',
                    '!texte' => trad('En cours')
                );
                $tab_statut[] = array(
                    '!code' => 'ENVO',
                    '!texte' => trad('A envoyer')
                );
                if ($WFAO)
                    $tab_statut[] = array(
                        '!code' => 'VALF',
                        '!texte' => trad('Validation choix fournisseur')
                    );
                $tab_statut[] = array(
                    '!code' => 'TERM',
                    '!texte' => trad('Terminé')
                );
                
                break;
            case TypeSuivi::DA: // Pour les DA
            case TypeSuivi::CRB:
                $tab_statut = array(
                    array(
                        '!code' => 'QUELCONQUE',
                        '!texte' => trad('Sélectionnez')
                    ),
                    array(
                        '!code' => 'EN_SIGNATURE',
                        '!texte' => trad('En signature')
                    ),
                    array(
                        '!code' => 'A_TRAITER',
                        '!texte' => trad('A traiter')
                    ),
                    array(
                        '!code' => 'A_VALIDER',
                        '!texte' => trad('A valider')
                    ),
                    array(
                        '!code' => 'TRAITEE',
                        '!texte' => trad('Traitée')
                    ),
                    array(
                        '!code' => 'REFUSEE',
                        '!texte' => trad('Refusée')
                    )
                );
                
                break;
            
            case TypeSuivi::CdeToRate:
            case TypeSuivi::CDE: // Pour les CDE
                $tab_statut = array(
                    array(
                        '!code' => 'QUELCONQUE',
                        '!texte' => trad('Sélectionnez')
                    ),
               
                    array(
                        '!code' => 'EN_ATTENTE',
                        '!texte' => trad('En Attente')
                    ),
                    array(
                        '!code' => 'EN_SIGNATURE',
                        '!texte' => trad('En signature')
                    ),
                    array(
                        '!code' => 'REFUSEE',
                        '!texte' => trad('Refusées')
                    ),
                    array(
                        '!code' => 'A_ENVOYER',
                        '!texte' => trad('A envoyer')
                    ),
                    array(
                        '!code' => 'ENVOYEE',
                        '!texte' => trad('Envoyées')
                    ),
                    array(
                        '!code' => 'A_RECEPTIONNER',
                        '!texte' => trad('En attente de réception')
                    ),
                    array(
                        '!code' => 'RECEPTIONNEE_PARTIEL',
                        '!texte' => trad('Livraison partielle')
                    ),
                    array(
                        '!code' => 'RECEPTIONNEE',
                        '!texte' => trad('Réceptionnées')
                    ),
                    array(
                        '!code' => 'FACTUREE',
                        '!texte' => trad('Facturées')
                    ),
                    array(
                        '!code' => 'EN_LITIGE',
                        '!texte' => trad('En litige')
                    ),
                    array(
                        '!code' => 'ANNULEE',
                        '!texte' => trad('Annulées')
                    )
                );
                
                break;
            
            case TypeSuivi::BR: // Pour les BR
                $tab_statut = array(
                    array(
                        '!code' => 'QUELCONQUE',
                        '!texte' => trad('Sélectionnez')
                    ),
                    array(
                        '!code' => 'A_VALIDER',
                        '!texte' => trad('A valider')
                    ),
                    array(
                        '!code' => 'A_CONTROLER',
                        '!texte' => trad('A contrôler')
                    )
                );
                
                break;
            
            case TypeSuivi::BS: // Pour les BS
                $tab_statut = array(
                    array(
                        '!code' => 'QUELCONQUE',
                        '!texte' => trad('Sélectionnez')
                    ),
                    array(
                        '!code' => 'A_VALIDER',
                        '!texte' => trad('A valider')
                    ),
                    array(
                        '!code' => 'VALIDE',
                        '!texte' => trad('Validé')
                    )
                );
                
                break;
            case TypeSuivi::BAP:
                $tab_statut = array();
                $tab_statut[] = array(
                    '!code' => 'QUELCONQUE',
                    '!texte' => trad('Sélectionnez')
                );
                $tab_statut[] = array(
                    '!code' => 'AFF_A_SAIS',
                    '!texte' => trad('Affectation à saisir')
                );
                if (Param::getBAPPreAffectation()) {
                    $tab_statut[] = array(
                        '!code' => 'PRE_AFF',
                        '!texte' => trad('Factures en pré-affectation')
                    );
                }
                $tab_statut[] = array(
                    '!code' => 'AFFECT_VALID',
                    '!texte' => trad('Affectation à valider')
                );
                $tab_statut[] = array(
                    '!code' => 'ATTENTE_BAP',
                    '!texte' => trad('Attente du Bon à Payer')
                );
                $tab_statut[] = array(
                    '!code' => 'FAC_LITIG',
                    '!texte' => trad('Factures en litige')
                );
                $tab_statut[] = array(
                    '!code' => 'SIGNEES',
                    '!texte' => trad('Signées')
                );
                $tab_statut[] = array(
                    '!code' => 'REFUSEES',
                    '!texte' => trad('Refusées')
                );
                $tab_statut[] = array(
                    '!code' => 'NON_REGL',
                    '!texte' => trad('Non Règlées')
                );
                $tab_statut[] = array(
                    '!code' => 'PART_REGL',
                    '!texte' => trad('Partiellement Règlées')
                );
                $tab_statut[] = array(
                    '!code' => 'TOT_REGL',
                    '!texte' => trad('Totalement Règlées')
                );
                break;
        }
        
        return $tab_statut;
    }

    public static function &getListeReglement()
    {
        $tab_type = array(
            array(
                '!code' => 'TOUTES',
                '!texte' => trad('Quelconque')
            ),
            array(
                '!code' => 'NON',
                '!texte' => trad('Aucun règlement')
            ),
            array(
                '!code' => 'NONPART',
                '!texte' => trad('Aucun règlement ou règlement partiel')
            ),
            array(
                '!code' => 'PART',
                '!texte' => trad('Règlement partiel')
            ),
            array(
                '!code' => 'TOTAL',
                '!texte' => trad('Règlement total')
            )
        );
        
        return $tab_type;
    }

    // SPEC 4374 : liste sous traitance pour filtre dans suivi des commandes
    public static function &getListeSousTraitance()
    {
        $tab_type = array(
            array(
                '!code' => 'TOUTES',
                '!texte' => trad('Toutes')
            ),
            array(
                '!code' => 'SANS_ST',
                '!texte' => trad('Sans Sous-traitance')
            ),
            array(
                '!code' => 'AVEC_ST',
                '!texte' => trad('Avec Sous-traitance')
            ),
            array(
                '!code' => 'SANS_CONTRAT',
                '!texte' => trad('Sans contrat généré')
            ),
            array(
                '!code' => 'AVEC_CONTRAT',
                '!texte' => trad('Avec contrat généré')
            ),
            array(
                '!code' => 'CONTRAT_NON_RECEP',
                '!texte' => trad('Avec contrat non réceptionné')
            ),
            array(
                '!code' => 'CONTRAT_RECEP',
                '!texte' => trad('Avec contrat réceptionné')
            )
        );
        
        return $tab_type;
    }
    
    public static function getListeTypeAchat()
    {
        $listeTypeAchat = sqlinfo::rqGetAllTypesTypeAchat()->TrouveTous();
        
        $tabTypeAchat[] = [
            '!code' => '',
            '!texte' => trad('Toutes')
        ];
        
        foreach($listeTypeAchat as $value)
        {
            $tabTypeAchat[] = [
                '!code' => $value['TYP_ACH'],
                '!texte' => $value['LIB_TAC'],
            ];
        }
        
        return $tabTypeAchat;
    }
    
    public static function getListeTypeDoc()
    {
        $listeTypeDoc = sqlinfo::rqGetAllTypesDocument()->TrouveTous();
        
        $tabTypeDoc[] = [
            '!code' => '',
            '!texte' => trad('Toutes')
        ];
        
        foreach($listeTypeDoc as $value)
        {
            $tabTypeDoc[] = [
                '!code' => $value['TYPE'],
                '!texte' => $value['LIBELLE'],
            ];
        }
        
        return $tabTypeDoc;
    }

    /**
     * Fonction retourant la liste des codes sur le type (validation et livraison) ou la période (6, 3 ou 1 mois, 2 ou 1 semaine ou bien une période à définir manuellement)
     *
     * @param string $choix
     *            (TYPE ou PERIODE) : choix entre type et periode selon la liste à initialiser
     */
    public static function &getListeDate($choix, $type_suivi)
    {
        // Tableau associatif contenant les types et leurs libélés associés
        $tab_type = array();
        // Tableau associatif contenant les Periode et leurs libélés associés
        // Partie type
        if ($choix == 'TYPE') {
            switch ($type_suivi) {
                case TypeSuivi::AO_PANIER:
                case TypeSuivi::AO_PANIER_GLOB:
                    $tab_type = array(
                        array(
                            '!code' => 'TOUTES',
                            '!texte' => trad('Quelconque')
                        ),
                        array(
                            '!code' => 'VALPREP',
                            '!texte' => trad('Validation préparation')
                        ),
                        array(
                            '!code' => 'VALRES',
                            '!texte' => trad('Validation résultat')
                        )
                    );
                    
                    break;
                case TypeSuivi::DA: // Pour les DA
                case TypeSuivi::CRB:
                case TypeSuivi::CDE:
                case TypeSuivi::BR:
                case TypeSuivi::CdeToRate:
                    
                    $tab_type = array(
                        array(
                            '!code' => 'TOUTES',
                            '!texte' => trad('Quelconque')
                        ),
                        array(
                            '!code' => 'VALID',
                            '!texte' => trad('Validation ')
                        ),
                        array(
                            '!code' => 'LIV',
                            '!texte' => trad('Livraison')
                        )
                    );
                    
                    break;
                
                case TypeSuivi::BS: // Pour les BS
                    $tab_type = array(
                        array(
                            '!code' => 'TOUTES',
                            '!texte' => trad('Quelconque')
                        ),
                        array(
                            '!code' => 'VALID',
                            '!texte' => trad('Validation ')
                        )
                    );
                    break;
                
                case TypeSuivi::BAP: // Pour les BAP
                    
                    $tab_type = array(
                        array(
                            '!code' => 'TOUTES',
                            '!texte' => trad('Quelconque')
                        ),
                        array(
                            '!code' => 'ENREGISTREMENT',
                            '!texte' => trad('Enregistrement')
                        )
                    );
                    break;
            }
            return $tab_type;
        }
        
        $tab_periode = array(
            array(
                '!code' => 'SIX_MOIS',
                '!texte' => trad('6 mois')
            ),
            array(
                '!code' => 'TROIS_MOIS',
                '!texte' => trad('3 mois')
            ),
            array(
                '!code' => 'UN_MOIS',
                '!texte' => trad('1 mois')
            ),
            array(
                '!code' => 'DEUX_SEMAINES',
                '!texte' => trad('2 semaines')
            ),
            array(
                '!code' => 'UNE_SEMAINE',
                '!texte' => trad('1 semaine')
            ),
            array(
                '!code' => 'PERIODE',
                '!texte' => trad('DATE')
            )
        );
        
        return $tab_periode;
    }

    public static function &getListeOrdreRupture($type_suivi, $numero = 0)
    {
        $tabResult = array(
            array(
                '!code' => 'TRI_ASC',
                '!texte' => trad('Tri ascendant')
            ),
            array(
                '!code' => 'TRI_DESC',
                '!texte' => trad('Tri descendant')
            )
        );
        switch ($type_suivi) {
            case TypeSuivi::SignDA:
            case TypeSuivi::DelSignDA:
            case TypeSuivi::SignCDE:
            case TypeSuivi::DelSignCDE:
            case TypeSuivi::SignBAP:
            case TypeSuivi::DelSignBAP:
                if (1 == $numero) {
                    $tabResult[] = array(
                        '!code' => 'TRI_ASC_MNT',
                        '!texte' => trad('Tri ascendant par montant')
                    );
                    $tabResult[] = array(
                        '!code' => 'TRI_DESC_MNT',
                        '!texte' => trad('Tri descendant par montant')
                    );
                }
                break;
        }
        
        return $tabResult;
    }

    public static function &getListeTriGeneral()
    {
        $tabResult = array(
            array(
                '!code' => 'TRI_DOC_ASC',
                '!texte' => trad('N° de doc ascendant')
            ),
            array(
                '!code' => 'TRI_DOC_DESC',
                '!texte' => trad('N° de doc descendant')
            ),
            array(
                '!code' => 'TRI_MNT_ASC',
                '!texte' => trad('Montant ascendant')
            ),
            array(
                '!code' => 'TRI_MNT_DESC',
                '!texte' => trad('Montant descendant')
            )
        );
        return $tabResult;
    }

    public static function &getListeTypeDA()
    {
        $tab_type = array(
            array(
                '!code' => 'TOUTES',
                '!texte' => trad('Toutes')
            ),
            array(
                '!code' => 'C',
                '!texte' => trad('Chiffrage')
            ),
            array(
                '!code' => 'E',
                '!texte' => trad('Exécution')
            )
        );
        
        return $tab_type;
    }

    public static function &getListeTypeBR()
    {
        $tab_type = array(
            array(
                '!code' => 'TOUS',
                '!texte' => trad('Tous')
            ),
            array(
                '!code' => 'R',
                '!texte' => trad('Réception')
            ),
            array(
                '!code' => 'A',
                '!texte' => trad('Retour')
            )
        );
        
        return $tab_type;
    }

    /**
     * Fonction retournant un tableau contenant la liste des type de PJ
     *
     * @return array
     */
    public static function &getListeTypePJ($option_votre_choix = false, $option_tous = true)
    {
        if ($option_votre_choix)
            $tab_type[] = array(
                '!code' => '',
                '!texte' => trad('Sélectionnez un type')
            );
        
        if ($option_tous)
            $tab_type[] = array(
                '!code' => '',
                '!texte' => trad('Tous')
            );
        
        if ($listePJ = SqlInfo::rqGetAllTypePJ()->TrouveTous())
            foreach ($listePJ as & $pj)
                $tab_type[] = array(
                    '!code' => & $pj['PJ_TYPE'],
                    '!texte' => trad($pj['PJLIBELLE'])
                );
        
        return $tab_type;
    }

    /**
     * Fonction retournant un tableau contenant la liste des type de PJ
     *
     * @return array
     */
    public static function &getListeTypeDocRattachement()
    {
        $tab_type = array(
            array(
                '!code' => '',
                '!texte' => trad('Tous')
            ),
            array(
                '!code' => 'DA_ENTET',
                '!texte' => trad("Demande d'achat")
            ),
            array(
                '!code' => 'AO_ENTET',
                '!texte' => trad("Appel d'offre")
            ),
            array(
                '!code' => 'CA_ENTET',
                '!texte' => trad('Commande')
            ),
            array(
                '!code' => 'BR_RECEP',
                '!texte' => trad('Bon de réception/retour')
            ),
            array(
                '!code' => 'FAC_ENT',
                '!texte' => trad('Facture')
            ),
            array(
                '!code' => 'CENTRE',
                '!texte' => trad('Centre')
            ),
            array(
                '!code' => 'FOURNISS',
                '!texte' => trad('Fournisseur')
            )
        );
        
        return $tab_type;
    }
}
