<?php

//
// Spécifiques
//

/**
 * Gestion des fournisseurs
 */
class RechercheAvanceeGestFourniss
{

    // Note : ce popup_id correspond aussi aux traitements que l'on retrouvera dans la classe PopupBrowse
    public static $popup_id = 'GEST_FOURNISS';

    public static $filtre_fourn_type_ref = 'FOURN_REFERENCE';

    public static $filtre_fourn_a_jour = 'FOURN_A_JOUR';

    public static $filtre_fourn_surv_relance = 'FOURN_SURV_RELANCE';

    public static $filtre_fourn_critique_a_jour = 'FOURN_CRITIQUE_A_JOUR';

    public static $filtre_fourn_critique_absent = 'FOURN_CRITIQUE_ABSENT';

    public static $filtre_part_alg = 'PART_ALG';

    public static $filtre_part_tous = 'PART_TOUS';

    public static $filtre_part_aucun = 'PART_AUCUN';

    public static function &GetListeCriteres()
    {
        // Note : il faut obligatoirement un champ 'DEFAUT'
        $listeCriteres = array(
            'DEFAUT' => array(
                'libelle' => Trad('Choisissez un critère'),
                'type' => 'LISTEC'
            ),
            'TYPE_FOUR' => array(
                'libelle' => Trad('Type du fournisseur'),
                'type' => 'LISTE_TYPE_FOUR'
            ),
            'FOUR_VALIDITE' => array(
                'libelle' => Trad('Validité fournisseur'),
                'type' => 'LISTE_VALIDITE_FOUR'
            ),
            'DOC_FOUR_VALIDITE' => array(
                'libelle' => Trad('Validité documents'),
                'type' => 'LISTE_VALIDITE_DOC_FOUR'
            ),
            'CODE' => array(
                'libelle' => Trad('Code du fournisseur'),
                'type' => 'STR'
            ),
            'RS' => array(
                'libelle' => Trad('Nom'),
                'type' => 'STR'
            ),
            'ADR' => array(
                'libelle' => Trad('Adresse'),
                'type' => 'STR'
            ),
            'CPOSTAL' => array(
                'libelle' => Trad('Code postal'),
                'type' => 'STR'
            ),
            'VILLE1' => array(
                'libelle' => Trad('Ville'),
                'type' => 'STR'
            ),
            'CA_MIN_ST' => array(
                'libelle' => Trad('CA minimum sous-traitant'),
                'type' => 'NUM'
            ),
            'CA_MAX_ST' => array(
                'libelle' => Trad('CA maximum sous-traitant'),
                'type' => 'NUM'
            )
        );
        if (Param::IsLicenceALGValide()) {
            $listeCriteres['PARTENAIRE_ALG'] = array(
                'libelle' => Trad('Est partenaire'),
                'type' => 'LISTE_PARTENAIRE'
            );
        }
        
        return $listeCriteres;
    }

    public static function &GetFormId()
    {
        // Nom du formulaire de recherche
        $form_id = 'FORM_' . RechercheAvanceeGestFourniss::$popup_id;
        return $form_id;
    }

    public static function &GetFormIdValeurs()
    {
        // Nom du formulaire d'affichage / édition
        $form_id = 'FORM_' . RechercheAvanceeGestFourniss::$popup_id . '_VALEURS';
        return $form_id;
    }

    public static function InitCriteresParDefaut(& $filtre1, & $filtre2, & $filtre3)
    {
        $popup_id = RechercheAvanceeGestFourniss::$popup_id;
        $prepareXml = false;
        
        $ecranRechercheAvancee = new RechercheAvanceeGene($popup_id);
        
        $ancrage = 'crit_1';
        $codeValeur = 'TYPE_FOUR';
        $typeValeur = 'LISTE_TYPE_FOUR';
        switch ($filtre3) {
            case RechercheAvanceeGestFourniss::$filtre_fourn_type_ref:
                $valeur1 = 'REFERENCE';
                break;
            default:
                $valeur1 = 'ALL';
                break;
        }
        $ecranRechercheAvancee->GereLigneRechercheAvancee($ancrage, $codeValeur, $typeValeur, $valeur1, $prepareXml);
        
        $ancrage = 'crit_2';
        $codeValeur = 'FOUR_VALIDITE';
        $typeValeur = 'LISTE_VALIDITE_FOUR';
        $valeur1 = 'VALID';
        $ecranRechercheAvancee->GereLigneRechercheAvancee($ancrage, $codeValeur, $typeValeur, $valeur1, $prepareXml);
        
        $ancrage = 'crit_3';
        $codeValeur = 'DOC_FOUR_VALIDITE';
        $typeValeur = 'LISTE_VALIDITE_DOC_FOUR';
        switch ($filtre1) {
            case RechercheAvanceeGestFourniss::$filtre_fourn_a_jour:
                $valeur1 = 'A_JOUR';
                break;
            case RechercheAvanceeGestFourniss::$filtre_fourn_surv_relance:
                $valeur1 = 'SURV_ABSENT';
                break;
            case RechercheAvanceeGestFourniss::$filtre_fourn_critique_a_jour:
                $valeur1 = 'CRITIQUE_A_JOUR';
                break;
            case RechercheAvanceeGestFourniss::$filtre_fourn_critique_absent:
                $valeur1 = 'CRITIQUE_ABSENT';
                break;
            default:
                $valeur1 = 'ALL';
                break;
        }
        $ecranRechercheAvancee->GereLigneRechercheAvancee($ancrage, $codeValeur, $typeValeur, $valeur1, $prepareXml);
        if (! is_null($filtre2) && '' != $filtre2) {
            $ancrage = 'crit_4';
            $codeValeur = 'PARTENAIRE_ALG';
            $typeValeur = 'LISTE_PARTENAIRE';
            switch ($filtre2) {
                case RechercheAvanceeGestFourniss::$filtre_part_alg:
                    $valeur1 = 'ALG';
                    break;
                case RechercheAvanceeGestFourniss::$filtre_part_aucun:
                    $valeur1 = 'NONE';
                    break;
                case RechercheAvanceeGestFourniss::$filtre_part_tous:
                default:
                    $valeur1 = 'ALL';
                    break;
            }
            $ecranRechercheAvancee->GereLigneRechercheAvancee($ancrage, $codeValeur, $typeValeur, $valeur1, $prepareXml);
        }
        
        $ecranRechercheAvancee->SetEstInitialise(0);
        $ecranRechercheAvancee->Sauver();
    }

