Initrefselect relation N-N

Bonjour, j’ai ce modèle de donnée :

Je souhaite lorsque je dois associer mon objet RciFlow avec mon objet RciSubsidiary n’afficher que les filiales qui sont reliées aux 2 objets RciApplication auquel est relié mon objet RciFlow.

J’ai essayé d’utiliser le initRefSelect sur mon objet RciSubFlo et sur mon objet RciSubsidiary, mais je ne rentre jamais dans cette méthode initRefSelect.

Avez-vous une idée pour filtrer cette association ?

Ma version est :

  • Simplicité version4.0 patch level P24

  • Built on2020-02-22 19:10 (revision 7230510844c88efcd5bfbeff978ae3d65036cfb7)

  • Database levelP24;7230510844c88efcd5bfbeff978ae3d65036cfb7

Merci pour votre aide
Quentin

On parle bien d’une association réalisée avec le bouton “associer” ?

T’as regardé du côté de How to make an optional initRefSelect ?

oui c’est bien ça, je voudrais filtrer la liste qui s’affiche lors d’un clique sur le bouton “associer”

Oui j’ai vu ce post, je l’ai utilisé pour faire un initRefSelect sur une liaison 1-N sur un autre objet.
Je voulais faire la même méthode pour ma relation N-N mais je n’y arrive pas

Donc tu confirmes que tu as essayé avec le initUpdate + preSearch plutôt qu’avec le initRefSelect ?

Non je n’avais pas compris ça, j’ai cru qu’utiliser le initUpdate + preSearch c’était pour rendre le filtrage optionnel.
Je vais essayer avec ces 2 méthodes, merci.

Dans l’exemple oui, mais le cas général c’est d’utiliser ces hooks + un paramètre d’objet pour contourner les limitations du initRefSelect. Et je te conseille de faire un log du nom d’instance utilisé par le “associate”, c’est pas dit que ce soit le même que dans l’exemple fourni.

Bonjour,

J’ai utilisé le initUpdate + preSearch pour faire mon filtrage, cela fonctionne.
Seulement cela s’applique à chaque fois que l’on veut faire une association avec mon objet.
J’ai besoin que le filtre s’applique uniquement pour une seule association.
J’ai essayé de retrouver l’objet qui appelle mon objet Subsidiary dans le preSearch mais je n’y arrive pas.

Ma condition pour l’instant est :
if(getInstanceName().equals("ref_ajax_RciSubsidiary") && getGrant().hasParameter("FLOW_APPS"))

Comment je peux contrôler ma condition pour qu’elle soit vraie uniquement si l’association vient de l’objet rciFlow ?

Tu as essayé avec getParentObject() ?

Oui j’ai essayé de faire

@Override
	public void preSearch(){
		ObjectDB parent = getParentObject();
		if(getInstanceName().equals("ref_ajax_RciSubsidiary") && getGrant().hasParameter("FLOW_APPS")){
				if(parent!=null)
					AppLog.info(getClass(), "getParentObject : ", parent.getName(), getGrant());
				else
					AppLog.info(getClass(), "getParentObject : ", "parent null", getGrant());			
		}
	}

Cela me retourne tout le temps que le parent est null.

Je précise que ma relation entre mes 2 objets est un relation N-N et que j’appelle le preSearch lorsque je veux associer mon objet Flow avec un objet Subsidiary

Aaaaaah pardon je me fourvoie, en ce cas il faut utiliser initAssociate.

Cependant, j’ai testé sur la démo, et parent est également tout le temps null. Il y a une anomalie sur le positionnement du parent dans le cas de l’association, il va falloir attendre résolution car il n’y a pas de contournement.

cc @Francois j’ouvre un ticket