From 10ec151fe4d06e22971790c04dda62e553624239 Mon Sep 17 00:00:00 2001 From: "vincent@cubedesigners.com" Date: Thu, 10 Feb 2011 10:43:03 +0000 Subject: [PATCH] --- inc/commons/class.common.url.php | 18 +- inc/extranet/Controlleur/_common.php | 2 - .../Controlleur/class.extranet.ajax.php | 105 +- .../Controlleur/class.extranet.url.php | 1499 +++++++++++++++++ inc/extranet/Controlleur/url/_common.php | 10 - .../url/class.extranet.url.client.php | 277 --- .../url/class.extranet.url.devis.php | 335 ---- .../url/class.extranet.url.facture.php | 427 ----- .../url/class.extranet.url.projet.php | 353 ---- .../url/class.extranet.url.timereport.php | 133 -- inc/ws/Controlleur/_common.php | 1 - inc/ws/Controlleur/class.ws.ajax.php | 82 +- inc/ws/Controlleur/class.ws.url.php | 950 +++++++++++ inc/ws/Controlleur/url/_common.php | 9 - inc/ws/Controlleur/url/class.ws.url.book.php | 440 ----- .../Controlleur/url/class.ws.url.client.php | 209 --- .../Controlleur/url/class.ws.url.demande.php | 207 --- .../url/class.ws.url.traduction.php | 115 -- inc/ws/DAO/class.ws.dao.demande.php | 15 +- 19 files changed, 2553 insertions(+), 2634 deletions(-) delete mode 100644 inc/extranet/Controlleur/url/_common.php delete mode 100644 inc/extranet/Controlleur/url/class.extranet.url.client.php delete mode 100644 inc/extranet/Controlleur/url/class.extranet.url.devis.php delete mode 100644 inc/extranet/Controlleur/url/class.extranet.url.facture.php delete mode 100644 inc/extranet/Controlleur/url/class.extranet.url.projet.php delete mode 100644 inc/extranet/Controlleur/url/class.extranet.url.timereport.php delete mode 100644 inc/ws/Controlleur/url/_common.php delete mode 100644 inc/ws/Controlleur/url/class.ws.url.book.php delete mode 100644 inc/ws/Controlleur/url/class.ws.url.client.php delete mode 100644 inc/ws/Controlleur/url/class.ws.url.demande.php delete mode 100644 inc/ws/Controlleur/url/class.ws.url.traduction.php diff --git a/inc/commons/class.common.url.php b/inc/commons/class.common.url.php index 423b55ac7..d4330f27c 100644 --- a/inc/commons/class.common.url.php +++ b/inc/commons/class.common.url.php @@ -3,8 +3,6 @@ class commonUrl { public static function hub($args) { global $core; - global $urlClasses; - $args = cubePage::getArgs($args); // Si l'utilisateur n'est pas connecté, on affiche le formulaire // de login @@ -30,22 +28,18 @@ class commonUrl { $f = $args[0]; - echo commonPage::header($args); - echo self::execStaticMethod($f,$args); - echo commonPage::footer(); - } + $classes = array(MODE . 'Url', 'commonUrl'); - public static function execStaticMethod($method,$args) - { - global $urlClasses; - $classes = array_merge(array(MODE . 'Url', 'commonUrl'), array_keys($urlClasses)); + echo commonPage::header($args); foreach($classes as $class) { - $cb = array($class, $method); + $cb = array($class, $f); if (is_callable($cb)) { - return call_user_func($cb, $args); + echo call_user_func($cb, $args); + break; } } + echo commonPage::footer(); } public static function login($args) diff --git a/inc/extranet/Controlleur/_common.php b/inc/extranet/Controlleur/_common.php index b82118f0a..33ca12152 100644 --- a/inc/extranet/Controlleur/_common.php +++ b/inc/extranet/Controlleur/_common.php @@ -5,6 +5,4 @@ $__autoload['extranetUrl'] = dirname(__FILE__) . '/class.extranet.url.php'; $__autoload['extranetDroits'] = dirname(__FILE__) . '/class.extranet.droits.php'; $__autoload['extranetPageChiffres'] = dirname(__FILE__) . '/class.extranet.page.chiffres.php'; -include(dirname(__FILE__) . '/url/_common.php'); - ?> \ No newline at end of file diff --git a/inc/extranet/Controlleur/class.extranet.ajax.php b/inc/extranet/Controlleur/class.extranet.ajax.php index a8d2b2d03..a663a748a 100644 --- a/inc/extranet/Controlleur/class.extranet.ajax.php +++ b/inc/extranet/Controlleur/class.extranet.ajax.php @@ -7,11 +7,11 @@ class extranetAjax { if ($args[1] == 'new') { $extra = ''; } else { - $extra = '




' . extranetUrlClient::listeContacts($args[1]) . '
'; + $extra = '




' . extranetUrl::listeContacts($args[1]) . '
'; } $extra .= '



' . $core->typo->BoutonOK(__('Enregistrer')) . '

'; - commonAjax::form('saveClient', __("Edition d'un client"), extranetUrlClient::formClient($args[1]), false, 2, '', $extra); + commonAjax::form('saveClient', __("Edition d'un client"), extranetUrl::formClient($args[1]), false, 2, '', $extra); } public static function formContact($args, &$x) @@ -19,13 +19,13 @@ class extranetAjax { if (!isset($args[2])) { $args[2] = null; } - commonAjax::form('saveContact', __("Edition d'un contact"), extranetUrlClient::formContact($args[1], $args[2])); + commonAjax::form('saveContact', __("Edition d'un contact"), extranetUrl::formContact($args[1], $args[2])); } public static function formNotes($args, &$x) { global $core; - commonAjax::form('saveNotes', __('Edition des notes'), extranetUrlClient::formNotes($args[1])); + commonAjax::form('saveNotes', __('Edition des notes'), extranetUrl::formNotes($args[1])); } public static function saveClient($args, &$x) @@ -53,7 +53,7 @@ class extranetAjax { } } - $x->addContent('listeClients', extranetUrlClient::listeClients()); + $x->addContent('listeClients', extranetUrl::listeClients()); $x->addClosePopup(); } @@ -71,9 +71,9 @@ class extranetAjax { $dao = new commonDAOClient($core->con); $client = $dao->sauve($_POST); $x->addClosePopup(); - $x->addContent('devisAdresseDisplay', extranetUrlClient::adresse($client->utilisateur_id, null, 'devis')); - $x->addContent('factureAdresseDisplay', extranetUrlClient::adresse($client->utilisateur_id, null, 'facture')); - $x->addContent('listeContacts', extranetUrlClient::listeContacts($client->entreprise)); + $x->addContent('devisAdresseDisplay', extranetUrl::adresse($client->utilisateur_id, null, 'devis')); + $x->addContent('factureAdresseDisplay', extranetUrl::adresse($client->utilisateur_id, null, 'facture')); + $x->addContent('listeContacts', extranetUrl::listeContacts($client->entreprise)); $contacts = array(); $client_contacts = $dao->getContactsOfEntreprise($client->entreprise); foreach($client_contacts as $c) { @@ -90,18 +90,18 @@ class extranetAjax { $dao = new commonDAOEntreprise($core->con); $dao->supprime($args[1]); - $x->addContent('listeClients', extranetUrlClient::listeClients()); + $x->addContent('listeClients', extranetUrl::listeClients()); } public static function searchClients($args, &$x) { - $x->addContent('listeClients', extranetUrlClient::listeClients()); + $x->addContent('listeClients', extranetUrl::listeClients()); } public static function sortClient($args, &$x) { commonAjax::sort('clients', $args[1]); - $x->addContent('listeClients', extranetUrlClient::listeClients()); + $x->addContent('listeClients', extranetUrl::listeClients()); } public static function sortEquipier($args, &$x) { @@ -112,13 +112,13 @@ class extranetAjax { public static function pageClient($args, &$x) { commonAjax::page('clients', $args[1]); - $x->addContent('listeClients', extranetUrlClient::listeClients()); + $x->addContent('listeClients', extranetUrl::listeClients()); } public static function parPageClient($args, &$x) { commonAjax::parPage('clients', $_POST['par_page']); - $x->addContent('listeClients', extranetUrlClient::listeClients()); + $x->addContent('listeClients', extranetUrl::listeClients()); } public static function filtreClients($args, &$x) @@ -129,7 +129,7 @@ class extranetAjax { return; } else { commonAjax::filtre('clients', $_POST); - $x->addContent('listeClients', extranetUrlClient::listeClients()); + $x->addContent('listeClients', extranetUrl::listeClients()); } } @@ -138,7 +138,7 @@ class extranetAjax { global $core; $dao = new commonDAOEntreprise($core->con); $client = $dao->selectById($args[1]); - return commonAjax::form('', __("Détail du chiffre d'affaire de") . ' ' . $client->nom, extranetUrlClient::clientDetailCa($args[1]), false); + return commonAjax::form('', __("Détail du chiffre d'affaire de") . ' ' . $client->nom, extranetUrl::clientDetailCa($args[1]), false); } public static function clientDetailImpaye($args, &$x) @@ -146,12 +146,12 @@ class extranetAjax { global $core; $dao = new commonDAOEntreprise($core->con); $client = $dao->selectById($args[1]); - return commonAjax::form('', __("Détail des impayés de") . ' ' . $client->nom, extranetUrlClient::clientDetailImpaye($args[1]), false, 4); + return commonAjax::form('', __("Détail des impayés de") . ' ' . $client->nom, extranetUrl::clientDetailImpaye($args[1]), false, 4); } public static function formProjet($args, &$x) { - commonAjax::form('saveProjet', __("Edition d'un projet"), extranetUrlProjet::formProjet($args[1])); + commonAjax::form('saveProjet', __("Edition d'un projet"), extranetUrl::formProjet($args[1])); } public static function saveProjet($args, &$x) @@ -160,7 +160,7 @@ class extranetAjax { $dao = new extranetDAOProjet($core->con); $id = $dao->sauve($_POST); - $x->addContent('listeProjets', extranetUrlProjet::listeProjets()); + $x->addContent('listeProjets', extranetUrl::listeProjets()); $x->addRedirection(SITE_PATH . 'projet/' . $id); } @@ -170,7 +170,7 @@ class extranetAjax { $dao = new extranetDAOProjet($core->con); $dao->changeStatus($args[1]); - $x->addContent('listeProjet', extranetUrlProjet::listeProjet($args[1])); + $x->addContent('listeProjet', extranetUrl::listeProjet($args[1])); } public static function changeProjetsStatus($args, &$x) @@ -179,7 +179,7 @@ class extranetAjax { $dao = new extranetDAOProjet($core->con); $dao->changeStatus($args[1]); - $x->addContent('listeProjets', extranetUrlProjet::listeProjets($args[1])); + $x->addContent('listeProjets', extranetUrl::listeProjets($args[1])); } public static function supprimeProjet($args, &$x) @@ -193,24 +193,24 @@ class extranetAjax { public static function searchProjets($args, &$x) { - $x->addContent('listeProjets', extranetUrlProjet::listeProjets()); + $x->addContent('listeProjets', extranetUrl::listeProjets()); } public static function pageProjet($args, &$x) { commonAjax::page('projets', $args[1]); - $x->addContent('listeProjets', extranetUrlProjet::listeProjets()); + $x->addContent('listeProjets', extranetUrl::listeProjets()); } public static function parPageProjet($args, &$x) { commonAjax::parPage('projets', $_POST['par_page']); - $x->addContent('listeProjets', extranetUrlProjet::listeProjets()); + $x->addContent('listeProjets', extranetUrl::listeProjets()); } public static function sortProjet($args, &$x) { commonAjax::sort('projets', $args[1]); - $x->addContent('listeProjets', extranetUrlProjet::listeProjets()); + $x->addContent('listeProjets', extranetUrl::listeProjets()); } public static function filtreProjet($args, &$x) @@ -221,20 +221,20 @@ class extranetAjax { return; } else { commonAjax::filtre('projets', $_POST); - $x->addContent('listeProjets', extranetUrlProjet::listeProjets()); + $x->addContent('listeProjets', extranetUrl::listeProjets()); } } public static function formTacheNormale($args, &$x) { $projet = isset($args[2])?$args[2]:null; - commonAjax::form('saveTache', __("Edition d'un tâche"), extranetUrlProjet::formTacheNormale($args[1], $projet)); + commonAjax::form('saveTache', __("Edition d'un tâche"), extranetUrl::formTacheNormale($args[1], $projet)); } public static function formTacheSousTraitee($args, &$x) { $projet = isset($args[2])?$args[2]:null; - commonAjax::form('saveTache', __("Edition d'un tâche sous-traitée"), extranetUrlProjet::formTacheSousTraitee($args[1], $projet)); + commonAjax::form('saveTache', __("Edition d'un tâche sous-traitée"), extranetUrl::formTacheSousTraitee($args[1], $projet)); } public static function saveTache($args, &$x) @@ -243,7 +243,7 @@ class extranetAjax { $dao = new extranetDAOTache($core->con); $dao->sauve($_POST); - $x->addContent('listeProjet', extranetUrlProjet::listeProjet($_POST['projet'])); + $x->addContent('listeProjet', extranetUrl::listeProjet($_POST['projet'])); $x->addClosePopup(); } @@ -254,7 +254,7 @@ class extranetAjax { $tache = $dao->selectById($args[1]); $dao->supprime($args[1]); - $x->addContent('listeProjet', extranetUrlProjet::listeProjet($tache->projet)); + $x->addContent('listeProjet', extranetUrl::listeProjet($tache->projet)); } public static function saveTimereport($args, &$x) @@ -290,24 +290,24 @@ class extranetAjax { public static function sortTimereport($args, &$x) { commonAjax::sort('timereport', $args[1]); - $x->addContent('listeTimereport', extranetUrlTimereport::listeTimereport()); + $x->addContent('listeTimereport', extranetUrl::listeTimereport()); } public static function pageTimereport($args, &$x) { commonAjax::page('timereport', $args[1]); - $x->addContent('listeTimereport', extranetUrlTimereport::listeTimereport()); + $x->addContent('listeTimereport', extranetUrl::listeTimereport()); } public static function searchTimereport($args, &$x) { - $x->addContent('listeTimereport', extranetUrlTimereport::listeTimereport()); + $x->addContent('listeTimereport', extranetUrl::listeTimereport()); } public static function parPageTimereport($args, &$x) { commonAjax::parPage('timereport', $_POST['par_page']); - $x->addContent('listeTimereport', extranetUrlTimereport::listeTimereport()); + $x->addContent('listeTimereport', extranetUrl::listeTimereport()); } public static function filtreTimereport($args, &$x) @@ -318,7 +318,7 @@ class extranetAjax { return; } else { commonAjax::filtre('timereport', $_POST); - $x->addContent('listeTimereport', extranetUrlTimereport::listeTimereport()); + $x->addContent('listeTimereport', extranetUrl::listeTimereport()); } } @@ -333,7 +333,7 @@ class extranetAjax { $projet_id = $daoProjet->createFromDevis($args[1], $core->user->utilisateur_id); $x->addRedirection(SITE_PATH . 'projet/' . $projet_id); } else { - $x->addContent('listeDevis', extranetUrlDevis::listeDevis()); + $x->addContent('listeDevis', extranetUrl::listeDevis()); } } @@ -344,30 +344,31 @@ class extranetAjax { $dao->supprime($args[1]); @unlink(ROOT . '/devis/' . $args[1] . '.pdf'); - $x->addContent('listeDevis', extranetUrlDevis::listeDevis()); + $x->addContent('listeDevis', extranetUrl::listeDevis()); + $x->addContent('listeDevis', extranetUrl::listeDevis()); } public static function searchDevis($args, &$x) { - $x->addContent('listeDevis', extranetUrlDevis::listeDevis()); + $x->addContent('listeDevis', extranetUrl::listeDevis()); } public static function pageDevis($args, &$x) { commonAjax::page('devis', $args[1]); - $x->addContent('listeDevis', extranetUrlDevis::listeDevis()); + $x->addContent('listeDevis', extranetUrl::listeDevis()); } public static function parPageDevis($args, &$x) { commonAjax::parPage('devis', $_POST['par_page']); - $x->addContent('listeDevis', extranetUrlDevis::listeDevis()); + $x->addContent('listeDevis', extranetUrl::listeDevis()); } public static function sortDevis($args, &$x) { commonAjax::sort('devis', $args[1]); - $x->addContent('listeDevis', extranetUrlDevis::listeDevis()); + $x->addContent('listeDevis', extranetUrl::listeDevis()); } public static function filtreDevis($args, &$x) @@ -378,14 +379,14 @@ class extranetAjax { return; } else { commonAjax::filtre('devis', $_POST); - $x->addContent('listeDevis', extranetUrlDevis::listeDevis()); + $x->addContent('listeDevis', extranetUrl::listeDevis()); } } public static function sortDevisClient($args, &$x) { commonAjax::sort('devis', $args[1]); - $x->addContent('listeDevis', extranetUrlDevis::listeDevisClient()); + $x->addContent('listeDevis', extranetUrl::listeDevisClient()); } public static function expedieDevis($args, &$x) @@ -429,12 +430,12 @@ class extranetAjax { $dao = new extranetDAOFacture($core->con); $dao->changeStatus($args[1], $args[2]); - $x->addContent('listeFactures', extranetUrlFacture::listeFactures()); + $x->addContent('listeFactures', extranetUrl::listeFactures()); } public static function changeFacturePaiement($args, &$x) { - return commonAjax::form('saveFacturePaiement', __('Informations relatives au paiement de la facture'), extranetUrlFacture::formFacturePaiement($args[1])); + return commonAjax::form('saveFacturePaiement', __('Informations relatives au paiement de la facture'), extranetUrl::formFacturePaiement($args[1])); } public static function saveFacturePaiement($args, &$x) @@ -443,7 +444,7 @@ class extranetAjax { $dao = new extranetDAOFacture($core->con); $dao->savePaiement($_POST); $x->addClosePopup(); - $x->addContent('listeFactures', extranetUrlFacture::listeFactures()); + $x->addContent('listeFactures', extranetUrl::listeFactures()); } public static function supprimeFacture($args, &$x) @@ -453,7 +454,7 @@ class extranetAjax { $dao->supprime($args[1]); @unlink(ROOT . '/facture/' . $args[1] . '.pdf'); - $x->addContent('listeFactures', extranetUrlFacture::listeFactures()); + $x->addContent('listeFactures', extranetUrl::listeFactures()); } public static function valideFacture($args, &$x) @@ -467,25 +468,25 @@ class extranetAjax { public static function searchFactures($args, &$x) { - $x->addContent('listeFactures', extranetUrlFacture::listeFactures()); + $x->addContent('listeFactures', extranetUrl::listeFactures()); } public static function pageFacture($args, &$x) { commonAjax::page('factures', $args[1]); - $x->addContent('listeFactures', extranetUrlFacture::listeFactures()); + $x->addContent('listeFactures', extranetUrl::listeFactures()); } public static function parPageFacture($args, &$x) { commonAjax::parPage('factures', $_POST['par_page']); - $x->addContent('listeFactures', extranetUrlFacture::listeFactures()); + $x->addContent('listeFactures', extranetUrl::listeFactures()); } public static function sortFacture($args, &$x) { commonAjax::sort('factures', $args[1]); - $x->addContent('listeFactures', extranetUrlFacture::listeFactures()); + $x->addContent('listeFactures', extranetUrl::listeFactures()); } public static function filtreFactures($args, &$x) @@ -496,7 +497,7 @@ class extranetAjax { return; } else { commonAjax::filtre('factures', $_POST); - $x->addContent('listeFactures', extranetUrlFacture::listeFactures()); + $x->addContent('listeFactures', extranetUrl::listeFactures()); } } @@ -521,7 +522,7 @@ class extranetAjax { public static function formPrintFactures($args, &$x) { - commonAjax::form('printFactures', __('Imprimer des factures'), extranetUrlFacture::formPrintFactures(), __("Lancer l'impression")); + commonAjax::form('printFactures', __('Imprimer des factures'), extranetUrl::formPrintFactures(), __("Lancer l'impression")); } public static function printFactures($args, &$x) diff --git a/inc/extranet/Controlleur/class.extranet.url.php b/inc/extranet/Controlleur/class.extranet.url.php index 49d9eddb8..be5941cf7 100644 --- a/inc/extranet/Controlleur/class.extranet.url.php +++ b/inc/extranet/Controlleur/class.extranet.url.php @@ -1,5 +1,1504 @@ user->getSettings('clients'); + + $shortcuts = array(); + $shortcuts[] = '' . $core->typo->Ajouter('Créer un nouveau client') . ''; + $filtres = array(); + $filtres[] = new commonFiltre(__('Ayant un projet'), 'status_client_projet', $settings['filtres']); + $filtres[] = new commonFiltre(__('Ayant des impayés'), 'impaye', $settings['filtres']); + $res = commonPage::barre($filtres, 'filtreClients', 'clients', $shortcuts); + $res .= commonPage::tMain(); + $res .= commonPage::bh(); + $res .= '
'; + $res .= self::listeClients(); + $res .= '
'; + $res .= commonPage::bf(); + $res .= commonPage::bMain(); + return $res; + } + + public static function listeClients($dashboard = null, $settings = null) + { + global $core; + commonDroits::min(1); + $settings = is_null($settings)?$core->user->getSettings('clients'):$settings; + $change = is_null($dashboard)?'Client':'Dashboard/' . $dashboard; + $dao = new commonDAOEntreprise($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']); + + $res = ''; + $res .= ''; + $res .= ''; + $res .= ''; + $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 .= ''; + if ($client->impaye) { + $res .= ''; + } else { + $res .= ''; + } + + $res .= ''; + if (is_null($client->ca)) { + $res .= ''; + } else { + $res .= ''; + } + $res .= ''; + $i++; + } + if (!isset($settings['search']) || is_null($settings['search'])) { + $odd = cubeMath::isOdd($i)?' class="odd"':''; + $res .= ''; + } + $res .= '
' . commonUrl::orderby('#', 'entreprise_id', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Raison sociale'), 'nom', $settings, 'sort' . $change) . '' . __('Contacts') . '' . __('Notes') . '' . commonUrl::orderby('CA', 'ca', $settings, 'sort' . $change) . '' . commonUrl::orderby('Impayés', 'impaye', $settings, 'sort' . $change) . '
' . $client->entreprise_id . '' . $client->nom . '' . implode(', ', $contacts) . '' . cubeMedia::image(IMG . '/postit.png') . ''; + if ($client->ca) { + $res .= '' . number_format($client->ca, 0, ',', ' ') . ''; + } + + $res .= '' . number_format($client->impaye, 0, '.', ' ') . '' . cubeMedia::image(IMG . '/edit.png') . '' . cubeMedia::image(IMG . '/delete.png') . '
'; + $res .= commonPage::pager($settings['page'], $dao->count() , $settings['par_page'], 'page' . $change . '/%d'); + $res .= commonUrl::formParPage('parPage' . $change, $settings['par_page'], __('clients')); + $res .= '
'; + return $res; + } + + public static function clientDetailCa($entreprise_id) + { + global $core; + $dao = new commonDAOEntreprise($core->con); + $annees = $dao->getCaDetails($entreprise_id); + $res = ''; + $i = 0; + foreach($annees as $annee => $ca) { + $class = cubeMath::isOdd($i)?' class="odd"':''; + $res .= '' . $annee . '' . number_format($ca, 0, ',', ' ') . ' €'; + $i++; + } + return $res; + } + + public static function clientDetailImpaye($entreprise_id) + { + global $core; + $dao = new extranetDAOFacture($core->con); + $daoClient = new commonDAOEntreprise($core->con); + $factures = $dao->getImpayesOfClient($entreprise_id); + $client = $daoClient->selectById($entreprise_id); + $res = ''; + $i = 0; + foreach($factures as $facture) { + $class = cubeMath::isOdd($i)?' class="odd"':''; + $res .= ''; + $res .= '' . $facture->facture_id . ''; + $res .= ''; + if ($facture->facture_id > 0) { + $res .= '' . $facture->nom . ''; + } else { + $res .= $facture->nom ; + } + $res .= ''; + $tva = cubeTaxes::tva($client->pays); + $res .= '' . number_format($facture->total_ht, 0, ',', '') . ' €'; + if ($tva > 0 && $tva != 'UE') { + $res .= ' HT ' . number_format(cubePrices::HTtoTTC($facture->total_ht, $tva), 2, ',', '') . ' € TTC'; + } else { + $res .= ''; + } + $res .= ''; + $i++; + } + return $res; + } + + public static function formClient($entreprise_id = 'new') + { + global $core; + commonDroits::min(1); + $dao = new commonDAOEntreprise($core->con); + $daoUtilisateur = new commonDAOUtilisateur($core->con); + if ($entreprise_id == 'new') { + $client = $dao->cree(); + } else { + $client = $dao->selectById($entreprise_id); + } + + $res = '' . __('Numéro de client') . '' . form::hidden('entreprise_id', $client->entreprise_id) . '' . $client->entreprise_id . ''; + $res .= '' . __('Raison sociale') . '' . form::field('nom', 30, 128, $client->nom) . ''; + $res .= '' . __('Adresse') . '' . form::textarea('adresse', 40, 3, $client->adresse) . ''; + $res .= '' . __('Code postal') . '' . form::field('code_postal', 10, 20, $client->code_postal) . ''; + $res .= '' . __('Ville') . '' . form::field('ville', 30, 128, $client->ville) . ''; + $res .= '' . __('Pays') . '' . form::combo('pays', cubeCountry::getList(), $client->pays) . ''; + $res .= '' . __('Adresse de facturation') . '' . form::textarea('adresse_facturation', 40, 3, $client->adresse_facturation) . ''; + $res .= '' . __('Numéro de TVA intracommunautaire') . '' . form::field('tva_intra', 15, 13, $client->tva_intra) . ''; + $res .= '' . __('Fluidbook Workshop') . ''; + $res .= '' . __('Grade') . '' . form::combo('ws_grade', array_flip($core->ws_grades), $client->ws_grade) . ''; + if ($entreprise_id == 'new' || !$client->ws_admin) { + $class = 'empty-field'; + $default_id = ''; + $default = __('Entrez le nom du revendeur ou de l\'administrateur'); + } else { + $class = ''; + $default_id = $client->ws_admin; + $wsa = $daoUtilisateur->selectById($client->ws_admin, 'utilisateurs_entreprise'); + $default = $wsa->utilisateur_id . ' - ' . $wsa->rs . ' (' . $wsa->prenom . ' ' . $wsa->nom . ')'; + } + + $d = $dao->getWSDatas($entreprise_id); + + $res .= '' . __('Revendeur / Administrateur') . '' . form::field('ws_admin_nom', 60, 128, $default, $class) . form::hidden('ws_admin', $default_id) . ''; + if (!is_null($d)) { + $res .= '' . __('Entité facturable') . '' . $d->facturable->prenom . ' ' . $d->facturable->nom . ' (' . $d->facturable->rs . ')'; + $res .= '' . __('Administrateur responsable') . '' . $d->administrateur->prenom . ' ' . $d->administrateur->nom . ' (' . $d->administrateur->rs . ')'; + } + if ($entreprise_id == 'new') { + $daoContact = new commonDAOClient($core->con); + $contact = $daoContact->cree(); + $res .= '' . __('Contact') . ''; + $res .= '' . __('Adresse e-mail') . '' . form::field(array('contact[email]'), 30, 128, $contact->email) . ''; + $res .= '' . __('Mot de passe') . '' . form::field(array('contact[password]'), 30, 128, $contact->password) . ''; + $res .= '' . __('Prénom') . '' . form::field(array('contact[prenom]'), 30, 128, $contact->prenom) . ''; + $res .= '' . __('Nom') . '' . form::field(array('contact[nom]'), 30, 128, $contact->nom) . ''; + $res .= '' . __('Téléphone') . '' . form::field(array('contact[telephone]'), 20, 128, $contact->telephone) . ''; + $res .= '' . __('Mobile') . '' . form::field(array('contact[mobile]'), 20, 128, $contact->mobile) . ''; + $res .= '' . __('Fax') . '' . form::field(array('contact[fax]'), 20, 128, $contact->fax) . ''; + $res .= '' . __('Langue') . '' . form::combo(array('contact[lang]'), cubeLang::getAvailableLangs(true), $contact->lang) . ''; + } + return $res; + } + + public static function listeContacts($entreprise_id) + { + global $core; + commonDroits::min(1); + $dao = new commonDAOEntreprise($core->con); + $contacts = $dao->getContacts($entreprise_id); + + $res = ''; + $res .= ''; + $i = 0; + foreach($contacts as $contact) { + $odd = cubeMath::isOdd($i)?' class="odd"':''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $i++; + } + $res .= '
' . $core->typo->Contact('Ajouter un contact') . '
' . trim($contact->prenom . ' ' . $contact->nom) . '' . $contact->email . 'FTPSe connecter comme ...' . cubeMedia::image(IMG . '/edit.png') . '
'; + return $res; + } + + public static function formContact($client_id = 'new', $entreprise_id = null) + { + global $core; + commonDroits::min(1); + + $dao = new commonDAOClient($core->con); + if ($client_id == 'new') { + $client = $dao->creeFromEntreprise($entreprise_id); + } else { + $client = $dao->selectById($client_id); + } + + $res = '' . __('Numéro de client') . '' . form::hidden('grade', 0) . form::hidden('entreprise', $client->entreprise) . form::hidden('utilisateur_id', $client->utilisateur_id) . '' . $client->utilisateur_id . ''; + $res .= '' . __('Adresse e-mail') . '' . form::field('email', 30, 128, $client->email) . ''; + $res .= '' . __('Mot de passe') . '' . form::field('password', 30, 128, $client->password) . ''; + $res .= '' . __('Prénom du contact') . '' . form::field('prenom', 30, 128, $client->prenom) . ''; + $res .= '' . __('Nom du contact') . '' . form::field('nom', 30, 128, $client->nom) . ''; + $res .= '' . __('Adresse') . '' . form::textarea('adresse', 40, 3, $client->adresse) . ''; + $res .= '' . __('Code postal') . '' . form::field('code_postal', 10, 20, $client->code_postal) . ''; + $res .= '' . __('Ville') . '' . form::field('ville', 30, 128, $client->ville) . ''; + $res .= '' . __('Pays') . '' . form::combo('pays', cubeCountry::getList(), $client->pays) . ''; + $res .= '' . __('Téléphone') . '' . form::field('telephone', 20, 128, $client->telephone) . ''; + $res .= '' . __('Mobile') . '' . form::field('mobile', 20, 128, $client->mobile) . ''; + $res .= '' . __('Fax') . '' . form::field('fax', 20, 128, $client->fax) . ''; + $res .= '' . __('Langue') . '' . form::combo('lang', cubeLang::getAvailableLangs(true), $client->lang) . ''; + if ($client_id != 'new') { + $res .= '' . cubeMedia::spacer(10, 10) . ''; + $res .= '' . __('FTP') . ''; + $res .= '' . __('Se connecter comme ...') . ''; + $res .= '' . __("Paramètres de connexion à l'extranet") . '' . __('Adresse') . ' : http://extranet.cubedesigners.com/
' . __("Nom d'utilisateur") . ' : ' . $client->email . '
' . __('Mot de passe') . ' : ' . $client->password . ''; + $res .= '' . cubeMedia::spacer(10, 10) . ''; + // $res .= '' . __("Paramètres de connexion au FTP") . '' . __('Serveur FTP') . ' : extranet.cubedesigners.com (ftp://extranet.cubedesigners.com)
' . __("Nom d'utilisateur") . ' : ' . $client->email . '
' . __('Mot de passe') . ' : ' . $client->password . ''; + } + return $res; + } + + public static function formNotes($utilisateur_id) + { + global $core; + commonDroits::min(1); + $dao = new commonDAOUtilisateur($core->con); + $utilisateur = $dao->selectById($utilisateur_id); + $res = '' . form::hidden('utilisateur_id', $utilisateur_id) . ''; + $res .= '' . form::textarea('notes', 100, 30, $utilisateur->notes) . ''; + $res .= ''; + return $res; + } + + public static function projets($args) + { + global $core; + commonDroits::min(1); + + $settings = $core->user->getSettings('projets'); + + $shortcuts = array(); + $shortcuts[] = '' . $core->typo->Ajouter('Créer un projet') . ''; + + $filtres = array(); + $filtres[] = new commonFiltre(__('Crée par'), 'equipier', $settings['filtres']); + $filtres[] = new commonFiltre(__('Status'), 'status_projet', $settings['filtres']); + $filtres[] = new commonFiltre(__('Année'), 'annee', $settings['filtres']); + + $res = commonPage::barre($filtres, 'filtreProjet', 'projets', $shortcuts); + $res .= commonPage::tMain(); + $res .= commonPage::bh(); + $res .= '
'; + $res .= self::listeProjets(); + $res .= '
'; + $res .= commonPage::bf(); + $res .= commonPage::bMain(); + return $res; + } + + public static function listeProjets($dashboard = null, $settings = null) + { + global $core; + commonDroits::min(1); + $settings = is_null($settings)?$core->user->getSettings('projets'):$settings; + $change = is_null($dashboard)?'Projet':'Dashboard/' . $dashboard; + + $res = ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + + $dao = new extranetDAOProjet($core->con); + $dao->setFiltres($settings['filtres']); + if (isset($settings['search']) && !is_null($settings['search'])) { + $dao->setSearch($settings['search']); + } + $liste = $dao->getListe($settings['orderby'], $settings['sens'], $settings['limit']); + + $i = 0; + foreach($liste as $projet) { + $droits = extranetDroits::projet($projet, false); + + $projet->progression = !$projet->progression?'-':$projet->progression . '%'; + $projet->jours_prevus = !$projet->jours_prevus?'-':$projet->jours_prevus; + $projet->jours_consommes = !$projet->jours_consommes?'-':$projet->jours_consommes; + + $projet->budget = !$projet->budget || !$droits?'-':$projet->budget; + $odd = cubeMath::isOdd($i)?' class="odd"':''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + if ($droits) { + $res .= ''; + } else { + $res .= ''; + } + + $rf = $projet->rapport_facturation; + if ($projet->budget == '-') { + $rapport_facturation = '-'; + } elseif (!$rf) { + $rapport_facturation = __('Non'); + } elseif ($rf == 1) { + $rapport_facturation = __('Oui'); + } elseif ($rf < 1) { + $rapport_facturation = __('Partie'); + } elseif ($rf > 1) { + $rapport_facturation = __('Trop'); + } + + $rp = $projet->rapport_paiement; + if ($projet->budget == '-') { + $rapport_paiement = '-'; + } elseif (!$rp) { + $rapport_paiement = __('Non') ; + } elseif ($rp == 1) { + $rapport_paiement = __('Oui'); + } elseif ($rp < 1) { + $rapport_paiement = __('Partie'); + } elseif ($rp > 1) { + $rapport_paiement = __('Trop'); + } + + $res .= ''; + $res .= ''; + + $res .= ''; + // $res .= ''; + // $res .= ''; + $res .= ''; + $res .= ''; + + $res .= ''; + $i++; + } + if (!isset($settings['search']) || is_null($settings['search'])) { + $odd = cubeMath::isOdd($i)?' class="odd"':''; + $res .= ''; + } + $res .= '
' . commonUrl::orderby('#', 'projet_id', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Projet'), 'nom', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Client'), 'client', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Année'), 'annee_fin', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Chef'), 'chef', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Status'), 'status', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Facturé'), 'rapport_facturation', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Payé'), 'rapport_paiement', $settings, 'sort' . $change) . '' . commonUrl::orderby('B', 'budget', $settings, 'sort' . $change) . '' . commonUrl::orderby('Pr', 'progression', $settings, 'sort' . $change) . '
' . $projet->projet_id . '' . $projet->nom . '' . $projet->client . '' . $projet->annee_fin . '' . $projet->chef . '' . $core->projets_status[$projet->status] . '' . $core->projets_status[$projet->status] . ''; + if ($projet->status == 1 && !$rf) { + $res .= '' . $rapport_facturation . ''; + } else { + $res .= $rapport_facturation; + } + $res .= '' . $rapport_paiement . '' . $projet->budget . '' . $projet->jours_prevus . '' . $projet->jours_consommes . '' . $projet->progression . '' . cubeMedia::image(IMG . '/view.png') . '
'; + $res .= commonPage::pager($settings['page'], $dao->count() , $settings['par_page'], 'page' . $change . '/%d'); + $res .= commonUrl::formParPage('parPage' . $change, $settings['par_page'], __('projets')); + $res .= '
'; + return $res; + } + + public static function projet($args) + { + global $core; + commonDroits::min(1); + + $shortcuts = array(); + $shortcuts[] = '' . $core->typo->Ajouter('Créer une tâche') . ''; + $shortcuts[] = '' . $core->typo->Ajouter('Créer une tâche sous-traitée') . ''; + + $res = commonPage::barre(null, null, null, $shortcuts); + $res .= commonPage::tMain(); + $res .= commonPage::bh(); + $res .= '
'; + $res .= self::listeProjet($args[1]); + $res .= '
'; + $res .= commonPage::bf(); + $res .= commonPage::bMain(); + return $res; + } + + public static function listeProjet($projet_id) + { + global $core; + commonDroits::min(1); + + $res = ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + + $dao = new extranetDAOProjet($core->con); + $projet = $dao->selectById($projet_id); + + $hasFacture = $dao->hasFacture($projet_id); + + $droits = extranetDroits::projet($projet, false); + + $projet->progression = !$projet->progression?'-':$projet->progression . '%'; + $projet->jours_prevus = !$projet->jours_prevus?'-':$projet->jours_prevus; + $projet->jours_consommes = !$projet->jours_consommes?'-':$projet->jours_consommes; + + $projet->budget = !$projet->budget || !$droits?'-':$projet->budget; + + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + if ($droits) { + $res .= ''; + } else { + $res .= ''; + } + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + if ($droits) { + $res .= ''; + if (!count($projet->taches) && !$hasFacture) { + $res .= ''; + } else { + $res .= ''; + } + } else { + $res .= ''; + } + $res .= ''; + $i = 1; + foreach($projet->taches as $tache) { + $tache->budget = !$tache->budget || !$droits?'-':$tache->budget; + $odd = cubeMath::isOdd($i)?' class="odd"':''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + + if ($tache instanceof extranetTacheNormale) { + $progression = !$tache->progression?'-':$tache->progression . '%'; + $jours_prevus = !$tache->jours_prevus?'-':$tache->jours_prevus; + $jours_consommes = !$tache->jours_consommes?'-':$tache->jours_consommes; + $res .= ''; + $res .= ''; + $res .= ''; + if ($droits) { + $res .= ''; + } else { + $res .= ''; + } + } else { + $res .= ''; + if ($droits) { + $res .= ''; + } else { + $res .= ''; + } + } + + $res .= ''; + + $res .= ''; + $i++; + } + $res .= '
#' . __('Projet') . ' / ' . __('Tâche') . '' . __('Client') . ' / ' . __('Catégorie') . '' . __('Année') . '' . __('Chef de projet') . '' . __('Status') . 'BPlCoPr
' . $projet->projet_id . '' . $projet->nom . '' . $projet->client . '' . $projet->annee_fin . '' . $projet->chef . '' . $core->projets_status[$projet->status] . '' . $core->projets_status[$projet->status] . '' . $projet->budget . '' . $projet->jours_prevus . '' . $projet->jours_consommes . '' . $projet->progression . '' . cubeMedia::image(IMG . '/edit.png') . '' . cubeMedia::image(IMG . '/delete.png') . '
T' . $i . '' . $tache->nom . '' . $core->categories[$tache->categorie] . '' . $tache->budget . '' . $jours_prevus . '' . $jours_consommes . '' . $progression . '' . cubeMedia::image(IMG . '/edit.png') . '' . __('Tâche sous-traitée') . '' . cubeMedia::image(IMG . '/edit.png') . '' . cubeMedia::image(IMG . '/delete.png') . '
'; + return $res; + } + + public static function formProjet($projet_id = 'new') + { + global $core; + commonDroits::min(1); + + $dao = new extranetDAOProjet($core->con); + if ($projet_id == 'new') { + $projet = $dao->cree($core->user->utilisateur_id); + } else { + $projet = $dao->selectById($projet_id); + } + + $daoClient = new commonDAOClient($core->con); + $clients = $daoClient->getListe(); + + $listeClients = array(); + foreach($clients as $client) { + $listeClients[$client->rs . ' (' . $client->prenom . ' ' . $client->nom . ')'] = $client->utilisateur_id; + } + ksort($listeClients); + + $daoEquipier = new commonDAOEquipier($core->con); + $equipiers = $daoEquipier->getListe(); + + $listeEquipiers = array(); + foreach($equipiers as $equipier) { + $listeEquipiers[$equipier->prenom . ' ' . $equipier->nom . ' (' . $equipier->agence . ')'] = $equipier->utilisateur_id; + } + + $daoDevis = new extranetDAODevis($core->con); + $devis = $daoDevis->getListeValidesLibres($projet_id); + $listeDevis = array('--' => 0); + foreach($devis as $id => $dev) { + $listeDevis[$dev->nom] = $dev->devis_id; + } + + $res = '' . __('Numéro de projet') . '' . form::hidden('projet_id', $projet->projet_id) . '' . $projet->projet_id . ''; + $res .= '' . __('Nom du projet') . '' . form::textarea('nom', 50, 3, html::escapeHTML($projet->nom)) . ''; + $res .= '' . __('Chef de projet') . ''; + if ($core->user->grade > 1) { + $res .= form::combo('chef', $listeEquipiers, $projet->chef_id); + } else { + $res .= form::hidden('chef', $projet->chef_id) . ' ' . $projet->chef; + } + $res .= ''; + $res .= '' . __('Date de début') . '' . cubeForm::dateFree('date_debut', $projet->date_debut) . ''; + $res .= '' . __('Deadline') . '' . cubeForm::dateFree('deadline', $projet->deadline) . ''; + $res .= '' . __('Date de fin') . '' . cubeForm::dateFree('date_fin', $projet->date_fin) . ''; + $res .= '' . __('Client') . '' . form::combo('client', $listeClients, $projet->client_id) . ''; + $res .= '' . __('Devis') . '' . form::combo('devis', $listeDevis, $projet->devis) . ''; + return $res; + } + + public static function formTache($tache) + { + global $core; + commonDroits::min(1); + + $res = '' . __('Numéro de tâche') . '' . form::hidden('projet', $tache->projet) . form::hidden('tache_id', $tache->tache_id) . '' . $tache->tache_id . ''; + $res .= '' . __('Catégorie') . '' . form::combo('categorie', array_flip($core->categories), $tache->categorie) . ''; + $res .= '' . __('Nom') . '' . form::textarea('nom', 50, 3, html::escapeHTML($tache->nom)) . ''; + + return $res; + } + + public static function formTacheNormale($tache_id, $projet_id = null) + { + global $core; + commonDroits::min(1); + $dao = new extranetDAOTache($core->con); + if ($tache_id == 'new') { + $tache = $dao->creeNormale(); + $tache->projet = $projet_id; + } else { + $tache = $dao->selectById($tache_id); + } + $res = self::formTache($tache); + $res .= '' . __('Taux journalier') . '' . form::field('taux_journalier', 6, 6, $tache->taux_journalier) . ''; + $res .= '' . __('Budget') . '' . form::hidden('type', '0') . form::field('budget', 6, 6, $tache->budget) . ''; + return $res; + } + + public static function formTacheSousTraitee($tache_id, $projet_id = null) + { + global $core; + commonDroits::min(1); + $dao = new extranetDAOTache($core->con); + if ($tache_id == 'new') { + $tache = $dao->creeSousTraitee(); + $tache->projet = $projet_id; + } else { + $tache = $dao->selectById($tache_id); + } + $res = self::formTache($tache); + $res .= '' . __('Budget') . '' . form::hidden('type', '1') . form::field('budget', 6, 6, $tache->budget) . ''; + return $res; + } + + public static function timereport($args) + { + global $core; + commonDroits::min(1); + $settings = $core->user->getSettings('timereport'); + $filtres = array(); + $filtres[] = new commonFiltre(__('Participants'), 'equipier_participe', $settings['filtres']); + $res = commonPage::barre($filtres, 'filtreTimereport', 'timereport', null); + $res .= commonPage::tMain(); + $res .= commonPage::bh(); + $res .= '
'; + $res .= self::listeTimereport(); + $res .= '
'; + $res .= commonPage::bf(); + $res .= commonPage::bMain(); + return $res; + } + + public static function listeTimereport($dashboard = null, $settings = null) + { + global $core; + commonDroits::min(1); + // Récupère la liste des projets + $settings = is_null($settings)?$core->user->getSettings('timereport'):$settings; + $change = is_null($dashboard)?'Timereport':'Dashboard/' . $dashboard; + + $dao = new extranetDAOProjet($core->con); + if (isset($settings['search']) && !is_null($settings['search'])) { + $dao->setSearch($settings['search']); + } + $dao->setFiltres($settings['filtres']); + $liste = $dao->getProjetsForTimereport($settings['orderby'], $settings['sens'], $settings['limit'], $core->user->utilisateur_id); + // Extrait la liste des tâches + $taches = array(); + foreach($liste as $id => $projet) { + foreach($projet->taches as $tache) { + if ($tache instanceof extranetTacheNormale) { + $taches[] = $tache->tache_id; + } + } + } + // Fixe les limites des jours à afficher + $time = cubeDate::round(null, 'd'); // aujourd'hui + $avant = $time - (3600 * 24 * 15); // 15 jours avant + $apres = $time; // aujourd'hui + // Récupère la liste des timereports à afficher + $daoTimereport = new extranetDAOTimereport($core->con); + $timereports = $daoTimereport->getListe($taches, $core->user->utilisateur_id, array('start' => $avant, 'end' => $apres)); + // Affiche le tableau + $res = ''; + $res .= ''; + $res .= ''; + $res .= ''; + for($date = $avant;$date <= $apres;$date += 3600 * 24) { + $res .= ''; + } + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + + foreach($liste as $projet) { + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + for($date = $avant;$date <= $apres;$date += 3600 * 24) { + $cc = self::getClassOfDay($date); + $class = ($cc == '')?'':' class="' . $cc . '"'; + $res .= ''; + } + $projet->progression = !$projet->progression?'-':$projet->progression . '%'; + $projet->jours_prevus = !$projet->jours_prevus?'-':$projet->jours_prevus; + $projet->jours_consommes = !$projet->jours_consommes?'-':$projet->jours_consommes; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $i = 1; + foreach($projet->taches as $tache) { + if ($tache instanceof extranetTacheNormale) { + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + for($date = $avant;$date <= $apres;$date += (3600 * 24)) { + $hh = isset($timereports[$tache->tache_id][$date])?$timereports[$tache->tache_id][$date]->heures:''; + $c = ($hh == '')?'':'filled'; + $cc = trim(self::getClassOfDay($date) . ' ' . $c); + $class = ($cc == '')?'':' class="' . $cc . '"'; + $res .= '' . form::field(array('timereport', 't_' . $date . '_' . $tache->tache_id), 1, 2, $hh, 'timereport_field') . ''; + } + $tache->progression = !$tache->progression?'-':$tache->progression . '%'; + $tache->jours_prevus = !$tache->jours_prevus?'-':$tache->jours_prevus; + $tache->jours_consommes = !$tache->jours_consommes?'-':$tache->jours_consommes; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $i++; + } + } + } + + if (!isset($settings['search']) || is_null($settings['search'])) { + $res .= ''; + } + $res .= '
' . commonUrl::orderby('#', 'projet_id', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Projet'), 'nom', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Client'), 'client', $settings, 'sort' . $change) . '' . date('d', $date) . '' . cubeMedia::spacer(16, 1, '', 'spacer') . '' . commonUrl::orderby('Pr', 'progression', $settings, 'sort' . $change) . '' . commonUrl::orderby('Co', 'jours_consommes', $settings, 'sort' . $change) . '' . commonUrl::orderby('Pl', 'jours_prevus', $settings, 'sort' . $change) . '
' . $projet->projet_id . '' . $projet->nom . '' . $projet->client . '' . $projet->progression . '' . $projet->jours_consommes . '' . $projet->jours_prevus . '
T' . $i . '' . $tache->nom . '' . $core->categories[$tache->categorie] . '' . $tache->progression . '' . $tache->jours_consommes . '' . $tache->jours_prevus . '
'; + $res .= commonPage::pager($settings['page'], $dao->countActifs(), $settings['par_page'], 'page' . $change . '/%d'); + $res .= commonUrl::formParPage('parPage' . $change, $settings['par_page'], __('projets')); + $res .= '
'; + return $res; + } + + public static function getClassOfDay($date) + { + $aujourdhui = cubeDate::round(null, 'd'); + $highlight = ($date == $aujourdhui); + $we = (date('N', $date) >= 6); + if ($highlight) { + return 'highlight'; + } + if ($we) { + return 'we'; + } + return ''; + } + + public static function devis($args) + { + global $core; + cubePage::truePopup(); + cubePage::contextMenu(); + + if ($core->user->grade == 0) { + return self::devis_client($args); + } + $settings = $core->user->getSettings('devis'); + commonDroits::min(1); + + $shortcuts = array(); + $shortcuts[] = '' . $core->typo->Ajouter('Créer un devis') . ''; + + $filtres = array(); + $filtres[] = new commonFiltre(__('Créées par'), 'equipier', $settings['filtres']); + $filtres[] = new commonFiltre(__('Status'), 'status_devis', $settings['filtres']); + $filtres[] = new commonFiltre(__('Année'), 'annee_facture', $settings['filtres']); + + $res = commonPage::barre($filtres, 'filtreDevis', 'devis' , $shortcuts); + $res .= commonPage::tMain(); + $res .= commonPage::bh(); + $res .= '
'; + $res .= self::listeDevis(); + $res .= '
'; + $res .= commonPage::bf(); + $res .= commonPage::bMain(); + return $res; + } + + public static function devis_client($args) + { + global $core; + + $res = commonPage::barre(); + $res .= commonPage::tMain(); + $res .= commonPage::bh(); + $res .= '
'; + $res .= self::listeDevis(); + $res .= '
'; + $res .= commonPage::bf(); + $res .= commonPage::bMain(); + return $res; + } + + public static function listeDevis($dashboard = null, $settings = null) + { + global $core; + + if ($core->user->grade == 0) { + return self::listeDevisClient($dashboard, $settings); + } else { + return self::listeDevisEquipier($dashboard, $settings); + } + } + + public static function contextDevis($id) + { + global $core; + $res = '
'; + $res .= '
'; + return $res; + } + + public static function listeDevisEquipier($dashboard = null, $settings = null) + { + global $core; + commonDroits::min(1); + $settings = is_null($settings)?$core->user->getSettings('devis'):$settings; + $change = is_null($dashboard)?'Devis':'Dashboard/' . $dashboard; + $context_id = is_null($dashboard)?'contextDevis':'contextDashboard_' . $dashboard; + + $dao = new extranetDAODevis($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']); + $res = self::contextDevis($context_id); + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $i = 0; + foreach($liste as $devis) { + $droits = extranetDroits::devis($devis, 'w', false); + $odd = cubeMath::isOdd($i)?' class="odd"':''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + + if ($devis->status == 0) { + $res .= ''; + } else { + if ($droits) { + $res .= ''; + } else { + $res .= ''; + } + } + + if (in_array($devis->status, array(0, 1)) && $droits) { + $res .= ''; + } else { + $res .= ''; + } + $res .= ''; + if ($devis->status == 0) { + if ($droits) { + $res .= ''; + } else { + $res .= ''; + } + } elseif ($devis->status >= 1) { + $res .= ''; + } + + $res .= ''; + $i++; + } + if (!isset($settings['search']) || is_null($settings['search'])) { + $odd = cubeMath::isOdd($i)?' class="odd"':''; + $res .= ''; + } + $res .= '
' . commonUrl::orderby('#', 'devis_id', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Nom'), 'nom', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Client'), 'client', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Crée par'), 'createur', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Date'), 'date_creation', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Montant HT'), 'total_ht', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Status'), 'status', $settings, 'sort' . $change) . '
' . $devis->devis_id . '' . $devis->nom . '' . $devis->client . '' . $devis->createur . '' . date(__('d/m/Y'), $devis->date_creation) . '' . $devis->total_ht . '' . $core->devis_status[$devis->status] . '' . $core->devis_status[$devis->status] . '' . $core->devis_status[$devis->status] . '' . cubeMedia::image(IMG . '/edit.png') . '' . cubeMedia::image(IMG . '/view.png') . '' . cubeMedia::image(IMG . '/delete.png') . '' . cubeMedia::image(IMG . '/duplicate.png') . '
'; + $res .= commonPage::pager($settings['page'], $dao->count(), $settings['par_page'], 'page' . $change . '/%d'); + $res .= commonUrl::formParPage('parPage' . $change, $settings['par_page'], __('devis')); + $res .= '
'; + return $res; + } + + public static function listeDevisClient($dashboard = null, $settings = null) + { + global $core; + cubePage::truePopup(); + + $dao = new extranetDAODevis($core->con); + $settings = $core->user->getSettings('devis'); + $liste = $dao->getListeForEntreprise($core->user->entreprise, $settings['orderby'], $settings['sens']); + $res = ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $i = 0; + foreach($liste as $devis) { + $odd = cubeMath::isOdd($i)?' class="odd"':''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $i++; + } + if (!count($liste)) { + $res .= ''; + } + $res .= '
' . commonUrl::orderby(__('Nom'), 'nom', $settings, 'sortDevis') . '' . commonUrl::orderby(__('Date'), 'date_creation', $settings, 'sortDevis') . '' . commonUrl::orderby(__('Montant HT'), 'total_ht', $settings, 'sortDevis') . '' . commonUrl::orderby(__('Status'), 'status', $settings, 'sortDevis') . '
' . $devis->nom . '' . date(__('d/m/Y'), $devis->date_creation) . '' . $devis->total_ht . '' . $core->devis_status[$devis->status] . '' . cubeMedia::image(IMG . '/view.png') . '
' . __("Vous n'avez pour le moment aucun devis associé à votre compte") . '
'; + return $res; + } + + public static function voirdevis($args) + { + global $core; + // Charge le devis + $dao = new extranetDAODevis($core->con); + $devis = $dao->selectById($args[1]); + // Vérification des droits en lecture de l'utilisateur + extranetDroits::devis($devis, 'r'); + + cubeHTTP::relayNoCache(ROOT . '/devis/' . $args[1] . '.pdf'); + } + + public static function editedevis($args) + { + global $core; + commonDroits::min(1); + $res = commonPage::barre(); + $res .= commonPage::tMain(); + $res .= commonPage::bh(); + $res .= self::formDevis($args[1]); + $res .= commonPage::bf(); + $res .= commonPage::bMain(); + return $res; + } + + public static function formDevis($devis_id = 'new') + { + global $core; + cubePage::autocomplete(); + cubePage::emptyField(); + cubePage::ui('Sortable'); + commonDroits::min(1); + $dao = new extranetDAODevis($core->con); + if ($devis_id == 'new') { + $devis = $dao->cree(); + } else { + $devis = $dao->selectById($devis_id); + } + + $res = '
'; + $res .= '
'; + + $res .= '
'; + // Adresse + $res .= '
'; + if ($devis->devis_id == 'new') { + $default = __('Entrez le nom du client'); + $default_id = ''; + $class = 'empty-field'; + } else { + $default = $devis->client; + $default_id = $devis->client_id; + $class = ''; + } + + $res .= form::field('client_nom', 40, 128, $default, $class); + $res .= form::hidden('client', $default_id); + $res .= '
'; + if ($devis->client_id) { + $res .= self::adresse($devis->client_id, null, 'devis', $devis->adresse); + } + $res .= '
'; + $res .= '
'; + // Titre + $res .= '
'; + $res .= form::hidden('devis_id', $devis->devis_id); + $res .= form::textarea('nom', 40, 4, $devis->nom); + $res .= '
'; + $res .= '
'; + + $res .= '
'; + $res .= '
'; + // Lignes du devis + $nb_lignes = max(4, count($devis->lignes) + 2); + + for($i = 0;$i < $nb_lignes;$i++) { + if (isset($devis->lignes[$i])) { + $titre = $devis->lignes[$i]['titre']; + $description = $devis->lignes[$i]['description']; + $montant = $devis->lignes[$i]['montant']; + } else { + $titre = $description = $montant = ''; + } + $res .= '
'; + $res .= '
'; + $res .= form::field(array('montant[]'), 6, 15, $montant) . " €"; + $res .= '
'; + $res .= '
'; + $res .= form::field(array('titre[]'), 105, 256, htmlspecialchars($titre, ENT_QUOTES)) . '

'; + $res .= form::textarea(array('description[]'), 110, 4, $description); + $res .= '
'; + + $res .= '
'; + } + + $res .= '
'; + $res .= '
'; + $res .= '
' . cubeMedia::spacer(10, 10) . '
'; + $res .= '
'; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= '
' . __('De') . '' . $core->user->prenom . ' ' . $core->user->nom . ' <' . $core->user->email . '>
' . __('Sujet') . '' . form::field(array('email[sujet]'), 80, 128, htmlspecialchars($devis->email['sujet'], ENT_QUOTES)) . '
' . __('Corps') . '' . form::textarea(array('email[corps]'), 80, 20, $devis->email['corps']) . '
'; + $res .= '
'; + $res .= ''; + $res .= '
'; + $res .= '
'; + + return $res; + } + + public static function previewDevis($args) + { + global $core; + + $dao = new extranetDAODevis($core->con); + $devis = $dao->selectById($args[1]); + + $daoUtilisateur = new commonDAOUtilisateur($core->con); + $createur = $devis->createur = $daoUtilisateur->selectById($devis->createur_id); + $client = $devis->client = $daoUtilisateur->selectById($devis->client_id); + + $res = commonPage::barre(); + $res .= commonPage::tMain(); + $res .= commonPage::bh(); + $res .= ''; + $res .= commonPage::bf(); + $res .= commonPage::bh(); + $res .= '
'; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= '
' . __('De') . '' . $createur->prenom . ' ' . $createur->nom . '<' . $createur->email . '>
' . __('A') . '' . $client->prenom . ' ' . $client->nom . '<' . $client->email . '>
' . __('Sujet') . '' . $devis->email['sujet'] . '
' . __('Message') . '' . nl2br($devis->email['corps'] . "\n\n" . $createur->getSignature()) . '
'; + $res .= cubeMedia::spacer(40, 40) . '' . $core->typo->BoutonOK(__('Editer le devis')) . ' '; + $res .= '' . $core->typo->BoutonOK(__('Valider sans envoyer le devis')) . ' '; + $res .= '' . $core->typo->BoutonOK(__('Valider et envoyer le devis')) . '
'; + $res .= '
'; + $res .= commonPage::bf(); + $res .= commonPage::bMain(); + return $res; + } + + public static function factures($args) + { + global $core; + + if ($core->user->grade == 0) { + return self::factures_client($args); + } + $settings = $core->user->getSettings('factures'); + + commonDroits::min(1); + $shortcuts = array(); + if ($core->user->grade != 3) { + $shortcuts[] = '' . $core->typo->Ajouter('Créer une facture') . ''; + } + $shortcuts[] = '' . cubeMedia::image(IMG . '/print.png') . ''; + $filtres = array(); + $filtres[] = new commonFiltre(__('Créées par'), 'equipier', $settings['filtres']); + $filtres[] = new commonFiltre(__('Status'), 'status_facture', $settings['filtres']); + $filtres[] = new commonFiltre(__('Année'), 'annee_facture', $settings['filtres']); + $res = commonPage::barre($filtres , 'filtreFactures', 'factures', $shortcuts); + $res .= commonPage::tMain(); + $res .= commonPage::bh(); + $res .= '
'; + $res .= self::listeFactures(); + $res .= '
'; + $res .= commonPage::bf(); + $res .= commonPage::bMain(); + return $res; + } + + public static function factures_client($args) + { + global $core; + $res = commonPage::barre(); + $res .= commonPage::tMain(); + $res .= commonPage::bh(); + $res .= '
'; + $res .= self::listeFactures(); + $res .= '
'; + $res .= commonPage::bf(); + $res .= commonPage::bMain(); + return $res; + } + + public static function contextFacture($id) + { + global $core; + $res = '
'; + $res .= '
    '; + $res .= '
  • ' . __("Changer le status de la facture") . '
  • '; + foreach($core->factures_status as $k => $v) { + if (in_array($k, array(0, 4))) { + continue; + } + if ($k == 2) { + $res .= '
  • ' . $v . '
  • '; + } else { + if ($k == 3) { + $title = ' title="' . __("Êtes-vous certain de vouloir annuler cette facture ? Cette action est irreversible et provoquera la création d'un avoir correpondant.") . '"'; + } else { + $title = ''; + } + $res .= '
  • ' . $v . '
  • '; + } + } + $res .= '
'; + return $res; + } + + public static function listeFactures($dashboard = null, $settings = null) + { + global $core; + if ($core->user->grade == 0) { + return self::listeFacturesClient($dashboard, $settings); + } else { + return self::listeFacturesEquipier($dashboard, $settings); + } + } + + public static function listeFacturesEquipier($dashboard = null, $settings = null) + { + global $core; + cubePage::truePopup(); + cubePage::contextMenu(); + + $settings = is_null($settings)?$core->user->getSettings('factures'):$settings; + $change = is_null($dashboard)?'Facture':'Dashboard/' . $dashboard; + $context_id = is_null($dashboard)?'contextFacture':'contextDashboard_' . $dashboard; + $dao = new extranetDAOFacture($core->con); + if (isset($settings['search']) && !is_null($settings['search'])) { + $dao->setSearch($settings['search']); + } else { + $dao->setFiltres($settings['filtres']); + } + + if ($core->user->grade != 3) { + $liste = $dao->getListe($settings['orderby'], $settings['sens'], $settings['limit']); + } else { + $liste = $dao->getListeCompta($settings['orderby'], $settings['sens'], $settings['limit']); + } + + $res = self::contextFacture($context_id); + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $i = 0; + foreach($liste as $facture) { + $droits = extranetDroits::facture($facture, 'w', false); + $odd = cubeMath::isOdd($i)?' class="odd"':''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + if ($facture->status == 0) { + $res .= ''; + if ($droits) { + $res .= ''; + $res .= ''; + $res .= ''; + } else { + $res .= ''; + } + } elseif ($facture->status >= 1) { + if ($facture->status < 3) { + if ($droits) { + $res .= ''; + } else { + $res .= ''; + } + } else { + $title = $facture->status == 3?__("Voir l'avoir correspondant"):__("Voir la facture annulée correspondante"); + $res .= ''; + } + if ($facture->facture_id > 0) { + if ($droits && $facture->status == 1) { + $res .= ''; + } else { + $res .= ''; + } + $res .= ''; + if ($facture->status != 4 && $core->user->grade != 3) { + $res .= ''; + } else { + $res .= ''; + } + } else { + $res .= ''; + } + } + + $res .= ''; + $i++; + } + if (!isset($settings['search']) || is_null($settings['search'])) { + $odd = cubeMath::isOdd($i)?' class="odd"':''; + $res .= ''; + } + $res .= '
' . commonUrl::orderby('#', 'facture_id', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Nom'), 'nom', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Client'), 'client', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Crée par'), 'createur', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Date'), 'date_creation', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Montant HT'), 'total_ht', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Status'), 'status', $settings, 'sort' . $change) . '
' . $facture->facture_id . '' . $facture->nom . '' . $facture->client . '' . $facture->createur . '' . date(__('d/m/Y'), $facture->date_creation) . '' . $facture->total_ht . '' . $core->factures_status[$facture->status] . '' . cubeMedia::image(IMG . '/edit.png') . '' . cubeMedia::image(IMG . '/delete.png') . '' . $core->factures_status[$facture->status] . '' . $core->factures_status[$facture->status] . '' . $core->factures_status[$facture->status] . '' . '' . cubeMedia::image(IMG . '/edit.png') . '' . cubeMedia::image(IMG . '/view.png') . '' . cubeMedia::image(IMG . '/duplicate.png') . '
' ; + if ($core->user->grade != 3) { + $res .= commonPage::pager($settings['page'], $dao->count() , $settings['par_page'], 'page' . $change . '/%d'); + } else { + $res .= commonPage::pager($settings['page'], $dao->countCompta() , $settings['par_page'], 'page' . $change . '/%d'); + } + $res .= commonUrl::formParPage('parPage' . $change, $settings['par_page'], __('factures')); + $res .= '
'; + return $res; + } + + public static function listeFacturesClient($dashboard = null, $settings = null) + { + global $core; + cubePage::truePopup(); + $settings = $core->user->getSettings('factures'); + $dao = new extranetDAOFacture($core->con); + $liste = $dao->getListeForEntreprise($core->user->entreprise, $settings['orderby'], $settings['sens'], true); + + $res = ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $i = 0; + foreach($liste as $facture) { + $odd = cubeMath::isOdd($i)?' class="odd"':''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $i++; + } + if (!count($liste)) { + $res .= ''; + } + + $res .= '
' . commonUrl::orderby('#', 'facture_id', $settings, 'sortFacture') . '' . commonUrl::orderby(__('Nom'), 'nom', $settings, 'sortFacture') . '' . commonUrl::orderby(__('Date'), 'date_creation', $settings, 'sortFacture') . '' . commonUrl::orderby(__('Montant HT'), 'total_ht', $settings, 'sortFacture') . '' . commonUrl::orderby(__('Status'), 'status', $settings, 'sortFacture') . '
' . $facture->numeroFacture() . '' . $facture->nom . '' . date(__('d/m/Y'), $facture->date_creation) . '' . $facture->total_ht . '' . $core->factures_status[$facture->status] . '' . cubeMedia::image(IMG . '/view.png') . '
' . __("Vous n'avez pour le moment aucune facture associée à votre compte") . '
'; + return $res; + } + + public static function formFacturePaiement($facture_id) + { + global $core; + $dao = new extranetDAOFacture($core->con); + $facture = $dao->selectById($facture_id); + $date = !$facture->date_paiement?null:$facture->date_paiement; + + $res = '' . form::hidden('facture_id', $facture_id) . __('Date de paiement') . '' . cubeForm::date('date_paiement', $date) . ''; + $res .= '' . __('Informations de paiement') . '' . form::textarea('informations_paiement', 40, 3, $facture->informations_paiement) . ''; + + return $res; + } + + public static function voirfacture($args) + { + global $core; + // Charge la facture + $dao = new extranetDAOFacture($core->con); + $facture = $dao->selectById($args[1]); + // Vérification des droits de l'utilisateur + extranetDroits::facture($facture, 'r', true); + + cubeHTTP::relayNoCache(ROOT . '/factures/' . $args[1] . '.pdf'); + } + + public static function editefacture($args) + { + global $core; + commonDroits::min(1); + $res = commonPage::barre(); + $res .= commonPage::tMain(); + $res .= commonPage::bh(); + if (isset($args[2])) { + $res .= self::formFacture($args[1], $args[2]); + } else { + $res .= self::formFacture($args[1]); + } + $res .= commonPage::bf(); + $res .= commonPage::bMain(); + return $res; + } + + public static function formFacture($facture_id = 'new', $projet_id = null) + { + global $core; + commonDroits::min(1); + cubePage::autoComplete(); + cubePage::emptyField(); + cubePage::ui('Sortable'); + + $daoProjet = new extranetDAOProjet($core->con); + $dao = new extranetDAOFacture($core->con); + + $projet_id = isset($_POST['projet_id']) && $_POST['projet_id'] > 0?$_POST['projet_id']:$projet_id; + + if ($facture_id == 'new') { + $facture = $dao->cree(); + } elseif ($facture_id == 'ws') { + $facture = $dao->cree(); + $facture->facture_id = 'ws'; + } else { + $facture = $dao->selectById($facture_id); + } + + if (!is_null($projet_id) && $facture_id == 'new') { + $projet = $daoProjet->selectById($projet_id); + $facture->projet_id = $projet->projet_id; + $facture->client = $projet->client; + $facture->projet = $facture->nom = $projet->nom; + $lignes = array(); + foreach($projet->taches as $tache) { + $lignes[] = array('montant' => $tache->budget, 'titre' => $tache->nom, 'description' => ''); + } + $facture->lignes = $lignes; + } elseif ($facture_id == 'ws') { + if (is_null($projet_id)) { + $daoClient = new commonDAOClient($core->con); + $client = $daoClient->selectById($_POST['client_id']); + $facture->projet_id = 'new'; + $facture->client = $client->rs; + $facture->client_id = $client->utilisateur_id; + $facture->projet = __('Nouveau projet'); + $facture->nom = 'Fluidbook'; + } else { + $projet = $daoProjet->selectById($projet_id); + $facture->projet_id = $projet->projet_id; + $facture->client = $projet->client; + $facture->projet = $facture->nom = $projet->nom; + } + $lignes = array(); + $b = $core->con->select('SELECT * FROM ws.book WHERE bid IN(' . implode(',', array_keys($_POST['book_facture'])) . ')'); + while ($b->fetch()) { + $lignes[] = array('book' => $b->bid, 'montant' => 0, 'titre' => 'Fluidbook « ' . $b->titre . ' »', 'description' => ''); + } + $facture->lignes = $lignes; + } + + $res = '
'; + $res .= '
'; + $res .= '
'; + // Adresse + if ($facture->facture_id == 'new' && is_null($projet_id)) { + $class = 'empty-field'; + $default_id = ''; + $default = __('Entrez le nom du projet ou du client'); + } else { + $class = ''; + $default_id = $facture->projet_id; + $default = $facture->projet_id . ' - ' . $facture->projet . ' (' . $facture->client . ')'; + } + + $res .= '
'; + $res .= form::field('projet_nom', 40, 128, $default, $class); + $res .= form::hidden('projet', $default_id); + $res .= '
'; + if ($facture->projet_id != 'new') { + $res .= extranetUrl::adresse(null, $facture->projet_id, 'facture', $facture->adresse); + } else { + $res .= extranetUrl::adresse($facture->client_id, null, 'facture', $facture->adresse); + $res .= form::hidden('client', $facture->client_id); + } + + $res .= '
'; + $res .= form::textarea('texte_complementaire', 50, 2, $facture->texte_complementaire); + $res .= '
'; + // Titre + $res .= '
'; + $res .= 'Date : ' . cubeForm::date('date_creation', $facture->date_creation) . '

'; + $res .= form::hidden('facture_id', $facture->facture_id); + $res .= form::textarea('nom', 40, 4, $facture->nom); + $res .= '
'; + $res .= '
'; + + $res .= '
'; + $res .= '
'; + // Lignes du devis + $nb_lignes = max(4, count($facture->lignes) + 2); + + for($i = 0;$i < $nb_lignes;$i++) { + if (isset($facture->lignes[$i])) { + $titre = $facture->lignes[$i]['titre']; + $description = $facture->lignes[$i]['description']; + $montant = $facture->lignes[$i]['montant']; + $book = isset($facture->lignes[$i]['book'])?$facture->lignes[$i]['book']:null; + } else { + $titre = $description = $montant = ''; + } + + $res .= '
'; + + $res .= '
'; + $res .= form::field(array('montant[]'), 6, 15, $montant) . " €"; + if (isset($book) && !is_null($book)) { + $res .= form::hidden(array('book[]'), $book) ; + } + $res .= '
'; + $res .= '
'; + $res .= form::field(array('titre[]'), 80, 256, htmlspecialchars($titre, ENT_QUOTES)) . '

'; + $res .= form::textarea(array('description[]'), 80, 2, $description); + $res .= '
'; + + $res .= '
'; + } + + $res .= '
'; + $res .= '
'; + $res .= '
' . cubeMedia::spacer(10, 10) . '
'; + $res .= ''; + $res .= '
'; + $res .= '
'; + return $res; + } + + public static function previewFacture($args) + { + global $core; + commonDroits::min(1); + $dao = new extranetDAOFacture($core->con); + $facture = $dao->selectById($args[1]); + + $res = commonPage::barre(); + $res .= commonPage::tMain(); + $res .= commonPage::bh(); + $res .= ''; + + $res .= ''; + $res .= commonPage::bf(); + $res .= commonPage::bMain(); + return $res; + } + + public static function formPrintFactures() + { + global $core; + $last = $core->user->getLastPrint(); + $res = ''; + if ($last['date']) { + $res .= '' . __('Dernière factures imprimées') . ' : ' . __('Factures') . ' ' . $last['pages'] . ' (' . date('Y-m-d', $last['date']) . ')'; + } + $res .= '' . __('Factures à imprimer') . '' . form::field('factures', 20, 64) . ''; + $res .= '' . __('Ex') . ' : 1;3-5;7;9 ' . __('signifie factures') . ' 1,3,4,5,7,9'; + return $res; + } public static function chiffres($args) { diff --git a/inc/extranet/Controlleur/url/_common.php b/inc/extranet/Controlleur/url/_common.php deleted file mode 100644 index 1b991eb57..000000000 --- a/inc/extranet/Controlleur/url/_common.php +++ /dev/null @@ -1,10 +0,0 @@ - \ No newline at end of file diff --git a/inc/extranet/Controlleur/url/class.extranet.url.client.php b/inc/extranet/Controlleur/url/class.extranet.url.client.php deleted file mode 100644 index 2b6da9b12..000000000 --- a/inc/extranet/Controlleur/url/class.extranet.url.client.php +++ /dev/null @@ -1,277 +0,0 @@ -user->getSettings('clients'); - - $shortcuts = array(); - $shortcuts[] = '' . $core->typo->Ajouter('Créer un nouveau client') . ''; - $filtres = array(); - $filtres[] = new commonFiltre(__('Ayant un projet'), 'status_client_projet', $settings['filtres']); - $filtres[] = new commonFiltre(__('Ayant des impayés'), 'impaye', $settings['filtres']); - $res = commonPage::barre($filtres, 'filtreClients', 'clients', $shortcuts); - $res .= commonPage::tMain(); - $res .= commonPage::bh(); - $res .= '
'; - $res .= self::listeClients(); - $res .= '
'; - $res .= commonPage::bf(); - $res .= commonPage::bMain(); - return $res; - } - - public static function listeClients($dashboard = null, $settings = null) - { - global $core; - commonDroits::min(1); - $settings = is_null($settings)?$core->user->getSettings('clients'):$settings; - $change = is_null($dashboard)?'Client':'Dashboard/' . $dashboard; - $dao = new commonDAOEntreprise($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']); - - $res = ''; - $res .= ''; - $res .= ''; - $res .= ''; - $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 .= ''; - if ($client->impaye) { - $res .= ''; - } else { - $res .= ''; - } - - $res .= ''; - if (is_null($client->ca)) { - $res .= ''; - } else { - $res .= ''; - } - $res .= ''; - $i++; - } - if (!isset($settings['search']) || is_null($settings['search'])) { - $odd = cubeMath::isOdd($i)?' class="odd"':''; - $res .= ''; - } - $res .= '
' . commonUrl::orderby('#', 'entreprise_id', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Raison sociale'), 'nom', $settings, 'sort' . $change) . '' . __('Contacts') . '' . __('Notes') . '' . commonUrl::orderby('CA', 'ca', $settings, 'sort' . $change) . '' . commonUrl::orderby('Impayés', 'impaye', $settings, 'sort' . $change) . '
' . $client->entreprise_id . '' . $client->nom . '' . implode(', ', $contacts) . '' . cubeMedia::image(IMG . '/postit.png') . ''; - if ($client->ca) { - $res .= '' . number_format($client->ca, 0, ',', ' ') . ''; - } - - $res .= '' . number_format($client->impaye, 0, '.', ' ') . '' . cubeMedia::image(IMG . '/edit.png') . '' . cubeMedia::image(IMG . '/delete.png') . '
'; - $res .= commonPage::pager($settings['page'], $dao->count() , $settings['par_page'], 'page' . $change . '/%d'); - $res .= commonUrl::formParPage('parPage' . $change, $settings['par_page'], __('clients')); - $res .= '
'; - return $res; - } - - public static function clientDetailCa($entreprise_id) - { - global $core; - $dao = new commonDAOEntreprise($core->con); - $annees = $dao->getCaDetails($entreprise_id); - $res = ''; - $i = 0; - foreach($annees as $annee => $ca) { - $class = cubeMath::isOdd($i)?' class="odd"':''; - $res .= '' . $annee . '' . number_format($ca, 0, ',', ' ') . ' €'; - $i++; - } - return $res; - } - - public static function clientDetailImpaye($entreprise_id) - { - global $core; - $dao = new extranetDAOFacture($core->con); - $daoClient = new commonDAOEntreprise($core->con); - $factures = $dao->getImpayesOfClient($entreprise_id); - $client = $daoClient->selectById($entreprise_id); - $res = ''; - $i = 0; - foreach($factures as $facture) { - $class = cubeMath::isOdd($i)?' class="odd"':''; - $res .= ''; - $res .= '' . $facture->facture_id . ''; - $res .= ''; - if ($facture->facture_id > 0) { - $res .= '' . $facture->nom . ''; - } else { - $res .= $facture->nom ; - } - $res .= ''; - $tva = cubeTaxes::tva($client->pays); - $res .= '' . number_format($facture->total_ht, 0, ',', '') . ' €'; - if ($tva > 0 && $tva != 'UE') { - $res .= ' HT ' . number_format(cubePrices::HTtoTTC($facture->total_ht, $tva), 2, ',', '') . ' € TTC'; - } else { - $res .= ''; - } - $res .= ''; - $i++; - } - return $res; - } - - public static function formClient($entreprise_id = 'new') - { - global $core; - commonDroits::min(1); - $dao = new commonDAOEntreprise($core->con); - $daoUtilisateur = new commonDAOUtilisateur($core->con); - if ($entreprise_id == 'new') { - $client = $dao->cree(); - } else { - $client = $dao->selectById($entreprise_id); - } - - $res = '' . __('Numéro de client') . '' . form::hidden('entreprise_id', $client->entreprise_id) . '' . $client->entreprise_id . ''; - $res .= '' . __('Raison sociale') . '' . form::field('nom', 30, 128, $client->nom) . ''; - $res .= '' . __('Adresse') . '' . form::textarea('adresse', 40, 3, $client->adresse) . ''; - $res .= '' . __('Code postal') . '' . form::field('code_postal', 10, 20, $client->code_postal) . ''; - $res .= '' . __('Ville') . '' . form::field('ville', 30, 128, $client->ville) . ''; - $res .= '' . __('Pays') . '' . form::combo('pays', cubeCountry::getList(), $client->pays) . ''; - $res .= '' . __('Adresse de facturation') . '' . form::textarea('adresse_facturation', 40, 3, $client->adresse_facturation) . ''; - $res .= '' . __('Numéro de TVA intracommunautaire') . '' . form::field('tva_intra', 15, 13, $client->tva_intra) . ''; - $res .= '' . __('Fluidbook Workshop') . ''; - $res .= '' . __('Grade') . '' . form::combo('ws_grade', array_flip($core->ws_grades), $client->ws_grade) . ''; - if ($entreprise_id == 'new' || !$client->ws_admin) { - $class = 'empty-field'; - $default_id = ''; - $default = __('Entrez le nom du revendeur ou de l\'administrateur'); - } else { - $class = ''; - $default_id = $client->ws_admin; - $wsa = $daoUtilisateur->selectById($client->ws_admin, 'utilisateurs_entreprise'); - $default = $wsa->utilisateur_id . ' - ' . $wsa->rs . ' (' . $wsa->prenom . ' ' . $wsa->nom . ')'; - } - - $d = $dao->getWSDatas($entreprise_id); - - $res .= '' . __('Revendeur / Administrateur') . '' . form::field('ws_admin_nom', 60, 128, $default, $class) . form::hidden('ws_admin', $default_id) . ''; - if (!is_null($d)) { - $res .= '' . __('Entité facturable') . '' . $d->facturable->prenom . ' ' . $d->facturable->nom . ' (' . $d->facturable->rs . ')'; - $res .= '' . __('Administrateur responsable') . '' . $d->administrateur->prenom . ' ' . $d->administrateur->nom . ' (' . $d->administrateur->rs . ')'; - } - if ($entreprise_id == 'new') { - $daoContact = new commonDAOClient($core->con); - $contact = $daoContact->cree(); - $res .= '' . __('Contact') . ''; - $res .= '' . __('Adresse e-mail') . '' . form::field(array('contact[email]'), 30, 128, $contact->email) . ''; - $res .= '' . __('Mot de passe') . '' . form::field(array('contact[password]'), 30, 128, $contact->password) . ''; - $res .= '' . __('Prénom') . '' . form::field(array('contact[prenom]'), 30, 128, $contact->prenom) . ''; - $res .= '' . __('Nom') . '' . form::field(array('contact[nom]'), 30, 128, $contact->nom) . ''; - $res .= '' . __('Téléphone') . '' . form::field(array('contact[telephone]'), 20, 128, $contact->telephone) . ''; - $res .= '' . __('Mobile') . '' . form::field(array('contact[mobile]'), 20, 128, $contact->mobile) . ''; - $res .= '' . __('Fax') . '' . form::field(array('contact[fax]'), 20, 128, $contact->fax) . ''; - $res .= '' . __('Langue') . '' . form::combo(array('contact[lang]'), cubeLang::getAvailableLangs(true), $contact->lang) . ''; - } - return $res; - } - - public static function listeContacts($entreprise_id) - { - global $core; - commonDroits::min(1); - $dao = new commonDAOEntreprise($core->con); - $contacts = $dao->getContacts($entreprise_id); - - $res = ''; - $res .= ''; - $i = 0; - foreach($contacts as $contact) { - $odd = cubeMath::isOdd($i)?' class="odd"':''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $i++; - } - $res .= '
' . $core->typo->Contact('Ajouter un contact') . '
' . trim($contact->prenom . ' ' . $contact->nom) . '' . $contact->email . 'FTPSe connecter comme ...' . cubeMedia::image(IMG . '/edit.png') . '
'; - return $res; - } - - public static function formContact($client_id = 'new', $entreprise_id = null) - { - global $core; - commonDroits::min(1); - - $dao = new commonDAOClient($core->con); - if ($client_id == 'new') { - $client = $dao->creeFromEntreprise($entreprise_id); - } else { - $client = $dao->selectById($client_id); - } - - $res = '' . __('Numéro de client') . '' . form::hidden('grade', 0) . form::hidden('entreprise', $client->entreprise) . form::hidden('utilisateur_id', $client->utilisateur_id) . '' . $client->utilisateur_id . ''; - $res .= '' . __('Adresse e-mail') . '' . form::field('email', 30, 128, $client->email) . ''; - $res .= '' . __('Mot de passe') . '' . form::field('password', 30, 128, $client->password) . ''; - $res .= '' . __('Prénom du contact') . '' . form::field('prenom', 30, 128, $client->prenom) . ''; - $res .= '' . __('Nom du contact') . '' . form::field('nom', 30, 128, $client->nom) . ''; - $res .= '' . __('Adresse') . '' . form::textarea('adresse', 40, 3, $client->adresse) . ''; - $res .= '' . __('Code postal') . '' . form::field('code_postal', 10, 20, $client->code_postal) . ''; - $res .= '' . __('Ville') . '' . form::field('ville', 30, 128, $client->ville) . ''; - $res .= '' . __('Pays') . '' . form::combo('pays', cubeCountry::getList(), $client->pays) . ''; - $res .= '' . __('Téléphone') . '' . form::field('telephone', 20, 128, $client->telephone) . ''; - $res .= '' . __('Mobile') . '' . form::field('mobile', 20, 128, $client->mobile) . ''; - $res .= '' . __('Fax') . '' . form::field('fax', 20, 128, $client->fax) . ''; - $res .= '' . __('Langue') . '' . form::combo('lang', cubeLang::getAvailableLangs(true), $client->lang) . ''; - if ($client_id != 'new') { - $res .= '' . cubeMedia::spacer(10, 10) . ''; - $res .= '' . __('FTP') . ''; - $res .= '' . __('Se connecter comme ...') . ''; - $res .= '' . __("Paramètres de connexion à l'extranet") . '' . __('Adresse') . ' : http://extranet.cubedesigners.com/
' . __("Nom d'utilisateur") . ' : ' . $client->email . '
' . __('Mot de passe') . ' : ' . $client->password . ''; - $res .= '' . cubeMedia::spacer(10, 10) . ''; - // $res .= '' . __("Paramètres de connexion au FTP") . '' . __('Serveur FTP') . ' : extranet.cubedesigners.com (ftp://extranet.cubedesigners.com)
' . __("Nom d'utilisateur") . ' : ' . $client->email . '
' . __('Mot de passe') . ' : ' . $client->password . ''; - } - return $res; - } - - public static function formNotes($utilisateur_id) - { - global $core; - commonDroits::min(1); - $dao = new commonDAOUtilisateur($core->con); - $utilisateur = $dao->selectById($utilisateur_id); - $res = '' . form::hidden('utilisateur_id', $utilisateur_id) . ''; - $res .= '' . form::textarea('notes', 100, 30, $utilisateur->notes) . ''; - $res .= ''; - return $res; - } - -} - -?> \ No newline at end of file diff --git a/inc/extranet/Controlleur/url/class.extranet.url.devis.php b/inc/extranet/Controlleur/url/class.extranet.url.devis.php deleted file mode 100644 index 02d9038d7..000000000 --- a/inc/extranet/Controlleur/url/class.extranet.url.devis.php +++ /dev/null @@ -1,335 +0,0 @@ -user->grade == 0) { - return self::devis_client($args); - } - $settings = $core->user->getSettings('devis'); - commonDroits::min(1); - - $shortcuts = array(); - $shortcuts[] = '' . $core->typo->Ajouter('Créer un devis') . ''; - - $filtres = array(); - $filtres[] = new commonFiltre(__('Créées par'), 'equipier', $settings['filtres']); - $filtres[] = new commonFiltre(__('Status'), 'status_devis', $settings['filtres']); - $filtres[] = new commonFiltre(__('Année'), 'annee_facture', $settings['filtres']); - - $res = commonPage::barre($filtres, 'filtreDevis', 'devis' , $shortcuts); - $res .= commonPage::tMain(); - $res .= commonPage::bh(); - $res .= '
'; - $res .= self::listeDevis(); - $res .= '
'; - $res .= commonPage::bf(); - $res .= commonPage::bMain(); - return $res; - } - - public static function devis_client($args) - { - global $core; - - $res = commonPage::barre(); - $res .= commonPage::tMain(); - $res .= commonPage::bh(); - $res .= '
'; - $res .= self::listeDevis(); - $res .= '
'; - $res .= commonPage::bf(); - $res .= commonPage::bMain(); - return $res; - } - - public static function listeDevis($dashboard = null, $settings = null) - { - global $core; - - if ($core->user->grade == 0) { - return self::listeDevisClient($dashboard, $settings); - } else { - return self::listeDevisEquipier($dashboard, $settings); - } - } - - public static function contextDevis($id) - { - global $core; - $res = '
'; - $res .= '
'; - return $res; - } - - public static function listeDevisEquipier($dashboard = null, $settings = null) - { - global $core; - commonDroits::min(1); - $settings = is_null($settings)?$core->user->getSettings('devis'):$settings; - $change = is_null($dashboard)?'Devis':'Dashboard/' . $dashboard; - $context_id = is_null($dashboard)?'contextDevis':'contextDashboard_' . $dashboard; - - $dao = new extranetDAODevis($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']); - $res = self::contextDevis($context_id); - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $i = 0; - foreach($liste as $devis) { - $droits = extranetDroits::devis($devis, 'w', false); - $odd = cubeMath::isOdd($i)?' class="odd"':''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - - if ($devis->status == 0) { - $res .= ''; - } else { - if ($droits) { - $res .= ''; - } else { - $res .= ''; - } - } - - if (in_array($devis->status, array(0, 1)) && $droits) { - $res .= ''; - } else { - $res .= ''; - } - $res .= ''; - if ($devis->status == 0) { - if ($droits) { - $res .= ''; - } else { - $res .= ''; - } - } elseif ($devis->status >= 1) { - $res .= ''; - } - - $res .= ''; - $i++; - } - if (!isset($settings['search']) || is_null($settings['search'])) { - $odd = cubeMath::isOdd($i)?' class="odd"':''; - $res .= ''; - } - $res .= '
' . commonUrl::orderby('#', 'devis_id', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Nom'), 'nom', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Client'), 'client', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Crée par'), 'createur', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Date'), 'date_creation', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Montant HT'), 'total_ht', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Status'), 'status', $settings, 'sort' . $change) . '
' . $devis->devis_id . '' . $devis->nom . '' . $devis->client . '' . $devis->createur . '' . date(__('d/m/Y'), $devis->date_creation) . '' . $devis->total_ht . '' . $core->devis_status[$devis->status] . '' . $core->devis_status[$devis->status] . '' . $core->devis_status[$devis->status] . '' . cubeMedia::image(IMG . '/edit.png') . '' . cubeMedia::image(IMG . '/view.png') . '' . cubeMedia::image(IMG . '/delete.png') . '' . cubeMedia::image(IMG . '/duplicate.png') . '
'; - $res .= commonPage::pager($settings['page'], $dao->count(), $settings['par_page'], 'page' . $change . '/%d'); - $res .= commonUrl::formParPage('parPage' . $change, $settings['par_page'], __('devis')); - $res .= '
'; - return $res; - } - - public static function listeDevisClient($dashboard = null, $settings = null) - { - global $core; - cubePage::truePopup(); - - $dao = new extranetDAODevis($core->con); - $settings = $core->user->getSettings('devis'); - $liste = $dao->getListeForEntreprise($core->user->entreprise, $settings['orderby'], $settings['sens']); - $res = ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $i = 0; - foreach($liste as $devis) { - $odd = cubeMath::isOdd($i)?' class="odd"':''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $i++; - } - if (!count($liste)) { - $res .= ''; - } - $res .= '
' . commonUrl::orderby(__('Nom'), 'nom', $settings, 'sortDevis') . '' . commonUrl::orderby(__('Date'), 'date_creation', $settings, 'sortDevis') . '' . commonUrl::orderby(__('Montant HT'), 'total_ht', $settings, 'sortDevis') . '' . commonUrl::orderby(__('Status'), 'status', $settings, 'sortDevis') . '
' . $devis->nom . '' . date(__('d/m/Y'), $devis->date_creation) . '' . $devis->total_ht . '' . $core->devis_status[$devis->status] . '' . cubeMedia::image(IMG . '/view.png') . '
' . __("Vous n'avez pour le moment aucun devis associé à votre compte") . '
'; - return $res; - } - - public static function voirdevis($args) - { - global $core; - // Charge le devis - $dao = new extranetDAODevis($core->con); - $devis = $dao->selectById($args[1]); - // Vérification des droits en lecture de l'utilisateur - extranetDroits::devis($devis, 'r'); - - cubeHTTP::relayNoCache(ROOT . '/devis/' . $args[1] . '.pdf'); - } - - public static function editedevis($args) - { - global $core; - commonDroits::min(1); - $res = commonPage::barre(); - $res .= commonPage::tMain(); - $res .= commonPage::bh(); - $res .= self::formDevis($args[1]); - $res .= commonPage::bf(); - $res .= commonPage::bMain(); - return $res; - } - - public static function formDevis($devis_id = 'new') - { - global $core; - cubePage::autocomplete(); - cubePage::emptyField(); - cubePage::ui('Sortable'); - commonDroits::min(1); - $dao = new extranetDAODevis($core->con); - if ($devis_id == 'new') { - $devis = $dao->cree(); - } else { - $devis = $dao->selectById($devis_id); - } - - $res = '
'; - $res .= '
'; - - $res .= '
'; - // Adresse - $res .= '
'; - if ($devis->devis_id == 'new') { - $default = __('Entrez le nom du client'); - $default_id = ''; - $class = 'empty-field'; - } else { - $default = $devis->client; - $default_id = $devis->client_id; - $class = ''; - } - - $res .= form::field('client_nom', 40, 128, $default, $class); - $res .= form::hidden('client', $default_id); - $res .= '
'; - if ($devis->client_id) { - $res .= self::adresse($devis->client_id, null, 'devis', $devis->adresse); - } - $res .= '
'; - $res .= '
'; - // Titre - $res .= '
'; - $res .= form::hidden('devis_id', $devis->devis_id); - $res .= form::textarea('nom', 40, 4, $devis->nom); - $res .= '
'; - $res .= '
'; - - $res .= '
'; - $res .= '
'; - // Lignes du devis - $nb_lignes = max(4, count($devis->lignes) + 2); - - for($i = 0;$i < $nb_lignes;$i++) { - if (isset($devis->lignes[$i])) { - $titre = $devis->lignes[$i]['titre']; - $description = $devis->lignes[$i]['description']; - $montant = $devis->lignes[$i]['montant']; - } else { - $titre = $description = $montant = ''; - } - $res .= '
'; - $res .= '
'; - $res .= form::field(array('montant[]'), 6, 15, $montant) . " €"; - $res .= '
'; - $res .= '
'; - $res .= form::field(array('titre[]'), 105, 256, htmlspecialchars($titre, ENT_QUOTES)) . '

'; - $res .= form::textarea(array('description[]'), 110, 4, $description); - $res .= '
'; - - $res .= '
'; - } - - $res .= '
'; - $res .= '
'; - $res .= '
' . cubeMedia::spacer(10, 10) . '
'; - $res .= '
'; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= '
' . __('De') . '' . $core->user->prenom . ' ' . $core->user->nom . ' <' . $core->user->email . '>
' . __('Sujet') . '' . form::field(array('email[sujet]'), 80, 128, htmlspecialchars($devis->email['sujet'], ENT_QUOTES)) . '
' . __('Corps') . '' . form::textarea(array('email[corps]'), 80, 20, $devis->email['corps']) . '
'; - $res .= '
'; - $res .= ''; - $res .= '
'; - $res .= '
'; - - return $res; - } - - public static function previewDevis($args) - { - global $core; - - $dao = new extranetDAODevis($core->con); - $devis = $dao->selectById($args[1]); - - $daoUtilisateur = new commonDAOUtilisateur($core->con); - $createur = $devis->createur = $daoUtilisateur->selectById($devis->createur_id); - $client = $devis->client = $daoUtilisateur->selectById($devis->client_id); - - $res = commonPage::barre(); - $res .= commonPage::tMain(); - $res .= commonPage::bh(); - $res .= ''; - $res .= commonPage::bf(); - $res .= commonPage::bh(); - $res .= '
'; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= '
' . __('De') . '' . $createur->prenom . ' ' . $createur->nom . '<' . $createur->email . '>
' . __('A') . '' . $client->prenom . ' ' . $client->nom . '<' . $client->email . '>
' . __('Sujet') . '' . $devis->email['sujet'] . '
' . __('Message') . '' . nl2br($devis->email['corps'] . "\n\n" . $createur->getSignature()) . '
'; - $res .= cubeMedia::spacer(40, 40) . '' . $core->typo->BoutonOK(__('Editer le devis')) . ' '; - $res .= '' . $core->typo->BoutonOK(__('Valider sans envoyer le devis')) . ' '; - $res .= '' . $core->typo->BoutonOK(__('Valider et envoyer le devis')) . '
'; - $res .= '
'; - $res .= commonPage::bf(); - $res .= commonPage::bMain(); - return $res; - } -} - -?> \ No newline at end of file diff --git a/inc/extranet/Controlleur/url/class.extranet.url.facture.php b/inc/extranet/Controlleur/url/class.extranet.url.facture.php deleted file mode 100644 index eae5b45c3..000000000 --- a/inc/extranet/Controlleur/url/class.extranet.url.facture.php +++ /dev/null @@ -1,427 +0,0 @@ -user->grade == 0) { - return self::factures_client($args); - } - $settings = $core->user->getSettings('factures'); - - commonDroits::min(1); - $shortcuts = array(); - if ($core->user->grade != 3) { - $shortcuts[] = '' . $core->typo->Ajouter('Créer une facture') . ''; - } - $shortcuts[] = '' . cubeMedia::image(IMG . '/print.png') . ''; - $filtres = array(); - $filtres[] = new commonFiltre(__('Créées par'), 'equipier', $settings['filtres']); - $filtres[] = new commonFiltre(__('Status'), 'status_facture', $settings['filtres']); - $filtres[] = new commonFiltre(__('Année'), 'annee_facture', $settings['filtres']); - $res = commonPage::barre($filtres , 'filtreFactures', 'factures', $shortcuts); - $res .= commonPage::tMain(); - $res .= commonPage::bh(); - $res .= '
'; - $res .= self::listeFactures(); - $res .= '
'; - $res .= commonPage::bf(); - $res .= commonPage::bMain(); - return $res; - } - - public static function factures_client($args) - { - global $core; - $res = commonPage::barre(); - $res .= commonPage::tMain(); - $res .= commonPage::bh(); - $res .= '
'; - $res .= self::listeFactures(); - $res .= '
'; - $res .= commonPage::bf(); - $res .= commonPage::bMain(); - return $res; - } - - public static function contextFacture($id) - { - global $core; - $res = '
'; - $res .= '
    '; - $res .= '
  • ' . __("Changer le status de la facture") . '
  • '; - foreach($core->factures_status as $k => $v) { - if (in_array($k, array(0, 4))) { - continue; - } - if ($k == 2) { - $res .= '
  • ' . $v . '
  • '; - } else { - if ($k == 3) { - $title = ' title="' . __("Êtes-vous certain de vouloir annuler cette facture ? Cette action est irreversible et provoquera la création d'un avoir correpondant.") . '"'; - } else { - $title = ''; - } - $res .= '
  • ' . $v . '
  • '; - } - } - $res .= '
'; - return $res; - } - - public static function listeFactures($dashboard = null, $settings = null) - { - global $core; - if ($core->user->grade == 0) { - return self::listeFacturesClient($dashboard, $settings); - } else { - return self::listeFacturesEquipier($dashboard, $settings); - } - } - - public static function listeFacturesEquipier($dashboard = null, $settings = null) - { - global $core; - cubePage::truePopup(); - cubePage::contextMenu(); - - $settings = is_null($settings)?$core->user->getSettings('factures'):$settings; - $change = is_null($dashboard)?'Facture':'Dashboard/' . $dashboard; - $context_id = is_null($dashboard)?'contextFacture':'contextDashboard_' . $dashboard; - $dao = new extranetDAOFacture($core->con); - if (isset($settings['search']) && !is_null($settings['search'])) { - $dao->setSearch($settings['search']); - } else { - $dao->setFiltres($settings['filtres']); - } - - if ($core->user->grade != 3) { - $liste = $dao->getListe($settings['orderby'], $settings['sens'], $settings['limit']); - } else { - $liste = $dao->getListeCompta($settings['orderby'], $settings['sens'], $settings['limit']); - } - - $res = self::contextFacture($context_id); - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $i = 0; - foreach($liste as $facture) { - $droits = extranetDroits::facture($facture, 'w', false); - $odd = cubeMath::isOdd($i)?' class="odd"':''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - if ($facture->status == 0) { - $res .= ''; - if ($droits) { - $res .= ''; - $res .= ''; - $res .= ''; - } else { - $res .= ''; - } - } elseif ($facture->status >= 1) { - if ($facture->status < 3) { - if ($droits) { - $res .= ''; - } else { - $res .= ''; - } - } else { - $title = $facture->status == 3?__("Voir l'avoir correspondant"):__("Voir la facture annulée correspondante"); - $res .= ''; - } - if ($facture->facture_id > 0) { - if ($droits && $facture->status == 1) { - $res .= ''; - } else { - $res .= ''; - } - $res .= ''; - if ($facture->status != 4 && $core->user->grade != 3) { - $res .= ''; - } else { - $res .= ''; - } - } else { - $res .= ''; - } - } - - $res .= ''; - $i++; - } - if (!isset($settings['search']) || is_null($settings['search'])) { - $odd = cubeMath::isOdd($i)?' class="odd"':''; - $res .= ''; - } - $res .= '
' . commonUrl::orderby('#', 'facture_id', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Nom'), 'nom', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Client'), 'client', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Crée par'), 'createur', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Date'), 'date_creation', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Montant HT'), 'total_ht', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Status'), 'status', $settings, 'sort' . $change) . '
' . $facture->facture_id . '' . $facture->nom . '' . $facture->client . '' . $facture->createur . '' . date(__('d/m/Y'), $facture->date_creation) . '' . $facture->total_ht . '' . $core->factures_status[$facture->status] . '' . cubeMedia::image(IMG . '/edit.png') . '' . cubeMedia::image(IMG . '/delete.png') . '' . $core->factures_status[$facture->status] . '' . $core->factures_status[$facture->status] . '' . $core->factures_status[$facture->status] . '' . '' . cubeMedia::image(IMG . '/edit.png') . '' . cubeMedia::image(IMG . '/view.png') . '' . cubeMedia::image(IMG . '/duplicate.png') . '
' ; - if ($core->user->grade != 3) { - $res .= commonPage::pager($settings['page'], $dao->count() , $settings['par_page'], 'page' . $change . '/%d'); - } else { - $res .= commonPage::pager($settings['page'], $dao->countCompta() , $settings['par_page'], 'page' . $change . '/%d'); - } - $res .= commonUrl::formParPage('parPage' . $change, $settings['par_page'], __('factures')); - $res .= '
'; - return $res; - } - - public static function listeFacturesClient($dashboard = null, $settings = null) - { - global $core; - cubePage::truePopup(); - $settings = $core->user->getSettings('factures'); - $dao = new extranetDAOFacture($core->con); - $liste = $dao->getListeForEntreprise($core->user->entreprise, $settings['orderby'], $settings['sens'], true); - - $res = ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $i = 0; - foreach($liste as $facture) { - $odd = cubeMath::isOdd($i)?' class="odd"':''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $i++; - } - if (!count($liste)) { - $res .= ''; - } - - $res .= '
' . commonUrl::orderby('#', 'facture_id', $settings, 'sortFacture') . '' . commonUrl::orderby(__('Nom'), 'nom', $settings, 'sortFacture') . '' . commonUrl::orderby(__('Date'), 'date_creation', $settings, 'sortFacture') . '' . commonUrl::orderby(__('Montant HT'), 'total_ht', $settings, 'sortFacture') . '' . commonUrl::orderby(__('Status'), 'status', $settings, 'sortFacture') . '
' . $facture->numeroFacture() . '' . $facture->nom . '' . date(__('d/m/Y'), $facture->date_creation) . '' . $facture->total_ht . '' . $core->factures_status[$facture->status] . '' . cubeMedia::image(IMG . '/view.png') . '
' . __("Vous n'avez pour le moment aucune facture associée à votre compte") . '
'; - return $res; - } - - public static function formFacturePaiement($facture_id) - { - global $core; - $dao = new extranetDAOFacture($core->con); - $facture = $dao->selectById($facture_id); - $date = !$facture->date_paiement?null:$facture->date_paiement; - - $res = '' . form::hidden('facture_id', $facture_id) . __('Date de paiement') . '' . cubeForm::date('date_paiement', $date) . ''; - $res .= '' . __('Informations de paiement') . '' . form::textarea('informations_paiement', 40, 3, $facture->informations_paiement) . ''; - - return $res; - } - - public static function voirfacture($args) - { - global $core; - // Charge la facture - $dao = new extranetDAOFacture($core->con); - $facture = $dao->selectById($args[1]); - // Vérification des droits de l'utilisateur - extranetDroits::facture($facture, 'r', true); - - cubeHTTP::relayNoCache(ROOT . '/factures/' . $args[1] . '.pdf'); - } - - public static function editefacture($args) - { - global $core; - commonDroits::min(1); - $res = commonPage::barre(); - $res .= commonPage::tMain(); - $res .= commonPage::bh(); - if (isset($args[2])) { - $res .= self::formFacture($args[1], $args[2]); - } else { - $res .= self::formFacture($args[1]); - } - $res .= commonPage::bf(); - $res .= commonPage::bMain(); - return $res; - } - - public static function formFacture($facture_id = 'new', $projet_id = null) - { - global $core; - commonDroits::min(1); - cubePage::autoComplete(); - cubePage::emptyField(); - cubePage::ui('Sortable'); - - $daoProjet = new extranetDAOProjet($core->con); - $dao = new extranetDAOFacture($core->con); - - $projet_id = isset($_POST['projet_id']) && $_POST['projet_id'] > 0?$_POST['projet_id']:$projet_id; - - if ($facture_id == 'new') { - $facture = $dao->cree(); - } elseif ($facture_id == 'ws') { - $facture = $dao->cree(); - $facture->facture_id = 'ws'; - } else { - $facture = $dao->selectById($facture_id); - } - - if (!is_null($projet_id) && $facture_id == 'new') { - $projet = $daoProjet->selectById($projet_id); - $facture->projet_id = $projet->projet_id; - $facture->client = $projet->client; - $facture->projet = $facture->nom = $projet->nom; - $lignes = array(); - foreach($projet->taches as $tache) { - $lignes[] = array('montant' => $tache->budget, 'titre' => $tache->nom, 'description' => ''); - } - $facture->lignes = $lignes; - } elseif ($facture_id == 'ws') { - if (is_null($projet_id)) { - $daoClient = new commonDAOClient($core->con); - $client = $daoClient->selectById($_POST['client_id']); - $facture->projet_id = 'new'; - $facture->client = $client->rs; - $facture->client_id = $client->utilisateur_id; - $facture->projet = __('Nouveau projet'); - $facture->nom = 'Fluidbook'; - } else { - $projet = $daoProjet->selectById($projet_id); - $facture->projet_id = $projet->projet_id; - $facture->client = $projet->client; - $facture->projet = $facture->nom = $projet->nom; - } - $lignes = array(); - $b = $core->con->select('SELECT * FROM ws.book WHERE bid IN(' . implode(',', array_keys($_POST['book_facture'])) . ')'); - while ($b->fetch()) { - $lignes[] = array('book' => $b->bid, 'montant' => 0, 'titre' => 'Fluidbook « ' . $b->titre . ' »', 'description' => ''); - } - $facture->lignes = $lignes; - } - - $res = '
'; - $res .= '
'; - $res .= '
'; - // Adresse - if ($facture->facture_id == 'new' && is_null($projet_id)) { - $class = 'empty-field'; - $default_id = ''; - $default = __('Entrez le nom du projet ou du client'); - } else { - $class = ''; - $default_id = $facture->projet_id; - $default = $facture->projet_id . ' - ' . $facture->projet . ' (' . $facture->client . ')'; - } - - $res .= '
'; - $res .= form::field('projet_nom', 40, 128, $default, $class); - $res .= form::hidden('projet', $default_id); - $res .= '
'; - if ($facture->projet_id != 'new') { - $res .= extranetUrl::adresse(null, $facture->projet_id, 'facture', $facture->adresse); - } else { - $res .= extranetUrl::adresse($facture->client_id, null, 'facture', $facture->adresse); - $res .= form::hidden('client', $facture->client_id); - } - - $res .= '
'; - $res .= form::textarea('texte_complementaire', 50, 2, $facture->texte_complementaire); - $res .= '
'; - // Titre - $res .= '
'; - $res .= 'Date : ' . cubeForm::date('date_creation', $facture->date_creation) . '

'; - $res .= form::hidden('facture_id', $facture->facture_id); - $res .= form::textarea('nom', 40, 4, $facture->nom); - $res .= '
'; - $res .= '
'; - - $res .= '
'; - $res .= '
'; - // Lignes du devis - $nb_lignes = max(4, count($facture->lignes) + 2); - - for($i = 0;$i < $nb_lignes;$i++) { - if (isset($facture->lignes[$i])) { - $titre = $facture->lignes[$i]['titre']; - $description = $facture->lignes[$i]['description']; - $montant = $facture->lignes[$i]['montant']; - $book = isset($facture->lignes[$i]['book'])?$facture->lignes[$i]['book']:null; - } else { - $titre = $description = $montant = ''; - } - - $res .= '
'; - - $res .= '
'; - $res .= form::field(array('montant[]'), 6, 15, $montant) . " €"; - if (isset($book) && !is_null($book)) { - $res .= form::hidden(array('book[]'), $book) ; - } - $res .= '
'; - $res .= '
'; - $res .= form::field(array('titre[]'), 80, 256, htmlspecialchars($titre, ENT_QUOTES)) . '

'; - $res .= form::textarea(array('description[]'), 80, 2, $description); - $res .= '
'; - - $res .= '
'; - } - - $res .= '
'; - $res .= '
'; - $res .= '
' . cubeMedia::spacer(10, 10) . '
'; - $res .= ''; - $res .= '
'; - $res .= '
'; - return $res; - } - - public static function previewFacture($args) - { - global $core; - commonDroits::min(1); - $dao = new extranetDAOFacture($core->con); - $facture = $dao->selectById($args[1]); - - $res = commonPage::barre(); - $res .= commonPage::tMain(); - $res .= commonPage::bh(); - $res .= ''; - - $res .= ''; - $res .= commonPage::bf(); - $res .= commonPage::bMain(); - return $res; - } - - public static function formPrintFactures() - { - global $core; - $last = $core->user->getLastPrint(); - $res = ''; - if ($last['date']) { - $res .= '' . __('Dernière factures imprimées') . ' : ' . __('Factures') . ' ' . $last['pages'] . ' (' . date('Y-m-d', $last['date']) . ')'; - } - $res .= '' . __('Factures à imprimer') . '' . form::field('factures', 20, 64) . ''; - $res .= '' . __('Ex') . ' : 1;3-5;7;9 ' . __('signifie factures') . ' 1,3,4,5,7,9'; - return $res; - } -} - -?> \ No newline at end of file diff --git a/inc/extranet/Controlleur/url/class.extranet.url.projet.php b/inc/extranet/Controlleur/url/class.extranet.url.projet.php deleted file mode 100644 index 98271f0ef..000000000 --- a/inc/extranet/Controlleur/url/class.extranet.url.projet.php +++ /dev/null @@ -1,353 +0,0 @@ -user->getSettings('projets'); - - $shortcuts = array(); - $shortcuts[] = '' . $core->typo->Ajouter('Créer un projet') . ''; - - $filtres = array(); - $filtres[] = new commonFiltre(__('Crée par'), 'equipier', $settings['filtres']); - $filtres[] = new commonFiltre(__('Status'), 'status_projet', $settings['filtres']); - $filtres[] = new commonFiltre(__('Année'), 'annee', $settings['filtres']); - - $res = commonPage::barre($filtres, 'filtreProjet', 'projets', $shortcuts); - $res .= commonPage::tMain(); - $res .= commonPage::bh(); - $res .= '
'; - $res .= self::listeProjets(); - $res .= '
'; - $res .= commonPage::bf(); - $res .= commonPage::bMain(); - return $res; - } - - public static function listeProjets($dashboard = null, $settings = null) - { - global $core; - commonDroits::min(1); - $settings = is_null($settings)?$core->user->getSettings('projets'):$settings; - $change = is_null($dashboard)?'Projet':'Dashboard/' . $dashboard; - - $res = ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - - $dao = new extranetDAOProjet($core->con); - $dao->setFiltres($settings['filtres']); - if (isset($settings['search']) && !is_null($settings['search'])) { - $dao->setSearch($settings['search']); - } - $liste = $dao->getListe($settings['orderby'], $settings['sens'], $settings['limit']); - - $i = 0; - foreach($liste as $projet) { - $droits = extranetDroits::projet($projet, false); - - $projet->progression = !$projet->progression?'-':$projet->progression . '%'; - $projet->jours_prevus = !$projet->jours_prevus?'-':$projet->jours_prevus; - $projet->jours_consommes = !$projet->jours_consommes?'-':$projet->jours_consommes; - - $projet->budget = !$projet->budget || !$droits?'-':$projet->budget; - $odd = cubeMath::isOdd($i)?' class="odd"':''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - if ($droits) { - $res .= ''; - } else { - $res .= ''; - } - - $rf = $projet->rapport_facturation; - if ($projet->budget == '-') { - $rapport_facturation = '-'; - } elseif (!$rf) { - $rapport_facturation = __('Non'); - } elseif ($rf == 1) { - $rapport_facturation = __('Oui'); - } elseif ($rf < 1) { - $rapport_facturation = __('Partie'); - } elseif ($rf > 1) { - $rapport_facturation = __('Trop'); - } - - $rp = $projet->rapport_paiement; - if ($projet->budget == '-') { - $rapport_paiement = '-'; - } elseif (!$rp) { - $rapport_paiement = __('Non') ; - } elseif ($rp == 1) { - $rapport_paiement = __('Oui'); - } elseif ($rp < 1) { - $rapport_paiement = __('Partie'); - } elseif ($rp > 1) { - $rapport_paiement = __('Trop'); - } - - $res .= ''; - $res .= ''; - - $res .= ''; - // $res .= ''; - // $res .= ''; - $res .= ''; - $res .= ''; - - $res .= ''; - $i++; - } - if (!isset($settings['search']) || is_null($settings['search'])) { - $odd = cubeMath::isOdd($i)?' class="odd"':''; - $res .= ''; - } - $res .= '
' . commonUrl::orderby('#', 'projet_id', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Projet'), 'nom', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Client'), 'client', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Année'), 'annee_fin', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Chef'), 'chef', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Status'), 'status', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Facturé'), 'rapport_facturation', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Payé'), 'rapport_paiement', $settings, 'sort' . $change) . '' . commonUrl::orderby('B', 'budget', $settings, 'sort' . $change) . '' . commonUrl::orderby('Pr', 'progression', $settings, 'sort' . $change) . '
' . $projet->projet_id . '' . $projet->nom . '' . $projet->client . '' . $projet->annee_fin . '' . $projet->chef . '' . $core->projets_status[$projet->status] . '' . $core->projets_status[$projet->status] . ''; - if ($projet->status == 1 && !$rf) { - $res .= '' . $rapport_facturation . ''; - } else { - $res .= $rapport_facturation; - } - $res .= '' . $rapport_paiement . '' . $projet->budget . '' . $projet->jours_prevus . '' . $projet->jours_consommes . '' . $projet->progression . '' . cubeMedia::image(IMG . '/view.png') . '
'; - $res .= commonPage::pager($settings['page'], $dao->count() , $settings['par_page'], 'page' . $change . '/%d'); - $res .= commonUrl::formParPage('parPage' . $change, $settings['par_page'], __('projets')); - $res .= '
'; - return $res; - } - - public static function projet($args) - { - global $core; - commonDroits::min(1); - - $shortcuts = array(); - $shortcuts[] = '' . $core->typo->Ajouter('Créer une tâche') . ''; - $shortcuts[] = '' . $core->typo->Ajouter('Créer une tâche sous-traitée') . ''; - - $res = commonPage::barre(null, null, null, $shortcuts); - $res .= commonPage::tMain(); - $res .= commonPage::bh(); - $res .= '
'; - $res .= self::listeProjet($args[1]); - $res .= '
'; - $res .= commonPage::bf(); - $res .= commonPage::bMain(); - return $res; - } - - public static function listeProjet($projet_id) - { - global $core; - commonDroits::min(1); - - $res = ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - - $dao = new extranetDAOProjet($core->con); - $projet = $dao->selectById($projet_id); - - $hasFacture = $dao->hasFacture($projet_id); - - $droits = extranetDroits::projet($projet, false); - - $projet->progression = !$projet->progression?'-':$projet->progression . '%'; - $projet->jours_prevus = !$projet->jours_prevus?'-':$projet->jours_prevus; - $projet->jours_consommes = !$projet->jours_consommes?'-':$projet->jours_consommes; - - $projet->budget = !$projet->budget || !$droits?'-':$projet->budget; - - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - if ($droits) { - $res .= ''; - } else { - $res .= ''; - } - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - if ($droits) { - $res .= ''; - if (!count($projet->taches) && !$hasFacture) { - $res .= ''; - } else { - $res .= ''; - } - } else { - $res .= ''; - } - $res .= ''; - $i = 1; - foreach($projet->taches as $tache) { - $tache->budget = !$tache->budget || !$droits?'-':$tache->budget; - $odd = cubeMath::isOdd($i)?' class="odd"':''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - - if ($tache instanceof extranetTacheNormale) { - $progression = !$tache->progression?'-':$tache->progression . '%'; - $jours_prevus = !$tache->jours_prevus?'-':$tache->jours_prevus; - $jours_consommes = !$tache->jours_consommes?'-':$tache->jours_consommes; - $res .= ''; - $res .= ''; - $res .= ''; - if ($droits) { - $res .= ''; - } else { - $res .= ''; - } - } else { - $res .= ''; - if ($droits) { - $res .= ''; - } else { - $res .= ''; - } - } - - $res .= ''; - - $res .= ''; - $i++; - } - $res .= '
#' . __('Projet') . ' / ' . __('Tâche') . '' . __('Client') . ' / ' . __('Catégorie') . '' . __('Année') . '' . __('Chef de projet') . '' . __('Status') . 'BPlCoPr
' . $projet->projet_id . '' . $projet->nom . '' . $projet->client . '' . $projet->annee_fin . '' . $projet->chef . '' . $core->projets_status[$projet->status] . '' . $core->projets_status[$projet->status] . '' . $projet->budget . '' . $projet->jours_prevus . '' . $projet->jours_consommes . '' . $projet->progression . '' . cubeMedia::image(IMG . '/edit.png') . '' . cubeMedia::image(IMG . '/delete.png') . '
T' . $i . '' . $tache->nom . '' . $core->categories[$tache->categorie] . '' . $tache->budget . '' . $jours_prevus . '' . $jours_consommes . '' . $progression . '' . cubeMedia::image(IMG . '/edit.png') . '' . __('Tâche sous-traitée') . '' . cubeMedia::image(IMG . '/edit.png') . '' . cubeMedia::image(IMG . '/delete.png') . '
'; - return $res; - } - - public static function formProjet($projet_id = 'new') - { - global $core; - commonDroits::min(1); - - $dao = new extranetDAOProjet($core->con); - if ($projet_id == 'new') { - $projet = $dao->cree($core->user->utilisateur_id); - } else { - $projet = $dao->selectById($projet_id); - } - - $daoClient = new commonDAOClient($core->con); - $clients = $daoClient->getListe(); - - $listeClients = array(); - foreach($clients as $client) { - $listeClients[$client->rs . ' (' . $client->prenom . ' ' . $client->nom . ')'] = $client->utilisateur_id; - } - ksort($listeClients); - - $daoEquipier = new commonDAOEquipier($core->con); - $equipiers = $daoEquipier->getListe(); - - $listeEquipiers = array(); - foreach($equipiers as $equipier) { - $listeEquipiers[$equipier->prenom . ' ' . $equipier->nom . ' (' . $equipier->agence . ')'] = $equipier->utilisateur_id; - } - - $daoDevis = new extranetDAODevis($core->con); - $devis = $daoDevis->getListeValidesLibres($projet_id); - $listeDevis = array('--' => 0); - foreach($devis as $id => $dev) { - $listeDevis[$dev->nom] = $dev->devis_id; - } - - $res = '' . __('Numéro de projet') . '' . form::hidden('projet_id', $projet->projet_id) . '' . $projet->projet_id . ''; - $res .= '' . __('Nom du projet') . '' . form::textarea('nom', 50, 3, html::escapeHTML($projet->nom)) . ''; - $res .= '' . __('Chef de projet') . ''; - if ($core->user->grade > 1) { - $res .= form::combo('chef', $listeEquipiers, $projet->chef_id); - } else { - $res .= form::hidden('chef', $projet->chef_id) . ' ' . $projet->chef; - } - $res .= ''; - $res .= '' . __('Date de début') . '' . cubeForm::dateFree('date_debut', $projet->date_debut) . ''; - $res .= '' . __('Deadline') . '' . cubeForm::dateFree('deadline', $projet->deadline) . ''; - $res .= '' . __('Date de fin') . '' . cubeForm::dateFree('date_fin', $projet->date_fin) . ''; - $res .= '' . __('Client') . '' . form::combo('client', $listeClients, $projet->client_id) . ''; - $res .= '' . __('Devis') . '' . form::combo('devis', $listeDevis, $projet->devis) . ''; - return $res; - } - - public static function formTache($tache) - { - global $core; - commonDroits::min(1); - - $res = '' . __('Numéro de tâche') . '' . form::hidden('projet', $tache->projet) . form::hidden('tache_id', $tache->tache_id) . '' . $tache->tache_id . ''; - $res .= '' . __('Catégorie') . '' . form::combo('categorie', array_flip($core->categories), $tache->categorie) . ''; - $res .= '' . __('Nom') . '' . form::textarea('nom', 50, 3, html::escapeHTML($tache->nom)) . ''; - - return $res; - } - - public static function formTacheNormale($tache_id, $projet_id = null) - { - global $core; - commonDroits::min(1); - $dao = new extranetDAOTache($core->con); - if ($tache_id == 'new') { - $tache = $dao->creeNormale(); - $tache->projet = $projet_id; - } else { - $tache = $dao->selectById($tache_id); - } - $res = self::formTache($tache); - $res .= '' . __('Taux journalier') . '' . form::field('taux_journalier', 6, 6, $tache->taux_journalier) . ''; - $res .= '' . __('Budget') . '' . form::hidden('type', '0') . form::field('budget', 6, 6, $tache->budget) . ''; - return $res; - } - - public static function formTacheSousTraitee($tache_id, $projet_id = null) - { - global $core; - commonDroits::min(1); - $dao = new extranetDAOTache($core->con); - if ($tache_id == 'new') { - $tache = $dao->creeSousTraitee(); - $tache->projet = $projet_id; - } else { - $tache = $dao->selectById($tache_id); - } - $res = self::formTache($tache); - $res .= '' . __('Budget') . '' . form::hidden('type', '1') . form::field('budget', 6, 6, $tache->budget) . ''; - return $res; - } -} - -?> \ No newline at end of file diff --git a/inc/extranet/Controlleur/url/class.extranet.url.timereport.php b/inc/extranet/Controlleur/url/class.extranet.url.timereport.php deleted file mode 100644 index 946dad684..000000000 --- a/inc/extranet/Controlleur/url/class.extranet.url.timereport.php +++ /dev/null @@ -1,133 +0,0 @@ -user->getSettings('timereport'); - $filtres = array(); - $filtres[] = new commonFiltre(__('Participants'), 'equipier_participe', $settings['filtres']); - $res = commonPage::barre($filtres, 'filtreTimereport', 'timereport', null); - $res .= commonPage::tMain(); - $res .= commonPage::bh(); - $res .= '
'; - $res .= self::listeTimereport(); - $res .= '
'; - $res .= commonPage::bf(); - $res .= commonPage::bMain(); - return $res; - } - - public static function listeTimereport($dashboard = null, $settings = null) - { - global $core; - commonDroits::min(1); - // Récupère la liste des projets - $settings = is_null($settings)?$core->user->getSettings('timereport'):$settings; - $change = is_null($dashboard)?'Timereport':'Dashboard/' . $dashboard; - - $dao = new extranetDAOProjet($core->con); - if (isset($settings['search']) && !is_null($settings['search'])) { - $dao->setSearch($settings['search']); - } - $dao->setFiltres($settings['filtres']); - $liste = $dao->getProjetsForTimereport($settings['orderby'], $settings['sens'], $settings['limit'], $core->user->utilisateur_id); - // Extrait la liste des tâches - $taches = array(); - foreach($liste as $id => $projet) { - foreach($projet->taches as $tache) { - if ($tache instanceof extranetTacheNormale) { - $taches[] = $tache->tache_id; - } - } - } - // Fixe les limites des jours à afficher - $time = cubeDate::round(null, 'd'); // aujourd'hui - $avant = $time - (3600 * 24 * 15); // 15 jours avant - $apres = $time; // aujourd'hui - // Récupère la liste des timereports à afficher - $daoTimereport = new extranetDAOTimereport($core->con); - $timereports = $daoTimereport->getListe($taches, $core->user->utilisateur_id, array('start' => $avant, 'end' => $apres)); - // Affiche le tableau - $res = ''; - $res .= ''; - $res .= ''; - $res .= ''; - for($date = $avant;$date <= $apres;$date += 3600 * 24) { - $res .= ''; - } - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - - foreach($liste as $projet) { - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - for($date = $avant;$date <= $apres;$date += 3600 * 24) { - $cc = self::getClassOfDay($date); - $class = ($cc == '')?'':' class="' . $cc . '"'; - $res .= ''; - } - $projet->progression = !$projet->progression?'-':$projet->progression . '%'; - $projet->jours_prevus = !$projet->jours_prevus?'-':$projet->jours_prevus; - $projet->jours_consommes = !$projet->jours_consommes?'-':$projet->jours_consommes; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $i = 1; - foreach($projet->taches as $tache) { - if ($tache instanceof extranetTacheNormale) { - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - for($date = $avant;$date <= $apres;$date += (3600 * 24)) { - $hh = isset($timereports[$tache->tache_id][$date])?$timereports[$tache->tache_id][$date]->heures:''; - $c = ($hh == '')?'':'filled'; - $cc = trim(self::getClassOfDay($date) . ' ' . $c); - $class = ($cc == '')?'':' class="' . $cc . '"'; - $res .= '' . form::field(array('timereport', 't_' . $date . '_' . $tache->tache_id), 1, 2, $hh, 'timereport_field') . ''; - } - $tache->progression = !$tache->progression?'-':$tache->progression . '%'; - $tache->jours_prevus = !$tache->jours_prevus?'-':$tache->jours_prevus; - $tache->jours_consommes = !$tache->jours_consommes?'-':$tache->jours_consommes; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $i++; - } - } - } - - if (!isset($settings['search']) || is_null($settings['search'])) { - $res .= ''; - } - $res .= '
' . commonUrl::orderby('#', 'projet_id', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Projet'), 'nom', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Client'), 'client', $settings, 'sort' . $change) . '' . date('d', $date) . '' . cubeMedia::spacer(16, 1, '', 'spacer') . '' . commonUrl::orderby('Pr', 'progression', $settings, 'sort' . $change) . '' . commonUrl::orderby('Co', 'jours_consommes', $settings, 'sort' . $change) . '' . commonUrl::orderby('Pl', 'jours_prevus', $settings, 'sort' . $change) . '
' . $projet->projet_id . '' . $projet->nom . '' . $projet->client . '' . $projet->progression . '' . $projet->jours_consommes . '' . $projet->jours_prevus . '
T' . $i . '' . $tache->nom . '' . $core->categories[$tache->categorie] . '' . $tache->progression . '' . $tache->jours_consommes . '' . $tache->jours_prevus . '
'; - $res .= commonPage::pager($settings['page'], $dao->countActifs(), $settings['par_page'], 'page' . $change . '/%d'); - $res .= commonUrl::formParPage('parPage' . $change, $settings['par_page'], __('projets')); - $res .= '
'; - return $res; - } - - public static function getClassOfDay($date) - { - $aujourdhui = cubeDate::round(null, 'd'); - $highlight = ($date == $aujourdhui); - $we = (date('N', $date) >= 6); - if ($highlight) { - return 'highlight'; - } - if ($we) { - return 'we'; - } - return ''; - } -} - -?> \ No newline at end of file diff --git a/inc/ws/Controlleur/_common.php b/inc/ws/Controlleur/_common.php index e0e838ecc..551049511 100644 --- a/inc/ws/Controlleur/_common.php +++ b/inc/ws/Controlleur/_common.php @@ -1,6 +1,5 @@


' . wsUrlClient::listeContacts($args[1]) . '
'; + $extra = '




' . wsUrl::listeContacts($args[1]) . '
'; } $extra .= '



' . $core->typo->BoutonOK(__('Enregistrer')) . '

'; - commonAjax::form('saveClient', __("Edition d'un client"), wsUrlClient::formClient($args[1]), false, 2, '', $extra); + commonAjax::form('saveClient', __("Edition d'un client"), wsUrl::formClient($args[1]), false, 2, '', $extra); } public static function formContact($args, &$x) @@ -19,7 +19,7 @@ class wsAjax extends cubeAjax { if (!isset($args[2])) { $args[2] = null; } - commonAjax::form('saveContact', __("Edition d'un contact"), wsUrlClient::formContact($args[1], $args[2])); + commonAjax::form('saveContact', __("Edition d'un contact"), wsUrl::formContact($args[1], $args[2])); } public static function saveClient($args, &$x) @@ -55,7 +55,7 @@ class wsAjax extends cubeAjax { $core->refreshWSUsersTree(); - $x->addContent('listeClients', wsUrlClient::listeClients()); + $x->addContent('listeClients', wsUrl::listeClients()); $x->addClosePopup(); } @@ -65,9 +65,9 @@ class wsAjax extends cubeAjax { $dao = new commonDAOClient($core->con); $client = $dao->sauve($_POST); $x->addClosePopup(); - $x->addContent('devisAdresseDisplay', wsUrlClient::adresse($client->utilisateur_id, null, 'devis')); - $x->addContent('factureAdresseDisplay', wsUrlClient::adresse($client->utilisateur_id, null, 'facture')); - $x->addContent('listeContacts', wsUrlClient::listeContacts($client->entreprise)); + $x->addContent('devisAdresseDisplay', wsUrl::adresse($client->utilisateur_id, null, 'devis')); + $x->addContent('factureAdresseDisplay', wsUrl::adresse($client->utilisateur_id, null, 'facture')); + $x->addContent('listeContacts', wsUrl::listeContacts($client->entreprise)); $contacts = array(); $client_contacts = $dao->getContactsOfEntreprise($client->entreprise); foreach($client_contacts as $c) { @@ -89,30 +89,30 @@ class wsAjax extends cubeAjax { $core->refreshWSUsersTree(); - $x->addContent('listeClients', wsUrlClient::listeClients()); + $x->addContent('listeClients', wsUrl::listeClients()); } public static function searchClients($args, &$x) { - $x->addContent('listeClients', wsUrlClient::listeClients()); + $x->addContent('listeClients', wsUrl::listeClients()); } public static function sortClient($args, &$x) { commonAjax::sort('clients', $args[1]); - $x->addContent('listeClients', wsUrlClient::listeClients()); + $x->addContent('listeClients', wsUrl::listeClients()); } public static function pageClient($args, &$x) { commonAjax::page('clients', $args[1]); - $x->addContent('listeClients', wsUrlClient::listeClients()); + $x->addContent('listeClients', wsUrl::listeClients()); } public static function parPageClient($args, &$x) { commonAjax::parPage('clients', $_POST['par_page']); - $x->addContent('listeClients', wsUrlClient::listeClients()); + $x->addContent('listeClients', wsUrl::listeClients()); } public static function supprimeBook($args, &$x) @@ -120,40 +120,40 @@ class wsAjax extends cubeAjax { global $core; $dao = new wsDAOBook($core->con); $dao->supprime($args[1]); - $x->addContent('listeBooks', wsUrlBook::listeBooks()); + $x->addContent('listeBooks', wsUrl::listeBooks()); } public static function searchPublications($args, &$x) { - $x->addContent('listeBooks', wsUrlBook::listeBooks()); + $x->addContent('listeBooks', wsUrl::listeBooks()); } public static function pageBooks($args, &$x) { commonAjax::page('books', $args[1]); - $x->addContent('listeBooks', wsUrlBook::listeBooks()); + $x->addContent('listeBooks', wsUrl::listeBooks()); } public static function parPageBooks($args, &$x) { commonAjax::parPage('books', $_POST['par_page']); - $x->addContent('listeBooks', wsUrlBook::listeBooks()); + $x->addContent('listeBooks', wsUrl::listeBooks()); } public static function sortBooks($args, &$x) { commonAjax::sort('books', $args[1]); - $x->addContent('listeBooks', wsUrlBook::listeBooks()); + $x->addContent('listeBooks', wsUrl::listeBooks()); } public static function newBookForm($args, &$x) { - commonAjax::form('newBook', __("Créer une nouvelle publication à partir d'une existante"), wsUrlBook::chooseExistingBook(), __('Créer une nouvelle publication'), 3); + commonAjax::form('newBook', __("Créer une nouvelle publication à partir d'une existante"), wsUrl::chooseExistingBook(), __('Créer une nouvelle publication'), 3); } public static function formChangeBookProprietaire($args, &$x) { - commonAjax::form('changeBookProprietaire/' . $args[1], __("Modifier le propriétaire de la publication"), wsUrlBook::changeBookProprietaire($args[1]), __('Enregistrer'), 3); + commonAjax::form('changeBookProprietaire/' . $args[1], __("Modifier le propriétaire de la publication"), wsUrl::changeBookProprietaire($args[1]), __('Enregistrer'), 3); } public static function filtreBooks($args, &$x) @@ -164,7 +164,7 @@ class wsAjax extends cubeAjax { return; } else { commonAjax::filtre('books', $_POST); - $x->addContent('listeBooks', wsUrlBook::listeBooks()); + $x->addContent('listeBooks', wsUrl::listeBooks()); } } @@ -179,7 +179,7 @@ class wsAjax extends cubeAjax { } $x->addClosePopup(); - $x->addContent('listeBooks', wsUrlBook::listeBooks()); + $x->addContent('listeBooks', wsUrl::listeBooks()); $x->addTruePopup(SITE_PATH . 'editor/' . $book->book_id); } @@ -194,7 +194,7 @@ class wsAjax extends cubeAjax { $dao = new wsDAOBook($core->con); $dao->setProprietaire($args[1], $_POST['proprietaire']); $x->addClosePopup(); - $x->addContent('listeBooks', wsUrlBook::listeBooks()); + $x->addContent('listeBooks', wsUrl::listeBooks()); } public static function downbook($args, &$x) @@ -218,7 +218,7 @@ class wsAjax extends cubeAjax { if ($book->status < 1) { $popup = commonAjax::form('downbook/' . $book_id . '/' . $version, __('Téléchargement du Fluidbook'), - wsUrlBook::valideDownload($book_id, $version), + wsUrl::valideDownload($book_id, $version), __('Télécharger'), 2, '', '', true); $x->addOpenPopup($popup); @@ -244,12 +244,12 @@ class wsAjax extends cubeAjax { $daoBook = new wsDAOBook($core->con); $daoBook->setStatus($book_id, $status); - $x->addContent('listeBooks', wsUrlBook::listeBooks()); + $x->addContent('listeBooks', wsUrl::listeBooks()); } public static function formBookChooseProject($book_id) { - return commonAjax::form('bookChooseProject', __("Selection d'un projet"), wsUrlBook::chooseBookProject($book_id), __('Suivant'), 3, '', '', true); + return commonAjax::form('bookChooseProject', __("Selection d'un projet"), wsUrl::chooseBookProject($book_id), __('Suivant'), 3, '', '', true); } public static function bookChooseProject($args, &$x) @@ -286,7 +286,7 @@ class wsAjax extends cubeAjax { public static function formBookChooseTache($book_id, $project) { - return commonAjax::form('bookChooseTache', __("Selection d'une tâche"), wsUrlBook::chooseBookTache($book_id, $project), __('Enregistrer'), 3, '', '', true); + return commonAjax::form('bookChooseTache', __("Selection d'une tâche"), wsUrl::chooseBookTache($book_id, $project), __('Enregistrer'), 3, '', '', true); } public static function bookChooseTache($args, &$x) @@ -334,12 +334,12 @@ class wsAjax extends cubeAjax { $daoBook->setTache($book_id, $tache); $x->addClosePopup(); - $x->addContent('listeBooks', wsUrlBook::listeBooks()); + $x->addContent('listeBooks', wsUrl::listeBooks()); } public static function changeLang($args, &$x) { - $x->addContent('formLang', wsUrlTraduction::formLang($_POST['lang'])); + $x->addContent('formLang', wsUrl::formLang($_POST['lang'])); } public static function saveLang($args, &$x) @@ -498,25 +498,25 @@ class wsAjax extends cubeAjax { public static function searchDemandes($args, &$x) { - $x->addContent('listeDemandes', wsUrlDemande::listeDemandes()); + $x->addContent('listeDemandes', wsUrl::listeDemandes()); } public static function sortDemandes($args, &$x) { commonAjax::sort('demandes', $args[1]); - $x->addContent('listeDemandes', wsUrlDemande::listeDemandes()); + $x->addContent('listeDemandes', wsUrl::listeDemandes()); } public static function pageDemandes($args, &$x) { commonAjax::page('demandes', $args[1]); - $x->addContent('listeDemandes', wsUrlDemande::listeDemandes()); + $x->addContent('listeDemandes', wsUrl::listeDemandes()); } public static function parPageDemandes($args, &$x) { commonAjax::parPage('demandes', $_POST['par_page']); - $x->addContent('listeDemandes', wsUrlDemande::listeDemandes()); + $x->addContent('listeDemandes', wsUrl::listeDemandes()); } public static function supprimeDemande($args, &$x) @@ -527,7 +527,7 @@ class wsAjax extends cubeAjax { $dao = new wsDAODemande($core->con); $dao->supprime($demande_id); - $x->addContent('listeDemandes', wsUrlDemande::listeDemandes()); + $x->addContent('listeDemandes', wsUrl::listeDemandes()); } public static function filtreDemandes($args, &$x) @@ -538,7 +538,7 @@ class wsAjax extends cubeAjax { return; } else { commonAjax::filtre('demandes', $_POST); - $x->addContent('listeDemandes', wsUrlDemande::listeDemandes()); + $x->addContent('listeDemandes', wsUrl::listeDemandes()); } } @@ -547,7 +547,7 @@ class wsAjax extends cubeAjax { if (!isset($args[2])) { $args[2] = null; } - commonAjax::form('saveDemande', __("Edition d'une demande"), wsUrlDemande::formDemande($args[1], $args[2])); + commonAjax::form('saveDemande', __("Edition d'une demande"), wsUrl::formDemande($args[1], $args[2])); } public static function saveDemande($args, &$x) @@ -566,7 +566,7 @@ class wsAjax extends cubeAjax { $demande = $dao->setRevendeur($_POST['demande_id'], $_POST['revendeur']); } - $x->addContent('listeDemandes' , wsUrlDemande::listeDemandes()); + $x->addContent('listeDemandes' , wsUrl::listeDemandes()); $x->addClosePopup(); } @@ -641,17 +641,15 @@ class wsAjax extends cubeAjax { if ($reponse == '0') { $dao->reinitDemande($demande_id); - } elseif ($reponse == '1') { + } else { $dao->accepteDemande($demande_id, $revendeur_id); - } elseif ($reponse == '-1') { - $dao->setStatus($demande_id, 1); } + $x->addAlert(__('Votre choix a bien été prise en compte.')); if (!isset($args[4])) { - $x->addAlert(__('Votre choix a bien été prise en compte.')); $x->addRedirection(SITE_PATH); } else { - $x->addContent('listeDemandes' , wsUrlDemande::listeDemandes()); + $x->addContent('listeDemandes' , wsUrl::listeDemandes()); } } @@ -663,7 +661,7 @@ class wsAjax extends cubeAjax { $dao = new wsDAODemande($core->con); $dao->reinitDemande($demande_id); - $x->addContent('listeDemandes' , wsUrlDemande::listeDemandes()); + $x->addContent('listeDemandes' , wsUrl::listeDemandes()); } } diff --git a/inc/ws/Controlleur/class.ws.url.php b/inc/ws/Controlleur/class.ws.url.php index 2eedb13b0..5b4ea8db8 100644 --- a/inc/ws/Controlleur/class.ws.url.php +++ b/inc/ws/Controlleur/class.ws.url.php @@ -1,11 +1,559 @@ user->getSettings('books'); + + $shortcuts = array(); + if (wsDroits::creation()) { + $shortcuts[] = '' . $core->typo->Ajouter(__('Créer une nouvelle publication')) . ''; + } + + $filtres = array(); + if (wsDroits::revendeur(false)) { + $filtres[] = new commonFiltre(__('Status'), 'status_book', $settings['filtres']); + } + $filtres[] = new commonFiltre(__('Année'), 'annee_book', $settings['filtres']); + $res = commonPage::barre($filtres , 'filtreBooks', 'books', $shortcuts); + $res .= commonPage::tMain(null, true); + $res .= commonPage::bh(); + $res .= '
'; + $res .= self::listeBooks(); + $res .= '
'; + $res .= commonPage::bf(); + $res .= commonPage::bMain(); + return $res; + } + + public static function listeBooks($dashboard = null, $settings = null) + { + global $core; + cubePage::truePopup(); + cubePage::autocomplete(); + cubePage::contextMenu(); + + $droits = wsDroits::getDroits(); + + commonDroits::min(1); + $settings = is_null($settings)?$core->user->getSettings('books'):$settings; + $change = is_null($dashboard)?'Books':'Dashboard/' . $dashboard; + $dao = new wsDAOBook($core->con); + $context_download_id = is_null($dashboard)?'contextDownloadBook':'contextDashboard_Download' . $dashboard; + $context_status_id = is_null($dashboard)?'contextStatusBook':'contextDashboard_Status' . $dashboard; + + 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 = self::contextBookDownload($context_download_id); + $res = self::contextBookStatus($context_status_id); + + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + if ($droits->revendeur) { + $res .= ''; + } else { + $res .= ''; + } + if ($droits->admin) { + $res .= ''; + } + if ($droits->revendeur) { + $res .= ''; + } + $res .= str_repeat('', $droits->creation?5:4); + $res .= ''; + $i = 0; + + $btVoir = cubeMedia::cssRollover($core->typo->Voir('voir', '', false)); + $btEdit = cubeMedia::cssRollover($core->typo->Editer('éditer', '', false)); + $btStats = cubeMedia::cssRollover($core->typo->Stats('stats', '', false)); + $btDownload = cubeMedia::cssRollover($core->typo->BookTelecharger('télécharger', '', false)); + if ($droits->creation) { + $btDel = cubeMedia::cssRollover($core->typo->Supprimer('suppr.', '', false)); + } + + foreach($liste as $id => $book) { + $odd = cubeMath::isOdd($i)?' class="odd"':''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + + if ($droits->revendeur) { + $p = str_replace(" (", '
', $book->proprietaire); + $p = trim($p, ')'); + $res .= ''; + } else { + $res .= ''; + } + if ($droits->admin) { + $res .= ''; + } + if ($droits->revendeur) { + if ($droits->admin || $book->status <= 1) { + $p = ''; + if (!is_null($book->projet)) { + $p = ' ' . cubeMedia::silk('arrow_right.png') . ''; + } + + $res .= ''; + } else if ($book->status > 1) { + $res .= ''; + } + } + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + if ($droits->creation) { + $res .= ''; + } + $res .= ''; + $i++; + } + if (!isset($settings['search']) || is_null($settings['search'])) { + $odd = cubeMath::isOdd($i)?' class="odd"':''; + $res .= ''; + } + $res .= '
' . commonUrl::orderby('#', 'book_id', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Titre de la publication'), 'nom', $settings, 'sort' . $change) . '' . commonUrl::orderby(__(''), 'lang', $settings, 'sort' . $change) . '' . __('Pages') . '' . commonUrl::orderby(__('Proprietaire'), 'proprietaire_nom', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Proprietaire'), 'proprietaire_utilisateur', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Facturation'), 'facturable', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Status'), 'status', $settings, 'sort' . $change) . '
' . $book->book_id . '' . $book->nom . '' . mb_strtoupper($book->lang) . '' . $book->parametres->pages . '' . $p . '' . $book->proprietaire_utilisateur . '' . $book->facturable . '' . $core->books_status[$book->status] . '' . $p . '' . $core->books_status[1] . '' . $btVoir . '' . $btEdit . '' . $btStats . '' . $btDownload . '' . $btDel . '
'; + $res .= commonPage::pager($settings['page'], $dao->count($core->user) , $settings['par_page'], 'page' . $change . '/%d'); + $res .= commonUrl::formParPage('parPage' . $change, $settings['par_page'], __('publications'), false); + $res .= '
'; + return $res; + } + + public static function contextBookDownload($id) + { + global $core; + + $versions = array(); + $versions['html'] = array('title' => __('Version online'), 'icon' => cubeMedia::silk('page_white_world.png')); + $versions['win-exe'] = array('title' => __('Version offline') . ' - ' . __('Executable Windows'), 'icon' => cubeMedia::silk('application_view_tile.png')); + $versions['win-ins'] = array('title' => __('Version offline') . ' - ' . __('Installeur Auto-executable Windows'), 'icon' => cubeMedia::silk('application_view_tile.png')); + $versions['mac-exe'] = array('title' => __('Version offline') . ' - ' . __('Exécutable Mac OS X'), 'icon' => cubeMedia::image(IMG . '/macos.png')); + $versions['win-cd'] = array('title' => __('Version offline') . ' - ' . __('CD-ROM') . ' / ' . __('Clé USB'), 'icon' => cubeMedia::silk('cd.png')); + + $res = '
'; + $res .= '
'; + return $res; + } + + public static function contextBookStatus($id) + { + global $core; + + if (wsDroits::admin()) { + $status = $core->books_status; + $status[2] = __('Facturé (associé à un projet)'); + } else { + $status = array(); + $status[-1] = $core->books_status[-1]; + $status[0] = $core->books_status[0]; + } + + $res = '
'; + $res .= '
    '; + $res .= '
  • ' . __("Changer le status de la publication") . '
  • '; + foreach($status as $s => $title) { + $res .= '
  • ' . $title . '
  • '; + } + $res .= '
