09-02-2017, 04:52
Bonjour,
Nous avons besoin de visualiser l'arborescence des relations d'une personne ou entreprise.
Nous avons déjà fait la requête SQL (elle est en fin de message). Il nous reste à créer le code Python et le bouton au bon endroit.
Dans un premier temps, nous allons afficher de manière très simple sous forme de texte :
Contact 1 connaît Entreprise 4 + Contact 4 + Contact 24 + Entreprise 20. C'est le premier niveau d'arborescence.
Et par exemple Contact 4 connaît Contact 5 + Entreprise 20. C'est le second niveau.
Une fois que ceci fonctionnera, nous améliorerons la présentation. Probablement sous une forme bien plus graphique.
Et les entités seront cliquables pour enrouler/dérouler leurs sous-relations.
Il y a un "mais"
Nous ne savons pas à quel endroit il faut regarder pour ajouter le bouton que nous souhaitons.
Dans la fenêtre "Contact", nous voulons ajouter un bouton sur la même ligne que "Supprimer toutes les relations" et "Nouvelles relations".
Même chose dans la fenêtre "Société".
L'idée est d'ouvrir un nouvel onglet pour afficher l'arborescence, ou d'afficher ça sous forme d'overlay.
--> quelqu'un saurait nous indiquer où aller pour ajouter ce bouton ?
La requête SQL :
Les 2 emplacements marqués "XXXX" reçoivent l'identifiant du contact ou de l'entreprise.
Pour l'instant nous avons codé en dur les identifiants 63 et 67 qui correspondent aux types "contact" et "entreprise". Nous irons par la suite les prendre dans les bonnes tables, mais là il se fait tard.
Nous avons besoin de visualiser l'arborescence des relations d'une personne ou entreprise.
Nous avons déjà fait la requête SQL (elle est en fin de message). Il nous reste à créer le code Python et le bouton au bon endroit.
Dans un premier temps, nous allons afficher de manière très simple sous forme de texte :
Code :
Contact 1 Entreprise 4 Contact 17
Contact 2
Entreprise 20
Contact 4 Contact 5
Entreprise 20
Contact 24
Entrepise 20
Et par exemple Contact 4 connaît Contact 5 + Entreprise 20. C'est le second niveau.
Une fois que ceci fonctionnera, nous améliorerons la présentation. Probablement sous une forme bien plus graphique.
Et les entités seront cliquables pour enrouler/dérouler leurs sous-relations.
Il y a un "mais"
Nous ne savons pas à quel endroit il faut regarder pour ajouter le bouton que nous souhaitons.
Dans la fenêtre "Contact", nous voulons ajouter un bouton sur la même ligne que "Supprimer toutes les relations" et "Nouvelles relations".
Même chose dans la fenêtre "Société".
L'idée est d'ouvrir un nouvel onglet pour afficher l'arborescence, ou d'afficher ça sous forme d'overlay.
--> quelqu'un saurait nous indiquer où aller pour ajouter ce bouton ?
La requête SQL :
Code :
SELECT min_id, R1.`header_filter_search_field`, max_id, R2.`header_filter_search_field`
FROM ( SELECT
CASE
WHEN `creme_core_relation`.`object_entity_id`<`creme_core_relation`.`subject_entity_id` THEN `creme_core_relation`.`object_entity_id`
ELSE `creme_core_relation`.`subject_entity_id`
END AS min_id,
CASE
WHEN `creme_core_relation`.`object_entity_id`<`creme_core_relation`.`subject_entity_id` THEN `creme_core_relation`.`subject_entity_id`
ELSE `creme_core_relation`.`object_entity_id`
END AS max_id
FROM `creme_core_cremeentity` AS CCC1
INNER JOIN `creme_core_relation`
ON `creme_core_relation`.`subject_entity_id`=CCC1.`id`
INNER JOIN `creme_core_cremeentity` AS CCC2
ON `creme_core_relation`.`object_entity_id`=CCC2.`id`
WHERE CCC1.`is_deleted`=0 AND CCC2.`is_deleted`=0
AND `creme_core_relation`.`is_deleted`=0
AND (CCC1.`entity_type_id`=63 OR CCC1.`entity_type_id`=67)
AND (CCC2.`entity_type_id`=63 OR CCC2.`entity_type_id`=67)
AND (`creme_core_relation`.`object_entity_id`=XXXX OR `creme_core_relation`.`subject_entity_id`=XXXX)
GROUP BY min_id, max_id
) AS relations
INNER JOIN `creme_core_cremeentity` AS R1
ON relations.min_id=R1.`id`
INNER JOIN `creme_core_cremeentity` AS R2
ON relations.max_id=R2.`id`
WHERE R1.`header_filter_search_field` != R2.`header_filter_search_field`
Pour l'instant nous avons codé en dur les identifiants 63 et 67 qui correspondent aux types "contact" et "entreprise". Nous irons par la suite les prendre dans les bonnes tables, mais là il se fait tard.