<?php

class GestFourniss_Impression_Cde
{

    public static $id_onglet = 'pres_dyn_onglet_ImpressionCde';

    public static $id_Xml = 'ImpressionCde';

    public static $page_php = 'gest_fourniss_impression_cde.php';

    public static $fichier_xml = 'application/xsl/gest_fourniss/gest_fourniss_impression_cde.xsl';

    public static function &JSSwitchImpressionVolets($bdc)
    {
        Affichage::displayElement('impression_cde_bdc1', $bdc);
        Affichage::displayElement('impression_cde_bdc2', $bdc);
        Affichage::displayElement('impression_cde_routage', ! $bdc);
    }

    public static function &JSSwitchModeEnvoi($modeEnvoi)
    {
        $afficheMail = ('1' == $modeEnvoi);
        $afficheFtp = ('2' == $modeEnvoi);
        Affichage::displayElement('impression_cde_mail', $afficheMail);
        Affichage::displayElement('impression_cde_ftp', $afficheFtp);
    }

    public static function &BuildXml($codeFrs, $mode)
    {
        $tableauXml = FicheFournisseurXml::ChargeSession($codeFrs);
        $typeFour = FicheFournisseurXml::GetTypeFournisseur($tableauXml);
        $modeCreation = FicheFournisseurXml::GetIsModeCreation($tableauXml);
        if ('L' == $mode) {
            $modeLocal = 'L';
        } elseif ('LE' == $mode) {
            if ($_SESSION['AdminFournisseur'] || ('F' == $typeFour && ($_SESSION['AuthModifFournisseur'] || $_SESSION['GestionAdrFournisseur'])) || ('P' == $typeFour && ($_SESSION['AuthModifProspect'] || $_SESSION['GestionAdrProspect'])))
                $modeLocal = 'LE';
            else
                $modeLocal = 'L';
        }
        
        $lgChampTexte = GestFourniss::$longueurChampTexte;
        
        foreach ($tableauXml['ImpressionCde'] as $key => &$value) {
            if (is_array($value)) {
                $format = $value['!Format'];
                $objet = $value['!Objet'];
                $longueurMax = ControleSaisie::getLongueurChamp($format);
                $size = $longueurMax;
                $modifiable = ($value['!Modifiable'] && $modeLocal != 'L');
                $valeur = ($format == 'L') ? BoolSql($value['#text']) : $value['#text'];
                $jsCheckValeur = 'TraiteUrl(\'' . GestFourniss_Impression_Cde::$page_php . '?action=checkValue&codeFrs=' . urlencode($codeFrs) . '\', this);';
                $libelle_champ = FicheFournisseurXml::Transcode_Champs($key);
                
                switch ($key) {
                    case 'BDC_ELEC':
                        $BDC_ELEC = $valeur;
                    case 'MAIL_DESTI':
                    case 'ADR_FTP':
                    case 'USER_FTP':
                    case 'PWD_FTP':
                        $panelImpressionCde[$key] = array(
                            '!libelle_chp' => $libelle_champ,
                            '!name' => $key,
                            '!actif' => $modifiable,
                            '!value' => $valeur,
                            '!maxlength' => $longueurMax,
                            '!size' => $lgChampTexte,
                            '!action' => $jsCheckValeur
                        );
                        break;
                    case 'PATH_DEP':
                        $panelImpressionCde[$key] = array(
                            '!libelle_chp' => $libelle_champ,
                            '!name' => $key,
                            '!actif' => $modifiable,
                            '!value' => $valeur,
                            '!maxlength' => $longueurMax,
                            '!size' => 50,
                            '!action' => $jsCheckValeur
                        );
                        break;
                    case 'FORMAT':
                        $panelImpressionCde[$key] = array(
                            '!libelle_chp' => $libelle_champ,
                            '!name' => $key,
                            '!actif' => $modifiable,
                            '!value' => $valeur,
                            '!maxlength' => $longueurMax,
                            '!action' => $jsCheckValeur
                        );
                        break;
                    case 'ROUTAGECDE':
                        $panelImpressionCde[$key] = array(
                            '!libelle_chp' => $libelle_champ,
                            '!name' => $key,
                            '!actif' => $modifiable,
                            '!value' => $valeur,
                            '!action' => $jsCheckValeur,
                            'liste' => array(
                                'option' => ListeComboGeneral::getArrayListeRoutageCde()
                            )
                        );
                        break;
                    case 'TYPE_FORM':
                        $panelImpressionCde[$key] = array(
                            '!libelle_chp' => $libelle_champ,
                            '!name' => $key,
                            '!actif' => $modifiable,
                            '!value' => $valeur,
                            '!action' => $jsCheckValeur,
                            'liste' => array(
                                'option' => ListeComboGeneral::getArrayListeTypeFormatBDC()
                            )
                        );
                        break;
                    case 'MODE_ENV':
                        $MODE_ENV = $valeur;
                        $panelImpressionCde[$key] = array(
                            '!libelle_chp' => $libelle_champ,
                            '!name' => $key,
                            '!actif' => $modifiable,
                            '!value' => $valeur,
                            '!action' => $jsCheckValeur,
                            'liste' => array(
                                'option' => ListeComboGeneral::getArrayListeModeEnvoi()
                            )
                        );
                        break;
                }
            }
        }
        
        $array['content']['impression_cde'] = &$panelImpressionCde;
        $array['content']['!mode'] = $mode;
        $array['content']['BDC_ELEC'] = $BDC_ELEC;
        $array['content']['MODE_ENV'] = $MODE_ENV;
        return $array;
    }

    public static function &CheckValue(& $codeFrs, $code, $value)
    {
        $messageErreur = '';
        $objet = '';
        $baseValeur = null;
        $libelleValeur = '';
        $proposition_rattachement = false;
        $value = trim($value);
        $tableauXml = FicheFournisseurXml::ChargeSession($codeFrs);
        
        if (array_key_exists($code, $tableauXml[GestFourniss_Impression_Cde::$id_Xml]))
            $baseValeur = &$tableauXml[GestFourniss_Impression_Cde::$id_Xml][$code];
        
        if (! is_null($baseValeur)) { // Si on n'a pas de valeur de base, on n'a pas son format.
            $libelleValeur = Trad('n/a');
            $format = & $baseValeur['!Format'];
            
            if (array_key_exists('#text', $baseValeur))
                $valeur_init = & $baseValeur['#text'];
            
            if (array_key_exists('!Objet', $baseValeur))
                $objet = & $baseValeur['!Objet'];
            
            // On passe par la vérification standard
            $resultatTest = ControleSaisie::checkValue($format, $objet, $value);
            $valeurModifiee = $resultatTest['valeurModifiee'];
            $messageErreur = $resultatTest['messageErreur'];
            
            if ('' == $messageErreur) {
                // On met à jour l'info dans le tableau xml
                $baseValeur['#text'] = $value;
                FicheFournisseurXml::SauvegardeSession($tableauXml);
                $libelleValeur = $resultatTest['libelleValeur'];
                switch ($code) {
                    case 'BDC_ELEC':
                        GestFourniss_Impression_Cde::JSSwitchImpressionVolets(BoolSql($value));
                        break;
                    case 'MODE_ENV':
                        GestFourniss_Impression_Cde::JSSwitchModeEnvoi($value);
                        break;
                }
            }
        }
        
        $result = array(
            'valeurModifiee' => & $valeurModifiee,
            'messageErreur' => & $messageErreur,
            'codeFrs' => & $codeFrs,
            'libelleValeur' => & $libelleValeur
        );
        return $result;
    }
}