'; + return $res; + } + + public static function traductions($args) + { + global $core; + + commonDroits::min(5); + + if (count($args) < 2) { + $args[1] = 'fr'; + } + + $allLangs = cubeLang::getCodes($core->user->lang); + $existingLangs = array(); + + $dao = new wsDAOLang($core->con); + $langs = $dao->selectAll(); + foreach($langs as $lang) { + if (!isset($allLangs[$lang->lang_id])) { + continue; + } + $existingLangs[$lang->lang_id] = $allLangs[$lang->lang_id]; + + unset($allLangs[$lang->lang_id]); + } + + $langs = array(__('Langues configurées') => array_flip($existingLangs), __('Autres langues') => array_flip($allLangs)); + + $res = commonPage::barre(); + $res .= commonPage::tMain(null, false); + + $res .= commonPage::bh(); + $res .= '
'; + $res .= ''; + $res .= ''; + $res .= '
' . __('Sélectionnez la langue à configurer') . ' : ' . form::combo('lang', $langs, $args[1]) . '
'; + $res .= '
'; + $res .= commonPage::bf(); + + $res .= '
'; + $res .= self::formLang($args[1]); + $res .= '
'; + $res .= commonPage::bMain(true); + + return $res; + } + + public static function formLang($lang_id) + { + commonDroits::min(5); + global $core; + $dao = new wsDAOLang($core->con); + $lang = $dao->selectById($lang_id); + + $res = '
'; + + $res .= commonPage::bh(); + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= '
' . __('Police de caractères') . ' : ' . form::hidden('lang', $lang_id) . form::combo('font', self::getFonts(), $lang->font) . '
' . __('Jeux de caractères') . ' : ' . form::combo('charset', self::getCharsets(), $lang->charset) . '
' . __("Langue de l'installeur") . ' : ' . form::combo('nsis', self::getNSISLangs(), $lang->nsis) . '
' . $core->typo->Ajouter('Valider') . '
'; + $res .= commonPage::bf(); + + $res .= commonPage::bh(); + $res .= cubeLang::translationForm(PLAYER_SOURCES, $lang_id , null, 'liste', array(), '' . $core->typo->Ajouter(__('Enregistrer')) . '', $lang->traductions); + $res .= commonPage::bf(); + $res .= '
'; + return $res; + } + + public static function getFonts() + { + $formats = array('ttf', 'otf', 'TTF', 'OTF'); + + $dr = opendir(FONT_PATH); + $fonts = array(); + while ($file = readdir($dr)) { + if ($file == '.' || $file == '..' || !in_array(files::getExtension($file), $formats)) { + continue; + } + $fonts[$file] = $file; + } + return $fonts; + } + + protected static function getCharsets() + { + $sets = cubeFlexFontAsset::getSets(); + $res = array(); + foreach($sets as $k => $v) { + $res[$k] = $k; + } + return $res; + } + + protected static function getNSISLangs() + { + $res = array(); + $dir = WS_FILES . '/nsislangs'; + $dr = opendir($dir); + while ($file = readdir($dr)) { + if ($file == '.' || $file == '..') { + continue; + } + $e = explode('.', $file); + $res[$e[0]] = $e[0]; + } + + ksort($res); + return $res; + } + + public static function editor($args) + { + commonDroits::min(1); + + global $core; + + $args = cubePage::getArgs($args); + $book_id = $args[0]; + + self::checkDocumentVersionOfBook($book_id); + + if ($book_id == 'new') { + $dao = new wsDAOBook($core->con); + $book = $dao->creeEmpty($core->user->utilisateur_id, $core->user->lang); + http::redirect(SITE_PATH . 'editor/' . $book->book_id); + } + + $res = ''; + $res .= '' . __('Edition de la publication') . ' #' . $args[0] . ''; + $res .= ''; + $res .= ''; + $res .= self::editComposition($args); + $res .= ''; + $res .= ''; + echo $res; + } + + public static function editComposition($args) + { + $fv = array(session_name() => session_id(), + 'book_id' => $args[0]); + $res = cubeMedia::flash2(WEBROOT . '/swf/composer.swf?junk=' . TIME, '100%', '100%', $fv, 'composerSwf', 'swfPanel', 10, '#d2d3c7', '', 'false', 'noscale', 'normal', array(), false, true, true); + return $res; + } + + public static function stats($args) + { + $bid = (isset($args[1]))?$args[1]:null; + $annee = (isset($args[2]))?$args[2]:null; + $mois = (isset($args[3]))?$args[3]:null; + return wsStats::display($bid, $annee, $mois); + } + + public static function viewerp($args) + { + commonDroits::min(5); + + $args = cubePage::getArgs($args); + + $e = explode('_', $args[0]); + if (count($e) == 2 || $e[2] < TIME-10) { + $e[2] = TIME; + http::redirect(SITE_PATH . 'viewerp/' . implode('_', $e) . '/'); + exit; + } + + $book_id = $e[0]; + + self::checkDocumentVersionOfBook($book_id); + + echo self::commonViewer($book_id, $e[1]); + } + + public static function vieweru($args) + { + commonDroits::min(5); + + $args = cubePage::getArgs($args); + + $e = explode('_', $args[0]); + if (count($e) == 2 || $e[2] < TIME-10) { + $e[2] = TIME; + http::redirect(SITE_PATH . 'vieweru/' . implode('_', $e) . '/'); + exit; + } + + $book_id = $e[0]; + + self::checkDocumentVersionOfBook($book_id); + + echo self::commonViewer($book_id, $e[1]); + } + + public static function viewer($args) + { + $args = cubePage::getArgs($args); + + $e = explode('_', $args[0]); + if (count($e) == 2 || $e[2] < TIME-10) { + $e[2] = TIME; + http::redirect(SITE_PATH . 'viewer/' . implode('_', $e) . '/'); + exit; + } + + $book_id = $e[0]; + + self::checkDocumentVersionOfBook($book_id); + wsSecureSWF::checkProtectedSWF(); + + echo self::commonViewer($book_id, $e[1]); + } + + public static function commonViewer($book_id, $hash) + { + if (!defined('MINIMIZE_JS')) { + define('MINIMIZE_JS', false); + } + if (!defined('MINIMIZE_CSS')) { + define('MINIMIZE_CSS', false); + } + if (!defined('JQUERY')) { + define('JQUERY', false); + } + + global $core; + global $css; + global $js; + global $standard; + global $meta; + global $jsvar; + + $dao = new wsDAOBook($core->con); + + $book = $dao->selectById($book_id); + if ($book->hash != $hash) { + commonDroits::error(); + } + + if (!$dao->isUpToDate($book_id)) { + $dao->compile($book_id); + $dao->touchCompile($book_id); + } + + $daoTheme = new wsDAOTheme($core->con); + $theme = $daoTheme->getThemeOfBook($book_id, false); + + $webcompile = WEBROOT . '/fluidbook/compile/'; + + $standard = 'XHTML 1.0 Transitional'; + $css = $js = array(); + $css[] = $webcompile . 'style.css'; + $fv = array(); + + $res = ''; + $res .= ''; + $res .= '' . $book->parametres->title . ''; + // Entêtes Facebook + if ($book->parametres->facebook) { + $meta['og:title'] = ($book->parametres->facebook_title == '')?$book->parametres->title:$book->parametres->facebook_title; + if ($book->parametres->facebook_description != '') { + $meta['og:description'] = $book->parametres->facebook_description; + } + $meta['og:image'] = 'http://dev.ws.fluidbook.com/services/facebook_thumbnail?id=' . $book->book_id ; + } + + $res .= ''; + $res .= ''; + $res .= cubeMedia::flash2('index.swf', '100%', '100%', $fv, 'fluidbook', '', 10, '#' . $theme->parametres->loadingBackColor, '', 'true', 'noscale', 'gpu', array('allowScriptAccess' => 'always')); + $js = array($webcompile . 'fluidbook.js'); + $jsvar = array(); + + $gacodes = array(GA); + if ($book->parametres->googleAnalytics != '') { + $gacodes[] = $book->parametres->googleAnalytics; + } + $res .= cubePage::googleAnalytics($gacodes, false); + $res .= ''; + $res .= ''; + + return $res; + } + public static function statsxls($args) { $bid = (isset($args[1]))?$args[1]:null; wsStats::exportXLS($bid); } + public static function chooseExistingBook() + { + wsDroits::creation(true); + $res = '

