function fiche(&$query) { global $langs, $conf, $user; llxHeader('', 'Query', '', '', 0, 0, array('/query/js/query.js'), array('/query/css/query.css')); dol_fiche_head($query->title); if ($query->expert == 1) { if (!empty($query->sql_fields)) { $TField = explode_brackets($query->sql_fields); $query->TField = $TField; } } ?> <script type="text/javascript"> var MODQUERY_INTERFACE = "<?php echo dol_buildpath('/query/script/interface.php', 1); ?> "; var MODQUERY_QUERYID = <?php echo $query->getId(); ?> ; var MODQUERY_EXPERT = <?php echo (int) $query->expert; ?> ; var MODQUERY_PREFIX = "<?php echo MAIN_DB_PREFIX; ?> "; var select_equal = '<select sql-act="operator"> ' + '<option value=""> </option>' + '<option value="LIKE">LIKE</option>' /*+ '<option value="=">=</option>'*/ + '<option value="!=">!=</option>' + '<option value="<"><</option>' + '<option value="<="><=</option>' + '<option value=">">></option>' + '<option value=">=">>=</option>' + '<option value="IN">IN</option>' + '</select>'; var select_mode = '<select sql-act="mode"> ' + '<option value="value">valeur</option>' + '<option value="var">variable</option>' + '<option value="function">fonction</option>' + '</select> <input type="text" value="" sql-act="value" />'; var select_null = '<select sql-act="null"> ' + '<option value=""></option>' + '<option value="1"><?php echo $langs->transnoentities('YesAllowTestOnNull'); ?> </option>' + '</select>'; var select_order = '<select sql-act="order"> ' + '<option value=""> </option>' + '<option value="ASC">Ascendant</option>' + '<option value="DESC">Descendant</option>' + '</select>'; var select_filter = '<select sql-act="filter"> ' + '<option value="">Libre</option>' + '<option value="calendar">Date</option>' + '<option value="calendars">Dates</option>' + '</select>'; var select_hide = '<select sql-act="hide"> ' + '<option value=""> </option>' + '<option value="1"><?php echo $langs->trans('Hidden'); ?> </option>' + '</select>'; var select_group = '<select sql-act="group"> ' + '<option value=""> </option>' + '<option value="1">Groupé</option>' + '</select>'; var select_total = '<select sql-act="total"> ' + '<option value=""> </option>' + '<option value="sum"><?php echo $langs->trans('Total'); ?> </option>' + '<option value="groupsum"><?php echo $langs->trans('TotalGroup'); ?> </option>' + '<option value="average"><?php echo $langs->trans('Average'); ?> </option>' + '<option value="count"><?php echo $langs->trans('CountOf'); ?> </option>' + '</select>'; var select_total_group_field = '<select sql-act="field-total-group">' <?php foreach ($query->TField as $field) { echo ' + \'<option value="' . _getFieldName($field) . '">' . _getFieldName($field) . '</option>\' '; } ?> +'</select>'; var select_type = '<select sql-act="type"> ' + '<option value=""> </option>' + '<option value="number">Nombre</option>' + '<option value="integer">Entier</option>' + '<option value="datetime">Date/Heure</option>' + '<option value="date">Date</option>' + '<option value="hour">Heure</option>' + '</select>'; var select_function = '<input type="text" size="10" sql-act="function" value="" placeholder="<?php echo $langs->trans('FunctionToApply'); ?> " /><select sql-act="function-select"> ' + '<option value=""> </option>' + '<option value="SUM(@field@)"><?php echo $langs->trans('Sum'); ?> </option>' + '<option value="ROUND(@field@,2)"><?php echo $langs->trans('Round2dec'); ?> </option>' + '<option value="COUNT(@field@)"><?php echo $langs->trans('CountOf'); ?> </option>' + '<option value="MIN(@field@)"><?php echo $langs->trans('Minimum'); ?> </option>' + '<option value="MAX(@field@)"><?php echo $langs->trans('Maximum'); ?> </option>' + '<option value="MONTH(@field@)"><?php echo $langs->trans('Month'); ?> </option>' + '<option value="YEAR"><?php echo $langs->trans('Year'); ?> </option>' + '<option value="DATE_FORMAT(@field@, \'%m/%Y\')"><?php echo $langs->trans('YearMonth'); ?> </option>' //+ '<option value="FROM_UNIXTIME(@field@,\'%H:%i\')">Timestamp</option>' + '<option value="SEC_TO_TIME(@field@)"><?php echo $langs->trans('Timestamp'); ?> </option>' //+ '<option value="(@field@ / 3600)">/ 3600</option>' + '</select>'; var select_class = '<input type="text" size="10" sql-act="class" value="" placeholder="<?php echo $langs->trans('Classname'); ?> " /><select sql-act="class-select"> ' + '<option value=""> </option>' <?php foreach ($query->TClassName as $class => $label) { echo ' +\'<option value="' . $class . '">' . $label . '</option>\''; } ?> + '</select>'; var select_method = '<input type="text" size="10" sql-act="class-method" value="" placeholder="<?php echo $langs->trans('Method'); ?> " /><select sql-act="class-method-select"> ' + '<option value=""> </option>' <?php if (!empty($query->TMethodName)) { foreach ($query->TMethodName as $method => $label) { echo ' +\'<option value="' . $method . '">' . $label . '</option>\''; } } ?> + '</select>'; function _init_query() { <?php if ($query->getId() > 0) { if ($query->expert == 2) { echo 'showQueryPreview(' . $query->getId() . ');'; init_js($query); } else { if ($query->expert == 1) { echo 'showQueryPreview(' . $query->getId() . ');'; if (!empty($query->TField)) { foreach ($query->TField as $field) { list($f, $t) = _getFieldAndTableName($field); if (!empty($t)) { $field = $t . '.' . $f; } else { $field = $f; } echo ' refresh_field_param("' . $field . '","' . $t . '"); '; } } init_js($query); } else { foreach ($query->TTable as $table) { echo 'addTable("' . $table . '"); '; } if (empty($query->TField) && !empty($query->sql_fields)) { $query->TField = explode(',', $query->sql_fields); } //$TField = if (!empty($query->TField)) { foreach ($query->TField as $field) { echo ' checkField("' . $field . '"); '; } echo 'showQueryPreview(' . $query->getId() . ');'; } init_js($query); if (!empty($query->TJoin)) { foreach ($query->TJoin as $t => $join) { ?> $("td[rel=from] select[jointure='<?php echo $t; ?> ']").val("<?php echo $join[0]; ?> "); $("td[rel=to] select[jointure-to='<?php echo $t; ?> ']").val("<?php echo $join[1]; ?> "); TJoin['<?php echo $t; ?> '] = ["<?php echo $join[0]; ?> ", "<?php echo $join[1]; ?> "]; <?php } } ?> refresh_sql(); <?php } } } ?> } </script> <form name="formQuery" id="formQuery"> <input type="hidden" name="id" value="<?php echo $query->getId(); ?> " /> <div> <?php if ($query->getId() > 0 && !empty($user->rights->query->all->expert)) { ?> <div style="float:right;z-index:999; position:relative; top:40px;"><?php if ($query->expert == 0) { ?> <a class="butAction" href="?action=set-expert&id=<?php echo $query->getId(); ?> "><?php echo $langs->trans('setExpertMode'); ?> </a><?php } else { if ($query->expert == 2) { ?> <a class="butAction" href="?action=set-expert&id=<?php echo $query->getId(); ?> "><?php echo $langs->trans('setExpertMode'); ?> </a><?php ?> <br /><br /><a class="butAction" href="?action=unset-expert&id=<?php echo $query->getId(); ?> "><?php echo $langs->trans('unsetExpertMode'); ?> </a><?php } else { ?> <a class="butAction" href="?action=set-free&id=<?php echo $query->getId(); ?> "><?php echo $langs->trans('setExpertFreeMode'); ?> </a><?php ?> <br /><br /><a class="butAction" href="?action=unset-expert&id=<?php echo $query->getId(); ?> "><?php echo $langs->trans('unsetExpertMode'); ?> </a><?php } } ?> <br /><br /><a class="butAction" href="?action=clone&id=<?php echo $query->getId(); ?> "><?php echo $langs->trans('cloneQuery'); ?> </a><?php ?> <br /><br /><a class="butAction" href="?action=export&id=<?php echo $query->getId(); ?> "><?php echo $langs->trans('ExportQuery'); ?> </a><?php ?> </div><?php } ?> <div id="query_header" style="padding: 0 20px 20px 0; background-color: #fff;z-index:1;"> <?php echo $langs->trans('Title'); ?> : <input type="text" name="title" size="80" value="<?php echo $query->title; ?> " /> <?php $form = new TFormCore(); if (!empty($user->rights->query->bdd->use_other_db)) { dol_include_once('/query/class/bddconnector.class.php'); $PDOdb = new TPDOdb(); $formCoreBDD = new TFormCore(); if ($query->getId() > 0) { $formCoreBDD->Set_typeaff('view'); } echo $formCoreBDD->combo(' - ' . $langs->trans('BDD'), 'fk_bdd', TBDDConnector::getCombo($PDOdb, true), $query->fk_bdd); } echo $form->combo('- ' . $langs->trans('Type') . ' : ', 'type', $query->TGraphiqueType, $query->type); echo '- ' . $langs->trans('XAxis') . ' : <select name="xaxis" initValue="' . $query->xaxis . '"></select>'; ?> <input class="button" type="button" id="save_query" value="<?php echo $langs->trans('SaveQuery'); ?> " /> </div> <?php if ($query->getId() > 0 && !$query->expert) { ?> <div> <?php echo $langs->trans('AddOneOfThisTables'); ?> : <select id="tables"></select> <input class="button" type="button" id="add_this_table" value="<?php echo $langs->trans('AddThisTable'); ?> " /> </div> <div id="selected_tables"> </div> <?php } ?> </div> <?php if ($query->getId() > 0 && $query->expert != 2) { ?> <div class="selected_fields"> <div class="border" id="fields"><div class="liste_titre"><?php echo $langs->trans('FieldsOrder'); ?> </div></div> </div> <?php } if ($query->getId() > 0) { ?> <div id="results" style="display:<?php echo $query->expert > 0 ? 'block' : 'none'; ?> ;"> <div> <?php echo $langs->trans('Fields'); ?> <br /> <textarea id="sql_query_fields" name="sql_fields" <?php echo $query->expert == 2 ? ' style="width:700px;height:100px;" ' : ''; ?> ><?php echo htmlentities($query->sql_fields, 0, ini_get("default_charset")); ?> </textarea> </div> <div> <?php echo $langs->trans('From'); ?> <br /> <textarea id="sql_query_from" name="sql_from" <?php echo $query->expert == 2 ? 'style="width:700px;height:100px;"' : ''; ?> ><?php echo htmlentities($query->sql_from, 0, ini_get("default_charset")); ?> </textarea> </div> <div> <?php echo $langs->trans('Where'); ?> <br /> <textarea id="sql_query_where" name="sql_where" <?php echo $query->expert == 2 ? 'style="width:700px;height:200px;"' : ''; ?> ><?php echo htmlentities($query->sql_where, 0, ini_get("default_charset")); ?> </textarea> <?php if ($query->expert > 0) { echo $langs->trans('AfterWhere'); ?> <br /><textarea id="sql_query_afterwhere" name="sql_afterwhere" <?php echo $query->expert == 2 ? 'style="width:700px;height:100px;"' : ''; ?> ><?php echo htmlentities($query->sql_afterwhere, 0, ini_get("default_charset")); ?> </textarea><?php } else { ?> <input type="hidden" id="sql_query_afterwhere" name="sql_afterwhere" value="" /><?php } ?> </div> </div> <div style="clear:both; border-top:1px solid #000;"></div> <?php if ($query->getId() > 0 && $query->expert != 2) { ?> <div class="selected_fields_view"> <div class="border" id="fieldsview"><div class="liste_titre"><?php echo $langs->trans('FieldsView'); ?> </div></div> </div> <?php } ?> <div id="previewRequete" style="display: none;"> <iframe src="#" width="100%" bgcolor="#fff" frameborder="0" onload="this.height = this.contentWindow.document.body.scrollHeight + 'px'"></iframe> </div> <?php } ?> </form> <?php dol_fiche_end(); llxFooter(); }
function _test_alive($fk_bbb) { $PDOdb = new TPDOdb(); $bdd = new TBDDConnector(); $bdd->load($PDOdb, $fk_bbb); ob_start(); $alive = $bdd->connect(); ob_clean(); return $alive ? img_picto('Ok', 'on.png') : img_picto('KO', 'error.png'); }
<?php /* * Script créant et vérifiant que les champs requis s'ajoutent bien */ if (defined('INC_FROM_DOLIBARR')) { dol_include_once('/query/config.php'); $PDOdb = new TPDOdb(); } else { define('INC_FROM_CRON_SCRIPT', true); require '../config.php'; $PDOdb = new TPDOdb(); $PDOdb->db->debug = true; } dol_include_once('/query/class/query.class.php'); dol_include_once('/query/class/dashboard.class.php'); dol_include_once('/query/class/bddconnector.class.php'); $o = new TQuery($db); $o->init_db_by_vars($PDOdb); $o = new TQDashBoard($db); $o->init_db_by_vars($PDOdb); $o = new TQDashBoardQuery($db); $o->init_db_by_vars($PDOdb); $o = new TQueryMenu($db); $o->init_db_by_vars($PDOdb); $o = new TBDDConnector($db); $o->init_db_by_vars($PDOdb); $PDOdb->Execute("INSERT INTO `llx_qdashboard` (`rowid`, `date_cre`, `date_maj`, `fk_user`, `fk_user_author`, `fk_usergroup`, `uid`, `send_by_mail`, `hook`, `title`, `refresh_dashboard`) VALUES\n(1, '2015-12-04 16:20:45', '2015-12-09 17:48:27', 1, 2, 4, '5239255d1f9cb26f08f8a52125178c38', '', 'projectcard', 'Projets', '0'),\n(2, '2015-12-05 17:16:18', '2015-12-09 17:45:24', 1, 2, 2, '9100b0751204b7521c91febb15c1920d', '', 'usercard', 'Commercial', '0'),\n(4, '2015-12-09 12:28:02', '2015-12-09 12:29:42', 2, 2, 4, '887f97707d73f89288eb9dc0a76530ee', 'WEEK', 'usercard', 'Développeur', '0')"); $PDOdb->Execute("INSERT INTO `llx_qdashboard_query` (`rowid`, `date_cre`, `date_maj`, `fk_qdashboard`, `fk_query`, `width`, `height`, `posx`, `posy`, `title`) VALUES\n(1, '2015-12-04 16:21:25', '2015-12-09 17:48:27', 1, 1, 2, 1, 1, 3, ''),\n(2, '2015-12-04 16:57:41', '2015-12-09 17:48:27', 1, 2, 3, 2, 2, 1, ''),\n(3, '2015-12-04 17:05:40', '2015-12-09 17:48:27', 1, 3, 1, 2, 1, 1, ''),\n(5, '2015-12-04 23:33:32', '2015-12-09 17:48:27', 1, 5, 2, 1, 3, 3, ''),\n(6, '2015-12-05 17:16:46', '2015-12-09 17:45:24', 2, 7, 1, 2, 1, 1, ''),\n(8, '2015-12-05 17:17:01', '2015-12-09 17:45:24', 2, 6, 1, 2, 2, 1, ''),\n(12, '2015-12-09 12:29:04', '2015-12-09 12:29:42', 4, 2, 3, 1, 1, 1, ''),\n(11, '2015-12-09 12:28:31', '2015-12-09 12:29:42', 4, 5, 3, 1, 1, 2, '')"); $PDOdb->Execute("INSERT INTO `llx_query` (`rowid`, `date_cre`, `date_maj`, `sql_fields`, `sql_from`, `sql_where`, `sql_afterwhere`, `TField`, `TTable`, `TOrder`, `TTitle`, `TLink`, `THide`, `TTranslate`, `TMode`, `TOperator`, `TGroup`, `TFunction`, `TValue`, `TJoin`, `expert`, `title`, `type`, `xaxis`) VALUES\n(1, '2015-12-04 16:14:01', '2015-12-04 16:20:40', 'llx_projet_task.duration_effective,llx_projet_task.planned_workload,llx_projet.ref,llx_projet.fk_statut', 'llx_projet_task LEFT JOIN llx_projet ON (llx_projet.rowid=llx_projet_task.fk_projet) ', '', NULL, 'a:4:{i:0;s:34:\"llx_projet_task.duration_effective\";i:1;s:32:\"llx_projet_task.planned_workload\";i:2;s:14:\"llx_projet.ref\";i:3;s:20:\"llx_projet.fk_statut\";}', 'a:2:{i:0;s:15:\"llx_projet_task\";i:1;s:10:\"llx_projet\";}', 'a:1:{s:14:\"llx_projet.ref\";s:3:\"ASC\";}', 'a:3:{s:34:\"llx_projet_task.duration_effective\";s:9:\"Effectué\";s:32:\"llx_projet_task.planned_workload\";s:6:\"Prévu\";s:14:\"llx_projet.ref\";s:6:\"Projet\";}', 'a:0:{}', 'a:2:{s:14:\"llx_projet.ref\";s:1:\"1\";s:20:\"llx_projet.fk_statut\";s:1:\"1\";}', NULL, 'a:4:{s:34:\"llx_projet_task.duration_effective\";s:5:\"value\";s:32:\"llx_projet_task.planned_workload\";s:5:\"value\";s:14:\"llx_projet.ref\";s:5:\"value\";s:20:\"llx_projet.fk_statut\";s:5:\"value\";}', 'a:0:{}', 'a:1:{i:0;s:14:\"llx_projet.ref\";}', 'a:3:{s:34:\"llx_projet_task.duration_effective\";s:19:\"SUM(@field@ / 3600)\";s:32:\"llx_projet_task.planned_workload\";s:19:\"SUM(@field@ / 3600)\";s:14:\"llx_projet.ref\";s:36:\"CONCAT(@field@,'' '',llx_projet.title)\";}', 'a:1:{s:20:\"llx_projet.fk_statut\";s:1:\"1\";}', 'a:1:{s:10:\"llx_projet\";a:2:{i:0;s:16:\"llx_projet.rowid\";i:1;s:25:\"llx_projet_task.fk_projet\";}}', 0, 'Temps passés / prévus', 'CHART', 'llx_projet.ref'),\n(2, '2015-12-04 16:23:08', '2015-12-04 17:00:37', 'llx_projet_task_time.task_date,llx_projet_task_time.task_duration,llx_projet_task_time.fk_user,llx_user.login', 'llx_projet_task_time LEFT JOIN llx_projet_task ON (llx_projet_task.rowid=llx_projet_task_time.fk_task) LEFT JOIN llx_projet ON (llx_projet.rowid=llx_projet_task.fk_projet) LEFT JOIN llx_user ON (llx_user.rowid=llx_projet_task_time.fk_user) ', 'llx_projet_task_time.task_date >= (NOW() - INTERVAL 7 DAY)', NULL, 'a:4:{i:0;s:30:\"llx_projet_task_time.task_date\";i:1;s:34:\"llx_projet_task_time.task_duration\";i:2;s:28:\"llx_projet_task_time.fk_user\";i:3;s:14:\"llx_user.login\";}', 'a:4:{i:0;s:20:\"llx_projet_task_time\";i:1;s:15:\"llx_projet_task\";i:2;s:10:\"llx_projet\";i:3;s:8:\"llx_user\";}', 'a:2:{s:30:\"llx_projet_task_time.task_date\";s:3:\"ASC\";s:14:\"llx_user.login\";s:3:\"ASC\";}', 'a:2:{s:34:\"llx_projet_task_time.task_duration\";s:6:\"Durée\";s:14:\"llx_user.login\";s:11:\"Utilisateur\";}', 'a:0:{}', 'a:2:{s:30:\"llx_projet_task_time.task_date\";s:1:\"1\";s:28:\"llx_projet_task_time.fk_user\";s:1:\"1\";}', NULL, 'a:4:{s:30:\"llx_projet_task_time.task_date\";s:8:\"function\";s:34:\"llx_projet_task_time.task_duration\";s:5:\"value\";s:28:\"llx_projet_task_time.fk_user\";s:5:\"value\";s:14:\"llx_user.login\";s:5:\"value\";}', 'a:1:{s:30:\"llx_projet_task_time.task_date\";s:2:\">=\";}', 'a:1:{i:0;s:28:\"llx_projet_task_time.fk_user\";}', 'a:2:{s:30:\"llx_projet_task_time.task_date\";s:29:\"DATE_FORMAT(@field@, ''%m/%Y'')\";s:34:\"llx_projet_task_time.task_duration\";s:17:\"SUM(@field@/3600)\";}', 'a:1:{s:30:\"llx_projet_task_time.task_date\";s:22:\"NOW() - INTERVAL 7 DAY\";}', 'a:3:{s:15:\"llx_projet_task\";a:2:{i:0;s:21:\"llx_projet_task.rowid\";i:1;s:28:\"llx_projet_task_time.fk_task\";}s:10:\"llx_projet\";a:2:{i:0;s:16:\"llx_projet.rowid\";i:1;s:25:\"llx_projet_task.fk_projet\";}s:8:\"llx_user\";a:2:{i:0;s:14:\"llx_user.rowid\";i:1;s:28:\"llx_projet_task_time.fk_user\";}}', 0, 'Temps par développeur à la semaine', 'CHART', 'llx_user.login'),\n(3, '2015-12-04 17:04:11', '2015-12-04 20:29:17', 'llx_projet_task_time.task_duration,llx_user.login,llx_projet_task_time.task_date', 'llx_projet_task_time LEFT JOIN llx_projet_task ON (llx_projet_task.rowid=llx_projet_task_time.fk_task) LEFT JOIN llx_projet ON (llx_projet.rowid=llx_projet_task.fk_projet) LEFT JOIN llx_user ON (llx_user.rowid=llx_projet_task_time.fk_user) ', 'llx_projet_task_time.task_date > (NOW() - INTERVAL 1 YEAR)', NULL, 'a:3:{i:0;s:30:\"llx_projet_task_time.task_date\";i:1;s:34:\"llx_projet_task_time.task_duration\";i:2;s:14:\"llx_user.login\";}', 'a:4:{i:0;s:20:\"llx_projet_task_time\";i:1;s:15:\"llx_projet_task\";i:2;s:10:\"llx_projet\";i:3;s:8:\"llx_user\";}', 'a:0:{}', 'a:2:{s:34:\"llx_projet_task_time.task_duration\";s:6:\"Durée\";s:14:\"llx_user.login\";s:12:\"Développeur\";}', 'a:0:{}', 'a:1:{s:30:\"llx_projet_task_time.task_date\";s:1:\"1\";}', NULL, 'a:3:{s:34:\"llx_projet_task_time.task_duration\";s:5:\"value\";s:14:\"llx_user.login\";s:5:\"value\";s:30:\"llx_projet_task_time.task_date\";s:8:\"function\";}', 'a:1:{s:30:\"llx_projet_task_time.task_date\";s:1:\">\";}', 'a:1:{i:0;s:14:\"llx_user.login\";}', 'a:1:{s:34:\"llx_projet_task_time.task_duration\";s:19:\"SUM(@field@ / 3600)\";}', 'a:1:{s:30:\"llx_projet_task_time.task_date\";s:23:\"NOW() - INTERVAL 1 YEAR\";}', 'a:3:{s:15:\"llx_projet_task\";a:2:{i:0;s:21:\"llx_projet_task.rowid\";i:1;s:28:\"llx_projet_task_time.fk_task\";}s:10:\"llx_projet\";a:2:{i:0;s:16:\"llx_projet.rowid\";i:1;s:25:\"llx_projet_task.fk_projet\";}s:8:\"llx_user\";a:2:{i:0;s:14:\"llx_user.rowid\";i:1;s:28:\"llx_projet_task_time.fk_user\";}}', 0, 'Temps par utilisateur sur 1 an', 'PIE', 'llx_user.login'),\n(5, '2015-12-04 23:26:12', '2015-12-09 12:37:04', 'llx_projet_task_time.task_date,llx_projet_task_time.task_duration', 'llx_projet_task_time LEFT JOIN llx_projet_task ON (llx_projet_task.rowid=llx_projet_task_time.fk_task) LEFT JOIN llx_projet ON (llx_projet.rowid=llx_projet_task.fk_projet) LEFT JOIN llx_user ON (llx_user.rowid=llx_projet_task_time.fk_user) ', 'llx_projet_task_time.task_date >= (NOW() - INTERVAL 1 YEAR)', '', 'a:2:{i:0;s:30:\"llx_projet_task_time.task_date\";i:1;s:34:\"llx_projet_task_time.task_duration\";}', 'a:4:{i:0;s:20:\"llx_projet_task_time\";i:1;s:15:\"llx_projet_task\";i:2;s:10:\"llx_projet\";i:3;s:8:\"llx_user\";}', 'a:1:{s:30:\"llx_projet_task_time.task_date\";s:3:\"ASC\";}', 'a:2:{s:30:\"llx_projet_task_time.task_date\";s:4:\"Jour\";s:34:\"llx_projet_task_time.task_duration\";s:6:\"Durée\";}', 'a:0:{}', 'a:0:{}', NULL, 'a:2:{s:30:\"llx_projet_task_time.task_date\";s:8:\"function\";s:34:\"llx_projet_task_time.task_duration\";s:8:\"function\";}', 'a:1:{s:30:\"llx_projet_task_time.task_date\";s:2:\">=\";}', 'a:1:{i:0;s:30:\"llx_projet_task_time.task_date\";}', 'a:2:{s:30:\"llx_projet_task_time.task_date\";s:32:\"DATE_FORMAT(@field@, ''%d/%m/%Y'')\";s:34:\"llx_projet_task_time.task_duration\";s:17:\"SUM(@field@/3600)\";}', 'a:1:{s:30:\"llx_projet_task_time.task_date\";s:23:\"NOW() - INTERVAL 1 YEAR\";}', 'a:3:{s:15:\"llx_projet_task\";a:2:{i:0;s:21:\"llx_projet_task.rowid\";i:1;s:28:\"llx_projet_task_time.fk_task\";}s:10:\"llx_projet\";a:2:{i:0;s:16:\"llx_projet.rowid\";i:1;s:25:\"llx_projet_task.fk_projet\";}s:8:\"llx_user\";a:2:{i:0;s:14:\"llx_user.rowid\";i:1;s:28:\"llx_projet_task_time.fk_user\";}}', 0, 'Temps consacré par jour sur l''année', 'LINE', 'llx_projet_task_time.task_date'),\n(6, '2015-12-05 17:04:59', '2015-12-09 16:49:58', 'llx_propal.tms,llx_propal.fk_statut,llx_propal.total_ht,llx_propal.total', 'llx_propal LEFT JOIN llx_user ON (llx_user.rowid=llx_propal.fk_user_author) ', 'llx_propal.tms >= (NOW() - INTERVAL 1 YEAR)', '', 'a:4:{i:0;s:14:\"llx_propal.tms\";i:1;s:20:\"llx_propal.fk_statut\";i:2;s:19:\"llx_propal.total_ht\";i:3;s:16:\"llx_propal.total\";}', 'a:2:{i:0;s:10:\"llx_propal\";i:1;s:8:\"llx_user\";}', 's:0:\"\";', 'a:3:{s:20:\"llx_propal.fk_statut\";s:6:\"Statut\";s:19:\"llx_propal.total_ht\";s:8:\"Total HT\";s:16:\"llx_propal.total\";s:6:\"Nombre\";}', 'a:0:{}', 'a:2:{s:14:\"llx_propal.tms\";s:1:\"1\";s:16:\"llx_propal.total\";s:1:\"1\";}', 'a:1:{s:20:\"llx_propal.fk_statut\";s:57:\"0:Brouillon,1:Ouverte,2:Signée,3:Non Signée,4:Facturée\";}', 'a:4:{s:14:\"llx_propal.tms\";s:8:\"function\";s:20:\"llx_propal.fk_statut\";s:5:\"value\";s:19:\"llx_propal.total_ht\";s:5:\"value\";s:16:\"llx_propal.total\";s:5:\"value\";}', 'a:1:{s:14:\"llx_propal.tms\";s:2:\">=\";}', 'a:1:{i:0;s:20:\"llx_propal.fk_statut\";}', 'a:2:{s:19:\"llx_propal.total_ht\";s:12:\"SUM(@field@)\";s:16:\"llx_propal.total\";s:8:\"COUNT(*)\";}', 'a:1:{s:14:\"llx_propal.tms\";s:23:\"NOW() - INTERVAL 1 YEAR\";}', 'a:1:{s:8:\"llx_user\";a:2:{i:0;s:14:\"llx_user.rowid\";i:1;s:25:\"llx_propal.fk_user_author\";}}', 0, 'Valeurs des propositions sur 1 an par statut', 'PIE', 'llx_propal.fk_statut'),\n(7, '2015-12-05 17:04:59', '2015-12-09 17:25:51', 'llx_propal.tms,llx_propal.fk_statut,llx_propal.total_ht,llx_propal.total', 'llx_propal LEFT JOIN llx_user ON (llx_user.rowid=llx_propal.fk_user_author) ', 'llx_propal.tms >= (NOW() - INTERVAL 1 YEAR)', '', 'a:4:{i:0;s:14:\"llx_propal.tms\";i:1;s:20:\"llx_propal.fk_statut\";i:2;s:19:\"llx_propal.total_ht\";i:3;s:16:\"llx_propal.total\";}', 'a:2:{i:0;s:10:\"llx_propal\";i:1;s:8:\"llx_user\";}', 's:0:\"\";', 'a:3:{s:20:\"llx_propal.fk_statut\";s:6:\"Statut\";s:19:\"llx_propal.total_ht\";s:8:\"Total HT\";s:16:\"llx_propal.total\";s:6:\"Nombre\";}', 'a:0:{}', 'a:2:{s:14:\"llx_propal.tms\";s:1:\"1\";s:19:\"llx_propal.total_ht\";s:1:\"1\";}', 'a:1:{s:20:\"llx_propal.fk_statut\";s:57:\"0:Brouillon,1:Ouverte,2:Signée,3:Non Signée,4:Facturée\";}', 'a:4:{s:14:\"llx_propal.tms\";s:8:\"function\";s:20:\"llx_propal.fk_statut\";s:5:\"value\";s:19:\"llx_propal.total_ht\";s:5:\"value\";s:16:\"llx_propal.total\";s:5:\"value\";}', 'a:1:{s:14:\"llx_propal.tms\";s:2:\">=\";}', 'a:1:{i:0;s:20:\"llx_propal.fk_statut\";}', 'a:2:{s:19:\"llx_propal.total_ht\";s:12:\"SUM(@field@)\";s:16:\"llx_propal.total\";s:8:\"COUNT(*)\";}', 'a:1:{s:14:\"llx_propal.tms\";s:23:\"NOW() - INTERVAL 1 YEAR\";}', 'a:1:{s:8:\"llx_user\";a:2:{i:0;s:14:\"llx_user.rowid\";i:1;s:25:\"llx_propal.fk_user_author\";}}', 0, 'Nombre de propositions sur 1 an par statut', 'PIE', 'llx_propal.fk_statut')");