From a208c215d3d6ba5f40004492abba0ba6ee51b287 Mon Sep 17 00:00:00 2001 From: "vincent@cubedesigners.com" Date: Fri, 21 Jan 2011 13:48:45 +0000 Subject: [PATCH] --- .../Metier/class.common.utilisateur.php | 2 +- inc/commons/class.common.core.php | 7 +- inc/ws/Controlleur/class.ws.ajax.php | 1 + inc/ws/Controlleur/class.ws.droits.php | 1 + inc/ws/Controlleur/class.ws.url.php | 76 +++++++++++++++++++ inc/ws/DAO/class.ws.dao.demande.php | 26 +++++++ inc/ws/Metier/class.ws.demande.php | 3 + 7 files changed, 114 insertions(+), 2 deletions(-) diff --git a/inc/commons/Metier/class.common.utilisateur.php b/inc/commons/Metier/class.common.utilisateur.php index 518fcbf2d..b3bce6743 100644 --- a/inc/commons/Metier/class.common.utilisateur.php +++ b/inc/commons/Metier/class.common.utilisateur.php @@ -41,7 +41,7 @@ class commonUtilisateur extends cubeMetier { public function getSettings($liste) { - $cles = array('clients' => 'entreprise_id', 'equipiers' => 'utilisateur_id', 'devis' => 'devis_id', 'projets' => 'projet_id', 'factures' => 'facture_id', 'timereport' => 'projet_id', 'fichiers' => 'nom', 'publications' => 'book_id'); + $cles = array('clients' => 'entreprise_id', 'equipiers' => 'utilisateur_id', 'devis' => 'devis_id', 'projets' => 'projet_id', 'factures' => 'facture_id', 'timereport' => 'projet_id', 'fichiers' => 'nom', 'publications' => 'book_id', 'demandes' => 'demande_id'); if (!isset($this->settings['search'][$liste]) || !is_array($this->settings['search'][$liste])) { $this->settings['search'][$liste] = array(); } diff --git a/inc/commons/class.common.core.php b/inc/commons/class.common.core.php index 0e3a4d1a9..17e807c81 100644 --- a/inc/commons/class.common.core.php +++ b/inc/commons/class.common.core.php @@ -417,7 +417,7 @@ class commonCore extends cubeCore { $db->demandes->revendeur('integer', 0, false); $db->demandes->utilisateur('integer', 0, false); // Clés - $db->demandes->primary('demande_id'); + $db->demandes->primary('pk_demandes', 'demande_id'); try { $dbi = new CubeDbStruct($this->con); @@ -511,6 +511,11 @@ class commonCore extends cubeCore { . 'FROM themes t ' . 'LEFT JOIN books b ON t.theme_id=b.theme ' . 'GROUP BY t.theme_id'); + + $this->views->createView('demandes_vue', 'SELECT d.*, CONCAT(c.rs,\' (\',c.prenom,\' \',c.nom,\')\') AS utilisateur_nom, CONCAT(r.rs,\' (\',r.prenom,\' \',r.nom,\')\') AS revendeur_nom ' + . 'FROM demandes d ' + . 'LEFT JOIN utilisateurs_entreprise r ON d.revendeur=r.utilisateur_id ' + . 'LEFT JOIN utilisateurs_entreprise c ON d.utilisateur=c.utilisateur_id'); // cubeDb::mysqlConvert($this->con); touch($cache); } diff --git a/inc/ws/Controlleur/class.ws.ajax.php b/inc/ws/Controlleur/class.ws.ajax.php index 0e668412b..ecb779e5f 100644 --- a/inc/ws/Controlleur/class.ws.ajax.php +++ b/inc/ws/Controlleur/class.ws.ajax.php @@ -286,6 +286,7 @@ class wsAjax extends cubeAjax { foreach($d as $k => $v) { $_POST[$k] = trim($v); } + file_put_contents(ROOT . '/cache/demandeDevis.txt', print_r($_POST,true)); // Validation des champs de formulaires $ok = true; $non_vides = array('nombre_pages', 'nom', 'adresse', 'code_postal', 'ville', 'pays'); diff --git a/inc/ws/Controlleur/class.ws.droits.php b/inc/ws/Controlleur/class.ws.droits.php index 062bc36de..3cdd7fed8 100644 --- a/inc/ws/Controlleur/class.ws.droits.php +++ b/inc/ws/Controlleur/class.ws.droits.php @@ -19,6 +19,7 @@ class wsDroits { $nav[__('Clients')] = 'clients'; } if ($core->user->ws_grade >= 5) { + $nav[__('Devis')]='demandes'; $nav[__('Traductions')] = 'traductions'; } if ($core->user->ws_grade < 5) { diff --git a/inc/ws/Controlleur/class.ws.url.php b/inc/ws/Controlleur/class.ws.url.php index 71856ab5e..841787c48 100644 --- a/inc/ws/Controlleur/class.ws.url.php +++ b/inc/ws/Controlleur/class.ws.url.php @@ -677,6 +677,82 @@ html{height:100%}' . "\n"; } return $res; } + + public static function demandes() + { + global $core; + cubePage::truePopup(); + cubePage::autoComplete(); + cubePage::emptyfield(); + commonDroits::min(5); + $settings = $core->user->getSettings('demandes'); + + $shortcuts = array(); + + $filtres = array(); + $filtres[] = new commonFiltre(__('Status'), 'status_demande', $settings['filtres']); + + $res = commonPage::barre($filtres, 'filtreDemandes', 'demandes', $shortcuts); + $res .= commonPage::tMain(); + $res .= commonPage::bh(); + $res .= '
'; + $res .= self::listeDemandes(); + $res .= '
'; + $res .= commonPage::bf(); + $res .= commonPage::bMain(); + return $res; + } + + public static function listeDemandes() + { + global $core; + commonDroits::min(5); + $settings = is_null($settings)?$core->user->getSettings('demandes'):$settings; + $change = is_null($dashboard)?'Demandes':'Dashboard/' . $dashboard; + $dao = new wsDAODemande($core->con); + if (isset($settings['search']) && !is_null($settings['search'])) { + $dao->setSearch($settings['search']); + } + $dao->setFiltres($settings['filtres']); + $liste = $dao->getListe($settings['orderby'], $settings['sens'], $settings['limit'], $core->user); + + $res = ''; + $res .= ''; + $res .= ''; + $res .= ''; + $i = 0; + foreach($liste as $id => $client) { + if (!is_array($client->contacts)) { + fb($client); + continue; + } + $odd = cubeMath::isOdd($i)?' class="odd"':''; + $res .= ''; + $res .= ''; + $res .= ''; + $contacts = array(); + + foreach($client->contacts as $c) { + $contacts[] = '' . $c->prenom . ' ' . $c->nom . ''; + } + + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $i++; + } + if (!isset($settings['search']) || is_null($settings['search'])) { + $odd = cubeMath::isOdd($i)?' class="odd"':''; + $res .= ''; + } + $res .= '
' . commonUrl::orderby('#', 'demande_id', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Demandeur'), 'utilisateur', $settings, 'sort' . $change) . '
' . $client->entreprise_id . '' . $client->nom . '' . implode(', ', $contacts) . ''; + $res .= '' . cubeMedia::image(IMG . '/edit.png') . '
'; + $res .= commonPage::pager($settings['page'], $dao->count($core->user) , $settings['par_page'], 'page' . $change . '/%d'); + $res .= commonUrl::formParPage('parPage' . $change, $settings['par_page'], __('demandes')); + $res .= '
'; + return $res; + } } ?> \ No newline at end of file diff --git a/inc/ws/DAO/class.ws.dao.demande.php b/inc/ws/DAO/class.ws.dao.demande.php index 6c473711f..b3eeb6976 100644 --- a/inc/ws/DAO/class.ws.dao.demande.php +++ b/inc/ws/DAO/class.ws.dao.demande.php @@ -13,6 +13,9 @@ class wsDAODemande extends commonDAO { $demande->status = $r->status; $demande->revendeur = $r->revendeur; + $demande->utilisateur_nom = $r->utilisateur_nom; + $demande->revendeur_nom = $r->revendeur_nom; + return $demande; } @@ -28,6 +31,29 @@ class wsDAODemande extends commonDAO { return $this->singleton($r); } + public function getListe($orderby = null, $sens = null, $limit = null) + { + global $core; + if (!is_null($this->q)) { + $where = ''; + $where .= 'demande_id=\'' . $this->con->escape($this->q) . '\' OR '; + $where .= 'nom LIKE \'%' . $this->con->escape($this->q) . '%\''; + $daoClient = new commonDAOClient($this->con); + $where .= ' OR client_id IN(' . $daoClient->querySearchByName($this->q) . ')'; + $limit = null; + } else { + $where = $this->makeWhereFromFiltres(); + } + + $orderby = is_null($orderby)?'devis_id':$orderby; + $sens = is_null($sens)?'DESC':$sens; + $limit = is_null($limit)?'':$this->con->limit($limit[0], $limit[1]); + + $sql = 'SELECT * FROM demandes_vue WHERE ' . $where . ' ORDER BY ' . $orderby . ' ' . $sens . ' ' . $limit; + $r = $this->con->select($sql); + return $this->factory($r); + } + public function sauve($data) { global $core; diff --git a/inc/ws/Metier/class.ws.demande.php b/inc/ws/Metier/class.ws.demande.php index ecbceb5a1..3a6311e93 100644 --- a/inc/ws/Metier/class.ws.demande.php +++ b/inc/ws/Metier/class.ws.demande.php @@ -11,6 +11,9 @@ class wsDemande extends cubeMetier { protected $revendeur; protected $utilisateur; + + protected $utilisateur_nom; + protected $revendeur_nom; } ?> \ No newline at end of file -- 2.39.5