    public static function &MiseAJourCriteresParDefaut(& $REQUEST)
    {
        $popup_id = RechercheAvanceeGestFourniss::$popup_id;
        $ecranRechercheAvancee = new RechercheAvanceeGene($popup_id);
        
        $code_type_four = 'TYPE_FOUR';
        $oper_type_four = 'LISTE_TYPE_FOUR';
        $type_four = $REQUEST['type_four'];
        
        $code_valid_doc = 'DOC_FOUR_VALIDITE';
        $oper_valid_doc = 'LISTE_VALIDITE_DOC_FOUR';
        $valid_doc = $REQUEST['valid_doc'];
        
        $ecranRechercheAvancee->MiseAJourValeur($code_type_four, $oper_type_four, $type_four);
        $ecranRechercheAvancee->MiseAJourValeur($code_valid_doc, $oper_valid_doc, $valid_doc);
        $ecranRechercheAvancee->Sauver();
    }

    public static function &BuildXmlFormulaire(& $filtre1, & $filtre3)
    {
        $array = RechercheAvanceeGeneAffichage::BuildXml();
        
        switch ($filtre1) {
            case RechercheAvanceeGestFourniss::$filtre_fourn_a_jour:
                $valeur1 = 'A_JOUR';
                break;
            case RechercheAvanceeGestFourniss::$filtre_fourn_surv_relance:
                $valeur1 = 'SURV_ABSENT';
                break;
            case RechercheAvanceeGestFourniss::$filtre_fourn_critique_a_jour:
                $valeur1 = 'CRITIQUE_A_JOUR';
                break;
            case RechercheAvanceeGestFourniss::$filtre_fourn_critique_absent:
                $valeur1 = 'CRITIQUE_ABSENT';
                break;
            default:
                $valeur1 = 'ALL';
                break;
        }
        $array['form']['valid_doc']['!value'] = $valeur1;
        
        // On n'a pas de valeur pour le filtre2, on ne traite pas
        // pour le filtre3, on vérifie qu'il y a une valeur renseignée
        if (! is_null($filtre3) && '' != $filtre3) {
            switch ($filtre3) {
                case RechercheAvanceeGestFourniss::$filtre_fourn_type_ref:
                    $valeur1 = 'REFERENCE';
                    break;
                default:
                    $valeur1 = 'ALL';
                    break;
            }
            $array['form']['type_four']['!value'] = $valeur1;
        } else {
            $array['form']['type_four']['!value'] = 'ALL';
        }
        
        // Nom du formulaire de recherche
        $array['form']['!id'] = RechercheAvanceeGestFourniss::GetFormId();
        
        return $array;
    }

    public static function &PrepareBrowse()
    {
        $monBrowse = new PopupBrowse(RechercheAvanceeGestFourniss::$popup_id, $_SERVER['SCRIPT_NAME']);
        
        // On doit créer au moins un champ
        $monBrowse->addNewColumn(trad('Code'), 'CODE', 'asc', '15px', true, 'A');
        $monBrowse->setIndiceTriColonne(1);
        $monBrowse->setIsActionClick(false);
        
        // On construite le tableau de données qui sera fusionné avec la feuille de style XSL
        $monBrowse->buildXML();
        
        // TRES IMPORTANT : Afin de pouvoir réutiliser la popup dans le script controleur on serialize l'objet. Il pourra être ainsi rapellé par la suite.
        $_SESSION[RechercheAvanceeGestFourniss::$popup_id] = serializeSecure($monBrowse);
        return $monBrowse;
    }

    public static function &JavascriptAfficherResultat()
    {
        $resultat = 'TraiteUrlAsync(\'IU_liste_frs.php?action=search&popup_id=' . RechercheAvanceeGestFourniss::$popup_id . '&page=1\', document.getElementById("' . RechercheAvanceeGeneAffichage::$idStrRecherche . '"))';
        return $resultat;
    }

    public static function &JavaScriptAfficherFicheFournisseur(& $codeFrs)
    {
        // Note : le seul endroit ou cette méthode sert, IU_liste_frs.php, a déjà passé un url_encode sur le code fournisseur
        $resultat = 'CallUrl(\'gest_fourniss.php?action=AfficherFicheFournisseur&codeFrs=' . $codeFrs . '&ancrage=' . RechercheAvanceeGeneAffichage::$idDivFiche . '&mode=L\');RechAvGen_AfficherFicheElement();';
        return $resultat;
    }
}
