You are not logged in.
Pages: 1
Topic closed
Bonjour,
Comme beaucoup, j'ai utilité a récupérer le N° de TAG d'Ocs dans GLPI, voici donc un début de solution
que je propose (en cours de tests) ...
1) rajout d'un champ TAG dans la table GLPI nommée 'glpi_computers'
ALTER TABLE `glpi_computers` ADD `TAG` VARCHAR( 8 ) NULL DEFAULT '0';
2) rajout du SQL pour récuperer le TAG dans OCS dans la fonction 'ocsImportComputer'
située dans glpi\glpi\ocsng\functions.php
function ocsImportComputer($DEVICEID){
global $dbocs;
// Set OCS checksum to max value
$query = "UPDATE hardware SET CHECKSUM='".MAX_OCS_CHECKSUM."' WHERE DEVICEID='$DEVICEID'";
$dbocs->query($query) or die($dbocs->error().$query);
$query = "UPDATE config SET IVALUE='1' WHERE NAME='TRACE_DELETED'";
$dbocs->query($query) or die($dbocs->error().$query);
$query = "SELECT * FROM hardware WHERE DEVICEID='$DEVICEID'";
$result = $dbocs->query($query) or die($dbocs->error().$query);
$comp = new Computer; // modif de l'objet computer
if ($dbocs->numrows($result)==1){
$line=$dbocs->fetch_array($result);
$dbocs->close();
$comp->fields["name"] = $line["NAME"];
//-----------------------------------récupération du TAG d'OCS-----------------------------------
$query = "SELECT TAG FROM accountinfo WHERE DEVICEID='$DEVICEID'";
$result = $dbocs->query($query) or die($dbocs->error().$query);
$TAG=$dbocs->fetch_array($result);
$dbocs->close();
$comp->fields["TAG"] = $TAG["TAG"];
//-----------------------------------------------------------------------------
$comp->fields["ocs_import"] = 1;
$glpi_id=$comp->addToDB();
if ($glpi_id){
$cfg_ocs=getOcsConf(1);
if ($cfg_ocs["default_state"]){
updateState(COMPUTER_TYPE,$glpi_id,$cfg_ocs["default_state"],0,0);
}
}
if ($idlink = ocs_link($line['DEVICEID'], $glpi_id)){
ocsUpdateComputer($idlink,0);
}
}
}
le TAG est bien importé dans GLPI (table 'glpi_computers') et peut servir pour un futur traitement, je travaille actuellement sur les périphériques (moniteur, impi) ... leur associé le TAG de l'uc ou pas ???
qu'en pensez vous ?
avez vous mené des recherches ou des raisonnements similaires ?
A+
cleop
Offline
Je pense que ce qui seraitplus intéressant c'est dire dans quel champ on veux importer le TAG via une config du mode OCS.
et après que ca l'intégre directement.
MoYo - Julien Dombre - Association INDEPNET
Contribute to GLPI : Support Contribute References Freshmeat
Offline
exact, je n'ai pas assez de recul pour l'instand pour appréhender la question dans sa globalité mais je vais investiguer dans cette direction ... merci MoYo pour cette idée lumineuse ! :-)
... je vous tiendrais au courant de mes essais ... :-)
A+
cleop (student'of'php)
Offline
ok merci
MoYo - Julien Dombre - Association INDEPNET
Contribute to GLPI : Support Contribute References Freshmeat
Offline
Tout à fait d'accord avec toi Moyo je ne voudrais pas que l'import écrase les noms déjà entré dans GLPI ça serait beaucoup plus pratique de pouvoir choisir dans quel champs importer cette valeur.
A+
Offline
Bonjour,
comme promis, je vous tiens au courant de mes investigations,
Voila une solutions en 4 étapes qui permet l'import du Tag d'Ocs soit dans le champ "Contact", soit dans le champ "Lieu", soit dans le champ "Nom", libre à chacun de s'organiser apres en fonction de ses besoins ...
1) rajout d'un champ `tag_field_import` dans la table `glpi_ocs_config` pour stocker l'option choisie :
ALTER TABLE `glpi_ocs_config` ADD `tag_field_import` INT( 2 ) NOT NULL DEFAULT '0';
2) implémentation de l'option dans le module de configuration GLPI de l'import d'Ocs :
(les modifs sont entre //------ et //-------)
--> modif de la fonction 'ocsFormConfig' du fichier 'glpi\glpi\setup\functions.php'
function ocsFormConfig($target, $id) {
GLOBAL $db,$lang;
$query = "select * from glpi_ocs_config where ID = '".$id."'";
$result = $db->query($query);
$data=$db->fetch_array($result);
echo "<form name='formconfig' action=\"$target\" method=\"post\">";
echo "<input type='hidden' name='update_ocs_config' value='1'>";
echo "<div align='center'><table class='tab_cadre'>";
echo "<tr><th colspan='2'>".$lang["ocsconfig"][5]."</th></tr>";
echo "<tr class='tab_bg_2'><td align='center'>".$lang["ocsconfig"][17]." </td><td> <input type=\"text\" size='30' name=\"tag_limit\" value=\"".$data["tag_limit"]."\"></td></tr>";
//-----------------------------Choix du champ d'import du Tag--------------------------
$field_import=$data["tag_field_import"];
echo "<tr class='tab_bg_2'><td align='center'>Champ d'import du tag</td><td>";
echo "<select name='tag_field_import'>";
echo "<option value='0' ".($field_import==0?" selected ":"").">Pas d'import</option>";
echo "<option value='1' ".($field_import==1?" selected ":"").">Contact</option>";
echo "<option value='2' ".($field_import==2?" selected ":"").">Lieu</option>";
echo "<option value='3' ".($field_import==3?" selected ":"").">Nom</option>";
echo "</select>";
echo "</td></tr>";
//-------------------------------------------------------------------------------------
......etc....
3) dans le meme fichier, modif de la fonction 'OcsUpdateConfig' pour pouvoir updater l'option :
(les modifs sont entre //------ et //-------)
function ocsUpdateConfig($input, $id) {
global $db,$phproot;
$checksum=0;
if ($input["import_ip"]) $checksum|= pow(2,NETWORKS_FL);
if ($input["import_device_ports"]) $checksum|= pow(2,PORTS_FL);
if ($input["import_device_modems"]) $checksum|= pow(2,MODEMS_FL);
if ($input["import_device_drives"]) $checksum|= pow(2,STORAGES_FL);
if ($input["import_device_sound"]) $checksum|= pow(2,SOUNDS_FL);
if ($input["import_device_gfxcard"]) $checksum|= pow(2,VIDEOS_FL);
if ($input["import_device_iface"]) $checksum|= pow(2,NETWORKS_FL);
if ($input["import_device_hdd"]) $checksum|= pow(2,STORAGES_FL);
if ($input["import_device_memory"]) $checksum|= pow(2,MEMORIES_FL);
if ( $input["import_device_processor"]
||$input["import_general_contact"]
||$input["import_general_comments"]
||$input["import_general_domain"]
||$input["import_general_os"]) $checksum|= pow(2,HARDWARE_FL);
if ( $input["import_general_enterprise"]
||$input["import_general_type"]
||$input["import_general_model"]
||$input["import_general_serial"]) $checksum|= pow(2,BIOS_FL);
if ($input["import_printer"]) $checksum|= pow(2,PRINTERS_FL);
if ($input["import_software"]) $checksum|= pow(2,SOFTWARES_FL);
if ($input["import_monitor"]) $checksum|= pow(2,MONITORS_FL);
if ($input["import_periph"]) $checksum|= pow(2,INPUTS_FL);
// update du choix du champ d'import du tag--------------------------------------------------
$query = "update glpi_ocs_config set tag_field_import = '".$input["tag_field_import"]."', tag_limit = '".$input["tag_limit"]."', default_state = '".$input["default_state"]."', import_periph = '".$input["import_periph"]."' ,import_monitor = '".$input["import_monitor"]."',import_software = '".$input["import_software"]."', import_printer = '".$input["import_printer"]."',`import_general_os` = '".$input["import_general_os"]."',`import_general_serial` = '".$input["import_general_serial"]."',`import_general_model` = '".$input["import_general_model"]."',`import_general_enterprise` = '".$input["import_general_enterprise"]."',`import_general_type` = '".$input["import_general_type"]."',`import_general_domain` = '".$input["import_general_domain"]."',`import_general_contact` = '".$input["import_general_contact"]."',`import_general_comments` = '".$input["import_general_comments"]."',`import_device_processor` = '".$input["import_device_processor"]."',`import_device_memory` = '".$input["import_device_memory"]."',`import_device_hdd` = '".$input["import_device_hdd"]."',`import_device_iface` = '".$input["import_device_iface"]."',`import_device_gfxcard` = '".$input["import_device_gfxcard"]."',`import_device_sound` = '".$input["import_device_sound"]."',`import_device_drives` = '".$input["import_device_drives"]."',`import_device_modems` = '".$input["import_device_modems"]."',`import_device_ports` = '".$input["import_device_ports"]."',`import_ip` = '".$input["import_ip"]."',`checksum` = '".$checksum."' where ID = '".$id."'";
//-------------------------------------------------------------------------------------------
$db->query($query);
}
4) modification de la séquence d'import Ocs->GLPI
--> modif de la fonction 'ocsUpdateHardware' du fichier 'glpi\glpi\ocsng\functions.php'
(le rajout est a la fin de la function, toujours entre //------ et //--------)
.......etc...........
if($cfg_ocs["import_general_comments"]&&!in_array("comments",$computer_updates)) {
$compupdate["comments"] = "Swap: ".$line["SWAP"];
}
//---------------------------
if ($cfg_ocs["tag_field_import"]<>0){
$query = "SELECT TAG FROM accountinfo WHERE DEVICEID='$ocs_id'";
$result = $dbocs->query($query) or die($dbocs->error().$query);
$tag=$dbocs->fetch_array($result);
$dbocs->close();
if($cfg_ocs["tag_field_import"]==1){
$compupdate["contact"]=$tag["TAG"];
}
if($cfg_ocs["tag_field_import"]==2){
$compupdate["location"]=ocsImportDropdown('glpi_dropdown_locations','name',$tag["TAG"]);
}
if($cfg_ocs["tag_field_import"]==3){
$compupdate["name"]=$tag["TAG"];
}
}
//----------------------------
if (count($compupdate)){
$compupdate["ID"] = $glpi_id;
updateComputer($compupdate,$dohistory);
}
}
}
Ces 4 modifs permettent de choisir sont champ d'import pour le tag
(parmis les choix suivants : 'pas d'import', 'nom', 'contact' ou 'lieu')
Attention :
1) chez moi cela fonctionne (et correspond à mon besoin), chez vous, c'est à vos risques et périls, donc faites des tests
2) pour l'utilisation de l'import du tag vers le champ 'lieu' il faut au préalable avoir défini
les lieux possibles dans GLPI/administration/intitules/lieu
3) je n'ai pas eu le temps de tester si cela fonctionne avec une 'arborescence' a plusieurs niveaux pour les 'lieux', car chez moi tout les lieux sont au même niveau hiérarchique
4) pas de prise en charge multilingues, désolé ...
have fun ...
cleop
Offline
Bonjour,
Pour ma part le numero Tag correspond au numéro d'inventaire...
Offline
Dans votre cas,
modif 2) remplacer "Contact" par "Numero d'inventaire"
modif 4) remplacer "contact" par "otherserial"
Vous pourez ainsi remonter votre Tag(numero d'inventaire) dans GLPI (je viens de tester, cela fonctionne)
attention : ce n'est pas un developpement officiel, a utiliser si vous ne pouvez pas attendre ...
A+
Offline
Merci pour ce code qui souhaitons le sera officialisé dans une prochaine version.
Pour ma part le TAG correspond aussi au n° d'inventaire de la société.
Serait il possible que celui-ci figure parmi la liste des rubriques à associer dans le helpdesk avec un matériel ?
Je m'explique. Toutes nos machines on une étiquette code-barre et en complément un id en claire (ex : 12345678) propre au matériel.
Lors d'une déclaration d'un ticket dans le helpdesk, je souhaiterais que l'utilisateur puisse donner cet id "maison" pour rattacher le ticket au matériel. (Cela évite à la personne non informaticienne d'aller chercher un nom de machine ou un N° de serie qu'elle ne saura pas trouver).
De plus cela permet de maitriser la production des étiquettes d'inventaire en interne.
Last edited by Jouin74 (2006-05-13 20:04:15)
Plateforme : Linux Mandriva2006 64bit Navigateur: IE6 SP1 / Firefox 1.5.0.3
PHP : 5.0.05 MySQL : 5.0.18 Apache : 2.0.55 GLPI :0.65
Plateforme : Windows XP Pro Navigateur: Firefox 1.5.0.3 / IE6 SP1
PHP : 5.0.05 MySQL : 5.0.18 Apache : 2.0.55 GLPI :0.68.3
Offline
ajouté dans le trac. fermeture.
MoYo - Julien Dombre - Association INDEPNET
Contribute to GLPI : Support Contribute References Freshmeat
Offline
Pages: 1
Topic closed