<?php
require_once 'application/class/class_ManageSession.php';
/*
 * Fichier de gestion du routage des commandes
 * utilisé lors de la soumission finale du panier et lors de l'appel au suivi des commandes à imprimer
 */

$routage = new Routage();

// Si l'utilisateur appelle le routage pour une commande donnée
if (getValue('action') == 'routage') {
    
    // Récupération des informations relatives au routage de la CDE sélectionnée
    $no_cde = getValue('no_cde');
    
    // Appel du WSDL de routage afin d'obtenir le routage disponible pour la commande donnée (mode 'P')
    $routage->callWSDLRoutageForCde($no_cde, 'P');
    $routage->buildXMLforRoutage($no_cde);
    
    $xslt = new GenXslt(true);
    $xsl_file = 'application/xsl/panneau_routage.xsl';
    
    echo $xslt->XslHtml($xsl_file, $routage->getXMLArray());
    
    /*
     * Affichage du routage dans une popup
     */
    
    // On définit la hauteur de la popup en fonction du nombre de ligne retournée
    // sur Firefox, décalage = : 165
    // sur IExplore, décalage = : 165
    $height = 190 + (20 * $routage->getNbExemplaire());
    
    echo "<script type='text/javascript'>window.resizeTo(600, ", $height, ")</script>";
    
    $connecteur->disconnect();
    exit();
}// Si l'utilisateur valide le routage sélectionné
elseif (getValue('action') == 'envoyer') {
    
    // On récupère le numéro de commande à envoyer
    $tmp = explode("_", getValue('form'));
    $no_cde = $tmp[1];

    // TODO traitement de l'évolution de l'impression CDE DOSSIER 35666
    // $clTraitement = new TraitementAsync();
    // $clTraitement->addVariable('envoi', $envoi);
    // $clTraitement->addVariable('wsdl', 'Oxaproc_Commande.wsdl');
    // $clTraitement->addVariable('method', 'OXAPRC_IMPRIMECDE');
    // $clTraitement->setTypeTraitement('PreviewCdePdfFromDAStart');
    // $clTraitement->PreviewCdePdfFromDAStart();
    // On appelle le WSDL d'exécution du routage
    $routage->callWSDLEnvoiCde($no_cde, $routage->getDataRoutage($_POST));
    
    // echo 'parent.closePopup(\'win_pop\');';
    // On affiche le message d'envoi effectué à l'utilisateur
    Affichage::messageJS(trad('La commande a été envoyée'));
    echo "refreshNotification();";
    
    // On réactualise la liste des documents créés
    echo "me().opener.CallUrlAsync('suivi_doc.php','action={$_SESSION["contexteSuivi"]}','" . cnv_to_javascript(trad("Mise à jour des documents à imprimer en cours...")) . "'); window.scrollTo(0,0);";
    
    // Attention la fermeture de la popup doit être la dernière étape
    echo 'parent.closePopup(\'win_pop\');';
    echo 'window.closePopup();window.scrollTo(0,0);';
} else if (getValue('action') == 'ajouter') {
    $tmp = explode("_", getValue('form'));
    $no_cde = $tmp[1];
    $total = getValue('total_' . $no_cde);
    $id = "routage_" . $no_cde;
    $type = getValue('add_type_' . $no_cde);
    $select = getValue('add_select_' . $no_cde);
    if ($select != "P")
        $coord = getValue('add_coord_' . $no_cde);
    
    if ($type == '' || (isset($coord) && $coord == '')) {
        echo "alert('", cnv_to_javascript(trad('Veuillez renseigner tous les champs')), "')";
        $connecteur->disconnect();
        exit();
    }
    $xslt = new GenXslt(true);
    $xsl_file = 'application/xsl/panneau_routage.xsl';
    $array = unserializeSecure($_SESSION['routage']);
    $array_type = unserializeSecure($_SESSION['type_routage']);
    $array['total_ligne']['!value'] += 1;
    $tab = "var tab = new Array();tab.push('Mail');tab.push('Fax');";
    
    $paramFaxBDC = Param::AllParamsGetValue('FAX_BDC');
    // $paramFaxBDC = 1;
    
    for ($i = 0; $i < $total; $i ++) {
        $array['routage']['ligne'][$i]['Mail'] = array(
            '!value' => getValue($no_cde . '_' . ($i) . '_TypeRoutage') == 'E_' ? "E_" . getValue($no_cde . '_' . ($i) . '_Coordonnee') : $array['routage']['ligne'][$i]['Mail']['!value']
        );
        if (! $paramFaxBDC) {
            $array['routage']['ligne'][$i]['Fax'] = array(
                '!value' => getValue($no_cde . '_' . ($i) . '_TypeRoutage') == 'F_' ? "F_" . getValue($no_cde . '_' . ($i) . '_Coordonnee') : $array['routage']['ligne'][$i]['Fax']['!value']
            );
            $array['routage']['ligne'][$i]['TypeRoutage']['!value'] = substr(getValue($no_cde . '_' . ($i) . '_TypeRoutage'), 0, 1);
            $array['routage']['ligne'][$i]['init']['Fax']['!value'] = $val[1] == '' ? getValue($no_cde . '_' . ($i) . '_Coordonnee') : $val;
        }
        $valTmp = explode("_", getValue($no_cde . "_" . ($i) . "_TypeRoutage"));
        $val = $valTmp[1];
        $array['routage']['ligne'][$i]['init']['Mail']['!value'] = $val[1] == '' ? getValue($no_cde . '_' . ($i) . '_Coordonnee') : $val;
    }
    $array['routage']['ligne'][$total]['Obligatoire']['!value'] = 0;
    $array['routage']['ligne'][$total]['TypeExemplaire'] = array(
        '!value' => "ADD", // On enregistre la valeur du champ
        '!name' => $no_cde . '_' . $total . '_TypeExemplaire', // On enregistre le nom du champ
        '!id' => $no_cde . '_' . $total . '_TypeExemplaire'
    ); // On enregistre l'id du champ
                                                          // Remarque : Pour une raison inconnue, l'encodage retournée par le wsdl est mal détecté on est donc obligé de passer en ISO le titre de l'exemplaire avec utf8_decode
    $array['routage']['ligne'][$total]['TitreExemplaire'] = array(
        '!value' => $type,
        '!name' => $no_cde . '_' . $total . '_TitreExemplaire',
        '!id' => $no_cde . '_' . $total . '_TitreExemplaire'
    );
    
    $array['routage']['ligne'][$total]['TypeRoutage'] = array(
        '!value' => $select,
        '!name' => $no_cde . '_' . $total . '_TypeRoutage',
        '!id' => $no_cde . '_' . $total . '_TypeRoutage',
        '!modify' => "1",
        '!libelle' => $array_type[$select]['option']
    );
    
    $array['routage']['ligne'][$total]['Coordonnee'] = array(
        '!name' => $no_cde . '_' . $total . '_Coordonnee',
        '!id' => $no_cde . '_' . $total . '_Coordonnee',
        '!modify' => "1"
    );
    
    $array['routage']['ligne'][$total]["From"] = array(
        '!value' => '',
        '!name' => $no_cde . '_' . $total . '_From',
        '!id' => $no_cde . '_' . $total . '_From',
        "!modify" => "0"
    );
    
    $array['routage']['ligne'][$total]["Id"] = array(
        '!value' => '',
        '!name' => $no_cde . '_' . $total . '_Id',
        '!id' => $no_cde . '_' . $total . '_Id'
    );
    
    // En effet, selon le routage choisi, le champ coordonnées est soit un input (mail et fax) soit vide (pdf)
    $array['routage']['ligne'][$total]['onchange_routage'] = array(
        '!value' => "$tab selectTypeRoutage('{$array['routage']['ligne'][$total]["TypeRoutage"]['!id']}','{$array['routage']['ligne'][$total]["Coordonnee"]['!id']}',tab);"
    );
    
    // On définit ici les value des options de chaque exemplaire de routage
    // On concatène le type de routage et les coordonnées associées par défaut au type de routage
    $array['routage']['ligne'][$total]['PDF'] = array(
        '!value' => $array_type['P']['value']
    );
    $array['routage']['ligne'][$total]['Mail'] = array(
        '!value' => $array_type['E']['value'] . '_'
    );
    $array['routage']['ligne'][$total]['Fax'] = array(
        '!value' => $array_type['F']['value'] . '_'
    );
    
    // On initialise les valeurs par défaut des champs coordonnées
    $array['routage']['ligne'][$total]['init']['Mail'] = array(
        '!value' => $select == "E" ? $coord : ''
    );
    $array['routage']['ligne'][$total]['init']['Fax'] = array(
        '!value' => $select == "F" ? $coord : ''
    );
    
    $array['routage']['ligne'][$total]['activation'] = array(
        '!name' => $no_cde . '_' . $total . '_checkbox',
        '!id' => $no_cde . '_' . $total . '_checkbox',
        '!onclick' => "$tab activeRoutageExemplaire('{$no_cde}_{$total}_checkbox','{$array['routage']['ligne'][$total]["TypeRoutage"]['!id']}','{$array['routage']['ligne'][$total]["Coordonnee"]['!id']}',tab);"
    );
    
    $xslt->XslHtml($xsl_file, $array);
    $xslt->echoHtml($id);
    $_SESSION['routage'] = serializeSecure($array);
    
    // Dossier 25979 On remet les valeur de coordonnées tel que saisie précédemment
    foreach ($_POST as $index => $value) {
        list ($a, $b, $c) = explode('_', $index);
        if (is_numeric($a) && is_numeric($b)) {
            if ($c == 'Coordonnee') {
                Affichage::setValue($index, $value);
            }
        }
    }
}
$connecteur->disconnect();
exit();
?>