You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2009-11-16 17:26:59

isill
Member
Registered: 2009-05-25
Posts: 10

mise en place cout horaire fonction d'un technicien (user)

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

#2 2010-02-20 02:37:20

MoYo
GLPI - Lead
From: Poitiers
Registered: 2004-09-13
Posts: 14,513
Website

Re: mise en place cout horaire fonction d'un technicien (user)

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

Board footer

Powered by FluxBB