' . __("Si votre nouvelle publication a des paramètres en commun avec une publication existante, veuillez rechercher cette publication afin d'attribuer par défaut à votre nouvelle publication les paramètres de l'existante") . '

'; + $res .= '' . __('Rechercher une publication') . ' : ' . form::field('book_nom', 64, 1024) . form::hidden('book', '') . ''; + // $res .= '
'; + $res .= '' . __('Indiquez le titre de votre nouvelle publication') . '' . form::field('title', 64, 1024) . ''; + return $res; + } + + public static function changeBookProprietaire($book_id) + { + global $core; + commonDroits::min(3); + + $dao = new wsDAOBook($core->con); + $book = $dao->selectById($book_id); + + $res = '' . __('Propriétaire actuel') . ' : ' . $book->proprietaire . ''; + $res .= '' . __('Rechercher un utilisateur') . ' : ' . form::field('book_proprietaire', 64, 1024) . form::hidden('proprietaire', '') . ''; + return $res; + } + + public static function chooseBookProject($book_id) + { + global $core; + + wsDroits::admin(true); + + $dao = new wsDAOBook($core->con); + $book = $dao->selectById($book_id); + + $projects = array("--" => '0'); + $r = $core->con->select('SELECT * FROM projets WHERE client IN(SELECT entreprise FROM utilisateurs WHERE utilisateur_id IN( SELECT facturable_id FROM ws_users_tree WHERE utilisateur_id IN (SELECT utilisateur_id FROM utilisateurs WHERE entreprise=\'' . $core->con->escape($book->proprietaire_id) . '\'))) ORDER BY projet_id DESC'); + while ($r->fetch()) { + $projects[$r->projet_id . ' - ' . $r->nom] = $r->projet_id; + } + + $res = '' . __('Choisir un projet') . ' : ' . form::hidden('book_id', $book_id) . form::combo('book_project', $projects, $book->projet) . ''; + $res .= '' . __('ou créer un nouveau projet') . ' : ' . form::field('new_book_project_nom', 64, 1024, $book->nom) . ''; + return $res; + } + + public static function chooseBookTache($book_id, $projet_id) + { + global $core; + wsDroits::admin(true); + + $dao = new wsDAOBook($core->con); + $book = $dao->selectById($book_id); + + $taches = array("--" => '0'); + $r = $core->con->select('SELECT * FROM taches WHERE projet=\'' . $core->con->escape($projet_id) . '\' AND categorie=8'); + while ($r->fetch()) { + $taches[$r->nom] = $r->tache_id; + } + + $res = ''; + + if ($r->count() > 0) { + $res .= '' . __('Choisir une tâche') . ' : ' . form::hidden('book_id', $book_id) . form::hidden('projet_id', $projet_id) . form::combo('tache', $taches) . ''; + $res .= '' . __('ou créer une nouvelle tâche') . ' : ' . form::field('nom', 32, 1024, 'Fluidbook #' . $book->book_id . ' : ' . $book->nom) . ' ' . __('ayant le budget suivant') . ' ' . form::field('budget', 6, 6) . ''; + } else { + $res .= '' . __('Créer une tâche') . ' : ' + . form::hidden('book_id', $book_id) + . form::hidden('projet_id', $projet_id) + . form::hidden('tache', '0') + . form::field('nom', 32, 1024, 'Fluidbook #' . $book->book_id . ' : ' . $book->nom) + . ' ' . __('ayant le budget suivant') + . ' ' . form::field('budget', 6, 6) . ''; + } + + return $res; + } + + public static function valideDownload() + { + global $core; + + $res .= '' . __("Le téléchargement du fluidbook implique qu'il a été testé et définitivement validé.") . '
' . __("Si vous le téléchargez, il vous sera facturé selon les conditions stipulées dans votre contrat.") . ''; + $res .= ''; + + return $res; + } + public static function testAS($args) { global $core; @@ -110,6 +658,408 @@ class wsUrl { } return $res; } + + public static function clients($args) + { + global $core; + cubePage::truePopup(); + cubePage::autoComplete(); + cubePage::emptyfield(); + commonDroits::min(3); + $settings = $core->user->getSettings('clients'); + + $shortcuts = array(); + $shortcuts[] = '' . $core->typo->Ajouter('Créer un nouveau client') . ''; + + $filtres = array(); + + $res = commonPage::barre($filtres, 'filtreClients', 'clients', $shortcuts); + $res .= commonPage::tMain(); + $res .= commonPage::bh(); + $res .= '
'; + $res .= self::listeClients(); + $res .= '
'; + $res .= commonPage::bf(); + $res .= commonPage::bMain(); + return $res; + } + + public static function listeClients($dashboard = null, $settings = null) + { + global $core; + commonDroits::min(3); + $settings = is_null($settings)?$core->user->getSettings('clients'):$settings; + $change = is_null($dashboard)?'Client':'Dashboard/' . $dashboard; + $dao = new commonDAOEntreprise($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 .= ''; + $res .= ''; + $i = 0; + foreach($liste as $id => $client) { + if (!is_array($client->contacts)) { + 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('#', 'entreprise_id', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Raison sociale'), 'nom', $settings, 'sort' . $change) . '' . __('Contacts') . '
' . $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'], __('clients')); + $res .= '
'; + return $res; + } + + public static function formClient($entreprise_id = 'new') + { + global $core; + commonDroits::min(3); + $dao = new commonDAOEntreprise($core->con); + $daoUtilisateur = new commonDAOUtilisateur($core->con); + if ($entreprise_id == 'new') { + $client = $dao->cree(); + } else { + $client = $dao->selectById($entreprise_id); + } + + $res = '' . __('Numéro de client') . '' . form::hidden('entreprise_id', $client->entreprise_id) . '' . $client->entreprise_id . ''; + $res .= '' . __('Raison sociale') . '' . form::field('nom', 30, 128, $client->nom) . ''; + $res .= '' . __('Adresse') . '' . form::textarea('adresse', 40, 3, $client->adresse) . ''; + $res .= '' . __('Code postal') . '' . form::field('code_postal', 10, 20, $client->code_postal) . ''; + $res .= '' . __('Ville') . '' . form::field('ville', 30, 128, $client->ville) . ''; + $res .= '' . __('Pays') . '' . form::combo('pays', cubeCountry::getList(), $client->pays) . ''; + if (wsDroits::admin(false)) { + $res .= '' . __('Adresse de facturation') . '' . form::textarea('adresse_facturation', 40, 3, $client->adresse_facturation) . ''; + $res .= '' . __('Numéro de TVA intracommunautaire') . '' . form::field('tva_intra', 15, 13, $client->tva_intra) . ''; + } + // Bloc Fluidbook Workshop + if (wsDroits::admin(false)) { + $res .= '' . __('Fluidbook Workshop') . ''; + $res .= '' . __('Grade') . '' . form::combo('ws_grade', array_flip($core->ws_grades), $client->ws_grade) . ''; + if ($entreprise_id == 'new' || !$client->ws_admin) { + $class = 'empty-field'; + $default_id = ''; + $default = __('Entrez le nom du revendeur ou de l\'administrateur'); + } else { + $class = ''; + $default_id = $client->ws_admin; + $wsa = $daoUtilisateur->selectById($client->ws_admin, 'utilisateurs_entreprise'); + $default = $wsa->utilisateur_id . ' - ' . $wsa->rs . ' (' . $wsa->prenom . ' ' . $wsa->nom . ')'; + } + + $d = $dao->getWSDatas($entreprise_id); + + $res .= '' . __('Revendeur / Administrateur') . '' . form::field('ws_admin_nom', 60, 128, $default, $class) . form::hidden('ws_admin', $default_id) . ''; + if (!is_null($d)) { + $res .= '' . __('Entité facturable') . '' . $d->facturable->prenom . ' ' . $d->facturable->nom . ' (' . $d->facturable->rs . ')'; + $res .= '' . __('Administrateur responsable') . '' . $d->administrateur->prenom . ' ' . $d->administrateur->nom . ' (' . $d->administrateur->rs . ')'; + } + + $daoSignature = new wsDAOSignature($core->con); + $signaturesList = $daoSignature->selectAll(); + + $signatures = array(); + foreach($signaturesList as $s) { + $signatures[$s->nom] = $s->signature_id; + } + + $res .= '' . __('Signatures Fluidbook') . '' . cubeForm::checkMultiple('ws_signatures', $signatures, 5, explode(',', $client->ws_signatures)) . ''; + } + if ($entreprise_id == 'new') { + $daoContact = new commonDAOClient($core->con); + $contact = $daoContact->cree(); + $res .= '' . __('Contact') . ''; + $res .= '' . __('Adresse e-mail') . '' . form::field(array('contact[email]'), 30, 128, $contact->email) . ''; + $res .= '' . __('Mot de passe') . '' . form::field(array('contact[password]'), 30, 128, $contact->password) . ''; + $res .= '' . __('Prénom') . '' . form::field(array('contact[prenom]'), 30, 128, $contact->prenom) . ''; + $res .= '' . __('Nom') . '' . form::field(array('contact[nom]'), 30, 128, $contact->nom) . ''; + $res .= '' . __('Téléphone') . '' . form::field(array('contact[telephone]'), 20, 128, $contact->telephone) . ''; + $res .= '' . __('Mobile') . '' . form::field(array('contact[mobile]'), 20, 128, $contact->mobile) . ''; + $res .= '' . __('Fax') . '' . form::field(array('contact[fax]'), 20, 128, $contact->fax) . ''; + $res .= '' . __('Langue') . '' . form::combo(array('contact[lang]'), cubeLang::getAvailableLangs(true), $contact->lang) . ''; + } + return $res; + } + + public static function listeContacts($entreprise_id) + { + global $core; + commonDroits::min(3); + $dao = new commonDAOEntreprise($core->con); + $contacts = $dao->getContacts($entreprise_id); + + $res = ''; + $res .= ''; + $i = 0; + foreach($contacts as $contact) { + $odd = cubeMath::isOdd($i)?' class="odd"':''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $i++; + } + $res .= '
' . $core->typo->Contact('Ajouter un contact') . '
' . trim($contact->prenom . ' ' . $contact->nom) . '' . $contact->email . 'FTPSe connecter comme ...' . cubeMedia::image(IMG . '/edit.png') . '
'; + return $res; + } + + public static function formContact($client_id = 'new', $entreprise_id = null) + { + global $core; + commonDroits::min(3); + + $dao = new commonDAOClient($core->con); + if ($client_id == 'new') { + $client = $dao->creeFromEntreprise($entreprise_id); + } else { + $client = $dao->selectById($client_id); + } + + $res = '' . __('Numéro de client') . '' . form::hidden('grade', 0) . form::hidden('entreprise', $client->entreprise) . form::hidden('utilisateur_id', $client->utilisateur_id) . '' . $client->utilisateur_id . ''; + $res .= '' . __('Adresse e-mail') . '' . form::field('email', 30, 128, $client->email) . ''; + $res .= '' . __('Mot de passe') . '' . form::field('password', 30, 128, $client->password) . ''; + $res .= '' . __('Prénom du contact') . '' . form::field('prenom', 30, 128, $client->prenom) . ''; + $res .= '' . __('Nom du contact') . '' . form::field('nom', 30, 128, $client->nom) . ''; + $res .= '' . __('Adresse') . '' . form::textarea('adresse', 40, 3, $client->adresse) . ''; + $res .= '' . __('Code postal') . '' . form::field('code_postal', 10, 20, $client->code_postal) . ''; + $res .= '' . __('Ville') . '' . form::field('ville', 30, 128, $client->ville) . ''; + $res .= '' . __('Pays') . '' . form::combo('pays', cubeCountry::getList(), $client->pays) . ''; + $res .= '' . __('Téléphone') . '' . form::field('telephone', 20, 128, $client->telephone) . ''; + $res .= '' . __('Mobile') . '' . form::field('mobile', 20, 128, $client->mobile) . ''; + $res .= '' . __('Fax') . '' . form::field('fax', 20, 128, $client->fax) . ''; + $res .= '' . __('Langue') . '' . form::combo('lang', cubeLang::getAvailableLangs(true), $client->lang) . ''; + if ($client_id != 'new') { + $res .= '' . cubeMedia::spacer(10, 10) . ''; + $res .= '' . __('FTP') . ''; + $res .= '' . __('Se connecter comme ...') . ''; + $res .= '' . __("Paramètres de connexion au Fluidbook Workshop") . '' . __('Adresse') . ' : http://' . $_SERVER['HTTP_HOST'] . '/
' . __("Nom d'utilisateur") . ' : ' . $client->email . '
' . __('Mot de passe') . ' : ' . $client->password . ''; + $res .= '' . cubeMedia::spacer(10, 10) . ''; + } + 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(__('Statut'), 'status_demande', $settings['filtres']); + $filtres[] = new commonFiltre(__('Confiées à'), 'demande_moi', $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($dashboard = null, $settings = null) + { + 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 .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $i = 0; + foreach($liste as $id => $demande) { + $odd = cubeMath::isOdd($i)?' class="odd"':''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $revendeur = $demande->revendeur == 0?'-':$demande->revendeur_nom; + $res .= ''; + $administrateur = $demande->administrateur == 0?'-':$demande->administrateur_nom; + $res .= ''; + // Affichage du status + // Si non traitée ou traitée, pas la possibilité de changer le status + if ($demande->status == 0 || $demande->status == 2) { + $res .= ''; + } else if ($demande->status == 1) { + if ($demande->revendeur == $core->user->utilisateur_id) { + $res .= ''; + } else { + $res .= ''; + } + } + // On ne peut éditer que si la facture est non traitée et qu'elle n'a pas commencé à être éditée par un autre administrateur + if (($demande->administrateur == 0 || $demande->administrateur == $core->user->utilisateur_id) && $demande->status == 0) { + $res .= ''; + } else { + $res .= ''; + } + // On n'affiche le bouton "Supprimer" que si la demande est non-traitée + if (($demande->administrateur == 0 || $demande->administrateur == $core->user->utilisateur_id) && $demande->status == 0) { + $res .= ''; + } else { + $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(__('Date') , 'date', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Type') , 'type', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Prospect') . '/' . __('Client'), 'utilisateur_nom', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Confiée à'), 'revendeur_nom', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Gérée par'), 'administrateur_nom', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Statut'), 'status', $settings, 'sort' . $change) . '
' . $demande->demande_id . '' . date(__('d/m/Y H:i'), $demande->date) . '' . $core->demandes_type[$demande->type] . '' . $demande->utilisateur_nom . '' . $revendeur . '' . $administrateur . '' . $core->demandes_status[$demande->status] . '' . __('Je me suis chargé de cette demande') . '' . $core->demandes_status[$demande->status] . ' (x)' . cubeMedia::image(IMG . '/edit.png') . '' . cubeMedia::image(IMG . '/delete.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; + } + + public static function formDemande($demande_id = 'new') + { + global $core; + commonDroits::min(5); + $dao = new wsDAODemande($core->con); + $daoUtilisateur = new commonDAOUtilisateur($core->con); + $demande = $dao->selectById($demande_id); + if ($demande->administrateur != 0 && $demande->administrateur != $core->user->utilisateur_id) { + $res = '

' . __("Cette demande est actuellement en cours d'édition par un autre administrateur") . '

'; + return $res; + } + if ($demande->status > 1) { + $res = '

' . __("Cette demande est actuellement en cours de traitement") . '

'; + return $res; + } + // On place la demande comme en cours d'édition + $dao->setAdministrateur($demande_id, $core->user->utilisateur_id); + // On vérifie que l'utilisateur n'est pas déjà géré par un revendeur + $demandeur = $daoUtilisateur->selectById($demande->utilisateur, 'utilisateurs_entreprise'); + $administrateurs = $daoUtilisateur->selectWSAdministrateursId(); + if (!is_null($demandeur->ws_admin) && !in_array($demandeur->ws_admin, $administrateurs)) { + // Si déjà géré par un revendeur + $revendeur = $daoUtilisateur->selectById($demandeur->ws_admin, 'utilisateurs_entreprise'); + $actions[__('Je confie la demande à ' . $revendeur->rs . ' (' . $revendeur->prenom . ' ' . $revendeur->nom . ')')] = $demandeur->ws_admin; + } else { + $liste = $daoUtilisateur->selectWSRevendeursFacturables(); + $revendeurs = array(); + foreach($liste as $revendeur) { + $revendeurs[$revendeur->rs . '(' . $revendeur->prenom . ' ' . $revendeur->nom . ')'] = $revendeur->utilisateur_id; + } + + $actions = array(__('Je vais me charger de cette demande') => $core->user->utilisateur_id); + $actions[' '] = array(); + $actions[__('Je confie la demande à') . ' : '] = $revendeurs; + } + + $res = '' . __('Numéro de demande') . '' . form::hidden('demande_id', $demande->demande_id) . '' . $demande->demande_id . ''; + $res .= '' . __('Date de la demande') . '' . date(__('d/m/Y H:i'), $demande->date) . ''; + $res .= '' . __('Emetteur de la demande') . '' . $demande->utilisateur_nom . ''; + $res .= '' . __('Nombre de pages') . '' . $demande->pages . ''; + $res .= '' . __('Nombre de liens') . '' . $demande->liens . ''; + $res .= '' . __('Nombre de langues') . '' . $demande->langues . ''; + $res .= '' . __('Détails') . '' . $demande->details . ''; + $res .= '' . __('Action') . '' . form::combo('revendeur', $actions) . ''; + $res .= ''; + + return $res; + } + + public static function reponseDemande($args) + { + global $core; + + commonDroits::min(3); + + $res = commonPage::barre(); + $res .= commonPage::tMain(null, false); + + $res .= commonPage::bh(); + + $demande_id = $args[1]; + $revendeur_id = $args[2]; + + $dao = new wsDAODemande($core->con); + $demande = $dao->selectById($demande_id); + if ($demande->revendeur != $revendeur_id || $demande->revendeur != $core->user->utilisateur_id) { + commonDroits::error(); + exit; + } + + $res = commonPage::barre(); + $res .= commonPage::tMain(); + $res .= commonPage::bh(); + $res .= '
'; + $res .= '

' . $core->typo->Titre(__('Prendre en charge une demande de devis')) . '

'; + $res .= '

'; + $res .= '

' . __('Si vous acceptez de traiter la demande suivante, veuillez cliquer sur le bouton "Accepter la demande" situé à droite de la description.'); + $res .= ' ' . __('Vous avez également la possibilité de décliner la demande en cliquant sur le bouton "Décliner la demande"') . "

"; + $res .= '

'; + + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= '
' . __("Détails de la demande") . '' . __('Votre action') . '
' . __('Numéro de demande') . '' . $demande->demande_id . '' . '' . cubeMedia::cssRollover($core->typo->BookTelecharger('Accepter la demande', '', false)) . '' . '
' . __('Date de la demande') . '' . date(__('d/m/Y H:i'), $demande->date) . '' . '' . cubeMedia::cssRollover($core->typo->Supprimer('Décliner la demande', '', false)) . '' . '
' . __('Client') . ' / ' . __('Prospect') . '' . $demande->utilisateur_nom . '
' . __('Nombre de pages') . '' . $demande->pages . '
' . __('Nombre de liens') . '' . $demande->liens . '
' . __('Nombre de langues') . '' . $demande->langues . '
' . __('Détails') . '' . $demande->details . '
'; + + $res .= '
'; + $res .= commonPage::bf(); + $res .= commonPage::bMain(); + return $res; + } } ?> \ No newline at end of file diff --git a/inc/ws/Controlleur/url/_common.php b/inc/ws/Controlleur/url/_common.php deleted file mode 100644 index d8a3ff20f..000000000 --- a/inc/ws/Controlleur/url/_common.php +++ /dev/null @@ -1,9 +0,0 @@ - \ No newline at end of file diff --git a/inc/ws/Controlleur/url/class.ws.url.book.php b/inc/ws/Controlleur/url/class.ws.url.book.php deleted file mode 100644 index 3af2514ea..000000000 --- a/inc/ws/Controlleur/url/class.ws.url.book.php +++ /dev/null @@ -1,440 +0,0 @@ -user->getSettings('books'); - - $shortcuts = array(); - if (wsDroits::creation()) { - $shortcuts[] = '' . $core->typo->Ajouter(__('Créer une nouvelle publication')) . ''; - } - - $filtres = array(); - if (wsDroits::revendeur(false)) { - $filtres[] = new commonFiltre(__('Status'), 'status_book', $settings['filtres']); - } - $filtres[] = new commonFiltre(__('Année'), 'annee_book', $settings['filtres']); - $res = commonPage::barre($filtres , 'filtreBooks', 'books', $shortcuts); - $res .= commonPage::tMain(null, true); - $res .= commonPage::bh(); - $res .= '
'; - $res .= self::listeBooks(); - $res .= '
'; - $res .= commonPage::bf(); - $res .= commonPage::bMain(); - return $res; - } - - public static function listeBooks($dashboard = null, $settings = null) - { - global $core; - cubePage::truePopup(); - cubePage::autocomplete(); - cubePage::contextMenu(); - - $droits = wsDroits::getDroits(); - - commonDroits::min(1); - $settings = is_null($settings)?$core->user->getSettings('books'):$settings; - $change = is_null($dashboard)?'Books':'Dashboard/' . $dashboard; - $dao = new wsDAOBook($core->con); - $context_download_id = is_null($dashboard)?'contextDownloadBook':'contextDashboard_Download' . $dashboard; - $context_status_id = is_null($dashboard)?'contextStatusBook':'contextDashboard_Status' . $dashboard; - - 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 = self::contextBookDownload($context_download_id); - $res = self::contextBookStatus($context_status_id); - - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - if ($droits->revendeur) { - $res .= ''; - } else { - $res .= ''; - } - if ($droits->admin) { - $res .= ''; - } - if ($droits->revendeur) { - $res .= ''; - } - $res .= str_repeat('', $droits->creation?5:4); - $res .= ''; - $i = 0; - - $btVoir = cubeMedia::cssRollover($core->typo->Voir('voir', '', false)); - $btEdit = cubeMedia::cssRollover($core->typo->Editer('éditer', '', false)); - $btStats = cubeMedia::cssRollover($core->typo->Stats('stats', '', false)); - $btDownload = cubeMedia::cssRollover($core->typo->BookTelecharger('télécharger', '', false)); - if ($droits->creation) { - $btDel = cubeMedia::cssRollover($core->typo->Supprimer('suppr.', '', false)); - } - - foreach($liste as $id => $book) { - $odd = cubeMath::isOdd($i)?' class="odd"':''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - - if ($droits->revendeur) { - $p = str_replace(" (", '
', $book->proprietaire); - $p = trim($p, ')'); - $res .= ''; - } else { - $res .= ''; - } - if ($droits->admin) { - $res .= ''; - } - if ($droits->revendeur) { - if ($droits->admin || $book->status <= 1) { - $p = ''; - if (!is_null($book->projet)) { - $p = ' ' . cubeMedia::silk('arrow_right.png') . ''; - } - - $res .= ''; - } else if ($book->status > 1) { - $res .= ''; - } - } - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - if ($droits->creation) { - $res .= ''; - } - $res .= ''; - $i++; - } - if (!isset($settings['search']) || is_null($settings['search'])) { - $odd = cubeMath::isOdd($i)?' class="odd"':''; - $res .= ''; - } - $res .= '
' . commonUrl::orderby('#', 'book_id', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Titre de la publication'), 'nom', $settings, 'sort' . $change) . '' . commonUrl::orderby(__(''), 'lang', $settings, 'sort' . $change) . '' . __('Pages') . '' . commonUrl::orderby(__('Proprietaire'), 'proprietaire_nom', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Proprietaire'), 'proprietaire_utilisateur', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Facturation'), 'facturable', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Status'), 'status', $settings, 'sort' . $change) . '
' . $book->book_id . '' . $book->nom . '' . mb_strtoupper($book->lang) . '' . $book->parametres->pages . '' . $p . '' . $book->proprietaire_utilisateur . '' . $book->facturable . '' . $core->books_status[$book->status] . '' . $p . '' . $core->books_status[1] . '' . $btVoir . '' . $btEdit . '' . $btStats . '' . $btDownload . '' . $btDel . '
'; - $res .= commonPage::pager($settings['page'], $dao->count($core->user) , $settings['par_page'], 'page' . $change . '/%d'); - $res .= commonUrl::formParPage('parPage' . $change, $settings['par_page'], __('publications'), false); - $res .= '
'; - return $res; - } - - public static function contextBookDownload($id) - { - global $core; - - $versions = array(); - $versions['html'] = array('title' => __('Version online'), 'icon' => cubeMedia::silk('page_white_world.png')); - $versions['win-exe'] = array('title' => __('Version offline') . ' - ' . __('Executable Windows'), 'icon' => cubeMedia::silk('application_view_tile.png')); - $versions['win-ins'] = array('title' => __('Version offline') . ' - ' . __('Installeur Auto-executable Windows'), 'icon' => cubeMedia::silk('application_view_tile.png')); - $versions['mac-exe'] = array('title' => __('Version offline') . ' - ' . __('Exécutable Mac OS X'), 'icon' => cubeMedia::image(IMG . '/macos.png')); - $versions['win-cd'] = array('title' => __('Version offline') . ' - ' . __('CD-ROM') . ' / ' . __('Clé USB'), 'icon' => cubeMedia::silk('cd.png')); - - $res = '
'; - $res .= '
'; - return $res; - } - - public static function contextBookStatus($id) - { - global $core; - - if (wsDroits::admin()) { - $status = $core->books_status; - $status[2] = __('Facturé (associé à un projet)'); - } else { - $status = array(); - $status[-1] = $core->books_status[-1]; - $status[0] = $core->books_status[0]; - } - - $res = '
'; - $res .= '
    '; - $res .= '
  • ' . __("Changer le status de la publication") . '
  • '; - foreach($status as $s => $title) { - $res .= '
  • ' . $title . '
  • '; - } - $res .= '
'; - return $res; - } - - public static function chooseExistingBook() - { - wsDroits::creation(true); - $res = '

' . __("Si votre nouvelle publication a des paramètres en commun avec une publication existante, veuillez rechercher cette publication afin d'attribuer par défaut à votre nouvelle publication les paramètres de l'existante") . '

'; - $res .= '' . __('Rechercher une publication') . ' : ' . form::field('book_nom', 64, 1024) . form::hidden('book', '') . ''; - // $res .= '
'; - $res .= '' . __('Indiquez le titre de votre nouvelle publication') . '' . form::field('title', 64, 1024) . ''; - return $res; - } - - public static function changeBookProprietaire($book_id) - { - global $core; - commonDroits::min(3); - - $dao = new wsDAOBook($core->con); - $book = $dao->selectById($book_id); - - $res = '' . __('Propriétaire actuel') . ' : ' . $book->proprietaire . ''; - $res .= '' . __('Rechercher un utilisateur') . ' : ' . form::field('book_proprietaire', 64, 1024) . form::hidden('proprietaire', '') . ''; - return $res; - } - - public static function chooseBookProject($book_id) - { - global $core; - - wsDroits::admin(true); - - $dao = new wsDAOBook($core->con); - $book = $dao->selectById($book_id); - - $projects = array("--" => '0'); - $r = $core->con->select('SELECT * FROM projets WHERE client IN(SELECT entreprise FROM utilisateurs WHERE utilisateur_id IN( SELECT facturable_id FROM ws_users_tree WHERE utilisateur_id IN (SELECT utilisateur_id FROM utilisateurs WHERE entreprise=\'' . $core->con->escape($book->proprietaire_id) . '\'))) ORDER BY projet_id DESC'); - while ($r->fetch()) { - $projects[$r->projet_id . ' - ' . $r->nom] = $r->projet_id; - } - - $res = '' . __('Choisir un projet') . ' : ' . form::hidden('book_id', $book_id) . form::combo('book_project', $projects, $book->projet) . ''; - $res .= '' . __('ou créer un nouveau projet') . ' : ' . form::field('new_book_project_nom', 64, 1024, $book->nom) . ''; - return $res; - } - - public static function chooseBookTache($book_id, $projet_id) - { - global $core; - wsDroits::admin(true); - - $dao = new wsDAOBook($core->con); - $book = $dao->selectById($book_id); - - $taches = array("--" => '0'); - $r = $core->con->select('SELECT * FROM taches WHERE projet=\'' . $core->con->escape($projet_id) . '\' AND categorie=8'); - while ($r->fetch()) { - $taches[$r->nom] = $r->tache_id; - } - - $res = ''; - - if ($r->count() > 0) { - $res .= '' . __('Choisir une tâche') . ' : ' . form::hidden('book_id', $book_id) . form::hidden('projet_id', $projet_id) . form::combo('tache', $taches) . ''; - $res .= '' . __('ou créer une nouvelle tâche') . ' : ' . form::field('nom', 32, 1024, 'Fluidbook #' . $book->book_id . ' : ' . $book->nom) . ' ' . __('ayant le budget suivant') . ' ' . form::field('budget', 6, 6) . ''; - } else { - $res .= '' . __('Créer une tâche') . ' : ' - . form::hidden('book_id', $book_id) - . form::hidden('projet_id', $projet_id) - . form::hidden('tache', '0') - . form::field('nom', 32, 1024, 'Fluidbook #' . $book->book_id . ' : ' . $book->nom) - . ' ' . __('ayant le budget suivant') - . ' ' . form::field('budget', 6, 6) . ''; - } - - return $res; - } - - public static function editor($args) - { - commonDroits::min(1); - - global $core; - - $args = cubePage::getArgs($args); - $book_id = $args[0]; - - self::checkDocumentVersionOfBook($book_id); - - if ($book_id == 'new') { - $dao = new wsDAOBook($core->con); - $book = $dao->creeEmpty($core->user->utilisateur_id, $core->user->lang); - http::redirect(SITE_PATH . 'editor/' . $book->book_id); - } - - $res = ''; - $res .= '' . __('Edition de la publication') . ' #' . $args[0] . ''; - $res .= ''; - $res .= ''; - $res .= self::editComposition($args); - $res .= ''; - $res .= ''; - echo $res; - } - - public static function editComposition($args) - { - $fv = array(session_name() => session_id(), - 'book_id' => $args[0]); - $res = cubeMedia::flash2(WEBROOT . '/swf/composer.swf?junk=' . TIME, '100%', '100%', $fv, 'composerSwf', 'swfPanel', 10, '#d2d3c7', '', 'false', 'noscale', 'normal', array(), false, true, true); - return $res; - } - - public static function stats($args) - { - $bid = (isset($args[1]))?$args[1]:null; - $annee = (isset($args[2]))?$args[2]:null; - $mois = (isset($args[3]))?$args[3]:null; - return wsStats::display($bid, $annee, $mois); - } - - public static function viewerp($args) - { - commonDroits::min(5); - - $args = cubePage::getArgs($args); - - $e = explode('_', $args[0]); - if (count($e) == 2 || $e[2] < TIME-10) { - $e[2] = TIME; - http::redirect(SITE_PATH . 'viewerp/' . implode('_', $e) . '/'); - exit; - } - - $book_id = $e[0]; - - self::checkDocumentVersionOfBook($book_id); - - echo self::commonViewer($book_id, $e[1]); - } - - public static function vieweru($args) - { - commonDroits::min(5); - - $args = cubePage::getArgs($args); - - $e = explode('_', $args[0]); - if (count($e) == 2 || $e[2] < TIME-10) { - $e[2] = TIME; - http::redirect(SITE_PATH . 'vieweru/' . implode('_', $e) . '/'); - exit; - } - - $book_id = $e[0]; - - self::checkDocumentVersionOfBook($book_id); - - echo self::commonViewer($book_id, $e[1]); - } - - public static function viewer($args) - { - $args = cubePage::getArgs($args); - - $e = explode('_', $args[0]); - if (count($e) == 2 || $e[2] < TIME-10) { - $e[2] = TIME; - http::redirect(SITE_PATH . 'viewer/' . implode('_', $e) . '/'); - exit; - } - - $book_id = $e[0]; - - self::checkDocumentVersionOfBook($book_id); - wsSecureSWF::checkProtectedSWF(); - - echo self::commonViewer($book_id, $e[1]); - } - - public static function commonViewer($book_id, $hash) - { - if (!defined('MINIMIZE_JS')) { - define('MINIMIZE_JS', false); - } - if (!defined('MINIMIZE_CSS')) { - define('MINIMIZE_CSS', false); - } - if (!defined('JQUERY')) { - define('JQUERY', false); - } - - global $core; - global $css; - global $js; - global $standard; - global $meta; - global $jsvar; - - $dao = new wsDAOBook($core->con); - - $book = $dao->selectById($book_id); - if ($book->hash != $hash) { - commonDroits::error(); - } - - if (!$dao->isUpToDate($book_id)) { - $dao->compile($book_id); - $dao->touchCompile($book_id); - } - - $daoTheme = new wsDAOTheme($core->con); - $theme = $daoTheme->getThemeOfBook($book_id, false); - - $webcompile = WEBROOT . '/fluidbook/compile/'; - - $standard = 'XHTML 1.0 Transitional'; - $css = $js = array(); - $css[] = $webcompile . 'style.css'; - $fv = array(); - - $res = ''; - $res .= ''; - $res .= '' . $book->parametres->title . ''; - // Entêtes Facebook - if ($book->parametres->facebook) { - $meta['og:title'] = ($book->parametres->facebook_title == '')?$book->parametres->title:$book->parametres->facebook_title; - if ($book->parametres->facebook_description != '') { - $meta['og:description'] = $book->parametres->facebook_description; - } - $meta['og:image'] = 'http://dev.ws.fluidbook.com/services/facebook_thumbnail?id=' . $book->book_id ; - } - - $res .= ''; - $res .= ''; - $res .= cubeMedia::flash2('index.swf', '100%', '100%', $fv, 'fluidbook', '', 10, '#' . $theme->parametres->loadingBackColor, '', 'true', 'noscale', 'gpu', array('allowScriptAccess' => 'always')); - $js = array($webcompile . 'fluidbook.js'); - $jsvar = array(); - - $gacodes = array(GA); - if ($book->parametres->googleAnalytics != '') { - $gacodes[] = $book->parametres->googleAnalytics; - } - $res .= cubePage::googleAnalytics($gacodes, false); - $res .= ''; - $res .= ''; - - return $res; - } - - public static function valideDownload() - { - global $core; - - $res .= '' . __("Le téléchargement du fluidbook implique qu'il a été testé et définitivement validé.") . '
' . __("Si vous le téléchargez, il vous sera facturé selon les conditions stipulées dans votre contrat.") . ''; - $res .= ''; - - return $res; - } -} - -?> \ No newline at end of file diff --git a/inc/ws/Controlleur/url/class.ws.url.client.php b/inc/ws/Controlleur/url/class.ws.url.client.php deleted file mode 100644 index 6fbba8776..000000000 --- a/inc/ws/Controlleur/url/class.ws.url.client.php +++ /dev/null @@ -1,209 +0,0 @@ -user->getSettings('clients'); - - $shortcuts = array(); - $shortcuts[] = '' . $core->typo->Ajouter('Créer un nouveau client') . ''; - - $filtres = array(); - - $res = commonPage::barre($filtres, 'filtreClients', 'clients', $shortcuts); - $res .= commonPage::tMain(); - $res .= commonPage::bh(); - $res .= '
'; - $res .= self::listeClients(); - $res .= '
'; - $res .= commonPage::bf(); - $res .= commonPage::bMain(); - return $res; - } - - public static function listeClients($dashboard = null, $settings = null) - { - global $core; - commonDroits::min(3); - $settings = is_null($settings)?$core->user->getSettings('clients'):$settings; - $change = is_null($dashboard)?'Client':'Dashboard/' . $dashboard; - $dao = new commonDAOEntreprise($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 .= ''; - $res .= ''; - $i = 0; - foreach($liste as $id => $client) { - if (!is_array($client->contacts)) { - 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('#', 'entreprise_id', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Raison sociale'), 'nom', $settings, 'sort' . $change) . '' . __('Contacts') . '
' . $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'], __('clients')); - $res .= '
'; - return $res; - } - - public static function formClient($entreprise_id = 'new') - { - global $core; - commonDroits::min(3); - $dao = new commonDAOEntreprise($core->con); - $daoUtilisateur = new commonDAOUtilisateur($core->con); - if ($entreprise_id == 'new') { - $client = $dao->cree(); - } else { - $client = $dao->selectById($entreprise_id); - } - - $res = '' . __('Numéro de client') . '' . form::hidden('entreprise_id', $client->entreprise_id) . '' . $client->entreprise_id . ''; - $res .= '' . __('Raison sociale') . '' . form::field('nom', 30, 128, $client->nom) . ''; - $res .= '' . __('Adresse') . '' . form::textarea('adresse', 40, 3, $client->adresse) . ''; - $res .= '' . __('Code postal') . '' . form::field('code_postal', 10, 20, $client->code_postal) . ''; - $res .= '' . __('Ville') . '' . form::field('ville', 30, 128, $client->ville) . ''; - $res .= '' . __('Pays') . '' . form::combo('pays', cubeCountry::getList(), $client->pays) . ''; - if (wsDroits::admin(false)) { - $res .= '' . __('Adresse de facturation') . '' . form::textarea('adresse_facturation', 40, 3, $client->adresse_facturation) . ''; - $res .= '' . __('Numéro de TVA intracommunautaire') . '' . form::field('tva_intra', 15, 13, $client->tva_intra) . ''; - } - // Bloc Fluidbook Workshop - if (wsDroits::admin(false)) { - $res .= '' . __('Fluidbook Workshop') . ''; - $res .= '' . __('Grade') . '' . form::combo('ws_grade', array_flip($core->ws_grades), $client->ws_grade) . ''; - if ($entreprise_id == 'new' || !$client->ws_admin) { - $class = 'empty-field'; - $default_id = ''; - $default = __('Entrez le nom du revendeur ou de l\'administrateur'); - } else { - $class = ''; - $default_id = $client->ws_admin; - $wsa = $daoUtilisateur->selectById($client->ws_admin, 'utilisateurs_entreprise'); - $default = $wsa->utilisateur_id . ' - ' . $wsa->rs . ' (' . $wsa->prenom . ' ' . $wsa->nom . ')'; - } - - $d = $dao->getWSDatas($entreprise_id); - - $res .= '' . __('Revendeur / Administrateur') . '' . form::field('ws_admin_nom', 60, 128, $default, $class) . form::hidden('ws_admin', $default_id) . ''; - if (!is_null($d)) { - $res .= '' . __('Entité facturable') . '' . $d->facturable->prenom . ' ' . $d->facturable->nom . ' (' . $d->facturable->rs . ')'; - $res .= '' . __('Administrateur responsable') . '' . $d->administrateur->prenom . ' ' . $d->administrateur->nom . ' (' . $d->administrateur->rs . ')'; - } - - $daoSignature = new wsDAOSignature($core->con); - $signaturesList = $daoSignature->selectAll(); - - $signatures = array(); - foreach($signaturesList as $s) { - $signatures[$s->nom] = $s->signature_id; - } - - $res .= '' . __('Signatures Fluidbook') . '' . cubeForm::checkMultiple('ws_signatures', $signatures, 5, explode(',', $client->ws_signatures)) . ''; - } - if ($entreprise_id == 'new') { - $daoContact = new commonDAOClient($core->con); - $contact = $daoContact->cree(); - $res .= '' . __('Contact') . ''; - $res .= '' . __('Adresse e-mail') . '' . form::field(array('contact[email]'), 30, 128, $contact->email) . ''; - $res .= '' . __('Mot de passe') . '' . form::field(array('contact[password]'), 30, 128, $contact->password) . ''; - $res .= '' . __('Prénom') . '' . form::field(array('contact[prenom]'), 30, 128, $contact->prenom) . ''; - $res .= '' . __('Nom') . '' . form::field(array('contact[nom]'), 30, 128, $contact->nom) . ''; - $res .= '' . __('Téléphone') . '' . form::field(array('contact[telephone]'), 20, 128, $contact->telephone) . ''; - $res .= '' . __('Mobile') . '' . form::field(array('contact[mobile]'), 20, 128, $contact->mobile) . ''; - $res .= '' . __('Fax') . '' . form::field(array('contact[fax]'), 20, 128, $contact->fax) . ''; - $res .= '' . __('Langue') . '' . form::combo(array('contact[lang]'), cubeLang::getAvailableLangs(true), $contact->lang) . ''; - } - return $res; - } - - public static function listeContacts($entreprise_id) - { - global $core; - commonDroits::min(3); - $dao = new commonDAOEntreprise($core->con); - $contacts = $dao->getContacts($entreprise_id); - - $res = ''; - $res .= ''; - $i = 0; - foreach($contacts as $contact) { - $odd = cubeMath::isOdd($i)?' class="odd"':''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $i++; - } - $res .= '
' . $core->typo->Contact('Ajouter un contact') . '
' . trim($contact->prenom . ' ' . $contact->nom) . '' . $contact->email . 'FTPSe connecter comme ...' . cubeMedia::image(IMG . '/edit.png') . '
'; - return $res; - } - - public static function formContact($client_id = 'new', $entreprise_id = null) - { - global $core; - commonDroits::min(3); - - $dao = new commonDAOClient($core->con); - if ($client_id == 'new') { - $client = $dao->creeFromEntreprise($entreprise_id); - } else { - $client = $dao->selectById($client_id); - } - - $res = '' . __('Numéro de client') . '' . form::hidden('grade', 0) . form::hidden('entreprise', $client->entreprise) . form::hidden('utilisateur_id', $client->utilisateur_id) . '' . $client->utilisateur_id . ''; - $res .= '' . __('Adresse e-mail') . '' . form::field('email', 30, 128, $client->email) . ''; - $res .= '' . __('Mot de passe') . '' . form::field('password', 30, 128, $client->password) . ''; - $res .= '' . __('Prénom du contact') . '' . form::field('prenom', 30, 128, $client->prenom) . ''; - $res .= '' . __('Nom du contact') . '' . form::field('nom', 30, 128, $client->nom) . ''; - $res .= '' . __('Adresse') . '' . form::textarea('adresse', 40, 3, $client->adresse) . ''; - $res .= '' . __('Code postal') . '' . form::field('code_postal', 10, 20, $client->code_postal) . ''; - $res .= '' . __('Ville') . '' . form::field('ville', 30, 128, $client->ville) . ''; - $res .= '' . __('Pays') . '' . form::combo('pays', cubeCountry::getList(), $client->pays) . ''; - $res .= '' . __('Téléphone') . '' . form::field('telephone', 20, 128, $client->telephone) . ''; - $res .= '' . __('Mobile') . '' . form::field('mobile', 20, 128, $client->mobile) . ''; - $res .= '' . __('Fax') . '' . form::field('fax', 20, 128, $client->fax) . ''; - $res .= '' . __('Langue') . '' . form::combo('lang', cubeLang::getAvailableLangs(true), $client->lang) . ''; - if ($client_id != 'new') { - $res .= '' . cubeMedia::spacer(10, 10) . ''; - $res .= '' . __('FTP') . ''; - $res .= '' . __('Se connecter comme ...') . ''; - $res .= '' . __("Paramètres de connexion au Fluidbook Workshop") . '' . __('Adresse') . ' : http://' . $_SERVER['HTTP_HOST'] . '/
' . __("Nom d'utilisateur") . ' : ' . $client->email . '
' . __('Mot de passe') . ' : ' . $client->password . ''; - $res .= '' . cubeMedia::spacer(10, 10) . ''; - } - return $res; - } -} - -?> \ No newline at end of file diff --git a/inc/ws/Controlleur/url/class.ws.url.demande.php b/inc/ws/Controlleur/url/class.ws.url.demande.php deleted file mode 100644 index 3b69a1657..000000000 --- a/inc/ws/Controlleur/url/class.ws.url.demande.php +++ /dev/null @@ -1,207 +0,0 @@ -user->getSettings('demandes'); - - $shortcuts = array(); - - $filtres = array(); - $filtres[] = new commonFiltre(__('Statut'), 'status_demande', $settings['filtres']); - $filtres[] = new commonFiltre(__('Confiées à'), 'demande_moi', $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($dashboard = null, $settings = null) - { - 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 .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $i = 0; - foreach($liste as $id => $demande) { - $odd = cubeMath::isOdd($i)?' class="odd"':''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $revendeur = $demande->revendeur == 0?'-':$demande->revendeur_nom; - $res .= ''; - $administrateur = $demande->administrateur == 0?'-':$demande->administrateur_nom; - $res .= ''; - // Affichage du status - // Si non traitée ou traitée, pas la possibilité de changer le status - if ($demande->status == 0) { - $res .= ''; - } else if ($demande->status == 1) { - if ($demande->revendeur == $core->user->utilisateur_id) { - $res .= ''; - } else { - $res .= ''; - } - } elseif ($demande->status == 2) { - if ($demande->revendeur == $core->user->utilisateur_id) { - $res .= ''; - } else { - $res .= ''; - } - } - // On ne peut éditer que si la facture est non traitée et qu'elle n'a pas commencé à être éditée par un autre administrateur - if (($demande->administrateur == 0 || $demande->administrateur == $core->user->utilisateur_id) && $demande->status == 0) { - $res .= ''; - } else { - $res .= ''; - } - // On n'affiche le bouton "Supprimer" que si la demande est non-traitée - if (($demande->administrateur == 0 || $demande->administrateur == $core->user->utilisateur_id) && $demande->status == 0) { - $res .= ''; - } else { - $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(__('Date') , 'date', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Type') , 'type', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Prospect') . '/' . __('Client'), 'utilisateur_nom', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Confiée à'), 'revendeur_nom', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Gérée par'), 'administrateur_nom', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Statut'), 'status', $settings, 'sort' . $change) . '
' . $demande->demande_id . '' . date(__('d/m/Y H:i'), $demande->date) . '' . $core->demandes_type[$demande->type] . '' . $demande->utilisateur_nom . '' . $revendeur . '' . $administrateur . '' . $core->demandes_status[$demande->status] . '' . __('Je me suis chargé de cette demande') . '' . $core->demandes_status[$demande->status] . ' (x)' . $core->demandes_status[$demande->status] . '' . $core->demandes_status[$demande->status] . '' . cubeMedia::image(IMG . '/edit.png') . '' . cubeMedia::image(IMG . '/delete.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; - } - - public static function formDemande($demande_id = 'new') - { - global $core; - commonDroits::min(5); - $dao = new wsDAODemande($core->con); - $daoUtilisateur = new commonDAOUtilisateur($core->con); - $demande = $dao->selectById($demande_id); - if ($demande->administrateur != 0 && $demande->administrateur != $core->user->utilisateur_id) { - $res = '

' . __("Cette demande est actuellement en cours d'édition par un autre administrateur") . '

'; - return $res; - } - if ($demande->status > 1) { - $res = '

' . __("Cette demande est actuellement en cours de traitement") . '

'; - return $res; - } - // On place la demande comme en cours d'édition - $dao->setAdministrateur($demande_id, $core->user->utilisateur_id); - // On vérifie que l'utilisateur n'est pas déjà géré par un revendeur - $demandeur = $daoUtilisateur->selectById($demande->utilisateur, 'utilisateurs_entreprise'); - $administrateurs = $daoUtilisateur->selectWSAdministrateursId(); - if (!is_null($demandeur->ws_admin) && !in_array($demandeur->ws_admin, $administrateurs)) { - // Si déjà géré par un revendeur - $revendeur = $daoUtilisateur->selectById($demandeur->ws_admin, 'utilisateurs_entreprise'); - $actions[__('Je confie la demande à ' . $revendeur->rs . ' (' . $revendeur->prenom . ' ' . $revendeur->nom . ')')] = $demandeur->ws_admin; - } else { - $liste = $daoUtilisateur->selectWSRevendeursFacturables(); - $revendeurs = array(); - foreach($liste as $revendeur) { - $revendeurs[$revendeur->rs . '(' . $revendeur->prenom . ' ' . $revendeur->nom . ')'] = $revendeur->utilisateur_id; - } - - $actions = array(__('Je vais me charger de cette demande') => $core->user->utilisateur_id); - $actions[' '] = array(); - $actions[__('Je confie la demande à') . ' : '] = $revendeurs; - } - - $res = '' . __('Numéro de demande') . '' . form::hidden('demande_id', $demande->demande_id) . '' . $demande->demande_id . ''; - $res .= '' . __('Date de la demande') . '' . date(__('d/m/Y H:i'), $demande->date) . ''; - $res .= '' . __('Emetteur de la demande') . '' . $demande->utilisateur_nom . ''; - $res .= '' . __('Nombre de pages') . '' . $demande->pages . ''; - $res .= '' . __('Nombre de liens') . '' . $demande->liens . ''; - $res .= '' . __('Nombre de langues') . '' . $demande->langues . ''; - $res .= '' . __('Détails') . '' . $demande->details . ''; - $res .= '' . __('Action') . '' . form::combo('revendeur', $actions) . ''; - $res .= ''; - - return $res; - } - - public static function reponseDemande($args) - { - global $core; - - commonDroits::min(3); - - $res = commonPage::barre(); - $res .= commonPage::tMain(null, false); - - $res .= commonPage::bh(); - - $demande_id = $args[1]; - $revendeur_id = $args[2]; - - $dao = new wsDAODemande($core->con); - $demande = $dao->selectById($demande_id); - if ($demande->revendeur != $revendeur_id || $demande->revendeur != $core->user->utilisateur_id) { - commonDroits::error(); - exit; - } - - $res = commonPage::barre(); - $res .= commonPage::tMain(); - $res .= commonPage::bh(); - $res .= '
'; - $res .= '

' . $core->typo->Titre(__('Prendre en charge une demande de devis')) . '

'; - $res .= '

'; - $res .= '

' . __('Si vous acceptez de traiter la demande suivante, veuillez cliquer sur le bouton "Accepter la demande" situé à droite de la description.'); - $res .= ' ' . __('Vous avez également la possibilité de décliner la demande en cliquant sur le bouton "Décliner la demande"') . "

"; - $res .= '

'; - - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= '
' . __("Détails de la demande") . '' . __('Votre action') . '
' . __('Numéro de demande') . '' . $demande->demande_id . '' . '' . cubeMedia::cssRollover($core->typo->BookTelecharger('Accepter la demande', '', false)) . '' . '
' . __('Date de la demande') . '' . date(__('d/m/Y H:i'), $demande->date) . '' . '' . cubeMedia::cssRollover($core->typo->Supprimer('Décliner la demande', '', false)) . '' . '
' . __('Client') . ' / ' . __('Prospect') . '' . $demande->utilisateur_nom . '
' . __('Nombre de pages') . '' . $demande->pages . '
' . __('Nombre de liens') . '' . $demande->liens . '
' . __('Nombre de langues') . '' . $demande->langues . '
' . __('Détails') . '' . $demande->details . '
'; - - $res .= '
'; - $res .= commonPage::bf(); - $res .= commonPage::bMain(); - return $res; - } -} - -?> \ No newline at end of file diff --git a/inc/ws/Controlleur/url/class.ws.url.traduction.php b/inc/ws/Controlleur/url/class.ws.url.traduction.php deleted file mode 100644 index 7efd737db..000000000 --- a/inc/ws/Controlleur/url/class.ws.url.traduction.php +++ /dev/null @@ -1,115 +0,0 @@ -user->lang); - $existingLangs = array(); - - $dao = new wsDAOLang($core->con); - $langs = $dao->selectAll(); - foreach($langs as $lang) { - if (!isset($allLangs[$lang->lang_id])) { - continue; - } - $existingLangs[$lang->lang_id] = $allLangs[$lang->lang_id]; - - unset($allLangs[$lang->lang_id]); - } - - $langs = array(__('Langues configurées') => array_flip($existingLangs), __('Autres langues') => array_flip($allLangs)); - - $res = commonPage::barre(); - $res .= commonPage::tMain(null, false); - - $res .= commonPage::bh(); - $res .= '
'; - $res .= ''; - $res .= ''; - $res .= '
' . __('Sélectionnez la langue à configurer') . ' : ' . form::combo('lang', $langs, $args[1]) . '
'; - $res .= '
'; - $res .= commonPage::bf(); - - $res .= '
'; - $res .= self::formLang($args[1]); - $res .= '
'; - $res .= commonPage::bMain(true); - - return $res; - } - - public static function formLang($lang_id) - { - commonDroits::min(5); - global $core; - $dao = new wsDAOLang($core->con); - $lang = $dao->selectById($lang_id); - - $res = '
'; - - $res .= commonPage::bh(); - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= '
' . __('Police de caractères') . ' : ' . form::hidden('lang', $lang_id) . form::combo('font', self::getFonts(), $lang->font) . '
' . __('Jeux de caractères') . ' : ' . form::combo('charset', self::getCharsets(), $lang->charset) . '
' . __("Langue de l'installeur") . ' : ' . form::combo('nsis', self::getNSISLangs(), $lang->nsis) . '
' . $core->typo->Ajouter('Valider') . '
'; - $res .= commonPage::bf(); - - $res .= commonPage::bh(); - $res .= cubeLang::translationForm(PLAYER_SOURCES, $lang_id , null, 'liste', array(), '' . $core->typo->Ajouter(__('Enregistrer')) . '', $lang->traductions); - $res .= commonPage::bf(); - $res .= '
'; - return $res; - } - - public static function getFonts() - { - $formats = array('ttf', 'otf', 'TTF', 'OTF'); - - $dr = opendir(FONT_PATH); - $fonts = array(); - while ($file = readdir($dr)) { - if ($file == '.' || $file == '..' || !in_array(files::getExtension($file), $formats)) { - continue; - } - $fonts[$file] = $file; - } - return $fonts; - } - - protected static function getCharsets() - { - $sets = cubeFlexFontAsset::getSets(); - $res = array(); - foreach($sets as $k => $v) { - $res[$k] = $k; - } - return $res; - } - - protected static function getNSISLangs() - { - $res = array(); - $dir = WS_FILES . '/nsislangs'; - $dr = opendir($dir); - while ($file = readdir($dr)) { - if ($file == '.' || $file == '..') { - continue; - } - $e = explode('.', $file); - $res[$e[0]] = $e[0]; - } - - ksort($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 e39de1582..44867a15a 100644 --- a/inc/ws/DAO/class.ws.dao.demande.php +++ b/inc/ws/DAO/class.ws.dao.demande.php @@ -102,22 +102,17 @@ class wsDAODemande extends commonDAO { public function accepteDemande($demande_id, $revendeur) { - $demande = $this->setStatus($demande_id, 2); + $c = $this->con->openCursor('demandes'); + $c->status = 2; + $c->update('WHERE demande_id=\'' . $this->con->escape($demande_id) . '\''); + + $demande = $this->selectById($demande_id); // Mets également à jour l'entreprise afin d'associer client et revendeur $daoEntreprise = new commonDAOEntreprise($this->con); $daoEntreprise->setWSAdmin($demande->entreprise, $revendeur); return $demande; } - public function setStatus($demande_id, $status) - { - $c = $this->con->openCursor('demandes'); - $c->status = $status; - $c->update('WHERE demande_id=\'' . $this->con->escape($demande_id) . '\''); - - return $this->selectById($demande_id); - } - public function setRevendeur($demande_id, $revendeur) { // Mets à jour l'entreprise -- 2.39.5