You are not logged in.
GLPI 0.71.5
---------------------------------------------------------------------------------------------------------------------
Description.
---------------------------------------------------------------------------------------------------------------------
Lors de l'affectation d'un ticket à un technicien,
le cout horaire se met à jour fonction du cout horaire paramétré dans le profil du technicien (user).
---------------------------------------------------------------------------------------------------------------------
maj de la bdd :
----------------------------------------------------------------------------------------------------------------------
Il faut ajouter un champ cost_time, dans la table glpi_users (soite la table profils utilisateurs).
-> Soit vous le faite manuellement :
PARAM DU CHAMP -> cost_time DECIMAL(20,4) DEFAULT '0.0000' NOT NULL
-> Ou alors, vous pouvez procéder comme suit :
• uploadé le fichier update_cost_time.php (voir contenu ci-dessous) dans glpi/install (ou autre).
• loguez-vous sous glpi en tant que "root" via votre navigateur web préféré.
• entrez l'url du fichier uploadé (ex: http://127.0.0.1/glpi/install/update_cost_time.php)
contenu du fichier update_cost_time.php :
<?php
if (!defined('GLPI_ROOT'))
define('GLPI_ROOT', '..');
include_once (GLPI_ROOT . "/config/define.php");
include_once (GLPI_ROOT . "/inc/dbmysql.class.php");
include_once (GLPI_ROOT . "/inc/common.function.php");
include_once (GLPI_ROOT . "/inc/db.function.php");
include_once (GLPI_ROOT . "/inc/display.function.php");
include_once (GLPI_ROOT . "/config/based_config.php");
include_once (GLPI_CONFIG_DIR . "/config_db.php");
setGlpiSessionPath();
cleanCache();
// Init debug variable
$CFG_GLPI["debug"]=DEBUG_MODE;
$CFG_GLPI["debug_sql"]=$CFG_GLPI["debug_vars"]=$CFG_GLPI["debug_profile"]=$CFG_GLPI["debug_lang"]=0;
$CFG_GLPI["use_errorlog"]=1;
$DB=new DB();
update_cost_time();
/// Update TABLE glpi_users with cost_time
function update_cost_time(){
global $DB,$LANG;
echo "<p class='center'>Update Table glpi_users with field cost_time </p>";
if(!FieldExists("glpi_users","cost_time")) {
$query = "ALTER TABLE `glpi_users` ADD `cost_time` DECIMAL(20,4) DEFAULT '0.0000' NOT NULL AFTER `location` ;";
$DB->query($query) or die("4203 ".$LANG["update"][90].$DB->error());
echo "update OK.";
}
}
?>
----------------------------------------------------------------------------------------------------------------------
maj formulaire profil utilisateur :
----------------------------------------------------------------------------------------------------------------------
-> On associe le champ entré ci-dessus, à un champ du formulaire du profil utilisateur.
Dans glpi\inc\user.class.php vers l.870, après le champ « location » :
...
echo "<td class='center'>".$LANG["common"][60]."</td><td>";
dropdownYesNo('active',$this->fields['active']);
echo "</td></tr>";
//LIGNE A AJOUTER
// Ajout d'un champ cout horaire.
//----------------------------------------------------------------------------------------------------------------------
echo "<tr class='tab_bg_1'>";
echo "<td class='center'>" . $LANG["job"][40] . " </td><td>";
autocompletionTextField("cost_time", "glpi_users", "cost_time", $this->fields["cost_time"], 5);
echo "</td></tr>";
//----------------------------------------------------------------------------------------------------------------------
vers l.875, avant le champ « location » :
echo "<tr class='tab_bg_1' align='center'><td>" . $LANG["common"][25] . ":</td><td colspan='3'><textarea cols='70' rows='3' name='comments' >" . $this->fields["comments"] . "</textarea></td>";
echo "</tr>";
...
----------------------------------------------------------------------------------------------------------------------
maj formulaire ticket:
----------------------------------------------------------------------------------------------------------------------
-> Il faut ajouter les lignes suivantes, afin que la mise à jour du cout horaire se fasse, lors du clic sur « Modifier » (update) :
Dans glpi\front\user.class.php , dans le premier bloc « if » :
...
if (isset($_POST['update'])){
checkSeveralRightsOr(array("update_ticket"=>"1","assign_ticket"=>"1","steal_ticket"=>"1","comment_ticket"=>"1","comment_all_ticket"=>"1"));
//LIGNE A AJOUTER
// Permet d'assigner un cout horaire fonction du technicien.
//----------------------------------------------------------------------------------------------------------------------
$query='SELECT DISTINCT cost_time AS VAL FROM glpi_users WHERE ID='.$_POST["assign"].'';
$result=$DB->query($query);
$data = $DB->fetch_array($result);
$_POST["cost_time"]=$data['VAL'];
//----------------------------------------------------------------------------------------------------------------------
$track->update($_POST);
logEvent($_POST["ID"], "tracking", 4, "tracking", $_SESSION["glpiname"]." ".$LANG["log"][21]);
glpi_header($CFG_GLPI["root_doc"]."/front/tracking.form.php?ID=".$_POST["ID"]);
}else if (isset($_POST['add'])||isset($_POST['add_close'])) {
...
---------------------------------------------------------------------------------------------------------------------
Conclusion :
----------------------------------------------------------------------------------------------------------------------
Quelques demandes mais datant de plus d'un an, sans solution.
je me suis planché dessus, pour des besoins interne, et vous fait partager.
j'ai codé le plus proprement possible, mais il y a surement quelques optimisation à faire.
Voili voilou.
Last edited by isill (2009-11-17 11:58:34)
Offline
Merci pour cette contribution j'ai mis un lien vers le chantier en cours :
https://forge.indepnet.net/projects/glp … lpdeskCost
Celui-ci nécessite des spécifications plus précises.
MoYo - Julien Dombre - Association INDEPNET
Contribute to GLPI : Support Contribute References Freshmeat
Offline