1 (edited by ludu 2014-09-18 11:04:42)

Topic: [0.84.7] et [0.85] Problèleme sur transfert des éléments

Situation : J'ai une imprimante sur une entité 0 que je veux transférer sur une entité 1
L'imprimante est liée à un fournisseur en entité 0, récursif

Résultat : L'imprimante est transférée sur l'entité 1, et le fournisseur aussi.

Problème : Le fournisseur était sur l'entité 0 en mode récursif, est il normal qu'il soit transféré sur l'entité 1 ?

(J'ai le même comportement avec les contrats).

Dans le code je pense qu'il y aurait un problème vers la ligne 707 de transfert.class.php, après :
// Supplier infocoms
if ($this->options['keep_infocom']) {

Une requête est lancée ligne 729, permettant de ne pas transférer le fournisseur s'il est sur une entité parente en mode récursif :
$query = "SELECT DISTINCT `suppliers_id`,
                                            `glpi_suppliers`.`is_recursive`,
                                            `glpi_suppliers`.`entities_id`
                            FROM `glpi_infocoms`
                            LEFT JOIN `glpi_suppliers`
                              ON (`glpi_suppliers`.`id` = `glpi_infocoms`.`suppliers_id`)
                            WHERE `suppliers_id` > '0'
                                  AND `itemtype` = '$itemtype'
                                  AND `items_id` IN ".$this->item_search[$itemtype];

Cependant la variable $this->item_search[$itemtype] contient '-1' au lieu de l'ID de l'imprimante à transférer. Le traitement ne peut donc pas être fait.

2

Re: [0.84.7] et [0.85] Problèleme sur transfert des éléments

il faut qu'on regarde, on est passé à côté de votre message désolé.

MoYo - Julien Dombre - Association INDEPNET
Contribute to GLPI :    Support     Contribute     References     Freshmeat

3

Re: [0.84.7] et [0.85] Problèleme sur transfert des éléments

Je viens de faire un test en 0.84.8.
Création d'une imprimante dans l'entité racine en récursif.
A cette imprimante est lié un contrat de l'entité racine lui-même récursif.
A ce contrat est lié un fournisseur de l'entité racine lui-même récursif.

Je viens de transférer mon imprimante de l'entité racine à l'entité TEST.
L'imprimante à bien été transférée mais pas le fournisseur ni le contrat.

CentOS 6.5 - PHP 5.6 - PHP 7 - MySQL 5.6  + APC + memcached
GLPI 0.90.5 SVN - GLPI 9.1.3 SVN
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

4

Re: [0.84.7] et [0.85] Problèleme sur transfert des éléments

Bonjour,

Ok merci, je vais tester ça de mon côté en 0.84.8.
Cependant mon problème survenait sur le fournisseur directement lié aux éléments, dans la partie "Gestion"

5

Re: [0.84.7] et [0.85] Problèleme sur transfert des éléments

Effectivement je n'avais pas testé ce cas.
Donc je confirme, si le fournisseur, défini dans l'entité racine en récursif, est sélectionné dans les informations financières de l'objet,
il est recréer dans la nouvelle entité.

J'ai ouvert un bug que la forge à ce sujet : Bug #5105

CentOS 6.5 - PHP 5.6 - PHP 7 - MySQL 5.6  + APC + memcached
GLPI 0.90.5 SVN - GLPI 9.1.3 SVN
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

6

Re: [0.84.7] et [0.85] Problèleme sur transfert des éléments

Proposition de correction : https://forge.indepnet.net/projects/glp … ions/23197

CentOS 6.5 - PHP 5.6 - PHP 7 - MySQL 5.6  + APC + memcached
GLPI 0.90.5 SVN - GLPI 9.1.3 SVN
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

7

Re: [0.84.7] et [0.85] Problèleme sur transfert des éléments

ludu avez vous pu tester la correction ?

MoYo - Julien Dombre - Association INDEPNET
Contribute to GLPI :    Support     Contribute     References     Freshmeat

8 (edited by tomolimo 2015-09-07 11:21:33)

Re: [0.84.7] et [0.85] Problèleme sur transfert des éléments

Bonjour,

Il y a un problème identique pour les contrats sur un 'Peripheral' (et sur les 'Monitor') lors d'un transfer 'complet' un contrat qui serait 'root' reccursif sera dupliqué dans l'entité cible.

Et en appliquant la correction proposée par yllen dans la boucle des contrats, cela corrige cette duplication:

if ($this->options['keep_contract']) {
         foreach ($CFG_GLPI["contract_types"] as $itemtype) {
            if (isset($this->item_search[$itemtype])) {
               $itemtable = getTableForItemType($itemtype);
               $this->item_search[$itemtype]
                     = $this->createSearchConditionUsingArray($this->needtobe_transfer[$itemtype]);

               // Clean DB
               $query = "SELECT 

J'ai donc fait un backport de cette correction dans ma version actuelle (0.83.8).
Cette correction est à appliquer dans les versions + récentes.

Merci,
Tomolimo

GLPI 9.1.2 / ProcessMaker 3.0.1.8 / Windows 2012 x64 / PHP 7.0.16 x86 / IIS 8.5 / MySQL 5.7.17 x64
Worldwide: >12316 PC, >8816 users (16 languages, >11 timezones), >240000 tickets, >970 entities, >1400 groups
Raynet is ARaymond (http://www.araymond.com) IT service management