<?php
require_once 'application/class/class_ManageSession.php';
require_once 'application/helpers/class_supervision.php';
// Tableau global utilisé pour les traductions : celui-ci doit être appelé en premier

/*
 * Programme affichant l'ensemble des lignes d'un panier (Récapitulatif panier)
 *
 *
 */

global $connecteur;
global $changeOnclickDaCDE; 

ManageSession::ctrlDataSession();

$largeurFenetre = 800;
$hauteurFenetre = 330;

function getFluxResultat($flg_relance = false)
{
    global $connecteur;
    $client = new soapclient('', false);
    $flux_result = FluxXml::GetFlux($client, 'soumission');
    
    if (array_key_exists('Stock', $flux_result))
        $flux_result['Stock']['Objet'] = PanierEntete::getValue('objectDS');
    
    if (array_key_exists('DA', $flux_result))
        $flux_result['DA']['Objet'] = PanierEntete::getValue('objectDA');
    /*
     * A partir d'ici on va analyse si des transferts de ligne ont eu lieu ou pas
     * de types cdes vers DA
     * ou de types stock vers DA
     */
    
    // En premier on test les cdes vers DA
    $flg_relance = false;
    foreach ($_POST as $index => $value) {
        // Transfert d'information de la commande vers la DA
        if (strpos($index, 'trans_cde_') === 0) {
            list ($a, $b, $ligne) = explode('_', $index);
            // Cas où il y a demande de transfert de la ligne de cde vers la da
            if ($value == 'da') {
                // ON fait comme en bas pour trouver le pointeur relatif à la ligne
                if (array_key_exists('ListCdes', $flux_result)) {
                    if (array_key_exists('Cde', $flux_result['ListCdes'])) {
                        if (array_key_exists('0', $flux_result['ListCdes']['Cde']))
                            $pointeur = & $flux_result['ListCdes']['Cde'];
                        else
                            $pointeur = & $flux_result['ListCdes'];
                            
                        // permettra de connaitre le nombre de ligne d'article pour cette commande
                        foreach ($pointeur as & $element)
                            if (is_array($element))
                                if (array_key_exists('ListProduit', $element))
                                    if (array_key_exists('Produit', $element['ListProduit'])) {
                                        if (array_key_exists('0', $element['ListProduit']['Produit']))
                                            $pointeur_art = & $element['ListProduit']['Produit'];
                                        else
                                            $pointeur_art = & $element['ListProduit'];

                                        foreach ($pointeur_art as & $detail_art)
                                            if (is_array($detail_art)) {
                                                if ($detail_art['IdLigne'] == $ligne) {
                                                    // Permet de supprimer les 00 derrrieres
                                                    $detail_art['IdLigne'] = (float) $detail_art['IdLigne'];
                                                    
                                                    // alimentation du parametre de session repris par le WSDL
                                                    $_SESSION['ForceDA_' . $detail_art['IdLigne']] = 'true';
                                                    $flg_relance = true;
                                                }
                                            }
                                    }
                    }
                }
            }
        } else if (strpos($index, 'trans_stk_') === 0) {
            list ($a, $b, $ligne) = explode('_', $index);
            // Cas où il y a demande de transfert de la ligne de cde vers la da
            if ($value == 'da')
                if (array_key_exists('Stock', $flux_result))
                    if (array_key_exists('FournisseurDA', $flux_result['Stock'])) {
                        if (array_key_exists('0', $flux_result['Stock']['FournisseurDA']))
                            $pointeur = & $flux_result['Stock']['FournisseurDA'];
                        else
                            $pointeur = & $flux_result['Stock'];
                        
                        foreach ($pointeur as & $element)
                            if (is_array($element)) {
                                if (array_key_exists('ListProduit', $element)) {
                                    if (array_key_exists('Produit', $element['ListProduit'])) {
                                        if (array_key_exists('0', $element['ListProduit']['Produit']))
                                            $pointeur_art = & $element['ListProduit']['Produit'];
                                        else
                                            $pointeur_art = & $element['ListProduit'];
                                        
                                        foreach ($pointeur_art as & $detail_art)
                                            if (is_array($detail_art)) {
                                                $detail_art['IdLigne'] = (float) $detail_art['IdLigne'];
                                                if ($detail_art['IdLigne'] == $ligne) {
                                                    // Permet de supprimer les 00 derrrieres
                                                    $detail_art['IdLigne'] = (float) $detail_art['IdLigne'];
                                                    
                                                    // alimentation du parametre de session repris par le WSDL
                                                    $_SESSION['ForceDA_' . $detail_art['IdLigne']] = 'TRUE';
                                                    $flg_relance = true;
                                                }
                                            }
                                    }
                                }
                            }
                    }
        }        // Attention test ici pour savoir s'il y a des choses a faire pour un retour a la normal
        else if (strpos($index, 'trans_da_') === 0) {
            list ($a, $b, $ligne) = explode('_', $index);
            if ($value != '') {
                // ici c'est pour rabaisser le flag d'obligation de DA => retour soit en cdes soit en stock
                if (array_key_exists('DA', $flux_result))
                    if (array_key_exists('FournisseurDA', $flux_result['DA'])) {
                        if (array_key_exists('0', $flux_result['DA']['FournisseurDA']))
                            $pointeur = & $flux_result['DA']['FournisseurDA'];
                        else
                            $pointeur = & $flux_result['DA'];
                        
                        foreach ($pointeur as & $element)
                            if (is_array($element)) {
                                if (array_key_exists('ListProduit', $element)) {
                                    if (array_key_exists('Produit', $element['ListProduit'])) {
                                        if (array_key_exists('0', $element['ListProduit']['Produit']))
                                            $pointeur_art = & $element['ListProduit']['Produit'];
                                        else
                                            $pointeur_art = & $element['ListProduit'];
                                        
                                        foreach ($pointeur_art as & $detail_art) {
                                            $detail_art['IdLigne'] = (float) $detail_art['IdLigne'];
                                            if ($detail_art['IdLigne'] == $ligne) {
                                                $flg_relance = true;
                                                $_SESSION['ForceDA_' . $detail_art['IdLigne']] = 'false';
                                            }
                                        }
                                    }
                                }
                            }
                    }
            } else
                // Conservation du flag indiquant que cet article est en forcage de DA
                $_SESSION['ForceDA_' . $ligne] = 'TRUE';
        }
        else if (strpos($index, 'strPlanning_') === 0) {
            list ($a, $b, $ligne) = explode('_', $index);
            
            if (array_key_exists('DA', $flux_result)) {
                $save_pointeur = & $flux_result['DA'];
                if (array_key_exists('FournisseurDA', $save_pointeur)) {
                    if (array_key_exists('0', $save_pointeur['FournisseurDA']))
                        $pointeur = & $save_pointeur['FournisseurDA'];
                    else
                        $pointeur = & $save_pointeur;
                            
                    if (is_array($pointeur)) {
                        foreach ($pointeur as &$element) {
                            if (is_array($element)) {
                                if (array_key_exists('ListProduit', $element)) {
                                    if (array_key_exists('Produit', $element['ListProduit'])) {
                                        if (array_key_exists('0', $element['ListProduit']['Produit'])){
                                            $pointeur_art = & $element['ListProduit']['Produit'];
                                        }
                                        else{
                                            $pointeur_art = & $element['ListProduit'];
                                        }
                                        foreach ($pointeur_art as & $detail_art) {
                                            // Remplacement du planning
                                            if (array_key_exists('strPlanning_'.$detail_art['IdLigne'], $_POST)){
                                                $tblStrPlanning = explode(';', getValue('strPlanning_'.$detail_art['IdLigne']));
                                                unset($detail_art['ListePlanning']['Planning']);
                                                foreach($tblStrPlanning as $ligneStrPlanning){
                                                    $tblLigneStrPlanning = explode(':', $ligneStrPlanning);
                                                    
                                                    if($tblLigneStrPlanning[1])
                                                    {
                                                        $detail_art['ListePlanning']['Planning'][] = array(
                                                            'Date' => $tblLigneStrPlanning[0],
                                                            'Quantite' => $tblLigneStrPlanning[1],
                                                        );                                                        
                                                    }
                                                }
                                                //print_r($detail_art['ListePlanning']);
                                            }
                                            // Remplacement du delai de livraison s'il est vide dans $_POST
                                            if (array_key_exists('delaiLivraison_'.$detail_art['IdLigne'], $_POST) && getValue('delaiLivraison_'.$detail_art['IdLigne'])==''){
                                                $detail_art['DelaiLiv'] = '';
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            
            if (array_key_exists('Stock', $flux_result)) {
                $save_pointeur = &$flux_result['Stock'];
                if (array_key_exists('FournisseurDA', $save_pointeur)) {
                    if (array_key_exists('0', $save_pointeur['FournisseurDA']))
                        $pointeur = & $save_pointeur['FournisseurDA'];
                    else
                        $pointeur = & $save_pointeur;
                    
                    foreach ($pointeur as &$element){
                        if (is_array($element)){
                            if ($_SESSION['LstStocks_IdLigne'] != '') {
                                $liste = $_SESSION['LstStocks_IdLigne'];
                                if (array_key_exists('ListProduit', $element)){
                                    if (array_key_exists('Produit', $element['ListProduit'])) {
                                        if (array_key_exists("0", $element['ListProduit']['Produit'])){
                                            $pointeur_art = & $element['ListProduit']['Produit'];
                                        }
                                        else{
                                            $pointeur_art = & $element['ListProduit'];
                                        }
                                        
                                        foreach ($pointeur_art as & $detail_art) {
                                            // Remplacement du planning
                                            if (array_key_exists('strPlanning_'.$detail_art['IdLigne'], $_POST)){
                                                $tblStrPlanning = explode(';', getValue('strPlanning_'.$detail_art['IdLigne']));
                                                unset($detail_art['ListePlanning']['Planning']);
                                                foreach($tblStrPlanning as $ligneStrPlanning){
                                                    $tblLigneStrPlanning = explode(':', $ligneStrPlanning);
                                                    if($tblLigneStrPlanning[1])
                                                    {
                                                        $detail_art['ListePlanning']['Planning'][] = array(
                                                            'Date' => $tblLigneStrPlanning[0],
                                                            'Quantite' => $tblLigneStrPlanning[1],
                                                        );
                                                    }
                                                }
                                            }
                                            // Remplacement du delai de livraison s'il est vide dans $_POST
                                            if (array_key_exists('delaiLivraison_'.$detail_art['IdLigne'], $_POST) && getValue('delaiLivraison_'.$detail_art['IdLigne'])==''){
                                                $detail_art['DelaiLiv'] = '';
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            
            if (array_key_exists('ListCdes', $flux_result)) {
                if (array_key_exists('Cde', $flux_result['ListCdes'])) {
                    if (array_key_exists('0', $flux_result['ListCdes']['Cde']))
                        $pointeur = & $flux_result['ListCdes']['Cde'];
                    else
                        $pointeur = & $flux_result['ListCdes'];
                            
                    foreach ($pointeur as &$element) {
                        if (is_array($element)) {
                            if ($_SESSION['LstCde_IdLigne'] != '') {
                                $liste = $_SESSION['LstCde_IdLigne'];
                                if (array_key_exists('ListProduit', $element)) {
                                    if (array_key_exists('Produit', $element['ListProduit'])) {
                                        if (array_key_exists("0", $element['ListProduit']['Produit']))
                                            $pointeur_art = & $element['ListProduit']['Produit'];
                                        else
                                            $pointeur_art = & $element['ListProduit'];
                                                
                                        foreach ($pointeur_art as & $detail_art) {
                                            // Remplacement du planning
                                            if (array_key_exists('strPlanning_'.$detail_art['IdLigne'], $_POST)){
                                                $tblStrPlanning = explode(';', getValue('strPlanning_'.$detail_art['IdLigne']));
                                                unset($detail_art['ListePlanning']['Planning']);
                                                foreach($tblStrPlanning as $ligneStrPlanning){
                                                    $tblLigneStrPlanning = explode(':', $ligneStrPlanning);
                                                    if($tblLigneStrPlanning[1])
                                                    {
                                                        $detail_art['ListePlanning']['Planning'][] = array(
                                                            'Date' => $tblLigneStrPlanning[0],
                                                            'Quantite' => $tblLigneStrPlanning[1],
                                                        );
                                                    }
                                                }
                                            }
                                            // Remplacement du delai de livraison s'il est vide dans $_POST
                                            if (array_key_exists('delaiLivraison_'.$detail_art['IdLigne'], $_POST) && getValue('delaiLivraison_'.$detail_art['IdLigne'])==''){
                                                $detail_art['DelaiLiv'] = '';
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    // Recuperation de la valeur du budget
    $flux_result['Budget'] = getValue('budget');
    
    // On enregistre le motif de l'avenant
    $flux_result['MotifAvenant'] = getValue('MotifAvenant');
    
    if (array_key_exists('ListCdes', $flux_result)) {
        if (array_key_exists('0', $flux_result['ListCdes']['Cde']))
            $pointeur = & $flux_result['ListCdes']['Cde'];
        else
            $pointeur = & $flux_result['ListCdes'];
        
        // indice de la commande pour récupérer les objets et les offres fournisseurs des commandes
        // dans la xsl, cet indice correspond à la position du noeud <cde> et son indice de départ est 0
        $indice_cde_xsl = 0;
        foreach ($pointeur as &$element)
            if (is_array($element)) {
                // Spec N°2375 : Ajout dans le flux_result les champs ObjetCommande et RefOffreFournisseur
                $element['Objet'] = getValue('objet_cde_' . $indice_cde_xsl);
                $element['RefOffreFournisseur'] = getValue('offre_frs_cde_' . $indice_cde_xsl);
                
                $indice_cde_xsl ++; // on incrémente l'indice pour la commande suivante
            }
    }
    
    // Recherche s'il existe des cdes en erreurs
    
    if ($flg_relance) {
        // Rappel du wsdl de sauvegarde car raffraichissement obligatoire
        PanierEntete::WsdlSave(false, $_SESSION['id_user'], $_SESSION['id_panier']);
        
        $connecteur->disconnect();
        exit();
    }

    // Test si tous les noms de signataires ont ete renseignes
    foreach ($_POST as $key => $data)
        if (strpos($key, 'typdoc|') === 0) 
        {
            list ($champs, $type, $id_xml) = explode('|', $key);

            $typDoc = getValue($key);   
            
            switch (strtolower($type)) 
            {
                case 'da':
                    
                    if (getValue('consult') == null && strlen(trim($_POST[$key])) === 0) 
                    {
                       echo 'alert(\'', cnv_to_javascript(Trad('La sélection du type de document est obligatoire')), '\');';
                       $connecteur->disconnect();
                       exit();
                    }
                    else
                    {
                        $index_da = 0;
                        if (array_key_exists('DA', $flux_result)) {
                            $pointeur = & $flux_result['DA'];
                            
                            if (array_key_exists('TypeDoc', $pointeur))
                                if ($id_xml == $index_da)
                                    $pointeur['TypeDoc'] = $typDoc;
                            
                            $index_da ++;
                        }
                        
                        break;
                    }

                case 'ds':
                    if (getValue('consult') == null  && strlen($_POST[$key]) === 0) 
                    {
                       echo 'alert(\'', cnv_to_javascript(Trad('La sélection du type de document est obligatoire')), '\');';
                       $connecteur->disconnect();
                       exit();
                    }
                    else
                    {
                        $index_stock = 0;
                        if (array_key_exists('Stock', $flux_result)) {
                            $pointeur = & $flux_result['Stock'];
                            
                            if (array_key_exists('TypeDoc', $pointeur))
                                if ($id_xml == $index_stock)
                                    $pointeur['TypeDoc'] = $typDoc;
                            
                            $index_stock ++;
                        }
                        
                        break;
                    }

                case 'cde':

                    if (getValue('consult') == null  && strlen($_POST[$key]) === 0) 
                    {
                       echo 'alert(\'', cnv_to_javascript(Trad('La sélection du type de document est obligatoire')), '\');';
                       $connecteur->disconnect();
                       exit();
                    }
                    else
                    {
                        $index_cdes = 0;
                   
                        if (array_key_exists('ListCdes', $flux_result))
                            if (array_key_exists('Cde', $flux_result['ListCdes'])) {
                                if (array_key_exists('0', $flux_result['ListCdes']['Cde']))
                                    $pointeur = & $flux_result['ListCdes']['Cde'];
                                else
                                    $pointeur = & $flux_result['ListCdes'];
                                
                                // indice de la commande pour récupérer les objets et les offres fournisseurs des commandes
                                // dans la xsl, cet indice correspond à la position du noeud <cde> et son indice de départ est 0
                                foreach ($pointeur as &$element)
                                    if (is_array($element)) {
                                        if ($id_xml == $index_cdes)
                                            $element['TypeDoc'] = $typDoc;
                                        
                                        $index_cdes ++;
                                    }
                            }
                        
                        break;
                    }

            }
            
        
        }
        else if (strpos($key, 'NumFactureRegulCde_') === 0) {
            $numFacture = getValue($key);
            if ($numFacture != 0) { // Uniquement si facture differentes de 0 en plus et aucune obligatio d'avoir la sélection
                list ($champs, $id_xml) = explode('_', $key);
                $index_cdes = 0;
                
                if (array_key_exists('ListCdes', $flux_result)) {
                    if (array_key_exists('Cde', $flux_result['ListCdes'])) {
                        
                        if (array_key_exists('0', $flux_result['ListCdes']['Cde']))
                            $pointeur = & $flux_result['ListCdes']['Cde'];
                        else
                            $pointeur = & $flux_result['ListCdes'];
                        
                        foreach ($pointeur as &$element)
                            if (is_array($element)) {
                                /**
                                 * 3667 Concernant la partie facture dans le cas de commande de regul
                                 */
                                if (array_key_exists('ListeFactures', $element)) {
                                    if (array_key_exists('ChoisirFacture', $element)) {
                                        if (BoolSql($element['ChoisirFacture'])) {
                                            if ($index_cdes == $id_xml) {
                                                $element['NumFactureRegulCde'] = $numFacture;
                                            }
                                        }
                                    }
                                }
                                
                                $index_cdes ++;
                            }
                    }
                }
            }
        } else if (strpos($key, 'signa_') === 0) {
            list ($champs, $type, $id_xml) = explode('_', $key);
            $utilisateur = getValue($key);
            
            // Recensé dans la spec N°2431
            if ((is_null($utilisateur) || trim($utilisateur) == '') && ! Param::isWorflowStandard()) {
                echo 'alert(\'', cnv_to_javascript(Trad('La sélection des signataires est obligatoire')), '\');';
                $connecteur->disconnect();
                exit();
            } else {
                switch (strtolower($type)) {
                    case 'da':
                        $index_da = 0;
                        if (array_key_exists('DA', $flux_result)) {
                            $pointeur = & $flux_result['DA'];
                            
                            // Traitement de la liste des signataires
                            if (array_key_exists('ListSignataire', $pointeur))
                                if ($id_xml == $index_da)
                                    if (Param::isWorflowStandard()) {
                                        $pointeur['ListSignataire']['AlgoSpecif'] = $_SESSION['CSV_' . $key];
                                        if (trim($_SESSION['CSV_' . $key]) == '') {
                                            echo 'alert(\'', cnv_to_javascript(Trad("La sélection des signataires est obligatoire")), "');";
                                            $connecteur->disconnect();
                                            exit();
                                        }
                                    } else
                                        $pointeur['ListSignataire']['Signataire'] = array(
                                            'Utilisateur' => $utilisateur
                                        );
                            
                            $index_da ++;
                        }
                        
                        break;
                    
                    case 'stock':
                        $index_stock = 0;
                        if (array_key_exists('Stock', $flux_result)) {
                            $pointeur = & $flux_result['Stock'];
                            
                            if (array_key_exists('ListSignataire', $pointeur))
                                if ($id_xml == $index_stock)
                                    if (Param::isWorflowStandard()) {
                                        $pointeur['ListSignataire']['AlgoSpecif'] = $_SESSION['CSV_' . $key];
                                        if (trim($_SESSION['CSV_' . $key]) == '') {
                                            echo 'alert(\'', cnv_to_javascript(Trad('La sélection des signataires est obligatoire')), '\');';
                                            $connecteur->disconnect();
                                            exit();
                                        }
                                    } else
                                        $pointeur['ListSignataire']['Signataire'] = array(
                                            'Utilisateur' => $utilisateur
                                        );
                            
                            $index_stock ++;
                        }
                        
                        break;
                    
                    case 'cdes':
                        $index_cdes = 0;
                        
                        if (array_key_exists('ListCdes', $flux_result)) {
                            if (array_key_exists('Cde', $flux_result['ListCdes'])) {
                                
                                if (array_key_exists('0', $flux_result['ListCdes']['Cde']))
                                    $pointeur = & $flux_result['ListCdes']['Cde'];
                                else
                                    $pointeur = & $flux_result['ListCdes'];
                                
                                $flux_result['ListCdes']['!TotCde'] = 0;
                                
                                // indice de la commande pour récupérer les objets et les offres fournisseurs des commandes
                                // dans la xsl, cet indice correspond à la position du noeud <cde> et son indice de départ est 0
                                foreach ($pointeur as &$element)
                                    if (is_array($element)) {
                                        if (array_key_exists('ListSignataire', $element))
                                            if ($id_xml == $index_cdes)
                                                if (Param::isWorflowStandard()) {
                                                    $element['ListSignataire']['AlgoSpecif'] = $_SESSION['CSV_' . $key];
                                                    if (trim($_SESSION['CSV_' . $key]) == '') {
                                                        echo 'alert(\'', cnv_to_javascript(Trad('La sélection des signataires est obligatoire')), '\');';
                                                        $connecteur->disconnect();
                                                        exit();
                                                    }
                                                } else
                                                    $element['ListSignataire']['Signataire'] = array(
                                                        'Utilisateur' => $utilisateur
                                                    );
                                        
                                        $index_cdes ++;
                                    }
                                
                                if (Param::isAfficheTtc())
                                    $flux_result['ListCdes']['!TotCde'] = FormatageData::formatMontant($flux_result['ListCdes']['!TotCde'], 2, ' ');
                                else
                                    $flux_result['ListCdes']['!TotCde'] = FormatageData::formatMontant($flux_result['ListCdes']['!TotCde'], 2, ' ');
                            }
                        }
                        break;
                    
                    default:
                        if ($type != '') {
                            echo 'alert(\'', strtolower($type), '\');';
                            break;
                        }
                }
            }
        }

     
    if (array_key_exists('DA', $flux_result)) {
        $entetePanier = new PanierEntete();
        $entetePanier->getEntetePanier($_SESSION['id_panier'], $_SESSION['id_user']);
        $commentaireIntDA = $entetePanier->getCOMMENT_INT();
        $titreDA = $entetePanier->getTITRE_DA();
        $zoneLibreDA = $entetePanier->getZONE_LIBRE();
        
        // $objetRupture = PanierRupture::UnserializeFromSession('DA');
        // if (is_null($objetRupture)) {
        $objetRupture = new PanierRupture();
        $objetRupture->SetDA($zoneLibreDA, $commentaireIntDA, $titreDA);
        // } else {
        //     $commentaireIntDA = $objetRupture->GetCommentaireInterne();
        //     $titreDA = $objetRupture->GetTitre();
        //     $zoneLibreDA = $objetRupture->GetZoneLibre();
        // }
        
        PanierRupture::SerializeInSession($objetRupture);
        
        $pointeur = &$flux_result['DA'];
        $pointeur = array_merge($pointeur, array(
            'CommentaireInterne' => nl2magicnl($commentaireIntDA)
        ));
        $pointeur = array_merge($pointeur, array(
            'Titre' => nl2magicnl($titreDA)
        ));
        $pointeur = array_merge($pointeur, array(
            'ZoneLibre' => $zoneLibreDA
        ));
    }
    
    if (array_key_exists('Stock', $flux_result)) {
        $entetePanier = new PanierEntete();
        $entetePanier->getEntetePanier($_SESSION['id_panier'], $_SESSION['id_user']);
        
        $objetRupture = PanierRupture::UnserializeFromSession(TypeSuivi::DS);
        if (is_null($objetRupture)) {
            $commentaireIntDS = '';
            $titreDS = '';
            $zoneLibreDS = '';
        } else {
            $commentaireIntDS = $objetRupture->GetCommentaireInterne();
            $titreDS = $objetRupture->GetTitre();
            $zoneLibreDS = $objetRupture->GetZoneLibre();
        }
        
        $pointeur = &$flux_result['Stock'];
        $pointeur = array_merge($pointeur, array(
            'CommentaireInterne' => nl2magicnl($commentaireIntDS)
        ));
        $pointeur = array_merge($pointeur, array(
            'Titre' => nl2magicnl($titreDS)
        ));
        $pointeur = array_merge($pointeur, array(
            'ZoneLibre' => $zoneLibreDS
        ));
    }

    return $flux_result;
}

$flg_relance = false;
// Si l'utilisateur a saisi un signataire pour une DA alors on effectue un contrôle
if ('selectDelegataire' == getValue('action')) {
    $signataire = getValue(getValue('OBJECT'));
    
    $sign = new Sign();
    
    if ('' != $signataire) {
        $result = $sign->IsTransfertPossible(TypeSuivi::DA, $signataire, getValue('no_doc'));
        
        if (! is_array($result) || ! array_key_exists('SIGNAT', $result)) {
            Affichage::messageJS('Le signataire saisi ne peut être choisi, veuillez en sélectionner un autre');
            Affichage::setAttribut(getValue('OBJECT'), 'value', '');
            Affichage::innerHTML(getValue('OBJECT') . '_nom', '');
        } else
            Affichage::innerHTMLPointeur(getValue('OBJECT') . '_nom', $result['NOM']);
    } else
        Affichage::innerHTML(getValue('OBJECT') . '_nom', '');
    
    $connecteur->disconnect();
    exit();
} elseif ('afficherConsoBudget' == getValue('action')) {
    // On récupère la consommation budgétaire pour cette DA
    $consoGalderma = new BudgetGalderma();
    $array_xml = $consoGalderma->buildConsoBudget(null, $_SESSION['id_user'], $_SESSION['id_panier']);
    
    $genXslt = new GenXslt();
    
    Affichage::innerHTMLPointeur('CONSOBUDGET_PANIER', $genXslt->XslHtml('application/xsl/template_budget_galderma.xsl', $array_xml));
    
    $connecteur->disconnect();
    exit();
} elseif (getValue('action') == 'demandeDelai') {
    $client = new soapclient('//localhost', false);
    $flux_result = FluxXml::GetFlux($client, 'soumission', false);
    $flux_result['Init_SectionImputation'] = $_SESSION['Init_SectionImputation'];
    
    // On appelle la prévisualisation de la commmande
    if (ImpressionDocPdf::previewDaPdf($flux_result, true)) {
        // Sauvegarde en paniel brouillon, puis lancement de l'edition
        
        if ($all_four = GetFrsLigne($_SESSION['id_panier'])) {
            if ($fournisseur = SqlFrs::rqGetRecordFournis($all_four[0]['COD_FOURN'])->Trouve1()) {
                $ficLad = $_SESSION['UrlFichier'];
                
                $ficLad = basename($ficLad);
                
                $ficLad = Fichier::getExtensionCheminPJ() . $ficLad;
                if (copy($_SESSION['UrlFichier'], Fichier::getCheminPJ() . $ficLad)) {
                    // Move de la piece jointe ver fic_pj
                    
                    $libPanier = 'DD_' . ((is_null($fournisseur['ENSCOMM']) || $fournisseur['ENSCOMM'] == '') ? $fournisseur['RS'] : $fournisseur['ENSCOMM']) . '_' . DatePhpToMySql(mktime());
                    $flg_panier_modele = 0; // Panier Brouillon
                    
                    $id_new_panier = GetNewIdPanier($_SESSION['id_user']);
                    
                    if ($panier = SqlParam::rqGetFicLadFromSpac($id_new_panier)->Trouve1())
                        SqlParam::rqUpdateFicLadToSpac($id_new_panier, $ficLad)->ExecuteSql();
                    else
                        SqlParam::rqInsertFicLadToSpac($id_new_panier, $ficLad)->ExecuteSql();
                    
                    if (MovePanier($_SESSION['id_user'], $_SESSION['id_panier'], $id_new_panier, $flg_panier_modele, $libPanier)) {
                        // On rafraichit la partie panier en cours (montant + nb Articles
                        $_SESSION['sys_panier'] = 'SYS';
                        $_SESSION['id_panier'] = 0;
                        
                        Panier::updateMontantAndNbArticlePanier($_SESSION['id_panier']);
                        
                        // On met à jour la variable $_SESSION['id_panier'] qui contient le numéro de panier
                        $_SESSION['id_panier'] = $id_new_panier;
                        $repjs = 'alert(\'' . cnv_to_javascript(Trad(' Nouveau panier brouillon créé')) . '\');';
                        
                        echo "LanceEcr('recherche.php','men_gene','id_panier=", $id_new_panier, "&type=SYS&synchro=ok');";
                        
                        // Window.open du fichier en question
                        
                        echo $repjs;
                        $connecteur->disconnect();
                        exit();
                    }
                }
            }
        }
    }
} elseif ('updateComment' == getValue('action')) {
    // On teste la longueur des chaines
    $nomChamp = getValue('champ');
    $valeurChamp = getValue('value');
    
    if (($nomChamp == 'TITRE_DA' || $nomChamp == 'COMMENT_INT') && mb_strlen($valeurChamp) > 3000) {
        Affichage::messageJS(trad('La zone de saisie est limitée à 3000 caractères, veuillez vérifier'));
    } elseif ($nomChamp == 'ZONE_LIBRE' && mb_strlen($valeurChamp) > 30) {
        Affichage::messageJS(trad('La zone de saisie est limitée à 30 caractères, veuillez vérifier'));
    } elseif (($nomChamp == 'TITRE_DS' || $nomChamp == 'COMMENT_INT_DS') && mb_strlen($valeurChamp) > 3000) {
        Affichage::messageJS(trad('La zone de saisie est limitée à 3000 caractères, veuillez vérifier'));
    } elseif ($nomChamp == 'ZONE_LIBRE_DS' && mb_strlen($valeurChamp) > 30) {
        Affichage::messageJS(trad('La zone de saisie est limitée à 30 caractères, veuillez vérifier'));
    } elseif ($nomChamp == 'ref_offre_frs' && mb_strlen($valeurChamp) > 60) {
        Affichage::messageJS(trad('La zone de saisie est limitée à 60 caractères, veuillez vérifier'));
    } elseif ($nomChamp == 'objet_cde' && mb_strlen($valeurChamp) > 60) {
        Affichage::messageJS(trad('La zone de saisie est limitée à 60 caractères, veuillez vérifier'));
    } elseif ($nomChamp == 'motifAvenant' && mb_strlen($valeurChamp) > 120) {
        Affichage::messageJS(trad('La zone de saisie est limitée à 120 caractères, veuillez vérifier'));
    }
    // Selon les champs, on met en variable de session
    if ($nomChamp == 'TITRE_DS' || $nomChamp == 'COMMENT_INT_DS' || $nomChamp == 'ZONE_LIBRE_DS') {
        // maj dans la session
        $objetRupture = PanierRupture::UnserializeFromSession(TypeSuivi::DS);
        switch ($nomChamp) {
            case 'ZONE_LIBRE_DS':
                $objetRupture->SetZoneLibre($valeurChamp);
                break;
            case 'COMMENT_INT_DS':
                $objetRupture->SetCommentaireInterne($valeurChamp);
                break;
            case 'TITRE_DS':
                $objetRupture->SetTitre($valeurChamp);
                break;
        }
        PanierRupture::SerializeInSession($objetRupture);
    } elseif ($nomChamp == 'ref_offre_frs' || $nomChamp == 'objet_cde') {
        $num_ligne_cde = getValue('index');
        $objetRupture = PanierRupture::UnserializeFromSession(TypeSuivi::CDE, '', $num_ligne_cde);
        if ($nomChamp == 'ref_offre_frs')
            $objetRupture->SetRefOffreFrs(getValue('value'));
        else
            $objetRupture->SetObjetCde(getValue('value'));
        PanierRupture::SerializeInSession($objetRupture);
    } elseif ($nomChamp == 'TITRE_DA' || $nomChamp == 'COMMENT_INT' || $nomChamp == 'ZONE_LIBRE') {
        
        // maj dans la session
        $objetRupture = PanierRupture::UnserializeFromSession(TypeSuivi::DA);
        // var_dump($objetRupture);
        switch ($nomChamp) {
            case 'ZONE_LIBRE':
                $objetRupture->SetZoneLibre($valeurChamp);
                break;
            case 'COMMENT_INT':
                $objetRupture->SetCommentaireInterne($valeurChamp);
                break;
            case 'TITRE_DA':
                $objetRupture->SetTitre($valeurChamp);
                break;
        }

        $arrayUpdate =[
            $nomChamp => $valeurChamp,
        ];

        $panierEntete = new PanierEntete();
        $panierEntete->updateEntetePanier($_SESSION['id_panier'], $arrayUpdate);

        PanierRupture::SerializeInSession($objetRupture);
    } elseif ($nomChamp == 'motifAvenant') {
        $objetRupture = PanierRupture::UnserializeFromSession('AVEN');
        $objetRupture->SetMotifAvenant($valeurChamp);
        PanierRupture::SerializeInSession($objetRupture);
    }
    
    $connecteur->disconnect();
    exit();
} else if (getValue('action') == 'planning') {
    
    $tblInformation = explode('___', getValue('information'));
    $lignePanier = $tblInformation[1];
    $champ = 'strPlanning_' . $lignePanier;
    $largeurFenetre = 450;
    $hauteurFenetre = 150;
    
    $url = "planning.php?form_parent=frm_saisie_panier&id_bloc={$tblInformation[0]}&champ={$champ}&num_lig=" . $lignePanier . "&detail=" .$_POST[$champ] . "&ReceptionAuto=" .$tblInformation[3] . "&QteConditionnement=" .$tblInformation[5]. "&ValeurUniteDAArticle=" .$tblInformation[7]."&CodeArticle=" .$tblInformation[9]."&QteDemande=" .$tblInformation[11]."&CodeUnit=" .$tblInformation[13]."&DteDebContrat=" .convertDateUserToSql($tblInformation[15])."&DteFinContrat=" .convertDateUserToSql($tblInformation[17])."&Periodicite=" .$tblInformation[19]."&ModeCalculDelai=" .$tblInformation[21]."&JourApplication=" .$tblInformation[23]."&idpopup=1";
    
    echo "var win_pop = OpenPopup('", $url, "','win_pop1','", $largeurFenetre, "','", $hauteurFenetre, "');" . '';
    $connecteur->disconnect();
    exit();
}

require_once 'php/info_panier.php';

$fichier_xsl = 'application/xsl/panier_ong_5.xsl';

switch (GetValue('MODE')) {
    // Mode appserveur
    case 'httpreq': // mode reponse sur les updates
        $table = 'oxa_users_panier_ligne';
        $fonction = getValue('fonction');
        $object = GetValue('OBJECT');
        $numform = GetValue('formjs');
        $valeur = trim(getValue($object));
        $repjs = '';
        $obj_xml = new GenXslt();
        $panierEntete = new PanierEntete();
        $panierEntete->getEntetePanier($_SESSION['id_panier'], $_SESSION['id_user']);

        switch (getValue($object)) {
            case 'SAVE':
                
                Supervision::setHeureDebut();
                Supervision::setIdUser($_SESSION['Session_Login']);
                Supervision::setTypeTraitement('VP');         //Importation Fichier CSV
                // SPEC 4100 remplacer le centre émetteur de la session par le centre émetteur du panier
                Supervision::setCodeCtrEmetteur($panierEntete->getCENTRE_EMETTEUR());
                Supervision::setCodeCtrLivraison($_SESSION['Session_CodeCtrLivraison']);
                Supervision::setCodeSociete($_SESSION['Session_SocUsr']);
                Supervision::setCodeSectionImputation($_SESSION['Session_SectionImputation']);
                
                // On ecrit une ligne dans la table OXAAUDITACT (spec 2802)
                $debutValidation = microtime(true);
                Track::logAudit('PANIER', 'VALIDATION', 'Debut');
                
                $wsdl = 'Oxaproc_Panier.wsdl';
                
                $flux_result = getFluxResultat($flg_relance);
                
                /*
                 * ECA 02/04/2008
                 * Dossier N°11557 : On contrôle le retour de la soumission du panier et on empêche la soumission finale
                 * en cas de présence d'erreur sur les DA, CDE ou DS.
                 */
                $soumission_finale_possible = Panier::ControleResultSoumissionPanier($flux_result);
                if(is_array($flux_result["ListCdes"]["Cde"]["ListProduit"]['Produit'] ?? ''))
                {
                    Supervision::setNbLigneObjet(count($flux_result["ListCdes"]["Cde"]["ListProduit"]['Produit']));
                }
                elseif(is_array($flux_result['DA']['FournisseurDA']["ListProduit"]['Produit'] ?? ''))
                {
                    Supervision::setNbLigneObjet(count($flux_result['DA']['FournisseurDA']["ListProduit"]['Produit']));
                }
                else
                {
                    Supervision::setNbLigneObjet(0);
                }

                Supervision::setRefObjet($flux_result['RefPanier']);
                
                if (! $soumission_finale_possible) {
                    echo 'alert(\'', cnv_to_javascript(Trad('Vous devez traiter les anomalies bloquantes avant de pouvoir soumettre votre panier.')), '\');';
                    $connecteur->disconnect();
                    exit();
                }
                
                // SPEC 4108 ajouter planning et modifier delai livraison dans $flux_result
                if (array_key_exists('DA', $flux_result)) {
                    $save_pointeur = & $flux_result['DA'];
                    if (array_key_exists('FournisseurDA', $save_pointeur)) {
                        if (array_key_exists('0', $save_pointeur['FournisseurDA']))
                            $pointeur = & $save_pointeur['FournisseurDA'];
                        else
                            $pointeur = & $save_pointeur;
                                            
                        if (is_array($pointeur)) { 
                            foreach ($pointeur as &$element) {            
                                if (is_array($element)) { 
                                    if (array_key_exists('ListProduit', $element)) {
                                        if (array_key_exists('Produit', $element['ListProduit'])) {
                                            if (array_key_exists('0', $element['ListProduit']['Produit'])){
                                                $pointeur_art = & $element['ListProduit']['Produit'];
                                            }
                                            else{
                                                $pointeur_art = & $element['ListProduit'];
                                            }
                                            foreach ($pointeur_art as & $detail_art) {
                                                // Remplacement du planning
                                                if (array_key_exists('strPlanning_'.$detail_art['IdLigne'], $_POST)){
                                                    $tblStrPlanning = explode(';', getValue('strPlanning_'.$detail_art['IdLigne']));
                                                    unset($detail_art['ListePlanning']['Planning']);
                                                    foreach($tblStrPlanning as $ligneStrPlanning){
                                                        $tblLigneStrPlanning = explode(':', $ligneStrPlanning);
                                                        if($tblLigneStrPlanning[1])
                                                        {
                                                            $detail_art['ListePlanning']['Planning'][] = array(
                                                                'Date' => $tblLigneStrPlanning[0],
                                                                'Quantite' => $tblLigneStrPlanning[1],
                                                            );
                                                        }
                                                    }
                                                    //print_r($detail_art['ListePlanning']);
                                                }
                                                // Remplacement du delai de livraison s'il est vide dans $_POST
                                                if (array_key_exists('delaiLivraison_'.$detail_art['IdLigne'], $_POST) && getValue('delaiLivraison_'.$detail_art['IdLigne'])==''){
                                                    $detail_art['DelaiLiv'] = '';
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

                if (array_key_exists('Stock', $flux_result)) {
                    $save_pointeur = &$flux_result['Stock'];
                    if (array_key_exists('FournisseurDA', $save_pointeur)) {
                        if (array_key_exists('0', $save_pointeur['FournisseurDA']))
                            $pointeur = & $save_pointeur['FournisseurDA'];
                        else
                            $pointeur = & $save_pointeur;
                        foreach ($pointeur as &$element){
                            if (is_array($element)){
                                if ($_SESSION['LstStocks_IdLigne'] != '') {
                                    $liste = $_SESSION['LstStocks_IdLigne'];
                                    if (array_key_exists('ListProduit', $element)){
                                        if (array_key_exists('Produit', $element['ListProduit'])) {
                                            if (array_key_exists("0", $element['ListProduit']['Produit'])){
                                                $pointeur_art = & $element['ListProduit']['Produit'];
                                            }
                                            else{
                                                $pointeur_art = & $element['ListProduit'];
                                            }
                                            
                                            foreach ($pointeur_art as & $detail_art) {
                                                // Remplacement du planning
                                                if (array_key_exists('strPlanning_'.$detail_art['IdLigne'], $_POST)){
                                                    $tblStrPlanning = explode(';', getValue('strPlanning_'.$detail_art['IdLigne']));
                                                    unset($detail_art['ListePlanning']['Planning']);
                                                    foreach($tblStrPlanning as $ligneStrPlanning){
                                                        $tblLigneStrPlanning = explode(':', $ligneStrPlanning);
                                                        if($tblLigneStrPlanning[1])
                                                        {
                                                            $detail_art['ListePlanning']['Planning'][] = array(
                                                                'Date' => $tblLigneStrPlanning[0],
                                                                'Quantite' => $tblLigneStrPlanning[1],
                                                            );
                                                        }
                                                    }
                                                }
                                                // Remplacement du delai de livraison s'il est vide dans $_POST
                                                if (array_key_exists('delaiLivraison_'.$detail_art['IdLigne'], $_POST) && getValue('delaiLivraison_'.$detail_art['IdLigne'])==''){
                                                    $detail_art['DelaiLiv'] = '';
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

                if (array_key_exists('ListCdes', $flux_result)) {
                    if (array_key_exists('Cde', $flux_result['ListCdes'])) {
                        if (array_key_exists('0', $flux_result['ListCdes']['Cde']))
                            $pointeur = & $flux_result['ListCdes']['Cde'];
                        else
                            $pointeur = & $flux_result['ListCdes'];
                        
                        foreach ($pointeur as &$element) {
                            if (is_array($element)) {
                                if ($_SESSION['LstCde_IdLigne'] != '') {
                                    $liste = $_SESSION['LstCde_IdLigne'];
                                    if (array_key_exists('ListProduit', $element)) {
                                        if (array_key_exists('Produit', $element['ListProduit'])) {
                                            if (array_key_exists("0", $element['ListProduit']['Produit']))
                                                $pointeur_art = & $element['ListProduit']['Produit'];
                                            else
                                                $pointeur_art = & $element['ListProduit'];
                                            
                                            foreach ($pointeur_art as & $detail_art) {
                                                // Remplacement du planning
                                                if (array_key_exists('strPlanning_'.$detail_art['IdLigne'], $_POST)){
                                                    $tblStrPlanning = explode(';', getValue('strPlanning_'.$detail_art['IdLigne']));
                                                    unset($detail_art['ListePlanning']['Planning']);
                                                    foreach($tblStrPlanning as $ligneStrPlanning){
                                                        $tblLigneStrPlanning = explode(':', $ligneStrPlanning);
                                                        if($tblLigneStrPlanning[1])
                                                        {
                                                            $detail_art['ListePlanning']['Planning'][] = array(
                                                                'Date' => $tblLigneStrPlanning[0],
                                                                'Quantite' => $tblLigneStrPlanning[1],
                                                            );
                                                        }
                                                    }
                                                }
                                                // Remplacement du delai de livraison s'il est vide dans $_POST
                                                if (array_key_exists('delaiLivraison_'.$detail_art['IdLigne'], $_POST) && getValue('delaiLivraison_'.$detail_art['IdLigne'])==''){
                                                    $detail_art['DelaiLiv'] = '';
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                // print_r($flux_result);exit;

                /*
                 *
                 */
                $_SESSION['initConnexion'] = 1;
                PanierEntete::WsdlSaveFinal($_SESSION['id_panier'], $flux_result);
                
                $connecteur->disconnect();
                exit();
                
                break;
            // Gestion des commentaire complémentaires
            // utilise le div popup1
            case 'DA_CI':
                // récupération éventuelle d'un texte sauvegardé
                // alimentation du tableau de donnés à passer
                // appelle du template dans la xsl trest la présence de /ide/template/DA_CI/comment/@teste
                $array['template']['DA_CI']['comment'] = array(
                    '!value' => 1
                );
                // y a til qque texte à afficher
                // print($_SESSION['DA_internal_comment']);
                if ($_SESSION['DA_internal_comment']) {
                    $array['template']['DA_CI']['comment'] = array(
                        '!texte' => $_SESSION['DA_internal_comment']
                    );
                }                // si non, la balise texte foit être présente pour excuter le bon template.
                else {
                    $array['template']['DA_CI']['comment'] = array(
                        '!texte' => ''
                    );
                }
                // actions javascript associées au bouton valider
                $array['template']['DA_CI']['bt_OK']['!onclick'] = "if(check_char_number(document.DA_CI.internal_comment, 3000)==true) {Traite('panier_ong_5.php', document.forms.frm_saisie_panier.information, 'DA_CI_SAVE', document.DA_CI.internal_comment.value); closePopup('popup1');}";
                
                // génératin de l'écran à afficher
                // remplissage de la popup avec les informations de la xsl
                $ajax .= "getObj('popup1').innerHTML=\"" . HttpReplacePointeur($obj_xml->XslHtml($fichier_xsl, $array)) . '";';
                $ajax .= "getObj('popup1').height=170;";
                $ajax .= "getObj('popup1').width=500;";
                
                // affichage
                echo $ajax;
                break;
            // gestion du menu contextuel permettant d'acceder aux PDF chiffrés et non chiffrés
            // utilise le div menu
            case 'PDF_MENU':
                $m = new Pmenu('popup_menu_class', 'PDF_MENU');
                $m->addOption('option1', 'DA chiffrée', 'id_option1', 'PDF_MENU', 'DA chiffrée', "javascript:Traite('panier_ong_5.php',document.forms.frm_saisie_panier.information,'" . getValue('texte') . "', 'false');");
                $m->addOption('option2', 'DA non chiffrée', 'id_option2', 'PDF_MENU', 'DA non chiffrée', "Traite('panier_ong_5.php',document.forms.frm_saisie_panier.information,'" . getValue('texte') . "', 'true');");
                
                $m->affiche();
                
                $connecteur->disconnect();
                exit();
                break;
            case 'DA_CI_SAVE':
                // récupération éventuelle d'un texte sauvegardé
                $_SESSION['DA_internal_comment'] = getValue('texte');
                break;
            default:
                break;
        }
        
        if ($object == 'SOUMETTRE' || $object == 'relance') 
        {
            $_SESSION['DA_internal_comment'] = '';
            break;
        } elseif (strpos($object, 'pdf_Stock_') === 0) {
            $flux_result = getFluxResultat();
            $flux_result['Init_SectionImputation'] = $_SESSION['Init_SectionImputation'];
            
            // On appelle la prévisualisation de la commmande
            ImpressionDocPdf::previewDSPdf($flux_result, getValue('chiffrage') == 'true');
            
            exit();
        } elseif (strpos($object, 'objet|DA') === 0) {
            PanierEntete::setValue('objectDA', getValue($object));
            exit();
        } elseif (strpos($object, 'objet|DS') === 0) {
            PanierEntete::setValue('objectDS', getValue($object));
            exit();
        } elseif (strpos(getValue($object), 'pdf_DA_') === 0) {
            
            // Récupération des informations obtenue suite à la soumission du panier
            
            $flux_result = getFluxResultat();
            
            $flux_result['CommentaireInterne'] = getValue('commentaireInterne');
            $flux_result['Titre'] = getValue('titreDA');
            $flux_result['DA_zone_libre'] = getValue('ZoneLibre');
            $flux_result['Init_SectionImputation'] = $_SESSION['Init_SectionImputation'];
            
            // On appelle la prévisualisation de la commmande
            
            ImpressionDocPdf::previewDaPdf($flux_result, getValue('chiffrage') == 'true');
            
            exit();
        } elseif (strpos($object, 'pdf_Cdes_') === 0) {
            // On extrait $ref_xml qui est l'indice identifiant la commande parmis les autres de la validation panier
            list ($type_imp, $tag, $ref_xml) = explode('_', $object);
            
            // Récupération des informations obtenue suite à la soumission du panier
            $flux_result = getFluxResultat();
            
            // On complète les informations du résultat de soumission du panier par les informations relatives au centre de livraison
            // de l'entête du panier
            
            $panierEntete = new PanierEntete();
            $panierEncours = 0;
            $panierEntete->getEntetePanier($panierEncours, $_SESSION['id_user']);
            
            $info_comp['RefOffreFournisseur'] = getValue('offre_frs_cde_' . $ref_xml);
            $info_comp['ObjetCommande'] = getValue('objet_cde_' . $ref_xml);

            // On appelle la prévisualisation de la commmande
            ImpressionDocPdf::previewCdePdf($flux_result, $ref_xml, $info_comp);
            
            exit();
        }
        
        $connecteur->disconnect();
        exit();
        
        break;
    
    default:
        $connecteur->disconnect();
        exit();
        break;
}

$client = new soapclient('//localhost', false);
$flux_result = FluxXml::GetFlux($client, 'soumission', false);
// $flux_result = Fichier::LireContenuFichier('D:\\oxalys\\workspace\\textpanier_retour.xml', true);

FormatageData::formatDateInArray(array(
    'DelaiLiv'
), $flux_result);
FormatageData::formatDateInArray(array(
    'DteDebContrat'
), $flux_result);
FormatageData::formatDateInArray(array(
    'DteFinContrat'
), $flux_result);

// On encode le resultat retouné par le WSDL
// Total des commandes DA

$cmb_routage = array(
    array(
        '!value' => 'F',
        '!texte' => 'Fax'
    ),
    array(
        '!value' => 'M',
        '!texte' => 'Mail'
    ),
    array(
        '!value' => 'P',
        '!texte' => 'Pdf'
    )
);

$index = 0;
$index_pdf_da = 0;
$index_da = 0;

$index_pdf_stock = 0;
$index_stock = 0;
$texte_js = 'object_user.length=0;';

/**
 * Spec 3480
 * Dans le cas où l'utilisateur peut modifier les elements de la liste alors on effectue la requete suivante
 * car la liste n'est pas différente entre DA / CDE / Stock
 */
if (array_key_exists('OX_CHTYDOC', $_SESSION) && $_SESSION['OX_CHTYDOC']) {
    // Si mode avenant alors on peut pas toucher au type document
    if (array_key_exists('PANIER_MODE_AVENANT', $_SESSION) && $_SESSION['PANIER_MODE_AVENANT'])
        $listeTypeDoc = null;
    else if ($lignePanier = GetLignePanier($_SESSION['id_panier'])) {
        $modeModfication = false;
        foreach ($lignePanier as & $result_art)
            if ($result_art['NO_CDE'] != '' && $result_art['NO_CDE'] != '0') // 27661
{
                $modeModfication = true;
                break;
            }
        
        // Si mode modification de document alors on peut pas toucher au type de document
        if ($modeModfication)
            $listeTypeDoc = null;
        else {
            // Type de document REGUL
            if ($r = SqlParam::rqGetParamParavrac('PARAMGEN', 'TYP_DOC_REGCDE')->Trouve1())
                $codeTypeDocRegul = $r['LIB01PARV'];
            else
                $codeTypeDocRegul = '';
            
            // Type de document STOCK
            if ($r = SqlParam::rqGetParamParavrac('PARAMGEN', 'TYP_DOC_STDEF')->Trouve1())
                $codeTypeDocDS = $r['LIB01PARV'];
            else
                $codeTypeDocDS = '';
            
            // Le type de document ne doit pas être initialisé Dossier 28058
            $initTypeDocument = true;
            
            if ($r = SqlParam::rqGetParamParavrac('OXAPROC', 'TYPDOC_NONINIT')->Trouve1())
                if ($r['LIB01PARV'] == 'O')
                    $initTypeDocument = false;
            
            // Type de document "Cde directe hors eproc" :
            if ($initTypeDocument)
                if ($r = SqlParam::rqGetParamParavrac('PARAMGEN', 'TYP_DOC_CDEDIR')->Trouve1())
                    $codeTypeDocCDE = $r['LIB01PARV'];
                else
                    $codeTypeDocCDE = '';
            else
                $codeTypeDocCDE = '';
            
            // Type de document "OXAPROC" :
            if ($initTypeDocument)
                if ($r = SqlParam::rqGetParamParavrac('OXAPROC', 'TYPDOCUMENT')->Trouve1())
                    $codeTypeDocOXA = $r['LIB01PARV'];
                else
                    $codeTypeDocOXA = '';
            else
                $codeTypeDocOXA = '';
            
            // Dossier 25721 : ajout du contrôle sur le NIV_CONF
            $sql = 'select * from TYPDOC with (nolock) ' . " where (TYPDOC.DATE_DEB <= CONVERT(char(8),GETDATE(),112) or TYPDOC.DATE_DEB = 00000000) " . " and   (TYPDOC.DATE_FIN >=  CONVERT(char(8),GETDATE(),112) or TYPDOC.DATE_FIN = 00000000) " . ' and NIV_CONF <= (select HASTUTIL.NIV_CONF from HASTUTIL with (nolock) where CODE = \'' . utilisateur::getCode() . '\' ) ';
            // Spec 3569
            
            if ($listeTypeDocOrigine = (new RequeteSQL($sql, DB_OXASQLDB))->TrouveTous()) {
                foreach ($listeTypeDocOrigine as & $typDoc)
                    if ($typDoc['TYPE'] == $codeTypeDocRegul && array_key_exists('PANIER_TYPE_SPEC', $_SESSION) && $_SESSION['PANIER_TYPE_SPEC'] == 'REGUL') {
                        $listeTypeDoc[TypeSuivi::DA]['options'][] = $typDoc;
                        $listeTypeDoc[TypeSuivi::CDE]['options'][] = $typDoc;
                        $listeTypeDoc[TypeSuivi::DS]['options'][] = $typDoc;
                    } else if ($typDoc['TYPE'] == $codeTypeDocDS) {
                        $listeTypeDoc[TypeSuivi::DS]['options'][] = $typDoc;
                    } else if ($typDoc['TYPE'] == $codeTypeDocOXA) {
                        if (array_key_exists('PANIER_TYPE_SPEC', $_SESSION) && $_SESSION['PANIER_TYPE_SPEC'] == 'REGUL') {
                            // ET PAS REGUL
                        } else
                            $listeTypeDoc[TypeSuivi::CDE]['options'][] = $typDoc;
                    } else if ($typDoc['TYPE'] == $codeTypeDocCDE) {
                        // NE PAS AJOUTER CE DOCUMENT
                    } else if ($typDoc['NVIBOXAP'] == 0) {
                        $listeTypeDoc[TypeSuivi::DA]['options'][] = $typDoc;
                        $listeTypeDoc[TypeSuivi::CDE]['options'][] = $typDoc;
                        $listeTypeDoc[TypeSuivi::DS]['options'][] = $typDoc;
                    }
                
                // print_r($listeTypeDoc[TypeSuivi::DA]);
                // exit;
            } else
                $listeTypeDoc = null;
        }
    } else
        $listeTypeDoc = null;
} else
    $listeTypeDoc = null;

$lDemandeAchat = true;
if (is_array($flux_result)) {
    // Spec 3480
    if ($listeTypeDoc != null && is_array($listeTypeDoc) && count($listeTypeDoc) != 0)
        $array['OXAPROC']['Liste']['TypeDoc'] = & $listeTypeDoc;
    
    if (array_key_exists('DA', $flux_result)) {
        $save_pointeur = & $flux_result['DA'];
        
        if (array_key_exists('FournisseurDA', $save_pointeur)) {
            $save_pointeur['!TotCde'] = 0;
            
            if (array_key_exists('0', $save_pointeur['FournisseurDA']))
                $pointeur = & $save_pointeur['FournisseurDA'];
            else
                $pointeur = & $save_pointeur;
            
            // Au niveau de la validation du panier les test concernant le droit d'edition ne sont pas a faire
            $docid = 'pdf_DA_' . $index_pdf_da;
            
                 
            $save_pointeur['pdf']['chiffrage'] = array(
                '!onclick' => "Traite('panier_ong_5.php?chiffrage=true&consult=DA',document.forms.frm_saisie_panier.pdf_DA_{$index_pdf_da});",
                '!name' => $docid,
                '!value' => $docid
            );
            
            // Au niveau de la validation du panier les test concernant le droit d'edition ne sont pas a faire
            $save_pointeur['pdf']['nonChiffrage'] = array(
                '!onclick' => "Traite('panier_ong_5.php?chiffrage=false&consult=DA',document.forms.frm_saisie_panier.pdf_DA_{$index_pdf_da});",
                '!name' => $docid,
                '!value' => $docid
            );
            
            $index_pdf_da ++;
            
            if (array_key_exists('TypeDoc', $save_pointeur) && $listeTypeDoc != null)
                $save_pointeur['OxaprocTypeDoc']['!name'] = 'typdoc|DA|' . $index_da;
            
            $save_pointeur['Objet'] = array(
                '!name' => 'objet|DA|' . $index_da,
                '!value' => PanierEntete::getValue('objectDA'),
                '!onblur' => "Traite(\"" . NomFile(__FILE__) . "\",this);"
            );
            
            if (array_key_exists('ListSignataire', $flux_result['DA'])) {
                $tag = 'signa_DA_' . $index_da;
                
                $save_pointeur['ListSignataire']['!name'] = $tag;
                
                if (Param::isWorflowStandard()) {
                    $url = "var objHdl = OpenPopup('select_signa_DA_specif.php?tag={$tag}','win_pop','{$largeurFenetre}','{$hauteurFenetre}');";
                    $save_pointeur['ListSignataire']['!onclick'] = $url;
                    
                    if (array_key_exists('AlgoSpecif', $save_pointeur['ListSignataire']))
                        $_SESSION['CSV_' . $tag] = $save_pointeur['ListSignataire']['AlgoSpecif'];
                } else {
                    // Creation d'un array specifique
                    $base_array = null;
                    $liste_signa = null;
                    $icp_array = 0;
                    
                    if (array_key_exists('AlgoSpecif', $save_pointeur['ListSignataire']))
                        if ($_SESSION['Session_NumClient'] == 35 || $_SESSION['Session_NumClient'] == 37 || $_SESSION['Session_NumClient'] == 28) { // Recensé dans la spec N°2431
                            $cl_algo_2173 = new WorkFlowSigna2173($flux_result['DA']['ListSignataire']['AlgoSpecif']);
                            $flux_result['DA']['ListSignataire'] = $cl_algo_2173->GetLstSignataire();
                            $flux_result['DA']['ListSignataire']['!name'] = $tag;
                        }
                    
                    $pointe_signa = & $flux_result['DA']['ListSignataire'];
                    
                    if (is_array($pointe_signa['Signataire'])) {
                        if (array_key_exists(0, $pointe_signa['Signataire']))
                            $pointeur_ref = & $pointe_signa['Signataire'];
                        else
                            $pointeur_ref = & $pointe_signa;
                        
                        foreach ($pointeur_ref as & $ligne_signa)
                            if (is_array($ligne_signa) && array_key_exists('Categorie', $ligne_signa)) {
                                if (is_null($base_array)) {
                                    $index_key = $icp_array;
                                    $base_array[$ligne_signa['Categorie']] = $index_key;
                                    $liste_signa[$index_key]['!name'] = $ligne_signa['Categorie'];
                                    $icp_array ++;
                                } else if (array_key_exists($ligne_signa['Categorie'], $base_array)) {
                                    $index_key = $base_array[$ligne_signa['Categorie']];
                                } else {
                                    $index_key = $icp_array;
                                    $base_array[$ligne_signa['Categorie']] = $index_key;
                                    $liste_signa[$index_key]['!name'] = $ligne_signa['Categorie'];
                                    $icp_array ++;
                                }
                                $liste_signa[$index_key]['options'][] = $ligne_signa;
                            } else
                                $liste_signa[]['options'][] = $ligne_signa;
                        
                        $pointe_signa['Liste'] = $liste_signa;
                    }
                }
            }
            $index_da ++;
            
            if (is_array($pointeur)) {
                foreach ($pointeur as &$element) {
                    if (is_array($element)) {
                        if (array_key_exists('Montant', $element)) {
                            if (Param::isAfficheTtc()) {
                                $montantTMP = (float) str_replace(' ', '', $element['MontantTtc']);
                                $flux_result['DA']['!TotCde'] += $montantTMP;
                            } else {
                                $montantTMP = (float) str_replace(' ', '', $element['Montant']);
                                $flux_result['DA']['!TotCde'] += $montantTMP;
                            }
                            if (array_key_exists('MontantTtc', $element))
                                $element['MontantTtc'] = FormatageData::formatMontant($element['MontantTtc'], 2, ' ');
                            
                            $element['Montant'] = FormatageData::formatMontant($element['Montant'], 2, ' ');
                        }
                        
                        if (array_key_exists('ListProduit', $element)) {
                            if (array_key_exists('Produit', $element['ListProduit'])) {
                                if (array_key_exists('0', $element['ListProduit']['Produit']))
                                    $pointeur_art = & $element['ListProduit']['Produit'];
                                else
                                    $pointeur_art = & $element['ListProduit'];
                                
                                foreach ($pointeur_art as & $detail_art) {
                                    // seul les lignes contenu dans la liste de session sont suceptible d'etre transfere
                                    $detail_art['IdLigne'] = (float) $detail_art['IdLigne'];
                                    $detail_art['TotalLigne'] = FormatageData::formatMontant(($detail_art['PxDemande'] * $detail_art['QteDemande']), 2, ' ');
                                    
                                    // sz+
                                    // print_r($detail_art); exit;
                                    if (! array_key_exists('IdCat', $detail_art) || ($detail_art['IdCat'] == '' || $detail_art['IdCat'] == 'HAPLUS'))
                                        $lDemandeAchat = false;
                                    
                                    if ($_SESSION['LstCde_IdLigne'] != '') {
                                        if (in_array($detail_art['IdLigne'], explode(';', $_SESSION['LstCde_IdLigne']))) {
                                            switch ($_SESSION['PANIER_TYPE_SPEC']) {
                                                // Dans le cas de commande sur regul pas de possibilité de changer de fournisseur
                                                case 'REGUL':
                                                    break;
                                                default:
                                                    // Retour commande
                                                    $DA = HttpReplacePointeur(trad('DA'));
                                                    $CDE = HttpReplacePointeur(trad('CDE'));
                                                    $STOCK = HttpReplacePointeur(trad('STOCK'));
                                                    $detail_art['!alt'] = HttpReplacePointeur(trad('Remettre en Commandes'));
                                                    $detail_art['!title'] = HttpReplacePointeur(trad('Remettre en Commandes'));
                                                    
                                                    $detail_art['!id_name_combo'] = "id_trans_da_{$detail_art['IdLigne']}";
                                                    $detail_art['!name_combo'] = "trans_da_{$detail_art['IdLigne']}";
                                                    $detail_art['!id_name_img'] = "img_trans_da_{$detail_art['IdLigne']}";
                                                    $detail_art['!onclick'] = "ctrl_soumission.ctrl_env_panier(\"".$detail_art['!name_combo']."\",false,\"{$detail_art['!alt']}\",\"{$detail_art['!title']}\",[\"$DA\",\"$CDE\",\"$STOCK\"]);";
                                                    $element['changeAll']['!onclick'] =($element['changeYAB']['!onclick'] ?? '').$detail_art['!onclick'];
                                                    $detail_art ['!onclickAll']= $changeOnclickDaCDE; 
                                                    $detail_art['transfert']['!value'] = 'da';
                                                    $detail_art['transfert']['!texte'] = trad('DA');
                                                    break;
                                            }
                                        }
                                    }

                                    $planning = '';
                                    if(array_key_exists('Date', $detail_art['ListePlanning']['Planning'])){
                                        $planning .= $detail_art['ListePlanning']['Planning']['Date'].':'.$detail_art['ListePlanning']['Planning']['Quantite'].';';
                                    }else{
                                        foreach ($detail_art['ListePlanning']['Planning'] as $listePlanning){
                                            $planning .= $listePlanning['Date'].':'.$listePlanning['Quantite'].';';
                                        }
                                    }
                                    $planning = substr($planning, 0, -1);
                                    $detail_art['strPlanning'] = array(
                                        '!name' => 'strPlanning_' . $detail_art['IdLigne'],
                                        '!id' => 'strPlanning_' . $detail_art['IdLigne'],
                                        '!value' => $planning
                                    );
                                    $detail_art['delaiLivraison'] = array(
                                        '!name' => 'delaiLivraison_' . $detail_art['IdLigne'],
                                        '!id' => 'delaiLivraison_' . $detail_art['IdLigne'],
                                        '!value' => convertDateUserToSql($detail_art['DelaiLiv'])
                                    );
                                    $dateDeb = convertDateUserToSql($detail_art['DteDebContrat']);
                                    $dateFin = convertDateUserToSql($detail_art['DteFinContrat']);
                                    
                                    $detail_art['btnPlanning'] = array(
                                        '!name' => 'Planning_' . $detail_art['IdLigne'],
                                        '!id' => 'Planning_' . $detail_art['IdLigne'],
                                        '!onclick' => "Traite(\"" . 'panier_ong_5.php?action=planning' . "\",document.forms.frm_saisie_panier.information,'planning___{$detail_art['IdLigne']}___ReceptionAuto___{$detail_art['ReceptionAuto']}___QteConditionnement___{$detail_art['QteConditionnement']}___ValeurUniteDAArticle___{$detail_art['ValeurUniteDAArticle']}___CodeArticle___{$detail_art['CodeArticle']}___QteDemande___{$detail_art['QteDemande']}___CodeUnit___{$detail_art['CodeUnit']}___DteDebContrat___{$detail_art['DteDebContrat']}___DteFinContrat___{$detail_art['DteFinContrat']}___Periodicite___{$detail_art['Periodicite']}___ModeCalculDelai___{$detail_art['ModeCalculDelai']}___JourApplication___{$detail_art['JourApplication']}')"
                                    );
                                    $detail_art['PxDemande'] = FormatageData::formatMontant($detail_art['PxDemande'], Param::getNombreDeciamlePU(), ' ');
                                    $detail_art['PxDemandeTtc'] = FormatageData::formatMontant($detail_art['PxDemandeTtc'], Param::getNombreDeciamlePU(), ' ');

                                    
                                    $detail_art['MontantTtc'] = FormatageData::formatMontant($detail_art['MontantTtc'], 2, ' ');
                                    $detail_art['MontantHt'] = FormatageData::formatMontant($detail_art['MontantHt'], 2, ' ');
                                    
                                    if ($_SESSION['LstStocks_IdLigne'] != '')
                                        if (in_array($detail_art['IdLigne'], explode(';', $_SESSION['LstStocks_IdLigne'])))
                                            switch ($_SESSION['PANIER_TYPE_SPEC']) {
                                                // Dans le cas de commande sur regul pas de possibilité de changer de fournisseur
                                                case 'REGUL':
                                                    break;
                                                default:
                                                    
                                                    $DA = HttpReplacePointeur(trad('DA'));
                                                    $CDE = HttpReplacePointeur(trad('CDE'));
                                                    $STOCK = HttpReplacePointeur(trad('STOCK'));
                                                    $detail_art['!alt'] = HttpReplacePointeur(trad('Remettre en Stock'));
                                                    $detail_art['!title'] = HttpReplacePointeur(trad('Remettre en Stock'));
                                                    
                                                    $detail_art['!id_name_combo'] = "id_trans_da_{$detail_art['IdLigne']}";
                                                    $detail_art['!name_combo'] = "trans_da_{$detail_art['IdLigne']}";
                                                    $detail_art['!id_name_img'] = "img_trans_da_{$detail_art['IdLigne']}";
                                                    $detail_art['!onclick'] = "ctrl_soumission.ctrl_env_panier(\"".$detail_art['!name_combo']."\",true,\"{$detail_art['!alt']}\",\"{$detail_art['!title']}\",[\"$DA\",\"$CDE\",\"$STOCK\"]);";
                                                    $element['changeAll']['!onclick'] =($element['changeYAB']['!onclick'] ?? '').$detail_art['!onclick'];
                                                    $detail_art['transfert']['!value'] = 'da';
                                                    $detail_art['transfert']['!texte'] = trad('DA');
                                                    break;
                                            }
                                }
                            }
                        }
                    }
                }
            }
            $flux_result['DA']['!TotCde'] = FormatageData::formatMontant($flux_result['DA']['!TotCde'], 2, ' ');
        }
    }
    
    if (array_key_exists('Stock', $flux_result)) {
        $save_pointeur = &$flux_result['Stock'];
        
        if (array_key_exists('FournisseurDA', $save_pointeur)) {
            $save_pointeur['!TotCde'] = 0;
            
            if (array_key_exists('0', $save_pointeur['FournisseurDA']))
                $pointeur = & $save_pointeur['FournisseurDA'];
            else
                $pointeur = & $save_pointeur;
            
            /*
             * Enumeration des lignes pour attriuts un id au tr de chaque combo de transfert d'articles
             * type cdes vers da
             * ou stock vers da
             */
            foreach ($pointeur as &$element)
                if (is_array($element))
                if ($_SESSION['LstStocks_IdLigne'] != '') {
                    $liste = $_SESSION['LstStocks_IdLigne'];
                    if (array_key_exists('ListProduit', $element))
                        if (array_key_exists('Produit', $element['ListProduit'])) {
                            if (array_key_exists("0", $element['ListProduit']['Produit']))
                                $pointeur_art = & $element['ListProduit']['Produit'];
                            else
                                $pointeur_art = & $element['ListProduit'];
                            
                            foreach ($pointeur_art as & $detail_art) {
                                // seul les lignes contenu dans la liste de session sont suceptible d'etre transfere
                                $detail_art['IdLigne'] = (float) $detail_art['IdLigne'];
                                $detail_art['TotalLigne'] = FormatageData::formatMontant(($detail_art['PxDemande'] * $detail_art['QteDemande']), 2, ' ');
                                
                                $detail_art['PxDemande'] = FormatageData::formatMontant($detail_art['PxDemande'], Param::getNombreDeciamlePU(), ' ');
                                $detail_art['PxDemandeTtc'] = FormatageData::formatMontant($detail_art['PxDemandeTtc'], Param::getNombreDeciamlePU(), ' ');
                                
                                $detail_art['MontantTtc'] = FormatageData::formatMontant($detail_art['MontantTtc'], 2, ' ');
                                $detail_art['MontantHt'] = FormatageData::formatMontant($detail_art['MontantHt'], 2, ' ');
                                
                                if (in_array($detail_art['IdLigne'], explode(';', $liste))) {
                                    switch ($_SESSION['PANIER_TYPE_SPEC']) {
                                        // Dans le cas de commande sur regul pas de possibilité de changer de fournisseur
                                        case 'REGUL':
                                            break;
                                        default:
                                            $DA = HttpReplacePointeur(trad('DA'));
                                            $CDE = HttpReplacePointeur(trad('CDE'));
                                            $STOCK = HttpReplacePointeur(trad('STOCK'));
                                            $detail_art['!isActionSwitchDaLine'] = Param::getParamIsActionSwitchLigneDA();
                                            $detail_art['!alt'] = HttpReplacePointeur(trad('Basculer STOCK <=> DA'));
                                            $detail_art['!title'] = HttpReplacePointeur(trad('Basculer STOCK <=> DA'));
                                            
                                            $detail_art['!id_name_combo'] = "id_trans_stk_{$detail_art['IdLigne']}";
                                            $detail_art['!name_combo'] = "trans_stk_{$detail_art['IdLigne']}";
                                            $detail_art['!id_name_img'] = "img_trans_stk_{$detail_art['IdLigne']}";
                                            $detail_art['!onclick'] = "ctrl_soumission.ctrl_env_panier(\"".$detail_art['!name_combo']."\",true,\"{$detail_art['!alt']}\",\"{$detail_art['!title']}\",[\"$DA\",\"$CDE\",\"$STOCK\"]);";
                                            
                                            $element['changeAll']['!onclick'] =($element['changeYAB']['!onclick'] ?? '').$detail_art['!onclick'];
                                            $detail_art['transfert']['!value'] = "da";
                                            $detail_art['transfert']['!texte'] = trad("DA");
                                            // print_r($detail_art); exit; 
                                            break;
                                    }
                                }

                                $planning = '';
                                if(array_key_exists('Date', $detail_art['ListePlanning']['Planning'])){
                                    $planning .= $detail_art['ListePlanning']['Planning']['Date'].':'.$detail_art['ListePlanning']['Planning']['Quantite'].';';
                                }else{
                                    foreach ($detail_art['ListePlanning']['Planning'] as $listePlanning){
                                        $planning .= $listePlanning['Date'].':'.$listePlanning['Quantite'].';';
                                    }
                                }
                                $planning = substr($planning, 0, -1);
                                $detail_art['strPlanning'] = array(
                                    '!name' => 'strPlanning_' . $detail_art['IdLigne'],
                                    '!id' => 'strPlanning_' . $detail_art['IdLigne'],
                                    '!value' => $planning
                                );
                                $detail_art['delaiLivraison'] = array(
                                    '!name' => 'delaiLivraison_' . $detail_art['IdLigne'],
                                    '!id' => 'delaiLivraison_' . $detail_art['IdLigne'],
                                    '!value' => convertDateUserToSql($detail_art['DelaiLiv'])
                                );
                                $dateDeb = convertDateUserToSql($detail_art['DteDebContrat']);
                                $dateFin = convertDateUserToSql($detail_art['DteFinContrat']);
                                
                                $detail_art['btnPlanning'] = array(
                                    '!name' => 'Planning_' . $detail_art['IdLigne'],
                                    '!id' => 'Planning_' . $detail_art['IdLigne'],
                                    '!onclick' => "Traite(\"" . 'panier_ong_5.php?action=planning' . "\",document.forms.frm_saisie_panier.information,'planning___{$detail_art['IdLigne']}___ReceptionAuto___{$detail_art['ReceptionAuto']}___QteConditionnement___{$detail_art['QteConditionnement']}___ValeurUniteDAArticle___{$detail_art['ValeurUniteDAArticle']}___CodeArticle___{$detail_art['CodeArticle']}___QteDemande___{$detail_art['QteDemande']}___CodeUnit___{$detail_art['CodeUnit']}___DteDebContrat___{$detail_art['DteDebContrat']}___DteFinContrat___{$detail_art['DteFinContrat']}___Periodicite___{$detail_art['Periodicite']}___ModeCalculDelai___{$detail_art['ModeCalculDelai']}___JourApplication___{$detail_art['JourApplication']}')"
                                );
                            }
                        }
                }
            
            $flux_result['Stock']['pdf']['chiffrage'] = array(
                '!onclick' => "javascript:Traite('panier_ong_5.php?consult=ds',document.forms.frm_saisie_panier.pdf_Stock_{$index_pdf_stock});",
                '!name' => "pdf_Stock_{$index_pdf_stock}",
                '!value' => $index_pdf_stock
            );
                
            
            $index_pdf_stock ++;
            
            if (array_key_exists('TypeDoc', $save_pointeur) && $listeTypeDoc != null)
                $save_pointeur['OxaprocTypeDoc']['!name'] = 'typdoc|DS|' . $index_pdf_stock;
            
            $save_pointeur['Objet'] = array(
                '!name' => 'objet|DS|' . $index_pdf_stock,
                '!value' => PanierEntete::getValue('objectDS'),
                '!onblur' => "Traite(\"" . NomFile(__FILE__) . "\",this);"
            );
            
            if (array_key_exists('ListSignataire', $flux_result['Stock'])) {
                $tag = 'signa_Stock_' . $index_stock;
                $flux_result['Stock']['ListSignataire']['!name'] = $tag;
                
                if (Param::isWorflowStandard()) {
                    $url = "var objHdl = OpenPopup('select_signa_DA_specif.php?tag={$tag}','win_pop','{$largeurFenetre}','{$hauteurFenetre}');";
                    $flux_result['Stock']['ListSignataire']['!onclick'] = $url;
                    
                    if (array_key_exists('AlgoSpecif', $flux_result['Stock']['ListSignataire']))
                        $_SESSION['CSV_' . $tag] = $flux_result['Stock']['ListSignataire']['AlgoSpecif'];
                } else {
                    
                    $base_array = null;
                    $liste_signa = null;
                    $icp_array = 0;
                    
                    if (array_key_exists('AlgoSpecif', $flux_result['Stock']['ListSignataire']))
                        if ($_SESSION['Session_NumClient'] == 35 || $_SESSION['Session_NumClient'] == 37 || $_SESSION['Session_NumClient'] == 28) { // Recensé dans la spéc N°2431
                            $cl_algo_2173 = new WorkFlowSigna2173($flux_result['Stock']['ListSignataire']['AlgoSpecif']);
                            $flux_result['Stock']['ListSignataire'] = $cl_algo_2173->GetLstSignataire();
                            $flux_result['Stock']['ListSignataire']['!name'] = $tag;
                        }
                    
                    $pointe_signa = & $flux_result['Stock']['ListSignataire'];
                    
                    if (is_array($pointe_signa['Signataire'])) {
                        if (array_key_exists(0, $pointe_signa['Signataire']))
                            $pointeur_ref = & $pointe_signa['Signataire'];
                        else
                            $pointeur_ref = & $pointe_signa;
                        
                        foreach ($pointeur_ref as $ligne_signa)
                            if (is_array($ligne_signa) && array_key_exists('Categorie', $ligne_signa)) {
                                if (is_null($base_array)) {
                                    $index_key = $icp_array;
                                    $base_array[$ligne_signa['Categorie']] = $index_key;
                                    $liste_signa[$index_key]['!name'] = $ligne_signa['Categorie'];
                                    $icp_array ++;
                                } else if (array_key_exists($ligne_signa['Categorie'], $base_array))
                                    $index_key = $base_array[$ligne_signa['Categorie']];
                                else {
                                    $index_key = $icp_array;
                                    $base_array[$ligne_signa['Categorie']] = $index_key;
                                    $liste_signa[$index_key]['!name'] = $ligne_signa['Categorie'];
                                    $icp_array ++;
                                }
                                $liste_signa[$index_key]['options'][] = $ligne_signa;
                            }
                        
                        $pointe_signa['Liste'] = $liste_signa;
                    }
                }
            }
            $index_stock ++;
            
            if (is_array($pointeur))
                $flux_result['Stock']['!TotCde'] += $save_pointeur['Montant'];
            
            $flux_result['Stock']['!TotCde'] = FormatageData::formatMontant($flux_result['Stock']['!TotCde'], 2, ' ');
        }
    }
    
    $index_cdes = 0;
    
    // Formatage du montant total du panier
    $flux_result['Montant'] = FormatageData::formatMontant($flux_result['Montant'], 2, ' ');
    
    /*
     * Section routage des commandes
     */
    // R. Quadrini positionner [0] entre $flux_result['ListCdes']&["Cde"] est ce normal?
    // pb lors de la soumission du panier pour CDE (DA ok). La structure n'est aps tjs la meme A voir avec Manu
    
    if (array_key_exists('ListCdes', $flux_result)) {
        if (array_key_exists('Cde', $flux_result['ListCdes'])) {
            if (array_key_exists('0', $flux_result['ListCdes']['Cde']))
                $pointeur = & $flux_result['ListCdes']['Cde'];
            else
                $pointeur = & $flux_result['ListCdes'];
            $flux_result['ListCdes']['!TotCde'] = 0;

            foreach ($pointeur as &$element) {
                
                if(!$initTypeDocument) {
                    $element['TypeDoc'] = null;
                }

                if (is_array($element)) {
                    $element['pdf'] = array(
                        '!onclick' => "Traite('panier_ong_5.php?consult=CDE',document.forms.frm_saisie_panier.pdf_Cdes_{$index});",
                        '!name' => "pdf_Cdes_{$index}",
                        '!value' => $index
                    );
            // TODO YANIS
                    $flux_result['ListCdes']['!TotCde'] += $element['Montant'];
                    
                    $routage = $element['Routage'];
                    $element['Routage'] = array(
                        '!value' => $routage,
                        '!disabled' => ($routage == 'P' ? 1 : 0),
                        '!name' => 'Routage_' . $index,
                        '!inp_id' => 'Routage_addr_' . $index,
                        '!inp_name' => 'Routage_addr_' . $index,
                        '!onchange' => "getObj('Routage_addr_{$index}').disabled = ((this.value == 'P') ? true : false);getObj('Routage_addr_{$index}').value=object_user[{$index}][this.value];",
                        'option' => $cmb_routage
                    );
                    $FaxContFourn = trim(array_key_exists("FaxContFourn", $element) ? $element['FaxContFourn'] : '');
                    $MailContFourn = trim(array_key_exists("MailContFourn", $element) ? $element['MailContFourn'] : '');
                    
                    $texte_js .= "object_user[{$index}] = new Array();" . "object_user[{$index}]['P'] = '';" . "object_user[{$index}]['F'] = '{$FaxContFourn}';" . "object_user[{$index}]['M'] = '{$MailContFourn}';";
                    
                    /**
                     * 3667 Concernant la partie facture dans le cas de commande de regul
                     */

                    if (array_key_exists('ListeFactures', $element)) {
                        if (array_key_exists('ChoisirFacture', $element)) {
                            if (BoolSql($element['ChoisirFacture'])) {
                                $name = 'NumFactureRegulCde_' . $index_cdes;
                                $element['ListeFactures']['!name'] = $name;
                                $element['ListeFactures']['!value'] = getValue($name);
                            }
                        }
                    } 
                    
                    /**
                     * Suppresion du elseif remplacé par un simple if 
                     * Dossier 33542
                     */
                    if (array_key_exists('ListSignataire', $element)) {
                        $tag = 'signa_Cdes_' . $index_cdes;
                        $element['ListSignataire']['!name'] = $tag;
                        
                        if (Param::isWorflowStandard()) {
                            if (array_key_exists('AlgoSpecif', $element['ListSignataire'])) {
                                $url = "var objHdl = OpenPopup('select_signa_DA_specif.php?tag={$tag}','win_pop','{$largeurFenetre}','{$hauteurFenetre}');";
                                $element['ListSignataire']['!onclick'] = $url;
                                
                                $_SESSION['CSV_' . $tag] = $element['ListSignataire']['AlgoSpecif'];
                            }
                        } else {
                            // Creation d'un array specifique
                            $base_array = null;
                            $liste_signa = null;
                            $icp_array = 0;
                            
                            if (is_array($element['ListSignataire']) && array_key_exists('AlgoSpecif', $element['ListSignataire']))
                                if ($_SESSION['Session_NumClient'] == 35 || $_SESSION['Session_NumClient'] == 37 || $_SESSION['Session_NumClient'] == 28) { // Rcensé dans la spec N°2431
                                    $cl_algo_2173 = new WorkFlowSigna2173($element['ListSignataire']['AlgoSpecif']);
                                    $element['ListSignataire'] = $cl_algo_2173->GetLstSignataire();
                                    $element['ListSignataire']['!name'] = $tag;
                                }
                            
                            $pointe_signa = & $element['ListSignataire'];
                            
                            if (is_array($pointe_signa['Signataire'])) {
                                if (array_key_exists(0, $pointe_signa['Signataire']))
                                    $pointeur_ref = & $pointe_signa['Signataire'];
                                else
                                    $pointeur_ref = & $pointe_signa;
                                
                                $liste_signa = null;
                                foreach ($pointeur_ref as $ligne_signa)
                                    if (is_array($ligne_signa))
                                        if (array_key_exists('Categorie', $ligne_signa)) {
                                            if (is_null($base_array)) {
                                                $index_key = $icp_array;
                                                $base_array[$ligne_signa['Categorie']] = $index_key;
                                                $liste_signa[$index_key]['!name'] = $ligne_signa['Categorie'];
                                                $icp_array ++;
                                            } else if (array_key_exists($ligne_signa['Categorie'], $base_array))
                                                $index_key = $base_array[$ligne_signa['Categorie']];
                                            else {
                                                $index_key = $icp_array;
                                                $base_array[$ligne_signa['Categorie']] = $index_key;
                                                $liste_signa[$index_key]['!name'] = $ligne_signa['Categorie'];
                                                $icp_array ++;
                                            }
                                            $liste_signa[$index_key]['options'][] = $ligne_signa;
                                        } else
                                            $liste_signa[]['options'][] = $ligne_signa;
                                
                                $pointe_signa['Liste'] = $liste_signa;
                            }
                        }
                    }
                    
                    if (array_key_exists('TypeDoc', $element) && $listeTypeDoc != null)
                        $element['OxaprocTypeDoc']['!name'] = 'typdoc|CDE|' . $index_cdes;
                    
                    /**
                     * En mode commande pas de saisie d'object
                     * $save_pointeur['Objet']['!name'] = 'objet|CDE|'.$index_cdes;
                     */
                    
                    $index_cdes ++;
                    /*
                     * Enumeration des lignes pour attriuts un id au tr de chaque combo de transfert d'articles
                     * type cdes vers da
                     * ou stock vers da
                     */
                    // TODO YANIS 
                    if ($_SESSION['LstCde_IdLigne'] != '') {
                        
               
                        $nbr_liste_produit = count($element['ListProduit']['Produit']); 


                        $liste = $_SESSION['LstCde_IdLigne'];
                        if (array_key_exists('ListProduit', $element)) {
                            if (array_key_exists('Produit', $element['ListProduit'])) {
                                if (array_key_exists("0", $element['ListProduit']['Produit']))
                                    $pointeur_art = & $element['ListProduit']['Produit'];
                                else
                                    $pointeur_art = & $element['ListProduit'];
                                // print_r($nbr_liste_produit); exit; 
                                $element_id_ligne = []; 
                                
                                do
                                {
                                    foreach($pointeur_art as $p)
                                    {
                                        $element_id_ligne[] = "trans_cde_".$p['IdLigne'];
                                        $nbr_liste_produit--;
                                    }

                                }while($nbr_liste_produit != 0);

                                foreach ($pointeur_art as & $detail_art) {
                                    // seul les lignes contenu dans la liste de session sont suceptible d'etre transfere
                                    $detail_art['IdLigne'] = (float) $detail_art['IdLigne'];
                                    $detail_art['everyIdLigne'] = (float) $detail_art['IdLigne'];

                                    $detail_art['TotalLigne'] = FormatageData::formatMontant(($detail_art['PxDemande'] * $detail_art['QteDemande']), 2, ' ');
                                    
                                    $detail_art['PxDemande'] = FormatageData::formatMontant($detail_art['PxDemande'], Param::getNombreDeciamlePU(), ' ');
                                    
                                    if (array_key_exists('PxDemandeTtc', $detail_art))
                                        $detail_art['PxDemandeTtc'] = FormatageData::formatMontant($detail_art['PxDemandeTtc'], Param::getNombreDeciamlePU(), ' ');
                                    if (array_key_exists('MontantTtc', $detail_art))
                                        $detail_art['MontantTtc'] = FormatageData::formatMontant($detail_art['MontantTtc'], 2, ' ');
                                    if (array_key_exists('MontantHt', $detail_art))
                                        $detail_art['MontantHt'] = FormatageData::formatMontant($detail_art['MontantHt'], 2, ' ');
                                    
                                    $planning = '';
                                    if(array_key_exists('Date', $detail_art['ListePlanning']['Planning'])){
                                        $planning .= $detail_art['ListePlanning']['Planning']['Date'].':'.$detail_art['ListePlanning']['Planning']['Quantite'].';';
                                    }else{
                                        foreach ($detail_art['ListePlanning']['Planning'] as $listePlanning){
                                            $planning .= $listePlanning['Date'].':'.$listePlanning['Quantite'].';';
                                        }
                                    }
                                    $planning = substr($planning, 0, -1);
                                    
                                    $detail_art['strPlanning'] = array(
                                        '!name' => 'strPlanning_' . $detail_art['IdLigne'],
                                        '!id' => 'strPlanning_' . $detail_art['IdLigne'],
                                        '!value' => $planning
                                    );
                                    $detail_art['delaiLivraison'] = array(
                                        '!name' => 'delaiLivraison_' . $detail_art['IdLigne'],
                                        '!id' => 'delaiLivraison_' . $detail_art['IdLigne'],
                                        '!value' => convertDateUserToSql($detail_art['DelaiLiv'])
                                    );
                                    $dateDeb = convertDateUserToSql($detail_art['DteDebContrat']);
                                    $dateFin = convertDateUserToSql($detail_art['DteFinContrat']);
                                    
                                    $detail_art['btnPlanning'] = array(
                                        '!name' => 'Planning_' . $detail_art['IdLigne'],
                                        '!id' => 'Planning_' . $detail_art['IdLigne'],
                                        '!onclick' => "Traite(\"" . 'panier_ong_5.php?action=planning' . "\",document.forms.frm_saisie_panier.information,'planning___{$detail_art['IdLigne']}___ReceptionAuto___{$detail_art['ReceptionAuto']}___QteConditionnement___{$detail_art['QteConditionnement']}___ValeurUniteDAArticle___{$detail_art['ValeurUniteDAArticle']}___CodeArticle___{$detail_art['CodeArticle']}___QteDemande___{$detail_art['QteDemande']}___CodeUnit___{$detail_art['CodeUnit']}___DteDebContrat___{$detail_art['DteDebContrat']}___DteFinContrat___{$detail_art['DteFinContrat']}___Periodicite___{$detail_art['Periodicite']}___ModeCalculDelai___{$detail_art['ModeCalculDelai']}___JourApplication___{$detail_art['JourApplication']}', document.forms.frm_saisie_panier.strPlanning_" . $detail_art['IdLigne'].")"
                                    );


                                    if (in_array($detail_art['IdLigne'], explode(';', $liste))) {
                                        switch ($_SESSION['PANIER_TYPE_SPEC']) {
                                            // Dans le cas de commande sur regul pas de possibilité de changer de fournisseur
                                            case 'REGUL':
                                                break;
                                            default:
                                                $DA = HttpReplacePointeur(trad('DA'));
                                                $CDE = HttpReplacePointeur(trad('CDE'));
                                                $STOCK = HttpReplacePointeur(trad('STOCK'));

                                                $detail_art['!isActionSwitchDaLine'] = Param::getParamIsActionSwitchLigneDA();
                                                $detail_art['!alt'] = HttpReplacePointeur(trad("Basculer CDE <=> DA"));
                                                $detail_art['!title'] = HttpReplacePointeur(trad("Basculer CDE <=> DA"));
                                                
                                                $detail_art['!id_name_combo'] = "id_trans_cde_{$detail_art['IdLigne']}";
                                                $detail_art['!name_combo'] = "trans_cde_{$detail_art['IdLigne']}";
                                                $detail_art['!id_name_img'] = "img_trans_cde_{$detail_art['IdLigne']}";
                                                
                                                $detail_art['!onclick'] = "ctrl_soumission.ctrl_env_panier('{$detail_art['!name_combo']}',false,\"{$detail_art['!alt']}\",\"{$detail_art['!title']}\",[\"$DA\",\"$CDE\",\"$STOCK\"]);";

                                                // print_r(SqlUsers::isVisibleCdeDa()->Trouve1()['LIB01PARV']); exit; 
                                                $detail_art['!is_visible'] = SqlUsers::isVisibleCdeDa()->Trouve1()['LIB01PARV'];
                 
                                                $j= 0;
                                               
                                                $contain = [];
                                                foreach($element_id_ligne as $p_id_ligne)
                                                {
                                                    // CORRECTION DOSSIER 29219
                                                    if(!isset($contain[$p_id_ligne]))
                                                    {
                                                        if($j == 0)
                                                        {
                                                            $detail_art['!onclickAll'] = "ctrl_soumission.ctrl_env_panier(\"".$p_id_ligne."\",false,\"{$detail_art['!alt']}\",\"{$detail_art['!title']}\",[\"$DA\",\"$CDE\",\"$STOCK\"]);";
                                                        }
                                                        else
                                                        {
                                                            $detail_art['!onclickAll'] .= "ctrl_soumission.ctrl_env_panier(\"".$p_id_ligne."\",false,\"{$detail_art['!alt']}\",\"{$detail_art['!title']}\",[\"$DA\",\"$CDE\",\"$STOCK\"]);";
                                                        }
                                                        
                                                        $j++; 
                                                    }
                                                    $contain[$p_id_ligne] = 1;
                                    
                                                }
                                               
                                                //
                                                $element['changeAll']['!onclickAll'] =($element['changeYAB']['!onclick'] ?? '').$detail_art['!onclickAll'].'changeCdeToDA(\'changeCdeToDa'.$index.'\', \'CDE\', \''.trad("DA").'\', \''.trad("CDE").'\');';
                                                $element['changeAll']['!is_visible_cde_da_all'] =  Param::getParamIsActionSwitchLigneDA();
                                                $element['changeAll']['!title'] = HttpReplacePointeur(trad("Basculer CDE <=> DA"));
                                                $detail_art['transfert']['!value'] = "da";
                                                $detail_art['transfert']['!texte'] = trad("DA");
                                                break;
                                        }
                                    }
                                }
                            }
                        }
                    }
   
                    // Infos ruptures
                    $refOffreFrs = '';
                    $objetCde = '';
                    
                    $objetRuptureCDE = PanierRupture::UnserializeFromSession(TypeSuivi::CDE, $element['CRITERE_REGROUP']);
                    if (is_null($objetRuptureCDE)) {
                        $objetRuptureCDE = new PanierRupture();
                        $objetRuptureCDE->SetCommande($element['CRITERE_REGROUP'], $index, $refOffreFrs, $objetCde);
                    } else {
                        $refOffreFrs = $objetRuptureCDE->GetRefOffreFrs();
                        $objetCde = $objetRuptureCDE->GetObjetCde();
                        if ($index != $objetRuptureCDE->GetNumLigneCde())
                            $objetRuptureCDE->SetNumLigneCde($index);
                    }
                    PanierRupture::SerializeInSession($objetRuptureCDE);
                    $element['rupture']['ref_offre_frs']['value'] = $refOffreFrs;
                    $element['rupture']['ref_offre_frs']['onblur'] = "CallUrl('panier_ong_5.php?action=updateComment&champ=ref_offre_frs&index={$index}&value='+this.value);";
                    
                    $element['rupture']['objet_cde']['value'] = $objetCde;
                    $element['rupture']['objet_cde']['onblur'] = "CallUrl('panier_ong_5.php?action=updateComment&champ=objet_cde&index={$index}&value='+this.value);";
                    
                    $index ++;
                } // du if (is_array($element))
            } // foreach ($pointeur as &$element)+

        
        /**
         * CA A JAMAIS PU FONCTIONNER CAR EN DEHORS DE LA BOUCLE DE LECTURE DE COMMANDE : EDP
         * print_r($flux_result['ListCdes']['Cde']); exit;
         * $flux_result['ListCdes']['!TotCde'] = FormatageData::formatMontant($flux_result['ListCdes']['!TotCde'], 2, ' ');
         * // Pour afficher le montant total :
         * if (Param::isAfficheTtc())
         * $flux_result['ListCdes']['!Montant'] = FormatageData::formatMontant($flux_result['ListCdes']['Cde']['MontantTtc'], 2, ' ');
         * else
         * $flux_result['ListCdes']['!Montant'] = FormatageData::formatMontant($flux_result['ListCdes']['Cde']['Montant'], 2, ' ');
         */
        }
    }
    /*
     * Fin de la section routage des commandes
     */
    switch ($_SESSION['Session_NumClient']) {
        // Recensé dans la spec N°2431
        case CLT_GALDERMA:
            // Si l'utilisateur connecté dispose du droit permettant l'affichage de la consommation budgétaire dans le panier
            
            if (Menu::allMenu || 1 == $_SESSION['SpeGALBU01'])
                $flux_result['actionAfficherConsoBudget'] = "CallUrlAsync('panier_ong_5.php?action=afficherConsoBudget','','" . cnv_to_javascript(trad("Affichage de la consommation budgétaire en cours...")) . "')";
            
            break;
        default:
            /**
             * Si une consommation budget est présente dans le retour de validation du panier
             * alors on l'affiche
             */
            if (Param::isConsoBudgetPanier() && array_key_exists('listeConsoBudget', $flux_result) && array_key_exists('ConsoBudget', $flux_result['listeConsoBudget']))
                $flux_result['listeConsoBudget'] = Budget::createArrayXmlConsoBudgetForXsl("panier", 0, $flux_result['listeConsoBudget']['ConsoBudget'], $flux_result['Devise']);
            
            break;
    }
}
// print_r($flux_result);exit;

if (CLT_SPAC == $_SESSION['Session_NumClient'] && $lDemandeAchat) // Spec 3466
    if ($user = SqlWsdl::rqWsdlSave_1($_SESSION['id_user'])->Trouve1())
        // Récupération des informations de l'entête du panier
        if ($panier = SqlWsdl::rqWsdlSave_2($user, $_SESSION['id_panier'])->Trouve1())
            if ($panier['CHIF_EXEC'] == 'C') { // Uniquement dans le cas de chiffrage
                                              // Uniquement si et uniquement si un bloc fournisseur
                if ($all_four = GetFrsLigne($_SESSION['id_panier']))
                    if (count($all_four) == 1)
                        // et si pas CATPRLST vide
                        $array['ACTION']['DEMANDE_DELAI'] = "CallUrl('panier_ong_5.php?action=demandeDelai');";
            }

if (! array_key_exists('PANIER_MODE_AVENANT', $_SESSION) || ! $_SESSION['PANIER_MODE_AVENANT']) {
    // Initialisation de l'action de validation du panier
    $array['ACTION']['VALIDER_PANIER'] = "document.forms.frm_saisie_panier.fonction.value = 'SAVE'; TraiteAsync('panier_ong_5.php',document.forms.frm_saisie_panier.fonction,'',(ctrl_soumission.flg_mode_env ? '" . cnv_to_javascript(Trad(' Validation finale du panier en cours...')) . "' : '" . cnv_to_javascript(Trad('Rafraichissement du panier en cours...')) . "'));";
} else { // si on est en mode avenant
    $objetRuptureAven = PanierRupture::UnserializeFromSession('AVEN');
    if (is_null($objetRuptureAven)) {
        $motifAvenant = '';
        $objetRuptureAven = new PanierRupture();
        $objetRuptureAven->SetAvenant($motifAvenant);
        PanierRupture::SerializeInSession($objetRuptureAven);
    } else
        $motifAvenant = $objetRuptureAven->GetMotifAvenant();
    
    $array['ACTION']['MotifAvenant']['value'] = $motifAvenant;
    $array['ACTION']['MotifAvenant']['onblur'] = "CallUrl('panier_ong_5.php?action=updateComment&champ=motifAvenant&value='+this.value);";
    ;
    
    if ($flux_result['ListCdes']['Cde']) { // si il y a au moins une ligne de commande
                                           // spec 2466 -- si on est en mode avenant, on doit vérifier que le champs avenant est bien renseigné
        $message_avenant = cnv_to_javascript(trad('Vous devez renseigner le motif pour cet avenant.'));
        $array['ACTION']['VALIDER_PANIER'] = "if(document.forms.frm_saisie_panier.MotifAvenant.value == ''){alert('$message_avenant');}
											else{document.forms.frm_saisie_panier.fonction.value = 'SAVE'; TraiteAsync('panier_ong_5.php',document.forms.frm_saisie_panier.fonction,'',(ctrl_soumission.flg_mode_env ? '" . cnv_to_javascript(Trad('Validation finale du panier en cours...')) . "' : '" . cnv_to_javascript(Trad('Rafraichissement du panier en cours...')) . "'));}";
    } else { // il n'y a pas de ligne sur l'avenant donc avenant non valide
        $message_avenant = cnv_to_javascript(trad("Il doit y avoir au moins une ligne sur l'avenant."));
        $array['ACTION']['VALIDER_PANIER'] = "alert('$message_avenant');";
    }
}
$entetePanier = new PanierEntete();
$entetePanier->getEntetePanier($_SESSION['id_panier'], $_SESSION['id_user']);

//
// Information sur les ruptures
//
// DA
$zoneLibreDA = $entetePanier->getZONE_LIBRE();
$commentIntDA = $entetePanier->getCOMMENT_INT();
$titreDA = $entetePanier->getTITRE_DA();

$objetRuptureDA = PanierRupture::UnserializeFromSession('DA');
if (is_null($objetRuptureDA)) {
    $objetRuptureDA = new PanierRupture();
    $objetRuptureDA->SetDA($zoneLibreDA, $commentIntDA, $titreDA);
} else {
    $zoneLibreDA = $objetRuptureDA->GetZoneLibre();
    $commentIntDA = $objetRuptureDA->GetCommentaireInterne();
    //dossier 3294
//     $titreDA = $objetRuptureDA->GetTitre();
    $titreDA = $flux_result['DA']['Titre'];
}
PanierRupture::SerializeInSession($objetRuptureDA);

// DS
$zoneLibreDS = '';
$commentIntDS = '';
$titreDS = '';

$objetRuptureDS = PanierRupture::UnserializeFromSession(TypeSuivi::DS);
if (is_null($objetRuptureDS)) {
    $objetRuptureDS = new PanierRupture();
    $objetRuptureDS->SetDS($zoneLibreDS, $commentIntDS, $titreDS);
} else {
    $zoneLibreDS = $objetRuptureDS->GetZoneLibre();
    $commentIntDS = $objetRuptureDS->GetCommentaireInterne();
    $titreDS = $objetRuptureDS->GetTitre();
}
PanierRupture::SerializeInSession($objetRuptureDS);

//
$array['ACTION']['ZONE_LIBRE']['value'] = $zoneLibreDA;
$array['ACTION']['ZONE_LIBRE']['onblur'] = "CallUrl('panier_ong_5.php?action=updateComment&champ=ZONE_LIBRE&value='+this.value);";

$array['ACTION']['COMMENT_INT']['value'] = $commentIntDA;
$array['ACTION']['COMMENT_INT']['onblur'] = "CallUrl('panier_ong_5.php?action=updateComment&champ=COMMENT_INT&value='+encodeURIComponent(this.value));";

$array['ACTION']['TITRE_DA']['value'] = $titreDA;
$array['ACTION']['TITRE_DA']['onblur'] = "CallUrl('panier_ong_5.php?action=updateComment&champ=TITRE_DA&value='+encodeURIComponent(this.value));";

$array['ACTION']['ZONE_LIBRE_DS']['value'] = $zoneLibreDS;
$array['ACTION']['ZONE_LIBRE_DS']['onblur'] = "CallUrl('panier_ong_5.php?action=updateComment&champ=ZONE_LIBRE_DS&value='+this.value);";

$array['ACTION']['COMMENT_INT_DS']['value'] = $commentIntDS;
$array['ACTION']['COMMENT_INT_DS']['onblur'] = "CallUrl('panier_ong_5.php?action=updateComment&champ=COMMENT_INT_DS&value='+encodeURIComponent(this.value));";

$array['ACTION']['TITRE_DS']['value'] = $titreDS;
$array['ACTION']['TITRE_DS']['onblur'] = "CallUrl('panier_ong_5.php?action=updateComment&champ=TITRE_DS&value='+encodeURIComponent(this.value));";

$array['resultat'] = & $flux_result;

// on determine la devise globale pour l'affichage des montant
$EntetePanier = new PanierEntete();
$EntetePanier->getEntetePanier($_SESSION['id_panier'], $_SESSION['id_user']);
$array['devise_glob']['texte'] = $EntetePanier->getCOD_DEV();

// On détermine si les champs OffreFrsCde et ObjetCde sur les commandes directes doivent être visible
$array['IsOffreFrsCdeVisible'] = Param::isOffreFrsCdeVisible();
$array['IsObjetCdeVisible'] = Param::isObjetCdeVisible();

//
if (is_array($panier_use))
    foreach ($panier_use as $index => & $data)
        $array['panier_enc']['!' . $index] = $data;

switch ($_SESSION['sys_panier']) {
    case 'SYS':
        $array['panier']['!flg_rech'] = true;
        break;
    default:
        break;
}

$array['panier']['!isAfficheTtc'] = Param::isAfficheTtc();
$array['panier']['!modele'] = (trim($panier_use['NO_CDE']) == '' ? 1 : 0);
$array['isDeviseAndBudget'] = Param::getParamIsDeviseAndBudget();

$obj_xml = new GenXslt();

echo 'getObj("men_gene").innerHTML="', HttpReplacePointeur($obj_xml->XslHtml($fichier_xsl, $array)), '";';
echo $texte_js;

// Mise en place du javascript pour la gestion de la partie envoyer ou rafraichir
echo "ctrl_soumission('" . Trad('>> Valider le panier') . "','" . Trad('>> Rafraichir') . "');ctrl_soumission.flg_mode_env=true;";
echo 'TraiteUrlAsync("'.Supervision::$page_php.'");';
$connecteur->disconnect();
exit();