<?php
/**
 *  Ce script est un exemple d'utilisation de la nouvelle classe destinée à gérer les popups
 *  de navigation sur les données.
 *  Ici, la popup porte sur les fournisseurs.
 */

// On inclut tous les scripts nécessaires
require_once 'application/class/class_panier.php';
require_once 'application/config/boot_init.php';

// Lorsque la popup est appelée
if ('initPopup' === getValue('action')) {
    // On insère l'entête PHP qui contient les liens vers les source scripts javascripts
    // Le mode popup est défini à true afin de masquer le bandeau d'entête
    
    // On créé l'objet Popup et on pass en paramètre l'identifiant de la popup, un type de popup doit donc porté un identifiant unique
    // on passe en 2ème paramètre le nom du script php jouant le rôle de controlleur qui prendra en charge les évènements déclenchés sur la popup
    $monBrowse = new PopupBrowse(getValue('popup_id'), $_SERVER['SCRIPT_NAME']);
    
    // On définit le titre de la popup. Le titre sera affiché.
    $monBrowse->setPopupTitle(trad('Liste des fournisseurs'));
    
    // On définit les champs de recherche proposés à l'utilisateur, on peut en ajouter autant qu'on le souhaite.
    // IMPORTANT : 1er paramètre : Le nom des champs ajoutés doit correspondre au nom des colonnes sql utilisés dans la requête de recherche.
    // 2ème paramètre : On définit le libellé du champ qui sera iniqué à l'utilisateur
    
    if ($result = SqlParam::rqSelectParFicheOf('FOURN')->TrouveTous()) {
        /**
         * Spec 3599
         * NE PAS METTRE DE REFERENCE A CE NIVEAU CAR ON VA PEUT ETRE INSERER UNE DONNEE DANS Result
         */
        foreach ($result as $index => $element)
            if ($element['CODE_CHMP'] == 'MTMAXCC') {
                $addElement1 = $element;
                $addElement1['CODE_CHMP'] = 'MTMAXCCCAT';
                $addElement1['LIB_CHP_LISTE'] = trad('Max e-proc / cat.');
                
                // Inversion normal car la suite logique ecran doit etre MTMAXCC,MTMAXCCCAT,MTMAXCCHCT
                insertArray($result, $addElement1, $index + 1);
                break;
            }
        
        $colonne = array_merge(array(
            array(
                'ATTR_CHP' => 'A',
                'MASQ_CHP' => '6',
                'CODE_CHP' => 'ACTION',
                'LIB_CHP_LISTE' => 'Action',
                '_triable' => false
            )
        ), $result);

        $i=0;
        foreach($colonne as $key => $value)
        {
            if(strpos($value['CODE_CHP'] , 'CS|')===0)
            {
                $colonne[$key]['CODE_CHP'] = 'CS'.$i;
                $i++;
            }
        }

        $monBrowse->calculColonne($colonne);
    }
    
    $monBrowse->addNewSearchField('CODE', trad('Code du fournisseur'));
    $monBrowse->addNewSearchField('RS', trad('Nom'));
    $monBrowse->addNewSearchField('CPOSTAL', trad('Code postal'));
    $monBrowse->addNewSearchField('VILLE', trad('Ville'));
    //$monBrowse->addNewSearchField('CODLST', trad('Short list'));

    
    // On définit ici les colonnes qui seront affichées dans le résultats des recherches.
    // On peut définir ici autant de colonne qu'on le souhaite. Générallement, on propose dans l'affichage du résultat au moins toutes
    // les colonnes correspondantes aux champs de recherche
    // 1er paramètre : Le libellé de la colonne, 2ème paramètre : Le nom du champ sql tel qu'il est présent dans la requête sql
    
    // On définit ici les éléments cibles à utilisés lors de la sélection d'une ligne de résultat par l'utilisateur
    $monBrowse->setTargetFormName(getValue('formName')); // On définit le nom du formulaire possédant le champ de saisi de la valeur sélectionnée depuis la popup
    $monBrowse->setTargetImputField(getValue('inputField')); // On définit le nom du champ de saisi
    $monBrowse->setTargetLabelField(getValue('labelField')); // On définit (optionel) le nom du champ qui contiendra le libellé de la valeur saisie
    
    if ($_SESSION['Session_CreatFournOccas'] || Menu::allMenu) {
        $action = array(
            '!action' => "OpenPopup('creation_frs.php?action=creationFrs','popup_creat_frs', 700, 700);",
            '!texte' => trad('Créer un fournisseur')
        );
        $monBrowse->addAction('ACTION', $action);
    }
    
    $panierEntete = new PanierEntete();
    $panierEntete->getEntetePanier($_SESSION['id_panier'], $_SESSION['id_user']);
    
    if (Param::isFrsProspectVisible() && 'C' == $panierEntete->getCHIF_EXEC())
        $monBrowse->addAction('SELECT_TYPE_FRS', '');
    
    // Si la liste des fournisseurs est appelé dans le cadre d'un panier et si le panier est du type exécution alors on enregistre ce contexte car il joue comme filtre sur la
    if (getValue('popup_contexte') == 'panier' && 'E' == $panierEntete->getCHIF_EXEC())
        $monBrowse->setContexte('panier_execution');
    
    $monBrowse->addAction('CLOSE_POPUP', 'window.closePopup();');
    
    $monBrowse->setIsActionClick(true);
    $monBrowse->setBackCtrl(getValue('backCtrl'));
    $monBrowse->setBackMode(getValue('backMode'));
    $monBrowse->setBackAction(getValue('backAction'));
    $monBrowse->setBackData(array(
        'CODE'
    ));
    $monBrowse->setBackPopup(getValue('backPopup'));
    $monBrowse->setBackForm(getValue('backForm'));
    $monBrowse->setBackField(getValue('backField'));
    
    $monBrowse->setIsActionClick(true);
    
    // La popup précédemment construite peut maintenant être affichée
    $monBrowse->setIndiceTriColonne(2);
    $monBrowse->buildXML(); // On construite le tableau de données qui sera fusionné avec la feuille de style XSL
    
    $genXsl = new GenXslt(true);
    $array = $monBrowse->getArrayXmlForXsl();
    $array['popup_action']['ShrotList'] = 1;
    echo $genXsl->XslHtml('application/xsl/template_browse/browseCore.xsl', $array);
    
    PopupBrowse::execSearch('btnSearch', false);
    
    // TRES IMPORTANT : Afin de pouvoir réutiliser la popup dans le script controleur on serialize l'objet. Il pourra être ainsi rapellé par la suite.
    $_SESSION[getValue('popup_id')] = serializeSecure($monBrowse);
} elseif ('initListeFrs' == getValue('action')) {
    // On créé l'objet Popup et on pass en paramètre l'identifiant de la popup, un type de popup doit donc porté un identifiant unique
    // on passe en 2ème paramètre le nom du script php jouant le rôle de controlleur qui prendra en charge les évènements déclenchés sur la popup
    $popup_id = getValue('popup_id');
    $monBrowse = new PopupBrowse($popup_id, $_SERVER['SCRIPT_NAME']);
    
    // DOSSIER 31460 : ajout titre pour la Liste des fournisseurs venant du menu left
    // On définit le titre de la popup. Le titre sera affiché.
    $monBrowse->setPopupTitle(trad('Liste des fournisseurs'));
    $monBrowse->setContexte('liste_fourniss_menu');
    
    // On définit le titre de la popup. Le titre sera affiché.
    if ($result = SqlParam::rqSelectParFicheOf('FOURN')->TrouveTous()) {
        /**
         * Spec 3599
         * NE PAS METTRE DE REFERENCE A CE NIVEAU CAR ON VA PEUT ETRE INSERER UNE DONNEE DANS Result
         */
        foreach ($result as $index => $element)
            if ($element['CODE_CHP'] == 'MTMAXCC') {
                $addElement1 = $element;
                $addElement1['CODE_CHP'] = 'MTMAXCCCAT';
                $addElement1['LIB_CHP_LISTE'] = trad('Max e-proc / cat.');
                
                // Inversion normal car la suite logique ecran doit etre MTMAXCC,MTMAXCCCAT,MTMAXCCHCT
                insertArray($result, $addElement1, $index + 1);
                break;
            }
        $colonne = array_merge(array(
            array(
                'ATTR_CHP' => 'A',
                'MASQ_CHP' => '6',
                'CODE_CHP' => 'ACTION',
                'LIB_CHP_LISTE' => 'Action',
                '_triable' => false
            )
        ), $result);

        $i=0;
        foreach($colonne as $key => $value)
        {
            if(strpos($value['CODE_CHP'] , 'CS|')===0)
            {
                $colonne[$key]['CODE_CHP'] = 'CS'.$i;
                $i++;
            }
        }

        $monBrowse->calculColonne($colonne);
    }
        
    // On définit ici les colonnes qui seront affichées dans le résultats des recherches.
    // On peut définir ici autant de colonne qu'on le souhaite. Générallement, on propose dans l'affichage du résultat au moins toutes
    // les colonnes correspondantes aux champs de recherche
    // 1er paramètre : Le libellé de la colonne, 2ème paramètre : Le nom du champ sql tel qu'il est présent dans la requête sql
    $monBrowse->addNewSearchField('CODE', trad('Code du fournisseur'));
    $monBrowse->addNewSearchField('RS', trad('Nom'));
    $monBrowse->addNewSearchField('CPOSTAL', trad('Code postal'));
    $monBrowse->addNewSearchField('VILLE', trad('Ville'));
    // $monBrowse->addNewSearchField('CODLST', trad('Short list'));
    
    if ($_SESSION['Session_CreatFournOccas'] || Menu::allMenu) {
        $action = array(
            '!action' => "OpenPopup('creation_frs.php?action=creationFrs','popup_creat_frs', 700, 700);",
            '!texte' => trad('Créer un fournisseur')
        );
        $monBrowse->addAction('ACTION', $action);
    }
    
    if (Param::isFrsProspectVisible())
        $monBrowse->addAction('SELECT_TYPE_FRS', '');
    
    $monBrowse->setIsActionClick(false);
    
    // La popup précédemment construite peut maintenant être affichée
    $monBrowse->setIndiceTriColonne(2);
    $monBrowse->buildXML(); // On construite le tableau de données qui sera fusionné avec la feuille de style XSL
    
    $genXsl = new GenXslt(true);
    
    $array = $monBrowse->getArrayXmlForXsl();
    $array['popup_action']['ShrotList'] = 1;
    Affichage::innerHTMLPointeur(getValue('ancrage'), $genXsl->XslHtml('application/xsl/template_browse/browseCore.xsl', $array));
    
    PopupBrowse::execSearch('btnSearch', true);
    
    // TRES IMPORTANT : Afin de pouvoir réutiliser la popup dans le script controleur on serialize l'objet. Il pourra être ainsi rapellé par la suite.
    $_SESSION[$popup_id] = serializeSecure($monBrowse);
} elseif ('initListeNotationFrs' == getValue('action')) {
    // On créé l'objet Popup et on pass en paramètre l'identifiant de la popup, un type de popup doit donc porté un identifiant unique
    // on passe en 2ème paramètre le nom du script php jouant le rôle de controlleur qui prendra en charge les évènements déclenchés sur la popup
    $monBrowse = new PopupBrowse(getValue('popup_id'), $_SERVER['SCRIPT_NAME']);
    
    // On définit le titre de la popup. Le titre sera affiché.
    $monBrowse->setPopupTitle(trad('Liste des notations fournisseurs'));
    
    // On définit les champs de recherche proposés à l'utilisateur, on peut en ajouter autant qu'on le souhaite.
    // IMPORTANT : 1er paramètre : Le nom des champs ajoutés doit correspondre au nom des colonnes sql utilisés dans la requête de recherche.
    // 2ème paramètre : On définit le libellé du champ qui sera iniqué à l'utilisateur
    $monBrowse->addNewSearchField('CODE', trad('Code du fournisseur'));
    $monBrowse->addNewSearchField('RS', trad('Nom'));
    $monBrowse->addNewSearchField('CPOSTAL', trad('Code postal'));
    $monBrowse->addNewSearchField('VILLE', trad('Ville'));
    $monBrowse->addNewSearchField('COD_PER', trad('Période'));
    // $monBrowse->addNewSearchField('CODLST', trad('Short list'));
    
    // On définit ici les colonnes qui seront affichées dans le résultats des recherches.
    // On peut définir ici autant de colonne qu'on le souhaite. Générallement, on propose dans l'affichage du résultat au moins toutes
    // les colonnes correspondantes aux champs de recherche
    // 1er paramètre : Le libellé de la colonne, 2ème paramètre : Le nom du champ sql tel qu'il est présent dans la requête sql
    $monBrowse->addNewColumn(trad('Code'), 'CODE', 'asc', '15px', true, 'A');
    $monBrowse->addNewColumn(trad('Nom'), 'RS', 'asc', '30px', true, 'A');
    $monBrowse->addNewColumn(trad('Code postal'), 'CPOSTAL', 'asc', '15px', true, 'A');
    $monBrowse->addNewColumn(trad('Ville'), 'VILLE', 'asc', '20px', true, 'A');
    $monBrowse->addNewColumn(trad('Période'), 'COD_PER', 'asc', '10px', true, 'A');
    $monBrowse->addNewColumn(trad('Note'), 'NOTMOYFO', 'asc', '10px', true, 'A');
    
    $monBrowse->setIsActionClick(false);
    
    // La popup précédemment construite peut maintenant être affichée
    $monBrowse->buildXML(); // On construite le tableau de données qui sera fusionné avec la feuille de style XSL
    
    $genXsl = new GenXslt();
    Affichage::innerHTMLPointeur(getValue('ancrage'), $genXsl->XslHtml('application/xsl/template_browse/browseCoreFournisseurs.xsl', $monBrowse->getArrayXmlForXsl()));
    
    PopupBrowse::execSearch('btnSearch', true);
    
    // TRES IMPORTANT : Afin de pouvoir réutiliser la popup dans le script controleur on serialize l'objet. Il pourra être ainsi rapellé par la suite.
    $_SESSION[getValue('popup_id')] = serializeSecure($monBrowse);
}// Si l'utilisateur clique sur le bouton "Rechercher"
elseif ('search' === getValue('action')) {
    
    $popup_id = getValue('popup_id');
    // On récupère l'objet popup créé prcédemment en le déserialisant
    $monBrowse = unserializeSecure($_SESSION[$popup_id]);
    
    // On appele la fonction de recherche en passant en paramètre les données GET + POST
    $resultat = $monBrowse->search(getValueAll($_REQUEST));

    // On affiche sur la popup le nombre de résultats trouvés
    if (RechercheAvanceeGestFourniss::$popup_id == $popup_id) {
        $ecranRechercheAvancee = new RechercheAvanceeGene($popup_id);
        $estInitialise = $ecranRechercheAvancee->GetEstInitialise();
        if (2 == $estInitialise) {
            $countData = $monBrowse->getCountData();
            if (0 !== $countData && ! is_null($countData)) {
                $monBrowse->setCountData($countData);
                $monBrowse->setCountEncours($countData);
                $ecranRechercheAvancee->SetCountData($countData);
                $ecranRechercheAvancee->Sauver();
            }
        } elseif (4 <= $estInitialise) {
            $countEncours = $monBrowse->getCountEncours();
            $countData = $ecranRechercheAvancee->GetCountData();
            $monBrowse->setCountData($countData);
            $monBrowse->setCountEncours($countEncours);
        }
    } else
        $estInitialise = 0;
    
    $monBrowse->showNbResult($resultat['resultat']);
    
    // On créé un nouvel objet : un objet pagination.
    // On lui passe en paramètre : le tableau de résultat de la recherche, le nombre de résultats affiché par page, le numéro de la page en cours
    $Pagination = new Pagination($resultat['resultat'], $monBrowse);
    
    if ($monBrowse->getIsActionClick()) {
        // On définit ici les actions postionnées sur les lignes de résultat
        // On peut ajouter autant d'action qu'on le souhaite sur le déclencheur onclick
        $Pagination->setClickOnLine(true, 'value', $monBrowse->getTargetImputField(), 'CODE', true); // action permettant d'insérer la valeur de la ligne sélectionnée dans le champ de saisi
        $Pagination->setClickOnLine(false, 'innerHTML', $monBrowse->getTargetLabelField(), 'RS', true); // action permettant d'afficher le libellé de la valeur saisi
        
        $Pagination->setActionBack($monBrowse->getBackMode(), $monBrowse->getBackCtrl(), $monBrowse->getBackAction(), $monBrowse->getBackData(), $monBrowse->getBackPopup(), $monBrowse->getBackForm(), $monBrowse->getBackField(), true);
    }
    
    $Pagination->setWidth($monBrowse);
    
    $liste_fournisseurs = $Pagination->getArrayPageElements($monBrowse);
    $requeteIntuition = new RechercheArticleMetier(null, '', '', '');
    
    if (array_key_exists('resultat', $liste_fournisseurs) && is_array($liste_fournisseurs['resultat']) && (RechercheAvanceeGestFourniss::$popup_id != $popup_id || $estInitialise > 3)) {

        // On prépare certaines valeurs / listes de valeur
        if (RechercheAvanceeGestFourniss::$popup_id == $popup_id) {
            
            $listeInfosPays = ListeComboGeneral::getArrayListePays();
            $CODE_TABLE = 'FOURNISS';
            $reqSqlDocCateg = SqlGestFourniss::rqGetFournissListeCategories($CODE_TABLE)->TrouveTous();
            $reqSqlDocsCanevas = SqlGestFourniss::rqGetFournissListeDocsRattaches()->TrouveTous();
            $infosDocCritique = array();
            $infosCateg = array();
            if (is_array($reqSqlDocCateg))
                foreach ($reqSqlDocCateg as & $values) {
                    $infosCateg[$values['CODE_CAT']] = BoolSql($values['CRITIQUE']);
                    if (BoolSql($values['CRITIQUE'])) {
                        // Pour cette catégorie, critique, on liste les documents
                        $CODE_CAT = $values['CODE_CAT'];
                        foreach ($reqSqlDocsCanevas as & $docOblig)
                            if ($CODE_CAT == $docOblig['CATEGORIE'])
                                $infosDocCritique[$docOblig['TITRE']] = $CODE_CAT;
                    }
                }
            $nbCategCritiques = count($infosDocCritique);
            // On prépare le délai de relance
            $delaiRelance = GestFourniss_Docs_Ratt::GetDelaiRelanceDocument();
        }
        
        $licenceAlg = Param::IsLicenceALGValide();
        $lienFournisseurSociete = Param::AllParamsGetValue('LIEN_FOURNISSEUR_SOCIETE');
        $societeCourante = $_SESSION['Session_SocUsr'];
        $idBase = 1;
        
        // Dossier 26787
        $iconePresenceCatalogue = Param::isSearchByCatalogue();
        
        foreach ($liste_fournisseurs['resultat'] as &$frs)
            if (! is_null($frs)) {
                $code_frs = $frs['CODE'];
                $code_frs_enc = urlencode($code_frs);
                $frs['fiche_frs'] = "OpenPopup('ctrl_popup_frs.php?action=afficherPopupFrs&contexte=ListeFournisseurs&code_frs={$code_frs_enc}','win_popup_frs',800,600);";
                
                // Spec 3599
                if (! BoolSql($frs['SEUILEPDIF']))
                    $frs['MTMAXCCHCT'] = '';
                
                // Quand le type de liste est celui des notations de fournisseur on ajoute une action permettant d'afficher le détail de la notation
                if ('NOTATION_FOURNISS' == $popup_id)
                    $frs['detail_notation_frs'] = "OpenPopup('ctrl_popup_frs.php?action=afficherPopupNotationFrs&code_frs={$code_frs_enc}&periode={$frs['COD_PER']}','win_popup_frs',800,600);";
                
                // Spec 3700
                $frs['lien_societe'] = array();
                $frs['lien_societe']['!existe'] = $lienFournisseurSociete;
                
                if ($lienFournisseurSociete) {
                    $lienExiste = false;
                    $reqSqlLien = SqlGestFourniss::rqGetFournissLienSociete('F', $code_frs)->TrouveTous();
                    if (is_array($reqSqlLien)) {
                        $msgLienSociete = '';
                        foreach ($reqSqlLien as $lienSociete) {
                            if ($lienSociete['CODE_STE'] != $societeCourante) {
                                if ('' !== $msgLienSociete)
                                    $msgLienSociete .= ', ';
                                $reqSqlSociete = & SqlUsers::rqGetInfoForSTE($lienSociete['CODE_STE'])->Trouve1();
                                $libSociete = (is_array($reqSqlSociete)) ? $reqSqlSociete['RAIS_SOC'] : Trad('n/a');
                                $msgLienSociete .= $lienSociete['CODE_STE'] . ' (' . $libSociete . ')';
                            }
                        }
                        if ('' != $msgLienSociete)
                            $msgLienSociete = strBuild(Trad('Présent sur les sociétés suivantes @1@'), $msgLienSociete);
                        
                        $frs['lien_societe']['!message'] = $msgLienSociete;
                    }
                }
                
                // Spec 3615
                if (array_key_exists('CODE', $frs) && (RechercheAvanceeGestionFournisseurs::$popup_id == $popup_id || RechercheAvanceeGestFourniss::$popup_id == $popup_id)) {
                    // quand on est sur la gestion des fournisseurs, on met un lien pour afficher la fiche
                    if (RechercheAvanceeGestionFournisseurs::$popup_id == $popup_id)
                        $frs['JSevent']['onclick']['action'] = RechercheAvanceeGestionFournisseurs::JavaScriptAfficherFicheFournisseur($code_frs_enc);
                    else
                        $frs['JSevent']['onclick']['action'] = RechercheAvanceeGestFourniss::JavaScriptAfficherFicheFournisseur($code_frs_enc);
                    
                    // On affiche correctement le type des fournisseurs
                    $typeFrs = $frs['TYPEFOURNISSEUR'];
                    switch ($typeFrs) {
                        case 'PROSPECT':
                            $frs['TYPEFOURNISSEUR'] = Trad('Prospect');
                            break;
                        case 'FOURNISSEUR':
                            $frs['TYPEFOURNISSEUR'] = Trad('Référencé');
                            break;
                        case 'OCCASIONNEL':
                            $frs['TYPEFOURNISSEUR'] = Trad('Occasionnel');
                            break;
                    }
                    
                    if ($licenceAlg) {
                        // On compte tous les documents du fournisseur
                        $reqSqlDocs = SqlGestFourniss::rqGetFournissTousDocRattaches($code_frs)->TrouveTous();
                        if (! is_array($reqSqlDocs))
                            $reqSqlDocs = array();
                        
                        // On compte tous les documents du canevas
                        if (is_array($reqSqlDocsCanevas))
                            $nbDocsCanevas = count($reqSqlDocsCanevas);
                        else
                            $nbDocsCanevas = 0;
                        
                        if (0 == $nbDocsCanevas) {
                            // Pas de canevas, pas de traitement
                        } else {
                            // Il y a un canevas
                            
                            // Valeurs par défaut pour le fournisseur en cours
                            $etatDocsCritiques = GestFourniss_Docs_Ratt::$etat_a_jour;
                            $etatDocs = GestFourniss_Docs_Ratt::$etat_a_jour;
                            
                            foreach ($reqSqlDocsCanevas as & $docCanevas) {
                                $CATEGORIE = $docCanevas['CATEGORIE'];
                                $CAT_CRITIQUE = $infosCateg[$CATEGORIE];
                                $TITRE = $docCanevas['TITRE'];
                                $infoDocPresent = null;
                                
                                // Est-ce qu'un document existe pour cet élément du canevas?
                                foreach ($reqSqlDocs as & $docPresent)
                                    if ($docPresent['TITRE'] == $TITRE && $docPresent['CODE_CAT'] == $CATEGORIE) {
                                        $infoDocPresent = $docPresent;
                                        break;
                                    }
                                
                                if (! is_null($infoDocPresent)) {
                                    // Le doc du canevas est présent
                                    if (! BoolSql($docPresent['DOC_INUTILE'])) {
                                        // Le doc n'est pas sans objet
                                        $etatTmp = GestFourniss_Docs_Ratt::BuildXmlEtatFichier($docPresent['NOM_ORI'], $docPresent['NOM_FIC'], $docPresent['EST_VALIDE'], $docPresent['DT_VALID'], $docPresent['DT_SERVEUR'], $docPresent['DOC_INUTILE'], $delaiRelance);
                                        switch ($etatTmp) {
                                            // On modifie l'état de l'affichage selon le document courant
                                            case GestFourniss_Docs_Ratt::$etat_absent:
                                            case GestFourniss_Docs_Ratt::$etat_perime:
                                                if ($CAT_CRITIQUE)
                                                    switch ($etatDocsCritiques) {
                                                        case GestFourniss_Docs_Ratt::$etat_a_jour:
                                                        case GestFourniss_Docs_Ratt::$etat_proche_peremption:
                                                            $etatDocsCritiques = GestFourniss_Docs_Ratt::$etat_docs_manquants;
                                                            break;
                                                        case GestFourniss_Docs_Ratt::$etat_docs_manquants:
                                                            // Pas de changement
                                                            break;
                                                    }
                                                else
                                                    switch ($etatDocs) {
                                                        case GestFourniss_Docs_Ratt::$etat_a_jour:
                                                        case GestFourniss_Docs_Ratt::$etat_proche_peremption:
                                                            $etatDocs = GestFourniss_Docs_Ratt::$etat_docs_manquants;
                                                            break;
                                                        case GestFourniss_Docs_Ratt::$etat_docs_manquants:
                                                            // Pas de changement
                                                            break;
                                                    }
                                                break;
                                            case GestFourniss_Docs_Ratt::$etat_proche_peremption:
                                                if ($CAT_CRITIQUE)
                                                    switch ($etatDocsCritiques) {
                                                        case GestFourniss_Docs_Ratt::$etat_a_jour:
                                                        case GestFourniss_Docs_Ratt::$etat_proche_peremption:
                                                            $etatDocsCritiques = GestFourniss_Docs_Ratt::$etat_proche_peremption;
                                                            break;
                                                        case GestFourniss_Docs_Ratt::$etat_docs_manquants:
                                                            // Pas de changement
                                                            break;
                                                    }
                                                else
                                                    switch ($etatDocs) {
                                                        case GestFourniss_Docs_Ratt::$etat_a_jour:
                                                        case GestFourniss_Docs_Ratt::$etat_proche_peremption:
                                                            $etatDocs = GestFourniss_Docs_Ratt::$etat_proche_peremption;
                                                            break;
                                                        case GestFourniss_Docs_Ratt::$etat_docs_manquants:
                                                            // Pas de changement
                                                            break;
                                                    }
                                                
                                                break;
                                        }
                                    }
                                } else {
                                    // Le doc du canevas est absent
                                    if ($CAT_CRITIQUE)
                                        $etatDocsCritiques = GestFourniss_Docs_Ratt::$etat_docs_manquants;
                                    else
                                        $etatDocs = GestFourniss_Docs_Ratt::$etat_docs_manquants;
                                    // break;
                                }
                            }
                            echo '';
                            // Pour le fournisseur en cours, on alimente les données xml
                            switch ($etatDocs) {
                                case GestFourniss_Docs_Ratt::$etat_docs_manquants:
                                    $frs['DOCUMENT'] = array(
                                        '!TOOLTIP' => Trad('Anomalie sur les documents complémentaires'),
                                        '!ETAT' => GestFourniss_Docs_Ratt::$etat_docs_manquants
                                    );
                                    break;
                                case GestFourniss_Docs_Ratt::$etat_proche_peremption:
                                    $frs['DOCUMENT'] = array(
                                        '!TOOLTIP' => Trad('Anomalie sur les documents complémentaires'),
                                        '!ETAT' => GestFourniss_Docs_Ratt::$etat_proche_peremption
                                    );
                                    break;
                                case GestFourniss_Docs_Ratt::$etat_a_jour:
                                    $frs['DOCUMENT'] = array(
                                        '!TOOLTIP' => Trad('Documents complémentaires à jour'),
                                        '!ETAT' => GestFourniss_Docs_Ratt::$etat_a_jour
                                    );
                                    break;
                            }
                            
                            switch ($etatDocsCritiques) {
                                case GestFourniss_Docs_Ratt::$etat_docs_manquants:
                                    $frs['DOCUMENT_CRITIQUE'] = array(
                                        '!TOOLTIP' => Trad('Anomalie sur les documents critiques'),
                                        '!ETAT' => GestFourniss_Docs_Ratt::$etat_docs_manquants
                                    );
                                    break;
                                case GestFourniss_Docs_Ratt::$etat_proche_peremption:
                                    $frs['DOCUMENT_CRITIQUE'] = array(
                                        '!TOOLTIP' => Trad('Anomalie sur les documents critiques'),
                                        '!ETAT' => GestFourniss_Docs_Ratt::$etat_proche_peremption
                                    );
                                    break;
                                case GestFourniss_Docs_Ratt::$etat_a_jour:
                                    $frs['DOCUMENT_CRITIQUE'] = array(
                                        '!TOOLTIP' => Trad('Documents critiques à jour'),
                                        '!ETAT' => GestFourniss_Docs_Ratt::$etat_a_jour
                                    );
                                    break;
                            }
                        }
                    }
                    
                    // Retrouver le code pays
                    $LIB_PAYS = '';
                    if (is_array($listeInfosPays))
                        foreach ($listeInfosPays as & $infoPays)
                            if ($infoPays['!value'] == $frs['CODE_PAYS']) {
                                $LIB_PAYS = $infoPays['!texte'];
                                break;
                            }
                    if ('' == $LIB_PAYS)
                        $LIB_PAYS = $frs['CODE_PAYS'];
                    $frs['LIB_PAYS'] = $LIB_PAYS;
                    
                    // Menu contextuel
                    $frs['MENU'][] = GestFourniss_Identity::BuildXmlMenuContextuel($code_frs, $typeFrs, $idBase);
                    $idBase ++;
                    
                    // Gestion des favoris
                    $idFavori = 'IMG_FAVORI_' . $idBase;
                    $frs['FAVORI'] = array(
                        '!id' => $idFavori,
                        '!EST_FAVORI' => BoolSql($frs['EST_FAVORI']),
                        '!onclick' => GestFourniss::UrlChangeFavori($code_frs, $idFavori)
                    );
                    
                    // Gestion du partenaire ALG
                    if ($licenceAlg) {
                        if (! BoolSql($frs['EST_PARTENAIRE_ALG']) && '' == $frs['StatutInvitation'])
                            $frs['INVITER_ALG'] = array(
                                '!onclick' => 'if (window.confirm("' . cnv_to_javascript(Trad('Confirmez-vous l\'invitation du fournisseur ') . $frs['RS'] . Trad(' sur la plateforme ALG ?')) . '")) {CallUrl(\'' . GestFourniss::$page_php . '?action=InviterALG&codeFrs=' . urlencode($frs['CODE']) . '\');}'
                            );
                        $frs['DateInvitation'] = convertDateSqlToFr($frs['DateInvitation']);
                    }
                }
                
                if (RechercheAvanceeGestionFournisseurs::$popup_id != $popup_id && RechercheAvanceeGestFourniss::$popup_id != $popup_id) {
                    if (array_key_exists('NB_DOC_ATT', $frs) && $frs['NB_DOC_ATT'] > 0 || 1 == $_SESSION['DOC_RAT'])
                        $frs['visuDocRatt'] = "OpenPopup('suivi_doc.php?action=visuDocRatt&typeItem=FOURNISS&codeItem=" . $code_frs . "','popup_visu_doc_ratt',800, 500);";
                    
                    $Fournisseur = new Fournisseur($frs['CODE']);
                    $Fournisseur->addInfoBulleFraisPort($frs);
                    // Cde eproc interdite sur hors catalogue 3599
                    $frs['NOCCGEN'] = BoolSql($frs['NOCCGEN']);
                    
                    $result_rech_intuition = $requeteIntuition->InfoArt(null, $code_frs, 1, true);
                    
                    // Pour etde ET Bouygues rien
                    if ($_SESSION['Session_NumClient'] == 37 || $_SESSION['Session_NumClient'] == 28 || $_SESSION['Session_NumClient'] == 35) {
                    } else if ($iconePresenceCatalogue && ($result_rech_intuition))
                        $frs['presenceCatalogue'] = true;
                    else
                        $frs['presenceCatalogue'] = false;
                    
                    /**
                     * Traitement des valeurs MTMAXCC / MTMAXCCHCT
                     */
                    if (BoolSql($frs['SEUILEPDIF'])) {
                        $frs['MTMAXCCCAT'] = $frs['MTMAXCC'];
                        $frs['MTMAXCC'] = '';
                    } else {
                        $frs['MTMAXCCCAT'] = '';
                        $frs['MTMAXCCHCT'] = '';
                    }
                    
                    //29263
                    $reqSqlDocs = SqlGestFourniss::rqGetFournissTousDocRattaches($code_frs)->TrouveTous();
                    if (! is_array($reqSqlDocs))
                        $reqSqlDocs = array();

                    if(count($reqSqlDocs)>0)
                        $frs['docRattPresent'] = true;
                    else
                        $frs['docRattPresent'] = false;
                }
                
            }
    }
    if ('FOURNISS' == $popup_id || RechercheAvanceeGestionFournisseurs::$popup_id == $popup_id)
        $fichier_xsl = 'application/xsl/popups_and_listes/browseFournisseurs.xsl';
    elseif ('NOTATION_FOURNISS' == $popup_id)
        $fichier_xsl = 'application/xsl/popups_and_listes/browseNotationFournisseurs.xsl';
    elseif (RechercheAvanceeGestFourniss::$popup_id == $popup_id)
        $fichier_xsl = 'application/xsl/popups_and_listes/browseListeGestFourniss.xsl';
    
    $genXsl = new GenXslt();
    
    /**
     * message d'attente lors du téléchargement du document
     */
    
    if ($estInitialise >= 2 && (RechercheAvanceeGestionFournisseurs::$popup_id == $popup_id || RechercheAvanceeGestFourniss::$popup_id == $popup_id)) {
        // Affichage des critères en cours
        $ecranRechercheAvancee = new RechercheAvanceeGene($popup_id);
        if ($ecranRechercheAvancee->ExisteCriteres()) {
            $arrayCriteresEnCours['ide']['criteres_en_cours'] = $ecranRechercheAvancee->BuildXMLCriteresEnCours();
            $arrayCriteresEnCours['ide']['!action'] = 'AfficheCriteresEnCours';
            
            if (DroitAcces::GetCreationFournisseur())
                $arrayCriteresEnCours['ide']['boutons'][] = array(
                    '!value' => trad('Ajouter référencé'),
                    '!couleur' => 'gris',
                    '!onclick' => 'CallUrl(\'gest_fourniss.php?action=CreerFournisseur&ancrage=' . RechercheAvanceeGeneAffichage::$idDivFiche . '&codeFrs=&mode=LE\');' . ';RechAvGen_AfficherFicheElement();'
                );
            if (DroitAcces::GetCreationProspect())
                $arrayCriteresEnCours['ide']['boutons'][] = array(
                    '!value' => trad('Ajouter prospect'),
                    '!couleur' => 'gris',
                    '!onclick' => 'CallUrl(\'gest_fourniss.php?action=CreerProspect&ancrage=' . RechercheAvanceeGeneAffichage::$idDivFiche . '&codeFrs=&mode=LE\');' . ';RechAvGen_AfficherFicheElement();'
                );
            
            Affichage::innerHTMLPointeur('CriteresEnCours', $genXsl->XslHtml(RechercheAvanceeGeneAffichage::$fichier_xml, $arrayCriteresEnCours));
        }
    }
    
    // $arrayCriteresEnCours['ide']['help'] = trad('Veuillez patienter lors du téléchargement du fichier');
    
    if (RechercheAvanceeGestFourniss::$popup_id != $popup_id) {
        // Cas normal : on affiche siomplement le résultat
        Affichage::innerHTMLPointeur('resultat', $genXsl->XslHtml($fichier_xsl, $liste_fournisseurs));
        $html = $genXsl->XslHtml('application/xsl/template_browse/browsePagination.xsl', $Pagination->buildNavigationBar($popup_id, $_SERVER['SCRIPT_NAME'], $monBrowse->getPopup_form_name()));
        Affichage::innerHTMLPointeur('pagination', $html);
    } else {
        // Cas de la recherche gestion fournisseurs, avec des critères par défaut :
        // on n'affiche rien pendant l'initialisation du compteur, on le fait lors de la seconde passe
        $estInitialise = $ecranRechercheAvancee->GetEstInitialise();
        if ($estInitialise == 2) {
            PopupBrowse::execSearch('btnRechercherSimple', true);
        } elseif ($estInitialise > 2) {
            // On peut afficher la pagination
            Affichage::innerHTMLPointeur('resultat', $genXsl->XslHtml($fichier_xsl, $liste_fournisseurs));
            $html = $genXsl->XslHtml('application/xsl/template_browse/browsePagination.xsl', $Pagination->buildNavigationBar($popup_id, $_SERVER['SCRIPT_NAME'], $monBrowse->getPopup_form_name()));
            Affichage::innerHTMLPointeur('pagination', $html);
        }
    }
}

$connecteur->disconnect();
exit();