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="&lt;">&lt;</option>'
					+ '<option value="&lt;=">&lt;=</option>'
					+ '<option value="&gt;">&gt;</option>'
					+ '<option value="&gt;=">&gt;=</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')");