<?php

class VisuWorflowAOPanierSaisieRep extends VisuWorflowAOPanier
{

    public function __construct($typeSuivi, $no_doc)
    {
        $this->TYPE = 'E';
        $this->NOM = 'SaisieReponseAO';
        $this->LIBELLE = trad('Saisie réponse');
        
        $this->initETAT($typeSuivi, $no_doc);
        
        if ($this->ETAT) {
            $this->getInfosEntete($no_doc);
            $this->initSTATUT($typeSuivi, $no_doc);
        }
    }

    public function initETAT($typeSuivi, & $no_doc)
    {
        switch ($typeSuivi) {
            case TypeSuivi::AO_PANIER:
                // On affiche tous les éléments à partir du moment où nous sommes sur le suivi des AO
                $this->ETAT = 1;
                break;
            default:
                $this->ETAT = 0;
                break;
        }
    }

    protected function getArrayInfos($no_doc)
    {
        $this->arrayInfos = array();
        $tmpListeEvt = SqlAo::rqGetAOEventements($no_doc)->TrouveTous();
        if (is_array($tmpListeEvt))
            foreach ($tmpListeEvt as &$evt)
                if ('REP' == $evt['CODE'])
                    $this->arrayInfos[] = $evt;
    }

    public function initSTATUT(& $typeSuivi, & $no_doc)
    {
        // Statuts = N, C, T, R,
        switch ($typeSuivi) {
            case TypeSuivi::AO_PANIER:
                // Par défaut
                $this->STATUT = 'N';
                $this->getArrayInfos($no_doc);
                
                // Est-ce qu'il y a eu validation du fournisseur?
                if ('00000000' != $this->infosEntete['VALCHXFOU']) {
                    $this->STATUT = 'T';
                } else {
                    // On verifie les réponses des fournisseurs : en a-t-on reçu ?
                    $reqSql = SqlAo::rqAOGetNbReponse($no_doc)->Trouve1();
                    $nbRep = $reqSql['nb'];
                    /**
                     * Correction ticket 27849
                     * Probleme sur l'affichage du workflow reponse toujours a terminé
                     */
                    if (count($this->arrayInfos) == $nbRep && $nbRep != 0)
                        $this->STATUT = 'T';
                    elseif ($nbRep > 0)
                        $this->STATUT = 'C';
                }
                
                $this->DATA[] = $this->initDATA($no_doc);
                break;
            default:
                $this->STATUT = 'T';
                break;
        }
    }

    public function &initDATA(& $no_doc)
    {
        $data['ENTETE'] = $this->infosEntete;
        $data['ENTETE']['STATUT'] = AO_panier::getAoStatus($data['ENTETE']['DTE_VALID_AO'], $data['ENTETE']['VALCHXFOU']);
        $data['ENTETE']['ACTION']['IMP_AO'] = "CallUrl('suivi_doc.php','action=PDF_non_Chiffre&typ_doc=AO&no_doc={$no_doc}');";
        
        // On recupère les informations liées aux événements sur les AO
        if (count($this->arrayInfos) > 0) {
            foreach ($this->arrayInfos as &$evt) {
                $evt['LIBELLE'] = AO_panier::getLibelleEvenement($evt['CODE']);
                $evt['DTE'] = convertDateSqlToFr($evt['DTE']);
                $evt['HEURE'] = convertHeureSqlToFr($evt['HEURE']);
            }
            $data['LISTE_EVE'] = &$this->arrayInfos;
        }
        return $data;
    }
}
