Une relation à 4 niveaux

Dans l’objet « Contrat », nous avons deux liens vers les objets « Locataire » et « Investisseur ».
Dans la même template « Contrat », nous avons un locataire et un investisseur.

Le locataire est une « Personne morale 1 » et l’investisseur est une « Personne morale 2 ».
La PM1 à une « Adresse 1 » et la PM2 a une « Adresse 2 ».

Voici les chemins des deux adresses :
contractImmoTenantId__tenantImmoLegEntityid__LegEntityImmoAddressid__addressComplete
contractImmoInvestorId__investorImmoLegalEntityId__LegEntityImmoAddressid__addressComplete

Et vu que les deux se terminent par __LegEntityImmoAddressid__addressComplete, l’adresse qui s’affiche pour les deux est la même et c’est celle du premier objet lié à l’objet « Contrat ».

D’ailleurs, dans la template, les deux attributs ont le même nom logique : contractImmoTenantId__tenantImmoLegEntityid__LegEntityImmoAddressid__addressComplete

Je ne sais pas si mon pb est clair.

Je ne peux malheureusement pas vous envoyer le xml de l’objet « Contrat » parce qu’i fait plus de 32000 caractères (limitation dans le Forum)

Merci d’avance.
Abed.

Normalement il ne devrait pas y avoir ambiguïté puisque les “full input” names aboutissant aux 2 attributs adresseComplete sont différents.

Si vous utilisez bien les full inputs dans votre template il ne devrait pas y avoir pb. Je comprends qu’un full input ramené apparaît 2 fois dans le template alors que ça devrait être 2 full inputs distincts, le pb est là.

Je ne sais pas si vous éditez le HTML de votre template et de vos areas manuellement ou via le template editor visuel mais si c’est via le template editor il faudrait vérifier que le nommage incorrect d’un de vos 2 attributs ramenés adresseComplete n’est pas la conséquence d’une mauvaise manip, sinon il y a peut être une anomalie dans le template editor dans le cas de champs ramenés à plusieurs niveaux.

En tout état de cause, même si vous utilisez le template editor, vous pouvez toujours faire des modifications manuellement pour remettre les choses au carré si besoin: quand vous cliquez le bouton Save sur le template editor vous pouvez visualiser/vérifier/modifier ce qu’ont produit les actions visuelles:

Sinon chaque fragment de HTML peut s’éditer individuellement si besoin

J’avais déjà essayé de modifier dans le code de la template, mais l’attribut “Adresse Complète” passe en rouge (inconnu).

Le pb je pense est en amont au niveau de la définition de l’objet “Contrat” :

Pour le lien avec l’objet “Société” (qui est lié à l’objet “Personne morale”) par exemple, nous avons :

Soci%C3%A9t%C3%A9%20PM

