\r
$this->grades = array(0 => __('Client'), 1 => __('Equipier'), 2 => __('Gérant'), 3 => __('Comptable'));\r
$this->categories = array(0 => __('Non défini'), 1 => __('Gestion de projet'),\r
- 2 => __('Design Web'), 3 => __('Design Industriel'), 4 => __('Print'),\r
- 5 => __('Newsletter'), 6 => __('Développement PHP'), 7 => __('Développement Flash'),\r
- 8 => __('Fluidbook'), 9 => __('Formation'), 10 => __('Administratif'), 11 => __('Divers'),\r
- 12 => __('Intégration HTML'), 13 => __('Motion design'), 14 => __('Design graphique'),\r
- 15 => __('Bandeaux de pub'), 16 => __('Applications mobiles'), 17 => __('Prise de vue photo/vidéo'), 18 => __('Hébergement'));\r
+ 2 => __('Design Web'), 3 => __('Design Industriel'), 4 => __('Print'),\r
+ 5 => __('Newsletter'), 6 => __('Développement PHP'), 7 => __('Développement Flash'),\r
+ 8 => __('Fluidbook'), 9 => __('Formation'), 10 => __('Administratif'), 11 => __('Divers'),\r
+ 12 => __('Intégration HTML'), 13 => __('Motion design'), 14 => __('Design graphique'),\r
+ 15 => __('Bandeaux de pub'), 16 => __('Applications mobiles'), 17 => __('Prise de vue photo/vidéo'), 18 => __('Hébergement'));\r
$this->projets_status = array(0 => __('En cours'), 1 => __('Terminé'));\r
$this->devis_status = array(0 => __('Brouillon'), 1 => __('Envoyé'),\r
- 2 => __('Validé'), 3 => __('Refusé'));\r
+ 2 => __('Validé'), 3 => __('Refusé'));\r
$this->demandes_status = array(0 => __('Non traitée'), 1 => __('Confiée à un revendeur'), 2 => __('Traitée'));\r
$this->factures_status = array(0 => __('Brouillon'), 1 => __('Attente'),\r
- 2 => __('Payée'), 3 => __('Annulée'), 4 => __('Avoir'), 5 => __('Impayée'));\r
+ 2 => __('Payée'), 3 => __('Annulée'), 4 => __('Avoir'), 5 => __('Impayée'));\r
$this->books_status = array(-1 => __('Brouillon'), 0 => __('Prêt'), 1 => __('Téléchargé'), 2 => __('Facturé'));\r
$this->agences = array('Paris', 'Montpellier');\r
- $this->client_type=array(0=>__('Non défini'),1=>__('TPE'),2=>__('Startup'),3=>__('PME'),4=>__('Agence'),5=>__('Grande entreprise'));\r
+ $this->client_type = array(0 => __('Non défini'), 1 => __('TPE'), 2 => __('Startup'), 3 => __('PME'), 4 => __('Agence'), 5 => __('Grande entreprise'));\r
$this->demandes_type = array(0 => __('Non défini'),\r
- 1 => __('Catalogue'),\r
- 2 => __('Magazine / Presse'),\r
- 3 => __('Rapport annuel'),\r
- 4 => __('Plaquette de société'),\r
- 5 => __('Brochure touristique'),\r
- 6 => __("Manuel d'utilisation"),\r
- 7 => __('Livre'));\r
+ 1 => __('Catalogue'),\r
+ 2 => __('Magazine / Presse'),\r
+ 3 => __('Rapport annuel'),\r
+ 4 => __('Plaquette de société'),\r
+ 5 => __('Brochure touristique'),\r
+ 6 => __("Manuel d'utilisation"),\r
+ 7 => __('Livre'));\r
$this->ws_grades = array(0 => __("Pas d'accès"), 1 => __('Client'), 2 => __('Client (droits de création)'), 3 => __('Revendeur'), 4 => __('Revendeur (droits de création)'), 5 => __('Administrateur'));\r
}\r
\r
$db->entreprises->date_creation('integer', 0, false);\r
$db->entreprises->notes('text', 0, false);\r
$db->entreprises->site('varchar', 256, false);\r
- $db->entreprises->type('integer',0,false);\r
+ $db->entreprises->type('integer', 0, false);\r
$db->entreprises->ws_signatures('text', 0, false);\r
// Clés\r
$db->entreprises->primary('pk_entreprises', 'entreprise_id');\r
$this->views->createView('equipiers', 'SELECT * FROM utilisateurs WHERE grade>=1');\r
$this->views->createView('gerants', 'SELECT * FROM utilisateurs WHERE grade=2');\r
$this->views->createView('impayes_entreprises', 'SELECT SUM(total_ht) AS impaye, u.entreprise AS entreprise '\r
- . 'FROM utilisateurs u LEFT JOIN projets p ON u.utilisateur_id=p.client LEFT JOIN factures f ON f.projet=p.projet_id '\r
- . 'WHERE f.status=1 GROUP BY u.entreprise');\r
+ . 'FROM utilisateurs u LEFT JOIN projets p ON u.utilisateur_id=p.client LEFT JOIN factures f ON f.projet=p.projet_id '\r
+ . 'WHERE f.status=1 GROUP BY u.entreprise');\r
$this->views->createView('entreprises_inter', 'SELECT e.*,'\r
- . 'SUM(f.total_ht) AS ca '\r
- . 'FROM entreprises e LEFT JOIN utilisateurs u ON u.entreprise=e.entreprise_id AND grade=0 '\r
- . 'LEFT JOIN projets p ON p.client=u.utilisateur_id '\r
- . 'LEFT JOIN factures f ON f.projet=p.projet_id AND f.status IN(1,2) '\r
- . 'GROUP BY e.entreprise_id');\r
+ . 'SUM(f.total_ht) AS ca '\r
+ . 'FROM entreprises e LEFT JOIN utilisateurs u ON u.entreprise=e.entreprise_id AND grade=0 '\r
+ . 'LEFT JOIN projets p ON p.client=u.utilisateur_id '\r
+ . 'LEFT JOIN factures f ON f.projet=p.projet_id AND f.status IN(1,2) '\r
+ . 'GROUP BY e.entreprise_id');\r
$this->views->createView('entreprises_vue', 'SELECT e.*,i.impaye AS impaye '\r
- . 'FROM entreprises_inter e LEFT JOIN impayes_entreprises i ON e.entreprise_id=i.entreprise');\r
+ . 'FROM entreprises_inter e LEFT JOIN impayes_entreprises i ON e.entreprise_id=i.entreprise');\r
$this->views->createView('entreprises_ws', 'SELECT e.*, a.prenom AS administrateur, r.nom AS revendeur,a.utilisateur_id AS ws_super_admin '\r
- . 'FROM entreprises e '\r
- . 'LEFT JOIN ws_entreprises_tree ri ON ri.entreprise_id=e.entreprise_id '\r
- . 'LEFT JOIN utilisateurs ur ON e.ws_admin=ur.utilisateur_id '\r
- . 'LEFT JOIN entreprises r ON ur.entreprise=r.entreprise_id '\r
- . 'LEFT JOIN utilisateurs a ON ri.administrateur_id=a.utilisateur_id ');\r
+ . 'FROM entreprises e '\r
+ . 'LEFT JOIN ws_entreprises_tree ri ON ri.entreprise_id=e.entreprise_id '\r
+ . 'LEFT JOIN utilisateurs ur ON e.ws_admin=ur.utilisateur_id '\r
+ . 'LEFT JOIN entreprises r ON ur.entreprise=r.entreprise_id '\r
+ . 'LEFT JOIN utilisateurs a ON ri.administrateur_id=a.utilisateur_id ');\r
$this->views->createView('clients_entreprise', 'SELECT u.*,e.nom AS rs, e.adresse_facturation AS adresse_facturation, e.site AS site, e.type AS type '\r
- . 'FROM entreprises e LEFT JOIN utilisateurs u ON u.entreprise=e.entreprise_id AND u.grade=0');\r
+ . 'FROM entreprises e LEFT JOIN utilisateurs u ON u.entreprise=e.entreprise_id AND u.grade=0');\r
$this->views->createView('utilisateurs_entreprise', 'SELECT u.*,e.nom AS rs, e.adresse_facturation AS adresse_facturation, '\r
- . 'e.ws_grade, e.ws_admin, e.ws_signatures AS ws_signatures, e.site AS site '\r
- . 'FROM entreprises e LEFT JOIN utilisateurs u ON u.entreprise=e.entreprise_id');\r
+ . 'e.ws_grade, e.ws_admin, e.ws_signatures AS ws_signatures, e.site AS site '\r
+ . 'FROM entreprises e LEFT JOIN utilisateurs u ON u.entreprise=e.entreprise_id');\r
$this->views->createView('clients', 'SELECT u.*,e.nom AS rs, e.adresse_facturation AS adresse_facturation, e.site AS site, i.impaye, '\r
- . 'SUM(f.total_ht) AS ca '\r
- . 'FROM entreprises e LEFT JOIN impayes_entreprises i ON e.entreprise_id=i.entreprise LEFT JOIN utilisateurs u ON u.entreprise=e.entreprise_id AND u.grade=0 LEFT JOIN projets p ON p.client=u.utilisateur_id LEFT JOIN factures f ON f.projet=p.projet_id AND f.status IN(1,2) '\r
- . 'GROUP BY u.utilisateur_id', 'TEMPTABLE');\r
+ . 'SUM(f.total_ht) AS ca '\r
+ . 'FROM entreprises e LEFT JOIN impayes_entreprises i ON e.entreprise_id=i.entreprise LEFT JOIN utilisateurs u ON u.entreprise=e.entreprise_id AND u.grade=0 LEFT JOIN projets p ON p.client=u.utilisateur_id LEFT JOIN factures f ON f.projet=p.projet_id AND f.status IN(1,2) '\r
+ . 'GROUP BY u.utilisateur_id', 'TEMPTABLE');\r
$this->views->createView('taches_books', 'SELECT tache,GROUP_CONCAT(book_id ORDER BY book_id ASC SEPARATOR ",") AS books FROM books WHERE tache>0 GROUP BY tache');\r
$this->views->createView('taches_vue', 'SELECT taches.tache_id,taches.nom,taches.categorie,taches.type,taches.budget,taches.projet,taches.taux_journalier,tb.books, '\r
- . '(SUM(timereport.heures)/' . JOURNEE . ') AS jours_consommes, ((SUM(timereport.heures)/' . JOURNEE . ')/(taches.budget/taches.taux_journalier))*100 AS progression,(taches.budget/taches.taux_journalier) AS jours_prevus '\r
- . 'FROM taches LEFT JOIN timereport ON taches.tache_id=timereport.tache_id '\r
- . 'LEFT JOIN taches_books tb ON tb.tache=taches.tache_id '\r
- . 'GROUP BY taches.tache_id');\r
+ . '(SUM(timereport.heures)/' . JOURNEE . ') AS jours_consommes, ((SUM(timereport.heures)/' . JOURNEE . ')/(taches.budget/taches.taux_journalier))*100 AS progression,(taches.budget/taches.taux_journalier) AS jours_prevus '\r
+ . 'FROM taches LEFT JOIN timereport ON taches.tache_id=timereport.tache_id '\r
+ . 'LEFT JOIN taches_books tb ON tb.tache=taches.tache_id '\r
+ . 'GROUP BY taches.tache_id');\r
$this->views->createView('taches_projet', 'SELECT projet, '\r
- . 'SUM(jours_prevus) AS jours_prevus,SUM(budget) AS budget, '\r
- . 'SUM(jours_consommes) AS jours_consommes, (SUM(jours_consommes)/SUM(jours_prevus))*100 AS progression '\r
- . 'FROM taches_vue GROUP BY projet');\r
- \r
- $this->views->createView('taches_projet_hf', 'SELECT projet, '\r
- . 'SUM(jours_prevus) AS jours_prevus,SUM(budget) AS budget, '\r
- . 'SUM(jours_consommes) AS jours_consommes, (SUM(jours_consommes)/SUM(jours_prevus))*100 AS progression '\r
- . 'FROM taches_vue WHERE categorie!=8 GROUP BY projet');\r
- \r
+ . 'SUM(jours_prevus) AS jours_prevus,SUM(budget) AS budget, '\r
+ . 'SUM(jours_consommes) AS jours_consommes, (SUM(jours_consommes)/SUM(jours_prevus))*100 AS progression '\r
+ . 'FROM taches_vue GROUP BY projet');\r
+\r
+ $this->views->createView('taches_projet_hf', 'SELECT projet, '\r
+ . 'SUM(jours_prevus) AS jours_prevus,SUM(budget) AS budget, '\r
+ . 'SUM(jours_consommes) AS jours_consommes, (SUM(jours_consommes)/SUM(jours_prevus))*100 AS progression '\r
+ . 'FROM taches_vue WHERE categorie!=8 GROUP BY projet');\r
+\r
$this->views->createView('devis_vue', 'SELECT devis.devis_id,devis.nom,devis.lignes,devis.status,devis.total_ht,devis.date_creation,devis.email,clients.utilisateur_id AS client_id,clients.rs AS client,equipiers.prenom AS createur,equipiers.utilisateur_id AS createur_id,devis.adresse '\r
- . 'FROM devis,clients,equipiers '\r
- . 'WHERE devis.client=clients.utilisateur_id AND devis.createur=equipiers.utilisateur_id');\r
+ . 'FROM devis,clients,equipiers '\r
+ . 'WHERE devis.client=clients.utilisateur_id AND devis.createur=equipiers.utilisateur_id');\r
$this->views->createView('factures_payees', 'SELECT * FROM factures WHERE status=2');\r
$this->views->createView('factures_valides', 'SELECT * FROM factures WHERE status IN(1,2,5)');\r
$this->views->createView('projets_inter', 'SELECT projets.projet_id,projets.nom,projets.status,projets.date_debut,projets.date_fin,projets.date_creation,projets.deadline,projets.devis,'\r
- . 'YEAR(FROM_UNIXTIME(projets.date_debut)) AS annee_debut,'\r
- . 'IF(date_fin=0,YEAR(NOW()),YEAR(FROM_UNIXTIME(projets.date_fin))) AS annee_fin,'\r
- . 'clients.rs AS client,equipiers.prenom AS chef,equipiers.utilisateur_id AS chef_id,clients.utilisateur_id AS client_id '\r
- . 'FROM projets JOIN clients_entreprise clients ON projets.client=clients.utilisateur_id '\r
- . 'JOIN equipiers ON projets.chef=equipiers.utilisateur_id');\r
+ . 'YEAR(FROM_UNIXTIME(projets.date_debut)) AS annee_debut,'\r
+ . 'IF(date_fin=0,YEAR(NOW()),YEAR(FROM_UNIXTIME(projets.date_fin))) AS annee_fin,'\r
+ . 'clients.rs AS client,equipiers.prenom AS chef,equipiers.utilisateur_id AS chef_id,clients.utilisateur_id AS client_id '\r
+ . 'FROM projets JOIN clients_entreprise clients ON projets.client=clients.utilisateur_id '\r
+ . 'JOIN equipiers ON projets.chef=equipiers.utilisateur_id');\r
$this->views->createView('projets_facturation', 'SELECT projet,SUM(IF(status IN(1,2,5),total_ht,0)) AS montant_facture, SUM(IF(status=2,total_ht,0)) AS montant_paye FROM factures GROUP BY projet');\r
$this->views->createView('projets_vue', 'SELECT p.*,f.montant_facture,f.montant_paye, '\r
- . 't.jours_prevus,t.jours_consommes,t.progression,t.budget AS budget, '\r
- . 'IF(t.budget>0,f.montant_paye/t.budget,1) AS rapport_paiement, '\r
- . 'IF(t.budget>0,f.montant_facture/t.budget,1) AS rapport_facturation '\r
- . 'FROM projets_inter p '\r
- . 'LEFT JOIN projets_facturation f ON f.projet=p.projet_id '\r
- . 'LEFT JOIN taches_projet t ON p.projet_id=t.projet');\r
- \r
- $this->views->createView('projets_vue_hf', 'SELECT p.*,f.montant_facture,f.montant_paye, '\r
- . 't.jours_prevus,t.jours_consommes,t.progression,t.budget AS budget, '\r
- . 'IF(t.budget>0,f.montant_paye/t.budget,1) AS rapport_paiement, '\r
- . 'IF(t.budget>0,f.montant_facture/t.budget,1) AS rapport_facturation '\r
- . 'FROM projets_inter p '\r
- . 'LEFT JOIN projets_facturation f ON f.projet=p.projet_id '\r
- . 'LEFT JOIN taches_projet_hf t ON p.projet_id=t.projet');\r
- \r
+ . 't.jours_prevus,t.jours_consommes,t.progression,t.budget AS budget, '\r
+ . 'IF(t.budget>0,f.montant_paye/t.budget,1) AS rapport_paiement, '\r
+ . 'IF(t.budget>0,f.montant_facture/t.budget,1) AS rapport_facturation '\r
+ . 'FROM projets_inter p '\r
+ . 'LEFT JOIN projets_facturation f ON f.projet=p.projet_id '\r
+ . 'LEFT JOIN taches_projet t ON p.projet_id=t.projet');\r
+\r
+ $this->views->createView('projets_vue_hf', 'SELECT p.*,f.montant_facture,f.montant_paye, '\r
+ . 't.jours_prevus,t.jours_consommes,t.progression,t.budget AS budget, '\r
+ . 'IF(t.budget>0,f.montant_paye/t.budget,1) AS rapport_paiement, '\r
+ . 'IF(t.budget>0,f.montant_facture/t.budget,1) AS rapport_facturation '\r
+ . 'FROM projets_inter p '\r
+ . 'LEFT JOIN projets_facturation f ON f.projet=p.projet_id '\r
+ . 'LEFT JOIN taches_projet_hf t ON p.projet_id=t.projet');\r
+\r
$this->views->createView('factures_vue', 'SELECT factures.facture_id,factures.nom,factures.lignes,factures.status,factures.total_ht,factures.date_creation,factures.texte_complementaire,factures.informations_paiement,factures.date_paiement,factures.adresse,factures.avoir,'\r
- . 'projets.projet_id AS projet_id,projets.nom AS projet,clients.utilisateur_id AS client_id,clients.rs as client,equipiers.prenom AS createur,equipiers.utilisateur_id AS createur_id '\r
- . 'FROM factures,projets,equipiers,clients '\r
- . 'WHERE factures.projet=projets.projet_id AND clients.utilisateur_id=projets.client AND factures.createur=equipiers.utilisateur_id AND (factures.facture_id>=0 OR factures.status=1) ');\r
+ . 'projets.projet_id AS projet_id,projets.nom AS projet,clients.utilisateur_id AS client_id,clients.rs as client,equipiers.prenom AS createur,equipiers.utilisateur_id AS createur_id '\r
+ . 'FROM factures,projets,equipiers,clients '\r
+ . 'WHERE factures.projet=projets.projet_id AND clients.utilisateur_id=projets.client AND factures.createur=equipiers.utilisateur_id AND (factures.facture_id>=0 OR factures.status=1) ');\r
$this->views->createView('projets_timereport', 'SELECT * FROM projets_vue WHERE status=0');\r
$this->views->createView('order_timereport', 'SELECT utilisateur_id,projet AS projet_id,MAX(date) AS derniere_activite FROM timereport,taches,projets WHERE taches.tache_id=timereport.tache_id AND taches.projet=projets.projet_id AND projets.status=0 GROUP BY utilisateur_id,taches.projet ORDER BY utilisateur_id ASC,MAX(date) DESC');\r
$this->views->createView('catype', 'SELECT SUM(total_ht) AS ca, YEAR(FROM_UNIXTIME(date_creation)) annee FROM factures_vue WHERE status BETWEEN 1 AND 4 GROUP BY annee');\r
$this->views->createView('cam', 'SELECT SUM(total_ht) AS ca, DATE_FORMAT(FROM_UNIXTIME(date_creation),\'%Y-%m\') mois FROM factures WHERE status BETWEEN 1 AND 4 GROUP BY mois');\r
$this->views->createView('cat', 'SELECT SUM(total_ht) AS ca, CONCAT_WS(\'-\',YEAR(FROM_UNIXTIME(date_creation)),QUARTER(FROM_UNIXTIME(date_creation))) trimestre FROM factures WHERE status BETWEEN 1 AND 4 GROUP BY trimestre');\r
$this->views->createView('ftpaccess', 'SELECT email AS userid,password AS passwd,utilisateur_id AS uid,'\r
- . '\'1000\' AS gid,CONCAT(\'' . FTPROOT . '\',utilisateur_id) AS homedir, \'/bin/false\' AS shell '\r
- . 'FROM utilisateurs WHERE grade=0 '\r
- . 'UNION '\r
- . 'SELECT email AS userid,ws_password AS passwd,utilisateur_id AS uid,'\r
- . '\'1000\' AS gid,CONCAT(\'' . FTPROOT . '\',utilisateur_id) AS homedir, \'/bin/false\' AS shell '\r
- . 'FROM utilisateurs WHERE grade=0 AND ws_password!=\'\'');\r
+ . '\'1000\' AS gid,CONCAT(\'' . FTPROOT . '\',utilisateur_id) AS homedir, \'/bin/false\' AS shell '\r
+ . 'FROM utilisateurs WHERE grade=0 '\r
+ . 'UNION '\r
+ . 'SELECT email AS userid,ws_password AS passwd,utilisateur_id AS uid,'\r
+ . '\'1000\' AS gid,CONCAT(\'' . FTPROOT . '\',utilisateur_id) AS homedir, \'/bin/false\' AS shell '\r
+ . 'FROM utilisateurs WHERE grade=0 AND ws_password!=\'\'');\r
$this->views->createView('chiffres_categories', 'SELECT p.annee_fin AS annee, t.categorie, SUM(t.budget) AS ca '\r
- . 'FROM projets_vue p, taches_vue t '\r
- . 'WHERE t.projet=p.projet_id '\r
- . 'GROUP BY t.categorie,p.annee_fin');\r
+ . 'FROM projets_vue p, taches_vue t '\r
+ . 'WHERE t.projet=p.projet_id '\r
+ . 'GROUP BY t.categorie,p.annee_fin');\r
\r
$this->views->createView('temps_categories', 'SELECT p.annee_fin AS annee, t.categorie, SUM(t.jours_consommes) AS jours_consommes,SUM(t.jours_prevus) AS jours_prevus '\r
- . 'FROM projets_vue p, taches_vue t '\r
- . 'WHERE t.projet=p.projet_id '\r
- . 'GROUP BY t.categorie,p.annee_fin');\r
+ . 'FROM projets_vue p, taches_vue t '\r
+ . 'WHERE t.projet=p.projet_id '\r
+ . 'GROUP BY t.categorie,p.annee_fin');\r
\r
$this->views->createView('collections_vue', 'SELECT b.*,b.proprietaire AS proprietaire_id,'\r
- . 'CONCAT(c.rs,\' (\',c.prenom,\' \',c.nom,\')\') AS proprietaire_nom,'\r
- . 'CONCAT(c.prenom,\' \',c.nom) AS proprietaire_utilisateur '\r
- . 'FROM book_collection b '\r
- . 'LEFT JOIN utilisateurs_entreprise c ON b.proprietaire=c.utilisateur_id ');\r
+ . 'CONCAT(c.rs,\' (\',c.prenom,\' \',c.nom,\')\') AS proprietaire_nom,'\r
+ . 'CONCAT(c.prenom,\' \',c.nom) AS proprietaire_utilisateur '\r
+ . 'FROM book_collection b '\r
+ . 'LEFT JOIN utilisateurs_entreprise c ON b.proprietaire=c.utilisateur_id ');\r
$this->views->createView('books_vue', 'SELECT b.*,b.proprietaire AS proprietaire_id,'\r
- . 'CONCAT(c.rs,\' (\',c.prenom,\' \',c.nom,\')\') AS proprietaire_nom,'\r
- . 'CONCAT(c.prenom,\' \',c.nom) AS proprietaire_utilisateur,c.ws_admin,'\r
- . 'f.rs AS facturable, t.facturable_id AS facturable_id, ta.projet AS projet,'\r
- . 'IF(c.ws_grade>=5,c.utilisateur_id,a.utilisateur_id) AS super_admin '\r
- . 'FROM books b '\r
- . 'LEFT JOIN utilisateurs_entreprise c ON b.proprietaire=c.utilisateur_id '\r
- . 'LEFT JOIN ws_users_tree t ON t.utilisateur_id=c.utilisateur_id '\r
- . 'LEFT JOIN utilisateurs a ON t.administrateur_id=a.utilisateur_id '\r
- . 'LEFT JOIN utilisateurs_entreprise f ON t.facturable_id=f.utilisateur_id '\r
- . 'LEFT JOIN taches ta ON ta.tache_id=b.tache', 'TEMPTABLE');\r
+ . 'CONCAT(c.rs,\' (\',c.prenom,\' \',c.nom,\')\') AS proprietaire_nom,'\r
+ . 'CONCAT(c.prenom,\' \',c.nom) AS proprietaire_utilisateur,c.ws_admin,'\r
+ . 'f.rs AS facturable, t.facturable_id AS facturable_id, ta.projet AS projet,'\r
+ . 'IF(c.ws_grade>=5,c.utilisateur_id,a.utilisateur_id) AS super_admin '\r
+ . 'FROM books b '\r
+ . 'LEFT JOIN utilisateurs_entreprise c ON b.proprietaire=c.utilisateur_id '\r
+ . 'LEFT JOIN ws_users_tree t ON t.utilisateur_id=c.utilisateur_id '\r
+ . 'LEFT JOIN utilisateurs a ON t.administrateur_id=a.utilisateur_id '\r
+ . 'LEFT JOIN utilisateurs_entreprise f ON t.facturable_id=f.utilisateur_id '\r
+ . 'LEFT JOIN taches ta ON ta.tache_id=b.tache', 'TEMPTABLE');\r
+ $this->views->createView('books_nbpages_vue', 'SELECT book_id, MAX(book_page) AS nb_pages '\r
+ . 'FROM book_pages '\r
+ . 'GROUP BY book_id');\r
+ $this->views->createView('books_analysis', 'SELECT b.book_id,p.nb_pages '\r
+ . 'FROM books_vue b LEFT JOIN books_nbpages_vue p ON b.book_id=p.book_id '\r
+ . 'WHERE b.nom NOT LIKE \'%demo%\' AND b.status>0');\r
$this->views->createView('themes_books_nb', 'SELECT theme,COUNT(*) AS nb FROM books GROUP BY theme');\r
$this->views->createView('themes_vue', 'SELECT t.*, b.nb as nbBooks, CONCAT(e.prenom,\' \',e.nom,\' (\',e.rs,\')\') AS proprietaire_nom '\r
- . 'FROM themes t '\r
- . 'LEFT JOIN themes_books_nb b ON t.theme_id=b.theme '\r
- . 'LEFT JOIN utilisateurs_entreprise e ON t.proprietaire=e.utilisateur_id');\r
+ . 'FROM themes t '\r
+ . 'LEFT JOIN themes_books_nb b ON t.theme_id=b.theme '\r
+ . 'LEFT JOIN utilisateurs_entreprise e ON t.proprietaire=e.utilisateur_id');\r
$this->views->createView('demandes_vue', 'SELECT d.*, CONCAT(c.rs,\' (\',c.prenom,\' \',c.nom,\')\') AS utilisateur_nom, CONCAT(r.rs,\' (\',r.prenom,\' \',r.nom,\')\') AS revendeur_nom, c.entreprise AS entreprise, a.prenom AS administrateur_nom '\r
- . 'FROM demandes d '\r
- . 'LEFT JOIN utilisateurs_entreprise r ON d.revendeur=r.utilisateur_id '\r
- . 'LEFT JOIN utilisateurs_entreprise c ON d.utilisateur=c.utilisateur_id '\r
- . 'LEFT JOIN utilisateurs a ON d.administrateur=a.utilisateur_id');\r
- \r
- $this->views->createView('chiffres_types','SELECT p.annee_fin AS annee, e.type, SUM(p.budget) AS ca '\r
- .'FROM projets_vue p, clients_entreprise e '\r
- .'WHERE p.client_id=e.utilisateur_id '\r
- .'GROUP BY e.type, p.annee_fin');\r
- \r
- $this->views->createView('chiffres_types_hf','SELECT p.annee_fin AS annee, e.type, SUM(p.budget) AS ca '\r
- .'FROM projets_vue_hf p, clients_entreprise e '\r
- .'WHERE p.client_id=e.utilisateur_id '\r
- .'GROUP BY e.type, p.annee_fin');\r
- \r
- \r
+ . 'FROM demandes d '\r
+ . 'LEFT JOIN utilisateurs_entreprise r ON d.revendeur=r.utilisateur_id '\r
+ . 'LEFT JOIN utilisateurs_entreprise c ON d.utilisateur=c.utilisateur_id '\r
+ . 'LEFT JOIN utilisateurs a ON d.administrateur=a.utilisateur_id');\r
+ $this->views->createView('chiffres_types', 'SELECT p.annee_fin AS annee, e.type, SUM(p.budget) AS ca '\r
+ . 'FROM projets_vue p, clients_entreprise e '\r
+ . 'WHERE p.client_id=e.utilisateur_id '\r
+ . 'GROUP BY e.type, p.annee_fin');\r
+ $this->views->createView('chiffres_types_hf', 'SELECT p.annee_fin AS annee, e.type, SUM(p.budget) AS ca '\r
+ . 'FROM projets_vue_hf p, clients_entreprise e '\r
+ . 'WHERE p.client_id=e.utilisateur_id '\r
+ . 'GROUP BY e.type, p.annee_fin');\r
+\r
+\r
//cubeDb::mysqlConvert($this->con, 'UTF8', 'utf8_general_ci', 'MYISAM');\r
touch($cache);\r
}\r
commonDroits::min(2);\r
$res = self::chiffresAnnee($encours);\r
$res .= self::caGlobal($chiffres, $total, $encours);\r
- $res.=self::caTrimestre();\r
- $res.=self::caMensuel();\r
+ $res .= self::caTrimestre();\r
+ $res .= self::caMensuel();\r
$res .= self::caCategorie($chiffres, $total);\r
$res .= self::caWorkRate($chiffres, $total);\r
$res .= self::caSegments($chiffres, $total);\r
$res .= self::caSegmentsHf($chiffres, $total);\r
+ $res .= self::fluidbookPages();\r
return $res;\r
}\r
\r
$i = self::format($impayes[$annee]);\r
}\r
$res .= '<td>' . $i . '</td>';\r
- \r
+\r
}\r
$res .= '<td><em>' . self::format($total) . '</em></td>';\r
$res .= '</tr>';\r
for ($i = 1; $i <= 4; $i++) {\r
$res .= '<th>T' . $i . '</th>';\r
}\r
- $res.='<th>' . __('Total') . '</th>';\r
+ $res .= '<th>' . __('Total') . '</th>';\r
$res .= '</tr>';\r
\r
foreach ($chiffres as $annee => $trimestres) {\r
$res .= '<tr>';\r
$total = 0;\r
- $res.='<td>' . $annee . '</td>';\r
+ $res .= '<td>' . $annee . '</td>';\r
foreach ($trimestres as $trimestre => $ca) {\r
$res .= '<td>' . self::format($ca) . '</td>';\r
$total += $ca;\r
}\r
- $res.='<td><em>' . self::format($total) . '</em></td>';\r
+ $res .= '<td><em>' . self::format($total) . '</em></td>';\r
$res .= '</tr>';\r
}\r
\r
for ($i = 1; $i <= 12; $i++) {\r
$res .= '<th>' . cubeDate::getMonth($i) . '</th>';\r
}\r
- $res.='<th>' . __('Total') . '</th>';\r
+ $res .= '<th>' . __('Total') . '</th>';\r
$res .= '</tr>';\r
\r
foreach ($chiffres as $annee => $moiss) {\r
$res .= '<tr>';\r
$total = 0;\r
- $res.='<td>' . $annee . '</td>';\r
+ $res .= '<td>' . $annee . '</td>';\r
foreach ($moiss as $mois => $ca) {\r
$res .= '<td class="nowrap">' . self::format($ca) . '</td>';\r
$total += $ca;\r
}\r
- $res.='<td class="nowrap"><em>' . self::format($total) . '</em></td>';\r
+ $res .= '<td class="nowrap"><em>' . self::format($total) . '</em></td>';\r
$res .= '</tr>';\r
}\r
\r
$res .= commonPage::bf();\r
return $res;\r
}\r
- \r
- \r
+\r
\r
public static function caCategoriesChart($a, $datas, $type, $width, $height, $max = 7) {\r
global $core;\r
}\r
$chart->addData($cac);\r
$chart->addData($cae);\r
- return $chart->display($title);\r
+ return $chart->display($title, '', '', '&chbh=a,5,0');\r
+ }\r
+\r
+ public static function fluidbookPagesChart($data) {\r
+ global $core;\r
+\r
+ $title = __("Répartition des fluidbook par nombre de pages");\r
+ $chart = new cubeGoogleCharts('bvs', 940, 200);\r
+ $chart->setTitle($title);\r
+ $max = 0;\r
+ foreach ($data as $pages => $qty) {\r
+\r
+ $max = max($qty, $max);\r
+ }\r
+ $ratio = floor($max / 100);\r
+ $d = array();\r
+ foreach ($data as $pages => $qty) {\r
+ $cae[] = ($qty / $ratio);\r
+ }\r
+ $chart->addData($cae);\r
+ return $chart->display($title, '', '', '&chbh=a,0,0');\r
}\r
- \r
- public static function caSegments($chiffres, $total){\r
+\r
+ public static function caSegments($chiffres, $total) {\r
global $core;\r
- return self::_caSegment('SELECT * FROM chiffres_types ORDER BY annee,type',__("CA par type de client"));\r
+ return self::_caSegment('SELECT * FROM chiffres_types ORDER BY annee,type', __("CA par type de client"));\r
}\r
- \r
- \r
- public static function caSegmentsHf($chiffres, $total){\r
+\r
+\r
+ public static function caSegmentsHf($chiffres, $total) {\r
global $core;\r
- return self::_caSegment('SELECT * FROM chiffres_types_hf ORDER BY annee,type',__("CA par type de client").'<br />('.__('Hors Fluidbook').')');\r
+ return self::_caSegment('SELECT * FROM chiffres_types_hf ORDER BY annee,type', __("CA par type de client") . '<br />(' . __('Hors Fluidbook') . ')');\r
}\r
- \r
+\r
public static function caSegmentChart($a, $datas, $type, $width, $height, $max = 7) {\r
global $core;\r
$title = sprintf(__('Répartition pour %d'), $a);\r
$chart = new cubeGoogleCharts($type, $width, $height);\r
$chart->setTitle($title);\r
- \r
+\r
$total = array_sum($datas);\r
$i = 1;\r
$others = 0;\r
- \r
- $types=$core->client_type;\r
- $types[3]='TPE / PME';\r
- \r
+\r
+ $types = $core->client_type;\r
+ $types[3] = 'TPE / PME';\r
+\r
foreach ($datas as $c => $ca) {\r
- if($c==0){\r
+ if ($c == 0) {\r
continue;\r
}\r
if ($i <= $max) {\r
\r
return $chart->display($title);\r
}\r
- \r
- protected static function _caSegment($req,$title){\r
- global $core;\r
- $r = $core->con->select($req);\r
- $segments=array();\r
- while($r->fetch()){\r
- $annees[]=$r->annee;\r
- $segments[$r->type][$r->annee]=$r->ca;\r
- }\r
- \r
- $chiffresa=array();\r
- $chiffreta=array();\r
- foreach($segments as $type=>$tab){\r
-\r
- if($type==1){\r
- $type=3;\r
- }\r
- foreach($tab as $a=>$ca){\r
- if(!isset($chiffresa[$a])){\r
- $chiffresa[$a]=array();\r
- $chiffreta[$a]=0;\r
+\r
+ protected static function _caSegment($req, $title) {\r
+ global $core;\r
+ $r = $core->con->select($req);\r
+ $segments = array();\r
+ while ($r->fetch()) {\r
+ $annees[] = $r->annee;\r
+ $segments[$r->type][$r->annee] = $r->ca;\r
+ }\r
+\r
+ $chiffresa = array();\r
+ $chiffreta = array();\r
+ foreach ($segments as $type => $tab) {\r
+\r
+ if ($type == 1) {\r
+ $type = 3;\r
+ }\r
+ foreach ($tab as $a => $ca) {\r
+ if (!isset($chiffresa[$a])) {\r
+ $chiffresa[$a] = array();\r
+ $chiffreta[$a] = 0;\r
}\r
- if(!isset($chiffresa[$a][$type])){\r
- $chiffresa[$a][$type]=0;\r
+ if (!isset($chiffresa[$a][$type])) {\r
+ $chiffresa[$a][$type] = 0;\r
}\r
- $chiffresa[$a][$type]+=$ca;\r
- $chiffreta[$a]+=$ca;\r
+ $chiffresa[$a][$type] += $ca;\r
+ $chiffreta[$a] += $ca;\r
}\r
- \r
+\r
}\r
- \r
- $annees=array_unique($annees);\r
+\r
+ $annees = array_unique($annees);\r
sort($annees);\r
- \r
- \r
+\r
+\r
$res = commonPage::bh();\r
$res .= '<table class="liste">';\r
- \r
+\r
$res .= '<tr><td colspan="' . (count($annees) + 2) . '">';\r
$a = date('Y') - 1;\r
$res .= self::caSegmentChart($a, $chiffresa[$a], 'p3', 440, 150);\r
$a++;\r
$res .= self::caSegmentChart($a, $chiffresa[$a], 'p3', 500, 200);\r
$res .= '</td></tr>';\r
- \r
+\r
$res .= '<tr><th><strong>' . $title . '</strong></th>';\r
foreach ($annees as $annee) {\r
$total_annee[$annee] = 0;\r
$res .= '<td>' . $core->client_type[$type] . '</td>';\r
\r
$total_type = 0;\r
- \r
+\r
foreach ($annees as $annee) {\r
if (isset($tab[$annee])) {\r
$ca = self::format($tab[$annee], true);\r
- $part=round(($tab[$annee]/$chiffreta[$annee])*100).'%';\r
+ $part = round(($tab[$annee] / $chiffreta[$annee]) * 100) . '%';\r
$col = $ca . ' (' . $part . ')';\r
$total_type += $tab[$annee];\r
$total_annee[$annee] += $tab[$annee];\r
$res .= '<td>' . $col . '</td>';\r
}\r
\r
- $res .= '<td><em>' . self::format($total_type, true).'</em></td>';\r
+ $res .= '<td><em>' . self::format($total_type, true) . '</em></td>';\r
$res .= '</tr>';\r
$i++;\r
}\r
if (isset($total_annee[$annee])) {\r
$c = $total_consomme_annee[$annee];\r
$p = $total_prevu_annee[$annee];\r
- $res .= '<td><strong>' . self::format($total_annee[$annee], true) .'</strong></td>';\r
+ $res .= '<td><strong>' . self::format($total_annee[$annee], true) . '</strong></td>';\r
}\r
}\r
- \r
- $res .= '<td><strong><em>' . ''.'</em></strong></td>';\r
+\r
+ $res .= '<td><strong><em>' . '' . '</em></strong></td>';\r
$res .= '</tr>';\r
$res .= '</table>';\r
$res .= commonPage::bf();\r
return $res;\r
}\r
\r
+ public static function fluidbookPages() {\r
+ global $core;\r
+\r
+ $r = $core->con->select('SELECT * FROM books_analysis');\r
+ $pas = 4;\r
+ $precision = 1 / $pas;\r
+ $data = array();\r
+ $max = 0;\r
+ while ($r->fetch()) {\r
+ $n = min(300, cubeMath::round($r->nb_pages, $precision, 'ceil'));\r
+ if (!isset($data[$n])) {\r
+ $data[$n] = 0;\r
+ }\r
+ $data[$n]++;\r
+ $max = max($max, $n);\r
+ }\r
+ fb($max);\r
+ for ($i = 0; $i <= $max; $i += $pas) {\r
+ if (!isset($data[$i])) {\r
+ $data[$i] = 0;\r
+ }\r
+ }\r
+\r
+ ksort($data);\r
+\r
+ $res = commonPage::bh();\r
+ $res .= '<table class="liste">';\r
+ $res .= '<tr><td colspan="3">';\r
+ $res .= self::fluidbookPagesChart($data);\r
+ $res .= '</td></tr>';\r
+ $res .= '<tr><th><strong>' . __("Nombre de pages des Fluidbook") . '</strong></th>';\r
+ $res .= '<th>' . __("Nombre de pages") . '</th>';\r
+ $res .= '<th>' . __("Quantité") . '</th>';\r
+ $res .= '</tr>';\r
+\r
+\r
+ foreach ($data as $pages => $qty) {\r
+ $res .= '<tr><td></td>';\r
+ $res .= '<td>' . $pages . '</td>';\r
+ $res .= '<td>' . $qty . '</td>';\r
+ $res .= '</tr>';\r
+ }\r
+\r
+\r
+ $res .= '</table>';\r
+ $res .= commonPage::bf();\r
+ return $res;\r
+ }\r
+\r
public static function format($nb, $euro = true, $ifzero = '-') {\r
if ($euro) {\r
$nb = $nb / 1000;\r