<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[Crème CRM - Contributions]]></title>
		<link>https://www.cremecrm.com/forum/</link>
		<description><![CDATA[Crème CRM - https://www.cremecrm.com/forum]]></description>
		<pubDate>Thu, 16 Apr 2026 12:35:33 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Arborescence des relations]]></title>
			<link>https://www.cremecrm.com/forum/showthread.php?tid=101</link>
			<pubDate>Thu, 09 Feb 2017 03:52:47 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://www.cremecrm.com/forum/member.php?action=profile&uid=88">kali</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.cremecrm.com/forum/showthread.php?tid=101</guid>
			<description><![CDATA[Bonjour,<br />
<br />
Nous avons besoin de visualiser l'arborescence des relations d'une personne ou entreprise.<br />
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.<br />
<br />
Dans un premier temps, nous allons afficher de manière très simple sous forme de texte :<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>Contact 1&nbsp;&nbsp;&nbsp;&nbsp;Entreprise 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Contact 17<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Contact 2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Entreprise 20<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Contact 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Contact 5<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Entreprise 20<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Contact 24<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Entrepise 20</code></div></div>Contact 1 connaît Entreprise 4 + Contact 4 + Contact 24 + Entreprise 20. C'est le premier niveau d'arborescence.<br />
Et par exemple Contact 4 connaît Contact 5 + Entreprise 20. C'est le second niveau.<br />
<br />
Une fois que ceci fonctionnera, nous améliorerons la présentation. Probablement sous une forme bien plus graphique.<br />
Et les entités seront cliquables pour enrouler/dérouler leurs sous-relations.<br />
<br />
<br />
Il y a un "mais"  <img src="https://www.cremecrm.com/forum/images/smilies/smile.png" alt="Smile" title="Smile" class="smilie smilie_1" /> <br />
<span style="font-weight: bold;" class="mycode_b">Nous ne savons pas à quel endroit il faut regarder pour ajouter le bouton que nous souhaitons.</span><br />
Dans la fenêtre "Contact", nous voulons ajouter un bouton sur la même ligne que "Supprimer toutes les relations" et "Nouvelles relations".<br />
Même chose dans la fenêtre "Société".<br />
L'idée est d'ouvrir un nouvel onglet pour afficher l'arborescence, ou d'afficher ça sous forme d'overlay.<br />
--> quelqu'un saurait nous indiquer où aller pour ajouter ce bouton ?<br />
<br />
La requête SQL :<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>SELECT min_id, R1.`header_filter_search_field`, max_id, R2.`header_filter_search_field`<br />
FROM (&nbsp;&nbsp;&nbsp;&nbsp;SELECT<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CASE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHEN `creme_core_relation`.`object_entity_id`&lt;`creme_core_relation`.`subject_entity_id` THEN `creme_core_relation`.`object_entity_id`<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ELSE `creme_core_relation`.`subject_entity_id`<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;END AS min_id,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CASE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHEN `creme_core_relation`.`object_entity_id`&lt;`creme_core_relation`.`subject_entity_id` THEN `creme_core_relation`.`subject_entity_id`<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ELSE `creme_core_relation`.`object_entity_id`<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;END AS max_id<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM `creme_core_cremeentity` AS CCC1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INNER JOIN `creme_core_relation`<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ON `creme_core_relation`.`subject_entity_id`=CCC1.`id`<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INNER JOIN `creme_core_cremeentity` AS CCC2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ON `creme_core_relation`.`object_entity_id`=CCC2.`id`<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHERE &nbsp;&nbsp;&nbsp;&nbsp;CCC1.`is_deleted`=0 AND CCC2.`is_deleted`=0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND&nbsp;&nbsp;&nbsp;&nbsp;`creme_core_relation`.`is_deleted`=0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND (CCC1.`entity_type_id`=63 OR CCC1.`entity_type_id`=67)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND (CCC2.`entity_type_id`=63 OR CCC2.`entity_type_id`=67)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND (`creme_core_relation`.`object_entity_id`=XXXX OR `creme_core_relation`.`subject_entity_id`=XXXX)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GROUP BY min_id, max_id<br />
&nbsp;&nbsp;&nbsp;&nbsp; ) AS relations<br />
INNER JOIN `creme_core_cremeentity` AS R1<br />
ON relations.min_id=R1.`id`<br />
INNER JOIN `creme_core_cremeentity` AS R2<br />
ON relations.max_id=R2.`id`<br />
WHERE&nbsp;&nbsp;R1.`header_filter_search_field` != R2.`header_filter_search_field`</code></div></div>Les 2 emplacements marqués "XXXX" reçoivent l'identifiant du contact ou de l'entreprise.<br />
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.]]></description>
			<content:encoded><![CDATA[Bonjour,<br />
<br />
Nous avons besoin de visualiser l'arborescence des relations d'une personne ou entreprise.<br />
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.<br />
<br />
Dans un premier temps, nous allons afficher de manière très simple sous forme de texte :<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>Contact 1&nbsp;&nbsp;&nbsp;&nbsp;Entreprise 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Contact 17<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Contact 2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Entreprise 20<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Contact 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Contact 5<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Entreprise 20<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Contact 24<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Entrepise 20</code></div></div>Contact 1 connaît Entreprise 4 + Contact 4 + Contact 24 + Entreprise 20. C'est le premier niveau d'arborescence.<br />
Et par exemple Contact 4 connaît Contact 5 + Entreprise 20. C'est le second niveau.<br />
<br />
Une fois que ceci fonctionnera, nous améliorerons la présentation. Probablement sous une forme bien plus graphique.<br />
Et les entités seront cliquables pour enrouler/dérouler leurs sous-relations.<br />
<br />
<br />
Il y a un "mais"  <img src="https://www.cremecrm.com/forum/images/smilies/smile.png" alt="Smile" title="Smile" class="smilie smilie_1" /> <br />
<span style="font-weight: bold;" class="mycode_b">Nous ne savons pas à quel endroit il faut regarder pour ajouter le bouton que nous souhaitons.</span><br />
Dans la fenêtre "Contact", nous voulons ajouter un bouton sur la même ligne que "Supprimer toutes les relations" et "Nouvelles relations".<br />
Même chose dans la fenêtre "Société".<br />
L'idée est d'ouvrir un nouvel onglet pour afficher l'arborescence, ou d'afficher ça sous forme d'overlay.<br />
--> quelqu'un saurait nous indiquer où aller pour ajouter ce bouton ?<br />
<br />
La requête SQL :<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>SELECT min_id, R1.`header_filter_search_field`, max_id, R2.`header_filter_search_field`<br />
FROM (&nbsp;&nbsp;&nbsp;&nbsp;SELECT<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CASE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHEN `creme_core_relation`.`object_entity_id`&lt;`creme_core_relation`.`subject_entity_id` THEN `creme_core_relation`.`object_entity_id`<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ELSE `creme_core_relation`.`subject_entity_id`<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;END AS min_id,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CASE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHEN `creme_core_relation`.`object_entity_id`&lt;`creme_core_relation`.`subject_entity_id` THEN `creme_core_relation`.`subject_entity_id`<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ELSE `creme_core_relation`.`object_entity_id`<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;END AS max_id<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM `creme_core_cremeentity` AS CCC1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INNER JOIN `creme_core_relation`<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ON `creme_core_relation`.`subject_entity_id`=CCC1.`id`<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INNER JOIN `creme_core_cremeentity` AS CCC2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ON `creme_core_relation`.`object_entity_id`=CCC2.`id`<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHERE &nbsp;&nbsp;&nbsp;&nbsp;CCC1.`is_deleted`=0 AND CCC2.`is_deleted`=0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND&nbsp;&nbsp;&nbsp;&nbsp;`creme_core_relation`.`is_deleted`=0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND (CCC1.`entity_type_id`=63 OR CCC1.`entity_type_id`=67)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND (CCC2.`entity_type_id`=63 OR CCC2.`entity_type_id`=67)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND (`creme_core_relation`.`object_entity_id`=XXXX OR `creme_core_relation`.`subject_entity_id`=XXXX)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GROUP BY min_id, max_id<br />
&nbsp;&nbsp;&nbsp;&nbsp; ) AS relations<br />
INNER JOIN `creme_core_cremeentity` AS R1<br />
ON relations.min_id=R1.`id`<br />
INNER JOIN `creme_core_cremeentity` AS R2<br />
ON relations.max_id=R2.`id`<br />
WHERE&nbsp;&nbsp;R1.`header_filter_search_field` != R2.`header_filter_search_field`</code></div></div>Les 2 emplacements marqués "XXXX" reçoivent l'identifiant du contact ou de l'entreprise.<br />
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.]]></content:encoded>
		</item>
	</channel>
</rss>