Aussi, nous avons le lien vers “Locataire” (qui est lui aussi lié à l’objet "Personne morale) :

Locataire%20PM

Dans les deux copies d’écran, on voit bien que la définition de “Adresse complète” est identique.

Donc, j’ai l’impression qu’à chaque fois que cet attribut (Adresse complète) est ajouté dans un nouveau lien , il fait toujours référence au premier objet lié à “Contrat”. Pour cela, quand j’ai forcé dans le code du template pour pointer sur celui du locataire :

<div class="field" data-field="contractImmoTenantId__tenantImmoNatPersid__NatPersonImmoAddressid__addressComplete"></div>

L’attribut est passé au rouge (inconnu), puisqu’il ne reconnait que celui de la “Société” (Premier objet lié à “Contrat”.

Encore une fois, désolé si ce n’est pas clair. Je pourrais ajouter plus de copie d’écran s’il le faut.

Il existe la possibilité de surcharger l’input name d’un attribut ramené pour lever les ambiguïtés, personnellement je ne m’en sert par trop donc je ne sais pas si ça pourrait aider dans votre cas particulier (quand je m’en sert c’est uniquement pour des pbs d’ambiguité lors des exports/imports)

Je préfère laisser @Francois vous répondre sur otre cas particulier.

Sinon il reste toujours l’astuce un peu “sale” (mais je ne sais pas trop si ça marche encore) qui consiste à créer plusieurs attributs logiques immoAdrress1, immoAddress2, … avec le même nom physique et de les utiliser chacun pour un chemin donné.

L’ancienne IHM ne sait pas gérer les noms longs (full input name), la nouvelle IHM oui mais on peut utiliser les input/tag surchargés comme l’explique David.

Avant on utilisait la surcharge “input/tag” pour forcer un nom “court” unique dans l’objet en cas d’ambiguïté avec des chemins à plusieurs niveaux menant au même nom logique (plus pratique dans les exports, les pages, le code…).

Vous mettez des copies d’écran parlant de “Leg” et votre data-field contient des “Nat”…
Vérifier les noms logiques, physiques et vos jointures, elles doivent être paramétrées dans l’ordre - il ne faut pas mélanger les différents chemins, car la hiérarchie des champs est chargée en séquence.

  • Retirez les champs de votre template.
  • Simplicité ajoutera les champs non mappés dans une zone de 2 colonnes par défaut.
  • Ensuite vérifier les noms attribués dans data-field au debugger sur le navigateur.

En fait, le Pb existe aussi bien pour les Leg (PM - Personne morale) que les Nat (PP - Personne physique).
Je m’explique :
Une PP est liée à une adresse.
Une PM est liée à une adresse.
Une société peut être liée seulement à une PM
Un investisseur peut être lié à une PP ou une PM.
Un locataire peut être lié à une PP ou une PM.

Quand j’ai créé l’objet Contrat, je l’ai lié (dans l’ordre) à Société, puis Investisseur en enfin Locataire.

Ce qui fait que quand j’ai ajouté à la Template les 5 attributs « Adresse complète » ramenés de ces trois objets, j’ai eu dans les noms logiques :
1- Adresse complète Société (PM seulement) :

contractImmoCompanyId__compImmoLegEntityId__LegEntityImmoAddressid__addressComplete

Ce qui est bon, puisque c’est la première adresse d’une PM.

2- Adresse complète Investisseur (PP) :

contractImmoInvestorId__InvestorImmoNatPersonid__NatPersonImmoAddressid__addressComplete

Ce qui est bon, puisque c’est la première adresse d’une PP.

3- Adresse complète Investisseur (PM) :

contractImmoCompanyId__compImmoLegEntityId__LegEntityImmoAddressid__addressComplete

Ce qui n’est pas bon, puisqu’il a considéré que c’est celle de la Société, celle qu’on a lié en premier (pour une PM), alors que c’est un attribut ramené de l’objet « Investisseur » lors de la création de son lien avec Contrat.

4- Adresse complète Locataire (PP) :

contractImmoInvestorId__InvestorImmoNatPersonid__NatPersonImmoAddressid__addressComplete

Ce qui n’est pas bon, puisqu’il a considéré que c’est celle de l’investisseur, celle qu’on a lié en premier (pour une PP), alors que c’est un attribut ramené de l’objet « Locataire » lors de la création de son lien avec Contrat.

5- Adresse complète Locataire (PM) :

contractImmoCompanyId__compImmoLegEntityId__LegEntityImmoAddressid__addressComplete

Comme pour celle d’un Investisseur PM, ce n’est pas bon, puisqu’il a considéré que c’est celle de la Société, celle qu’on a lié en premier (pour une PM), alors que c’est un attribut ramené de l’objet « Locataire » lors de la création de son lien avec Contrat.

Donc comme je l’ai dit, j’ai l’impression qu’à chaque fois que cet attribut (Adresse complète) est ajouté dans un nouveau lien (PP ou PM), il fait toujours référence au premier objet lié à “Contrat”. Pour cela, quand j’ai forcé dans le code du template pour pointer sur celui du locataire (PP ou PM), dans les deux cas, m’attribut est inconnu.

Voici aussi les copies d’écrans des 5 champs « Adresse complète » qui montrent qu’il n’y a pas de distinction entre les différents adresses provenant de différents objets :

1- Adresse complète Société (PM seulement) :
Adresse%20Societe

2- Adresse complète Investisseur (PP) :
Adresse%20Investisseur%20PP

3- Adresse complète Investisseur (PM) :

Adresse%20Investisseur%20PM
4- Adresse complète Locataire (PP) :

Adresse%20Locataire%20PP
5- Adresse complète Locataire (PM) :
Adresse%20Locataire%20PM

Je penses qu’il faut qu’on s’appelle ou qu’on partage l’écran pour que vous voyez que le système ne tient pas compte du fait que c’est une nouvelle zone Adresse complète qu’il faut qu’il affiche et non pas toujours la première ajoutée.

Abed.

Votre objet a 100 champs et extrêmement complexe à debugger. J’ai réussi à extraire les définitions des champs au debugger Chrome. Je ne vois que 3 champs adresseComplete dans la définition remontée à l’IHM.

C’est donc un pb back-end, soit le loader Simplicité ne charge pas ces champs car qq chose ne lui va pas sur les relations / soit c’est un bug dans les meta-data envoyées dans les couches Ajax.

Il faut installer vote module chez nous pour le passer au debugger et voir pourquoi il est incompréhensible pour le moteur à ce niveau.

0: Simplicite.Ajax.ObjectField {id: "1", name: "row_id", label: "Id", help: "", obfId: "", …}
1! Simplicite.Ajax.ObjectField {id: "8790", name: "contractId", label: "Code contrat", help: "<p>Valeur calcul&eacute;e automatiquement</p>", obfId: "19321", …}
2: Simplicite.Ajax.ObjectField {id: "8805", name: "contractStatus", label: "Statut", help: "", obfId: "19322", …}
3: Simplicite.Ajax.ObjectField {id: "8808", name: "contractType", label: "Type", help: "", obfId: "19323", …}
4: Simplicite.Ajax.ObjectField {id: "8789", name: "contractDesc", label: "Description", help: "", obfId: "19324", …}
5: Simplicite.Ajax.ObjectField {id: "8785", name: "contractAmountHt", label: "Montant HT (€)", help: "", obfId: "19325", …}
6: Simplicite.Ajax.ObjectField {id: "8809", name: "contractVatRate", label: "Taux TVA", help: "", obfId: "19326", …}
7: Simplicite.Ajax.ObjectField {id: "8786", name: "contractAmountTtc", label: "Montant TTC (€)", help: "", obfId: "19327", …}
8: Simplicite.Ajax.ObjectField {id: "8788", name: "contractBalanceTtc", label: "Solde à payer TTC (€)", help: "", obfId: "19328", …}
9: Simplicite.Ajax.ObjectField {id: "8800", name: "contractPayPeriod", label: "Délai de paiement", help: "", obfId: "19329", …}
10: Simplicite.Ajax.ObjectField {id: "8799", name: "contractPayMethod", label: "Mode de paiement habituel", help: "", obfId: "19330", …}
11: Simplicite.Ajax.ObjectField {id: "8787", name: "contractAnChangCost", label: "Evolution annuelle du coût (%)", help: "", obfId: "19331", …}
12: Simplicite.Ajax.ObjectField {id: "8783", name: "contract5AnChangCost", label: "Evolution sur 5 ans (%)", help: "", obfId: "19332", …}
13: Simplicite.Ajax.ObjectField {id: "8798", name: "contractPayFreq", label: "Périodicité paiement", help: "", obfId: "19333", …}
14: Simplicite.Ajax.ObjectField {id: "8803", name: "contractRequestDate", label: "Date demande", help: "", obfId: "19334", …}
15: Simplicite.Ajax.ObjectField {id: "8802", name: "contractQuoteDate", label: "Date devis", help: "", obfId: "19335", …}
16: Simplicite.Ajax.ObjectField {id: "8784", name: "contractAgreemDate", label: "Date accord devis", help: "", obfId: "19336", …}
17: Simplicite.Ajax.ObjectField {id: "8804", name: "contractStartDate", label: "Date début", help: "", obfId: "19337", …}
18: Simplicite.Ajax.ObjectField {id: "8797", name: "contractNextEchDate", label: "Date prochaine échéance", help: "", obfId: "19338", …}
19: Simplicite.Ajax.ObjectField {id: "8796", name: "contractLitigatDate", label: "Date litige", help: "", obfId: "19339", …}
20: Simplicite.Ajax.ObjectField {id: "8801", name: "contractPrefixCg", label: "Préfixe compte général", help: "", obfId: "19340", …}

21: Simplicite.Ajax.ObjectField {id: "8794", name: "contractImmoPropertyId", label: "Bien", help: "", obfId: "19341", …}
22: Simplicite.Ajax.ObjectField {id: "9045", name: "contractImmoPropertyId__propertyId", label: "Code bien", help: "<p>Valeur calcul&eacute;e automatiquement</p>", obfId: "19342", …}
23: Simplicite.Ajax.ObjectField {id: "9053", name: "contractImmoPropertyId__propertyLabel", label: "Libellé du bien", help: "", obfId: "19343", …}
24: Simplicite.Ajax.ObjectField {id: "9065", name: "contractImmoPropertyId__propertyStatus", label: "Statut du bien", help: "", obfId: "19344", …}
25: Simplicite.Ajax.ObjectField {id: "9068", name: "contractImmoPropertyId__propertyType", label: "Type de bien", help: "", obfId: "19345", …}
26: Simplicite.Ajax.ObjectField {id: "9032", name: "contractImmoPropertyId__propertyBuildingFlag", label: "Dans immeuble ?", help: "", obfId: "19346", …}
27: Simplicite.Ajax.ObjectField {id: "9025", name: "contractImmoPropertyId__proImmoAddressid", label: "Adresse", help: "", obfId: "19347", …}
28: Simplicite.Ajax.ObjectField {id: "8724", name: "contractImmoPropertyId__proImmoAddressid__addressId", label: "Code adresse", help: "<p>Valeur calcul&eacute;e automatiquement</p>", obfId: "19348", …}
29: Simplicite.Ajax.ObjectField {id: "8721", name: "contractImmoPropertyId__proImmoAddressid__addressComplete", label: "Adresse complète", help: "", obfId: "19349", …}
30: Simplicite.Ajax.ObjectField {id: "9046", name: "contractImmoPropertyId__propertyImmoBuildingId", label: "Immeuble", help: "", obfId: "19350", …}
31: Simplicite.Ajax.ObjectField {id: "8761", name: "contractImmoPropertyId__propertyImmoBuildingId__buildingId", label: "Code immeuble", help: "<p>Valeur calcul&eacute;e automatiquement</p>", obfId: "19351", …}
32: Simplicite.Ajax.ObjectField {id: "8763", name: "contractImmoPropertyId__propertyImmoBuildingId__buildingLabel", label: "Libellé Immeuble", help: "", obfId: "19352", …}
33: Simplicite.Ajax.ObjectField {id: "8766", name: "contractImmoPropertyId__propertyImmoBuildingId__buildingType", label: "Type Immeuble", help: "", obfId: "19353", …}
34: Simplicite.Ajax.ObjectField {id: "8762", name: "contractImmoPropertyId__propertyImmoBuildingId__buildingImmoAddressId", label: "Adresse", help: "", obfId: "19354", …}
35: Simplicite.Ajax.ObjectField {id: "8724", name: "contractImmoPropertyId__propertyImmoBuildingId__buildingImmoAddressId__addressId", label: "Code adresse", help: "<p>Valeur calcul&eacute;e automatiquement</p>", obfId: "19355", …}
36: Simplicite.Ajax.ObjectField {id: "8721", name: "contractImmoPropertyId__propertyImmoBuildingId__buildingImmoAddressId__addressComplete", label: "Adresse complète", help: "", obfId: "19356", …}

37: Simplicite.Ajax.ObjectField {id: "8792", name: "contractImmoCompanyId", label: "Société", help: "", obfId: "19357", …}
38: Simplicite.Ajax.ObjectField {id: "8770", name: "contractImmoCompanyId__companyId", label: "Code société", help: "<p>Valeur calcul&eacute;e automatiquement</p>", obfId: "19358", …}
39: Simplicite.Ajax.ObjectField {id: "8775", name: "contractImmoCompanyId__companyStatus", label: "Statut Société", help: "", obfId: "19359", …}
40: Simplicite.Ajax.ObjectField {id: "8917", name: "contractImmoCompanyId__compImmoLegEntityId__legalEntityId", label: "Code personne morale", help: "<p>Valeur calcul&eacute;e automatiquement</p>", obfId: "19360", …}
41: Simplicite.Ajax.ObjectField {id: "8777", name: "contractImmoCompanyId__compImmoLegEntityId", label: "Personne morale", help: "", obfId: "19361", …}
42: Simplicite.Ajax.ObjectField {id: "8926", name: "contractImmoCompanyId__compImmoLegEntityId__legEntityCompanyName", label: "Nom société", help: "", obfId: "19362", …}
43: Simplicite.Ajax.ObjectField {id: "8938", name: "contractImmoCompanyId__compImmoLegEntityId__legEntityRcs", label: "RCS", help: "", obfId: "19363", …}
44: Simplicite.Ajax.ObjectField {id: "8930", name: "contractImmoCompanyId__compImmoLegEntityId__legEntityEmail", label: "Mail", help: "", obfId: "19364", …}
45: Simplicite.Ajax.ObjectField {id: "8937", name: "contractImmoCompanyId__compImmoLegEntityId__legEntityPhone", label: "Téléphone", help: "", obfId: "19365", …}
46: Simplicite.Ajax.ObjectField {id: "8933", name: "contractImmoCompanyId__compImmoLegEntityId__LegEntityImmoAddressid", label: "Adresse", help: "", obfId: "19366", …}
47: Simplicite.Ajax.ObjectField {id: "8724", name: "contractImmoCompanyId__compImmoLegEntityId__LegEntityImmoAddressid__addressId", label: "Code adresse", help: "<p>Valeur calcul&eacute;e automatiquement</p>", obfId: "19390", …}
48: Simplicite.Ajax.ObjectField {id: "8721", name: "contractImmoCompanyId__compImmoLegEntityId__LegEntityImmoAddressid__addressComplete", label: "Adresse complète", help: "", obfId: "19412", …}

49: Simplicite.Ajax.ObjectField {id: "8793", name: "contractImmoInvestorId", label: "Investisseur", help: "", obfId: "19369", …}
50: Simplicite.Ajax.ObjectField {id: "8865", name: "contractImmoInvestorId__investorId", label: "Code investisseur", help: "<p>Valeur calcul&eacute;e automatiquement</p>", obfId: "19370", …}
51: Simplicite.Ajax.ObjectField {id: "8879", name: "contractImmoInvestorId__investorTypePerson", label: "Type personne", help: "", obfId: "19371", …}
52: Simplicite.Ajax.ObjectField {id: "8878", name: "contractImmoInvestorId__investorStatus", label: "Statut investisseur", help: "", obfId: "19372", …}
53: Simplicite.Ajax.ObjectField {id: "8867", name: "contractImmoInvestorId__InvestorImmoNatPersonid", label: "Personne physique", help: "", obfId: "19373", …}
54: Simplicite.Ajax.ObjectField {id: "8985", name: "contractImmoInvestorId__InvestorImmoNatPersonid__natPersonId", label: "Code pers. physique", help: "<p>Valeur calcul&eacute;e automatiquement</p>", obfId: "19374", …}
55: Simplicite.Ajax.ObjectField {id: "8998", name: "contractImmoInvestorId__InvestorImmoNatPersonid__natPersonSex", label: "Civilité", help: "", obfId: "19375", …}
56: Simplicite.Ajax.ObjectField {id: "8984", name: "contractImmoInvestorId__InvestorImmoNatPersonid__natPersonFirstName", label: "Prénom", help: "", obfId: "19376", …}
57: Simplicite.Ajax.ObjectField {id: "8987", name: "contractImmoInvestorId__InvestorImmoNatPersonid__natPersonLastName", label: "Nom", help: "", obfId: "19377", …}
58: Simplicite.Ajax.ObjectField {id: "8983", name: "contractImmoInvestorId__InvestorImmoNatPersonid__natPersonEmail", label: "Email", help: "", obfId: "19378", …}
59: Simplicite.Ajax.ObjectField {id: "8994", name: "contractImmoInvestorId__InvestorImmoNatPersonid__natPersonPhone", label: "Téléphone", help: "", obfId: "19379", …}
60: Simplicite.Ajax.ObjectField {id: "8986", name: "contractImmoInvestorId__InvestorImmoNatPersonid__NatPersonImmoAddressid", label: "Adresse", help: "", obfId: "19380", …}
61: Simplicite.Ajax.ObjectField {id: "8724", name: "contractImmoInvestorId__InvestorImmoNatPersonid__NatPersonImmoAddressid__addressId", label: "Code adresse", help: "<p>Valeur calcul&eacute;e automatiquement</p>", obfId: "19381", …}
62: Simplicite.Ajax.ObjectField {id: "8721", name: "contractImmoInvestorId__InvestorImmoNatPersonid__NatPersonImmoAddressid__addressComplete", label: "Adresse complète", help: "", obfId: "19404", …}

63: Simplicite.Ajax.ObjectField {id: "8866", name: "contractImmoInvestorId__investorImmoLegalEntityId", label: "Personne morale", help: "", obfId: "19383", …}
64: Simplicite.Ajax.ObjectField {id: "8917", name: "contractImmoInvestorId__investorImmoLegalEntityId__legalEntityId", label: "Code personne morale", help: "<p>Valeur calcul&eacute;e automatiquement</p>", obfId: "19384", …}
65: Simplicite.Ajax.ObjectField {id: "8938", name: "contractImmoInvestorId__investorImmoLegalEntityId__legEntityRcs", label: "RCS", help: "", obfId: "19385", …}
66: Simplicite.Ajax.ObjectField {id: "8926", name: "contractImmoInvestorId__investorImmoLegalEntityId__legEntityCompanyName", label: "Nom société", help: "", obfId: "19386", …}
67: Simplicite.Ajax.ObjectField {id: "8930", name: "contractImmoInvestorId__investorImmoLegalEntityId__legEntityEmail", label: "Mail", help: "", obfId: "19387", …}
68: Simplicite.Ajax.ObjectField {id: "8937", name: "contractImmoInvestorId__investorImmoLegalEntityId__legEntityPhone", label: "Téléphone", help: "", obfId: "19388", …}
69: Simplicite.Ajax.ObjectField {id: "8933", name: "contractImmoInvestorId__investorImmoLegalEntityId__LegEntityImmoAddressid", label: "Adresse", help: "", obfId: "19389", …}

70: Simplicite.Ajax.ObjectField {id: "8795", name: "contractImmoTenantId", label: "Locataire", help: "", obfId: "19392", …}
71: Simplicite.Ajax.ObjectField {id: "9103", name: "contractImmoTenantId__tenantId", label: "Code locataire", help: "<p>Valeur calcul&eacute;e automatiquement</p>", obfId: "19393", …}
72: Simplicite.Ajax.ObjectField {id: "9109", name: "contractImmoTenantId__tenantTypePerson", label: "Type Personne", help: "", obfId: "19394", …}
73: Simplicite.Ajax.ObjectField {id: "9108", name: "contractImmoTenantId__tenantStatus", label: "Statut locataire", help: "", obfId: "19395", …}
74: Simplicite.Ajax.ObjectField {id: "9105", name: "contractImmoTenantId__tenantImmoNatPersid", label: "Personne physique", help: "", obfId: "19396", …}
75: Simplicite.Ajax.ObjectField {id: "8985", name: "contractImmoTenantId__tenantImmoNatPersid__natPersonId", label: "Code pers. physique", help: "<p>Valeur calcul&eacute;e automatiquement</p>", obfId: "19397", …}
76: Simplicite.Ajax.ObjectField {id: "8998", name: "contractImmoTenantId__tenantImmoNatPersid__natPersonSex", label: "Civilité", help: "", obfId: "19398", …}
77: Simplicite.Ajax.ObjectField {id: "8984", name: "contractImmoTenantId__tenantImmoNatPersid__natPersonFirstName", label: "Prénom", help: "", obfId: "19399", …}
78: Simplicite.Ajax.ObjectField {id: "8987", name: "contractImmoTenantId__tenantImmoNatPersid__natPersonLastName", label: "Nom", help: "", obfId: "19400", …}
79: Simplicite.Ajax.ObjectField {id: "8983", name: "contractImmoTenantId__tenantImmoNatPersid__natPersonEmail", label: "Email", help: "", obfId: "19401", …}
80: Simplicite.Ajax.ObjectField {id: "8994", name: "contractImmoTenantId__tenantImmoNatPersid__natPersonPhone", label: "Téléphone", help: "", obfId: "19402", …}
81: Simplicite.Ajax.ObjectField {id: "8986", name: "contractImmoTenantId__tenantImmoNatPersid__NatPersonImmoAddressid", label: "Adresse", help: "", obfId: "19403", …}
82: Simplicite.Ajax.ObjectField {id: "9104", name: "contractImmoTenantId__tenantImmoLegEntityid", label: "Personne morale", help: "", obfId: "19405", …}
83: Simplicite.Ajax.ObjectField {id: "8917", name: "contractImmoTenantId__tenantImmoLegEntityid__legalEntityId", label: "Code personne morale", help: "<p>Valeur calcul&eacute;e automatiquement</p>", obfId: "19406", …}
84: Simplicite.Ajax.ObjectField {id: "8938", name: "contractImmoTenantId__tenantImmoLegEntityid__legEntityRcs", label: "RCS", help: "", obfId: "19407", …}
85: Simplicite.Ajax.ObjectField {id: "8926", name: "contractImmoTenantId__tenantImmoLegEntityid__legEntityCompanyName", label: "Nom société", help: "", obfId: "19408", …}
86: Simplicite.Ajax.ObjectField {id: "8930", name: "contractImmoTenantId__tenantImmoLegEntityid__legEntityEmail", label: "Mail", help: "", obfId: "19409", …}
87: Simplicite.Ajax.ObjectField {id: "8937", name: "contractImmoTenantId__tenantImmoLegEntityid__legEntityPhone", label: "Téléphone", help: "", obfId: "19410", …}
88: Simplicite.Ajax.ObjectField {id: "8933", name: "contractImmoTenantId__tenantImmoLegEntityid__LegEntityImmoAddressid", label: "Adresse", help: "", obfId: "19411", …}

89: Simplicite.Ajax.ObjectField {id: "8791", name: "contractImmoBankAccId", label: "Compte bancaire", help: "", obfId: "19413", …}
90: Simplicite.Ajax.ObjectField {id: "8742", name: "contractImmoBankAccId__bankAccountId", label: "Code compte bancaire", help: "<p>Valeur calcul&eacute;e automatiquement</p>", obfId: "19414", …}
91: Simplicite.Ajax.ObjectField {id: "8744", name: "contractImmoBankAccId__bankAccountLabel", label: "Libellé", help: "", obfId: "19415", …}
92: Simplicite.Ajax.ObjectField {id: "8741", name: "contractImmoBankAccId__bankAccountIban", label: "IBAN", help: "", obfId: "19416", …}
93: Simplicite.Ajax.ObjectField {id: "8739", name: "contractImmoBankAccId__bankAccountBic", label: "BIC", help: "", obfId: "19417", …}
94: Simplicite.Ajax.ObjectField {id: "8745", name: "contractImmoBankAccId__bankAccountName", label: "Nom banque", help: "", obfId: "19418", …}
95: Simplicite.Ajax.ObjectField {id: "8746", name: "contractImmoBankAccId__bankAccountStatus", label: "Statut compte bancaire", help: "", obfId: "19419", …}
96: Simplicite.Ajax.ObjectField {id: "2", name: "created_dt", label: "Créé le", help: "", obfId: "", …}
97: Simplicite.Ajax.ObjectField {id: "3", name: "created_by", label: "Créé par", help: "", obfId: "", …}
98: Simplicite.Ajax.ObjectField {id: "4", name: "updated_dt", label: "Modifié le", help: "", obfId: "", …}
99: Simplicite.Ajax.ObjectField {id: "5", name: "updated_by", label: "Modifié par", help: "", obfId: "", …}

La première Adresse complète qui concerne le Bien ne pose pas de pb puisqu’elle est unique.
Ce sont les deux autres qui poses pb : celle du Leg et celle du Nat.

Comment faire pour installer le module chez vous ? Que devons nous faire ? (Générer un Git par exemple ? )

J’ai accès à formation1.

Après vérif, le loader Simplicité ne sait pas charger ce genre de jointure à 4 niveaux. Les full-input sont calculés après chargement des champs mais en regardant que 2 niveaux via leur Foreign-key simple.

Donc comme expliqué en début de POST il faut donc actuellement obligatoirement surcharger les noms via “input/tag” dans “Attribut d’objet”. mettez un simple nom unique sur les champs non unique dans l’objet comme

addrComplete1
addrComplete2
addrComplete3
etc…

En parallèle, je vais regarder si on peut faire évoluer le moteur pour charger les “chemins complets” dès le début mais ce sera à priori un pb d’oeuf et de poule, il faut nécessairement 2 scan de l’objet car on peut paramétrer le lien “à l’envers” dans l’objet (mettre la FK après le champ ramené comme vous avez fait sur certains champs).

Merci beaucoup @Francois, je confirme qu’on faisant une surcharger des noms via “input/tag” j’arrive à contourner le pb et les adresses sont maintenant bien différentes.

Oui on a toujours fait comme ça dans le passé, y compris pour “résumer” l’objet qui commence à être gros.

Sinon, j’ai réussi dans le moteur à calculer les chemins complet avant chargement des champs pour lever ce genre d’ambiguités. On pourra refaire un test sans cette surcharge des inputs quand ce sera livré.

@Francois,
Je confirme que le pb a été réglé et qu’il n’y a plus besoin de surchage input pour ces relations à 4 niveaux. Merci.