<?php


if(session_status() != PHP_SESSION_ACTIVE)
{

if (isset($_SERVER['HTTPS']) &&
        ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1) ||
        isset($_SERVER['HTTP_X_FORWARDED_PROTO']) &&
        $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
            session_set_cookie_params(["samesite" => "None", 'Secure' => true]);
           
    }
    
    session_name('__OxaProc-PHPSESSID');
    session_start();
}

require_once 'application/class/class_panier.php';
require_once 'application/webroot/panier_ong_3_inc.php';

global $connecteur;

// Si l'utilisateur appelle une popup fournisseur
if ('IND_FOU' == getValue('OBJECT')) {
    // Mise a jour ecran du code de l'adresse du fournisseur
    if (array_key_exists('num_bloc_panier', $_SESSION)) {
        $num_bloc = $_SESSION['num_bloc_panier'];
        
        $listeBlocFournisseur = unserializeSecure($_SESSION['recap_panier_regroup']);
        $liste_four = $listeBlocFournisseur[$num_bloc - 1];
        $code_frs = $liste_four['COD_FOURN'];
        
        $ind_fou = getValue('IND_FOU');
        
        $array_filters = array(
            'DATA_STRICT' => $ind_fou
        );
        
        if ($result = SqlFournisseur::rqPopupGetAllContactFournisseur($code_frs, $array_filters, true)->Trouve1()) {
            Affichage::setAttributForFieldForm('form_popup_frs', 'CTC_NOM', 'value', JsValue($result['NOM']));
            Affichage::setAttributForFieldForm('form_popup_frs', 'CTC_FCT', 'value', JsValue($result['FONCTION']));
            Affichage::setAttributForFieldForm('form_popup_frs', 'CTC_MAIL', 'value', JsValue($result['EMAIL']));
            Affichage::setAttributForFieldForm('form_popup_frs', 'CTC_TEL', 'value', JsValue($result['TEL']));
            Affichage::setAttributForFieldForm('form_popup_frs', 'CTC_GSM', 'value', JsValue($result['TELPORT']));
            Affichage::setAttributForFieldForm('form_popup_frs', 'CTC_FAX', 'value', JsValue($result['FAX']));
        }
    }
} elseif ('CODE_ADR' == getValue('OBJECT')) {
    // Mise a jour ecran du code de l'adresse du fournisseur
    if (array_key_exists('num_bloc_panier', $_SESSION)) {
        $num_bloc = $_SESSION['num_bloc_panier'];
        
        $listeBlocFournisseur = unserializeSecure($_SESSION['recap_panier_regroup']);
        $liste_four = $listeBlocFournisseur[$num_bloc - 1];
        $code_frs = $liste_four['COD_FOURN'];
        
        $code_adr = getValue('CODE_ADR');
        
        $array_filters = array(
            'DATA_STRICT' => $code_adr
        );
        
        if ($result = & SqlFournisseur::rqPopupGetAllAdresseFournisseur($code_frs, $array_filters, true)->Trouve1()) {
            // print_r($result);
            Affichage::setAttributForFieldForm('form_popup_frs', 'RS', 'value', JsValue($result['RS']));
            Affichage::setAttributForFieldForm('form_popup_frs', 'VILLE1', 'value', JsValue($result['VILLE1']));
            Affichage::setAttributForFieldForm('form_popup_frs', 'ADR', 'value', JsValue(str_replace("\n", ' ', $result['ADR'])));
            Affichage::setAttributForFieldForm('form_popup_frs', 'CPOSTAL', 'value', JsValue($result['CPOSTAL']));
            Affichage::setAttributForFieldForm('form_popup_frs', 'CODE_PAYS', 'value', JsValue($result['CODE_PAYS']));
        }
    }
    exit();
} elseif ('afficherPopupFrs' == getValue('action')) {
    $contexte = getValue('contexte'); // On récupère le contexte dans lequel la popup est appelée
    if (! is_null(getValue('num_bloc'))) {
        $num_bloc = getValue('num_bloc');
        $_SESSION['num_bloc_panier'] = $num_bloc;
        $listeBlocFournisseur = unserializeSecure($_SESSION['recap_panier_regroup']);
        $liste_four = $listeBlocFournisseur[$num_bloc - 1];
        $code_frs = $liste_four['COD_FOURN'];
        
        $PopupFrs = new PopupFrs($liste_four, $contexte, $num_bloc);
        $_SESSION['num_bloc_panier'] = $num_bloc;
    } else {
        $code_frs = getValue('code_frs'); // On récupère le code du fournisseur
        
        $_SESSION['num_bloc_panier'] = '';
        $PopupFrs = new PopupFrs($code_frs, $contexte);
    }
    // On construit l'objet dédiée à la gestion des popup fournisseur
    // On ecrit une ligne dans la table OXAAUDITACT (spec 2802)
    $infoFrs = SqlFrs::rqGetRecordFournis($code_frs)->Trouve1();
    Track::logAudit('FICHE', 'FOURNISSEUR', 'fournisseur', $code_frs, $infoFrs['RS']);

    // On affiche la popup fournisseur
    echo $PopupFrs->getHtmlPopupFrs($contexte);
    
    $connecteur->disconnect();
    exit();
}// Si l'utilisateur appelle la popup affichant le détail de la géolocalisation fournisseur
elseif ('afficherPopupGeo' == getValue('action')) {
    
    // On inclut les scripts javascript dans la popup
    $flg_popup = true;
    // include_once 'application/webroot/php/include/header_html.inc.php';
    
    $CodeFournisseur = getValue('code_frs');
    $Fournisseur = new Fournisseur($CodeFournisseur);
    $ObjXSLT = new GenXslt(true);
    // On affiche la liste des thèmes, critère et notation du fournisseur
    echo $ObjXSLT->XslHtml('application/xsl/gestion_fournisseur_localisation.xsl', $Fournisseur->buildXmlFournisseurGeo(getValue('num_bloc')));
    
    $connecteur->disconnect();
    exit();
}// Si l'utilisateur appelle la popup affichant le détail de la notation fournisseur
elseif ('afficherPopupNotationFrs' == getValue('action')) {
    // On inclut les scripts javascript dans la popup
    $Fournisseur = new Fournisseur(getValue('code_frs'));
    $ObjXSLT = new GenXslt(true);
    // On affiche la liste des thèmes, critère et notation du fournisseur
    echo $ObjXSLT->XslHtml('application/xsl/gestion_notation_fournisseur.xsl', $Fournisseur->buildXmlNotationFournisseur(getValue('periode')));
    
    $connecteur->disconnect();
    exit();
}// Si l'utilisateur sélectionne un contact fournisseur
elseif ('selectContactFrs' == getValue('action')) {
    // On récupère le code fournisseur ainsi que l'indice du contact fournisseur
    
    if (! is_null(getValue('num_bloc'))) {
        $num_bloc = getValue('num_bloc');
        $listeBlocFournisseur = unserializeSecure($_SESSION['recap_panier_regroup']);
        $liste_four = $listeBlocFournisseur[$num_bloc - 1];
        $code_frs = $liste_four['COD_FOURN'];
    } else {
        $code_frs = getValue('CODE');
    }
    
    $ind_contact_fou = getValue('IND_FOU_CONTACT');
    
    // On récupère les informations liées au contact fournisseur afin de renseigner les champs du formulaire de saisie du contact
    $Fournisseur = new Fournisseur($code_frs);
    $Info_contact = $Fournisseur->getContactFournisseur($ind_contact_fou);
    
    // On récupère la liste des champs composants la partie contact
    $ListeChampContactFrs = Param::getAllFieldsInfoBulle('CTCFOU');
    
    // Pour chacun des champs on initialise avec la valeur trouvé sur le contact dans Haplus
    if (is_array($ListeChampContactFrs))
        foreach ($ListeChampContactFrs as & $champ)
            Affichage::setAttribut($champ['CODE_CHP'], 'value', $Info_contact[$champ['CODE_CHP']]);
    
    $connecteur->disconnect();
    exit();
} elseif ('saveContactHAP' == getValue('action')) {
    if (array_key_exists('num_bloc_panier', $_SESSION))
        $num_bloc = $_SESSION['num_bloc_panier'];
    else
        $num_bloc = '';
    
    if ($num_bloc != '') {
        $listeBlocFournisseur = unserializeSecure($_SESSION['recap_panier_regroup']);
        $liste_four = $listeBlocFournisseur[$num_bloc - 1];
        $code_frs = $liste_four['COD_FOURN'];
    } else
        $code_frs = getValue('code_frs');
    
    $array = array(
        'CODE_FOURN' => $code_frs,
        'IND_FOU' => getValue('indice'),
        'NOM' => getValue('CTC_NOM'),
        'FONCTION' => getValue('CTC_FCT'),
        'TEL' => getValue('CTC_TEL'),
        'FAX' => getValue('CTC_FAX'),
        'MOBILE' => getValue('CTC_GSM'),
        'MAIL' => getValue('CTC_MAIL')
    );
    
    if ($result = Wsdl::WsdlCmsContFour(getValue('mode'), $array)) {
        if ($result['Retour'] == 'O') {
            Affichage::messageJS(trad('Le contact du fournisseur a été enregistré'));
            echo "Oxa_getDevice().document.getElementById('div_waiting').className = '';";
            echo "Oxa_getDevice().document.getElementById('div_waiting').style.display = 'none';";
            
            // refresh du browse
            $popupid = getValue('popup_id');
            $monBrowse = unserializeSecure($_SESSION[$popupid]);
            
            $_REQUEST['CODE_STE'] = $_SESSION[$popupid . '_STE'];
            
            // 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
            $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
            $monBrowse->setCurrentPage(1);
            $Pagination = new Pagination($resultat['resultat'], $monBrowse);
            
            if ($monBrowse->getIsActionClick())
                $Pagination->setClickOnLine(true, 'value', $monBrowse->getTargetImputField(), 'IND_FOU', true, true); // action permettant d'insérer la valeur de la ligne sélectionnée dans le champ de saisi
            
            $genXsl = new GenXslt();
            
            $Pagination->setWidth($monBrowse);
            
            $html1 = $genXsl->XslHtml('application/xsl/popups_and_listes/browseListeContFour.xsl', $Pagination->getArrayPageElements($monBrowse));
            Affichage::innerHTMLPointeur('resultat', $html1, true, true);
            
            $html2 = $genXsl->XslHtml('application/xsl/template_browse/browsePagination.xsl', $Pagination->buildNavigationBar(getValue('popup_id'), $_SERVER['SCRIPT_NAME'], $monBrowse->getPopup_form_name()));
            Affichage::innerHTMLPointeur('pagination', $html2, true, true);
            
            if ($num_bloc != '') {
                /**
                 * Mise à jours de la premiere pupup
                 */
                $PopupFrs = new PopupFrs(getValue('code_frs'), 'panierEnCours');
                $PopupFrs->refreshGetHtmlPopupFrs('panierEnCours');
            }
            
            echo 'window.closePopup();';
        } else
            Affichage::messageJS($result['MsgErreur']);
    } else
        Affichage::messageJS(trad('Anomalie lors de la mise du WebService,'));
    
    $connecteur->disconnect();
    exit();
} elseif ('saveAdrHAP' == getValue('action')) {
    $num_bloc = $_SESSION['num_bloc_panier'];
    
    if ($num_bloc != '') {
        $listeBlocFournisseur = unserializeSecure($_SESSION['recap_panier_regroup']);
        $liste_four = $listeBlocFournisseur[$num_bloc - 1];
        $code_frs = $liste_four['COD_FOURN'];
    } else
        $code_frs = getValue('code_frs');
    
    $ind = getValue('indice');
    
    if (! isset($ind))
        $ind = getValue('ADR_CODE');
    
    if (($ind == 'POS' || $ind == 'REG') && getValue('mode') == 'C') {
        Affichage::messageJS(trad('Ce code est interdit pour la création d\'adresses'));
        exit();
    }
    
    $array = array(
        'CODE_FOURN' => $code_frs,
        'CODE_ADR' => $ind,
        'RS' => getValue('ADR_LABEL'),
        'ADR' => getValue('ADR_ADRESSE'),
        'CPOSTAL' => getValue('ADR_CP'),
        'VILLE' => getValue('ADR_VILLE'),
        'CODE_PAYS' => getValue('ADR_PAYS'),
        'EMAIL' => getValue('ADR_MAIL'),
        'TEL' => getValue('ADR_TEL'),
        'FAX' => getValue('ADR_FAX'),
    );
    
    if ($result = Wsdl::WsdlCmsAdrFour(getValue('mode'), $array)) {
        if ($result['Retour'] == 'O') {
            Affichage::messageJS(trad("L'adresse du fournisseur a été enregistrée"));
            echo "Oxa_getDevice().document.getElementById('div_waiting').className = '';";
            echo "Oxa_getDevice().document.getElementById('div_waiting').style.display = 'none';";
            
            // refresh du browse
            $popupid = getValue('popup_id');
            $monBrowse = unserializeSecure($_SESSION[$popupid]);
            
            $_REQUEST['CODE_STE'] = $_SESSION[$popupid . '_STE'];
            
            // 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            
            $i=0;
            foreach($resultat['resultat'] as $kr => $kv)
            {
                if($kv['CODE'] == 'REG')
                {
                    unset($resultat['resultat'][$i]);
                    break;
                }
                else
                {
                    $i++; 
                }
            } 
            $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
            $monBrowse->setCurrentPage(1);
            $Pagination = new Pagination($resultat['resultat'], $monBrowse);
            
            if ($monBrowse->getIsActionClick())
                $Pagination->setClickOnLine(true, 'value', $monBrowse->getTargetImputField(), 'CODE', true, true); // action permettant d'insérer la valeur de la ligne sélectionnée dans le champ de saisi
                                                                                                                   
            // $Pagination->setClickOnLine(true, 'value', $monBrowse->getTargetImputField(), "IND_FOU" , true, true); // action permettant d'insérer la valeur de la ligne sélectionnée dans le champ de saisi
            
            $genXsl = new GenXslt();
            
            $Pagination->setWidth($monBrowse);
            
            $html1 = $genXsl->XslHtml('application/xsl/popups_and_listes/browseListeAdrFour.xsl', $Pagination->getArrayPageElements($monBrowse));
            Affichage::innerHTMLPointeur('resultat', $html1, true, true);
            
            $html2 = $genXsl->XslHtml('application/xsl/template_browse/browsePagination.xsl', $Pagination->buildNavigationBar(getValue('popup_id'), $_SERVER['SCRIPT_NAME'], $monBrowse->getPopup_form_name()));
            Affichage::innerHTMLPointeur('pagination', $html2, true, true);
            
            echo 'window.closePopup();';
        } else
            Affichage::messageJS($result['MsgErreur']);
    } else
        Affichage::messageJS(trad('Anomalie lors de la mise du WebService,'));
    
    $connecteur->disconnect();
    exit();
}// Si l'utilisateur enregistre le contact fournisseur
elseif ('saveContactFrs' == getValue('action')) {
    // On récupère la liste des champs composants la partie contact
    $ListeChampContactFrs = Param::getAllFieldsInfoBulle('CTCFOU');
    
    $num_bloc = $_SESSION['num_bloc_panier'];
    $listeBlocFournisseur = unserializeSecure($_SESSION['recap_panier_regroup']);
    $liste_four = $listeBlocFournisseur[$num_bloc - 1];
    
    // Si l'enregistrement du contact a réussi
    
    $codePays = getValue('CODE_PAYS');
    if(SqlUsers::droitsUtilisateur('HA_CDE_CON')->Trouve1()['DROIT'])
    {
        if ($result = SqlFrs::rqGetRecordCountry($codePays)->Trouve1() || $codePays == '')
        {
            // 3210 Mise à jour au niveau du panier
            if (! is_null(getValue('CPOSTAL')))
            {
                $infoAdrFrs = SqlPanier::rqGetInfoFourPanier($liste_four)->Trouve1();
                
                if(empty($_POST['ADR']))
                {
                    $_POST['ADR'] = $infoAdrFrs['ADR'];
                }
                if(empty($_POST['CPOSTAL']))
                {
                    $_POST['CPOSTAL'] = $infoAdrFrs['CPOSTAL'];
                }
                if(empty($_POST['VILLE1']))
                {
                    $_POST['VILLE1'] = $infoAdrFrs['VILLE1'];
                }
                if(empty($_POST['CODE_PAYS']))
                {
                    $_POST['CODE_PAYS'] = $infoAdrFrs['CODE_PAYS'];
                }

                Panier::savePanierFournisseur($liste_four, $_POST);
            }
            
            if (Panier::saveContactFournisseur($liste_four, $_POST))
            {
                Affichage::messageJS(trad('Les informations du fournisseur ont été enregistrées'));
                
                //debut 4366
                $xslt = new GenXslt();
                $xsl_file = 'application/xsl/panier_ong_3_detail.xsl';

                $COD_FOURN = $liste_four['COD_FOURN'];

                $xml_array = panierOng3AdresseCommande($COD_FOURN, $num_bloc);
                $html = $xslt->XslHtml($xsl_file, $xml_array);

                $xslt->echoHtml("adresse_cde_{$num_bloc}", 'Oxa_getDevice().');
                //fin 4366
                
                echo 'window.closePopup();';
            }
            else
            {
                Affichage::messageJS(trad("Un problème est survenu lors de l'enregistrement"));
                echo 'window.closePopup();';
            }
        } 
        else
        {
            Affichage::messageJS(trad('La saisie du code pays est incorrecte.'));
        }

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

}// modification de la donnée contact du fournisseur
elseif ('addcnt' == getValue('action')) {
    
    if ($_SESSION['num_bloc_panier'] != '') {
        $num_bloc = $_SESSION['num_bloc_panier'];
        $listeBlocFournisseur = unserializeSecure($_SESSION['recap_panier_regroup']);
        $liste_four = $listeBlocFournisseur[$num_bloc - 1];
    } else {
        $liste_four = getValue('code_frs');
        $num_bloc = null;
    }
    
    $PopupContact = new PopupContact('fournisseur', null, $liste_four, $num_bloc);
    
    echo $PopupContact->getHtmlPopupContact('C');
    
    $connecteur->disconnect();
    exit();
} elseif ('modcnt' == getValue('action')) {
    
    if ($_SESSION['num_bloc_panier'] != '') {
        $num_bloc = $_SESSION['num_bloc_panier'];
        $listeBlocFournisseur = unserializeSecure($_SESSION['recap_panier_regroup']);
        $liste_four = $listeBlocFournisseur[$num_bloc - 1];
    } else {
        $liste_four = getValue('code_frs');
        $num_bloc = null;
    }
    
    $PopupContact = new PopupContact('fournisseur', getValue('code'), $liste_four, $num_bloc);
    
    echo $PopupContact->getHtmlPopupContact('M');
    
    $connecteur->disconnect();
    exit();
}// creation de la donnée adresse du fournisseur
elseif ('addadr' == getValue('action')) {
    
    if ($_SESSION['num_bloc_panier'] != '') {
        $num_bloc = $_SESSION['num_bloc_panier'];
        $listeBlocFournisseur = unserializeSecure($_SESSION['recap_panier_regroup']);
        $liste_four = $listeBlocFournisseur[$num_bloc - 1];
    } else {
        $liste_four = getValue('code_frs');
        $num_bloc = null;
    }
    
    $Popup = new PopupAdrFrs('fournisseur', null, $liste_four, $num_bloc);
    
    echo $Popup->getHtml('C');
    
    $connecteur->disconnect();
    exit();
}// Modification de l'adresse d'un fournisseur
elseif ('modadr' == getValue('action')) {
    
    if ($_SESSION['num_bloc_panier'] != '') {
        $num_bloc = $_SESSION['num_bloc_panier'];
        $listeBlocFournisseur = unserializeSecure($_SESSION['recap_panier_regroup']);
        $liste_four = $listeBlocFournisseur[$num_bloc - 1];
    } else {
        $liste_four = getValue('code_frs');
        $num_bloc = null;
    }
    
    $PopupAdr = new PopupAdrFrs('fournisseur', getValue('code'), $liste_four, $num_bloc);
    
    echo $PopupAdr->getHtml('M');
    
    $connecteur->disconnect();
    exit();
}// Si l'utilisateur appelle la popup sur le contact livraison du fournisseur
elseif ('afficherPopupContact' == getValue('action')) {
    // On récupère le code fournisseur ainsi que l'indice du contact fournisseur
    if (! is_null(getValue('num_bloc'))) {
        $num_bloc = getValue('num_bloc');
        $listeBlocFournisseur = unserializeSecure($_SESSION['recap_panier_regroup']);
        $liste_four = $listeBlocFournisseur[$num_bloc - 1];
        $PopupContact = new PopupContact('livraison', 0, $liste_four, $num_bloc);
    } else
        $PopupContact = new PopupContact('livraison', 0, getValue('code_frs'));
    
    // On construit l'objet dédié à la gestion des popup contact de livraison, les informations du contact de livraison sont situées au niveau d'un bloc fournisseur
    // On affiche la popup fournisseur
    echo $PopupContact->getHtmlPopupContact('M');
    
    $connecteur->disconnect();
    exit();
}// Si l'utilisateur sélectionne un centre de livraison secondaire
elseif ('selectContactLiv' == getValue('action')) {
    // On récupère l'indice du contact de livraison
    $ind_contact_fou = getValue('IND_CONTACT_LIV');
    $ctr_liv = getValue('CODE_CTR_LIV');
    
    $info_contact_liv = SqlCentreGene::getContactLibByCentreLiv($ctr_liv, $ind_contact_fou)->Trouve1();
    
    $ListeChampContactLiv = PopupContact::$LISTE_CHAMPS_CONTACT_LIV;
    
    // Pour chacun des champs on initialise avec la valeur trouvé sur le contact dans Haplus
    foreach ($ListeChampContactLiv as & $champ)
        Affichage::setAttribut($champ, 'value', $info_contact_liv[$champ]);
}// Si l'utilisateur enregistre le contact associé au centre de livraison du bloc fournisseur
elseif ('saveContact' == getValue('action')) {
    // On récupère le code fournisseur ainsi que l'indice du contact fournisseur
    if (! is_null(getValue('num_bloc'))) {
        $num_bloc = getValue('num_bloc');
        $listeBlocFournisseur = unserializeSecure($_SESSION['recap_panier_regroup']);
        $information_four = $listeBlocFournisseur[$num_bloc - 1];
    } else
        $information_four = getValue('code_frs');
    
    // Si l'enregistrement du contact a réussi
    if (Panier::saveContact($information_four, 'livraison', 0, $_POST))
        Affichage::messageJS(trad('Le contact de livraison a été enregistré'));
    else
        Affichage::messageJS(trad("Un problème est survenu lors de l'enregistrement du contact de livraison"));
    
    // cloture du message Waiting
    echo "Oxa_getDevice().document.getElementById('div_waiting').className = '';";
    echo "Oxa_getDevice().document.getElementById('div_waiting').style.display = 'none';";
    
    echo 'window.closePopup();';
    
    $connecteur->disconnect();
    exit();
}// Si l'utilisateur appelle une popup fournisseur
elseif ('afficherPopupArt' == getValue('action')) {
    
    $flg_popup = true;
    
    foreach (PopupArticle::$liste_info_art as $info_art)
        $info_art_intuition[$info_art] = getValue($info_art);
    
    $id_ligne_panier = getValue('id_lig');
    
    $PopupArt = new PopupArticle(getValue('type_art'), $info_art_intuition, $id_ligne_panier, true, getValue('num_ligne'), getValue('blFourn'));
    
    // On ecrit une ligne dans la table OXAAUDITACT (spec 2802)
    Track::logAudit('FICHE', 'ARTICLE', 'Article', $PopupArt->getDesign_art_trouve());
    
    // On affiche la popup fournisseur
    echo $PopupArt->getHtmlPopupArt();
    
    $connecteur->disconnect();
    exit();
}// Si l'utilisateur lance le comparateur d'article
elseif ('comparateur_article' == getValue('action')) {
    
    // Tableau qui contienra tous les articles insérés dans le comparateur
    $array_popup_xml['isEnSession'] = true;
    $array_popup_xml['ListeArt'] = array();
    
    // On récupère tous les articles sélectionnés pour le comparateur
    $index = 0;
    $caractinfo = null;
    if ($articleSelect = ArticleSelect::restoreSession()) {
        foreach ($articleSelect->getCache() as $serialisation => $data) {
            $info_art_intuition['ID_CAT'] = $data['ID_CAT'];
            $info_art_intuition['SERIALIZATION'] = $serialisation;
            $num_ligne = substr($data['zone'], 4);
            
            $index ++;
            // On appelle la méthode de création de la fiche article
            // $PopupArt = new PopupArticle('CAT', $info_art_intuition,null,true,$index);
            $PopupArt = new PopupArticle('CAT', $info_art_intuition, null, true, $num_ligne);
            $result = $PopupArt->buildXmlForXsl();
            // Dossier 26030 Prise en compte des caractéristique
            if (array_key_exists('caractinfo', $result))
                foreach ($result['caractinfo'] as & $caract)
                    if (! is_array($caractinfo) || ! array_key_exists($caract['ID_CAR'], $caractinfo))
                        $caractinfo[$caract['ID_CAR']] = $caract;
            
            $array_popup_xml['ListeArt'][] = $result;
        }
        // Dossier 26030
        if (is_array($caractinfo))
            $array_popup_xml['CaractInfo'][] = & $caractinfo;
    }
    /*
     * foreach ($_POST as $element => $value)
     * // Si la checkbox "Comparer" de l'article catalogue est cochée
     * if (false !== stripos($element, "COMPARATEURCHECKBOX|") && 1 == BoolSql($value)) {
     * // On récupère l'identifiant catalogue de la ligne ainsi que le numéro de serialization
     *
     * $info_ligne = explode('|', $element);
     * $info_art_intuition['ID_CAT'] = $info_ligne[1];
     * $info_art_intuition['SERIALIZATION'] = $info_ligne[2];
     * $num_ligne = substr($info_ligne[3], 4);
     *
     * $index++;
     * // On appelle la méthode de création de la fiche article
     * //$PopupArt = new PopupArticle('CAT', $info_art_intuition,null,true,$index);
     * $PopupArt = new PopupArticle('CAT', $info_art_intuition, null, true, $num_ligne);
     * $array_popup_xml['ListeArt'][] = $PopupArt->buildXmlForXsl();
     * }
     */
    // Si l'utilisateur a sélectionné moins de 2 articles alors on l'avertit
    if (count($array_popup_xml['ListeArt']) < 2) {
        Affichage::messageJS(Trad('Vous devez sélectionner au moins 2 articles afin de pouvoir lancer le comparateur'));
        $connecteur->disconnect();
        exit();
    }
    
    if (count($array_popup_xml['ListeArt']) > 4) {
        Affichage::messageJS(Trad('Vous devez sélectionner au maximum 4 articles afin de pouvoir lancer le comparateur'));
        $connecteur->disconnect();
        exit();
    }
    
    // On définti la feuille de style xsl utilisée
    $feuille_xsl = 'application/xsl/popup_art_comparateur.xsl';
    $array_popup_xml['popup_title'] = trad('Comparaison d\'articles');
    // On crée l'objet de gestion de l'affichage XSL
    $obj_xsl = new GenXslt();
    
    // La largeur de la popup est fonction du nombre d'article à comparer avec une limite de 3 articles présentés simultanéments
    // $widthTmp = 400 * count($array_popup_xml['ListeArt']);
    // $width = ($widthTmp > 1500) ? 1200 : $widthTmp;
    
    // Dossier 26030 Ajout d'une correction suite dossier car comme y'avait une transformation cnv_to_javascript et un strip à l'affichage on avait un r n au dessus de l'écran
    $_SESSION['comp_result'] = $obj_xsl->XslHtml($feuille_xsl, $array_popup_xml); // EDP Comme c'est juste un transfert de page qui va mis en popup pas de transformation du flux
                                                                                  
    // $js = "
                                                                                  // var comparateur = document.getElementById('div_comparateur_art');
                                                                                  //
                                                                                  // document.getElementById('div_comparateur_art').style.position = 'absolute';
                                                                                  // document.getElementById('div_comparateur_art').style.zIndex = 100;
                                                                                  // document.getElementById('div_comparateur_art').style.top = 200;
                                                                                  // document.getElementById('div_comparateur_art').style.marginLeft = '20%';
                                                                                  // document.getElementById('div_comparateur_art').style.overflow = 'auto';
                                                                                  // document.getElementById('div_comparateur_art').style.width = $width;
                                                                                  // document.getElementById('div_comparateur_art').style.height = 800;
                                                                                  // document.getElementById('div_comparateur_art').style.backgroundColor = '#CCCCCC';
                                                                                  // document.getElementById('div_comparateur_art').style.display = '';
                                                                                  // document.getElementById('div_comparateur_art').innerHTML = '$html';";
    
    /*
     * $js = " var comparateur = document.getElementById('div_pop_modal');
     * document.getElementById('div_pop_modal').innerHTML = '$html';";
     */
    
    $w = 185 + count($array_popup_xml['ListeArt']) * 300;
    
    echo "window.open('ctrl_popup_frs.php?action=comparateur_affiche','popup_comp','width={$w}, height= 600');";
} else if ('comparateur_affiche' == getValue('action'))
    echo $_SESSION['comp_result'];

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