Error in postLoad hook for object

4.0
Error in postLoad hook for object
0
Tags: #<Tag:0x00007f648eb3ee68>

#1

J’essaie de générer un PDF pour un bail. Dans le code je teste si le propriétaire est un investisseur ou bien ou société afin d’afficher le nom ou la raison sociale.
J’utilise une première fois la fonction « getTmpObject » pour créer une instance temporaire de l’objet société/Bien (ImmoPropertyCompagny) afin de voir, en fonction de l’identifiant du bien, s’il y a une société associé au bien et qui est « Manager » :
var a =rent.getField(“leaseImmoPropertyid.propertyId”).getValue();
//allouer une instance temporaire de l’objet Société/Bien
var o = rent.getGrant().getTmpObject(“ImmoPropertyCompagny”);
o.resetFilters();
o.getField(“propertyId”).setFilter(a);
o.getField(“propertyCompManager”).setFilter(“1”);
var rows = o.search();
console.error("row.size = " + rows.size());
if (rows.size() == 0) {
//Pas de société gestionnaire pour ce bien:
console.error(“Pas de société gestionnaire pour ce bien”);
} else
{
var row = rows.get(0);
o.setValues(row);
var val2 = o.getField(“propertyCompManager”).getValue();
console.error(“val2 :” + val2);
}
Jusqu’au là tout va bien, quand j’essaie de faire pareil avec l’objet Investisseur/Bien (immoPropertyInvestor) en enchaînant avec le code suivant :
var p = rent.getGrant().getTmpObject(“immoPropertyInvestor”);
p.resetFilters();
p.getField(“propertyId”).setFilter(a);
p.getField(“propertyInvManager”).setFilter(“1”);
var rows2 = p.search();
if (rows2.size() == 0) {
//Pas d’investisseur gestionnaire pour ce bien:
console.error(“Pas d’investisseur gestionnaire pour ce bien”);
}
else {
var row1 = rows.get(0);
p.setValues(row1);
var val1 = p.getField(“propertyInvManager”).getValue();
console.error(“val1 :” + val1);
}
J’obtiens l’erreur suivante : ECORED0001|system|com.simplicite.util.engine.ObjectLoader|load|Erreur Error in postLoad hook for object immoPropertyInvestor

Pourriez-vous m’aider svp ? Que peut-être le pb de mon objet immoPropertyInvestor ?
Merci d’avance.


(David AZOULAY) #2

Il y a forcément une erreur dans le postLoad de votre objet immoPropertyInvestor (et elle se déclenche lors de la tentative de load de l’objet temporaire lors de l’appel du getTmpObject(“immoPropertyInvestor”))


(David AZOULAY) #3

Déjà il me semble qu’il y a un pb de casse dans le nom de l’objet immoPropertyInvestor (avec un i) au lieux de ImmoPropertyInvestor (avec un I)


(David AZOULAY) #4

Ok après avoir testé je confirme que si on fait un get[Tmp]Object sur un objet inconnu (ou non habilité au user) il n’y a pas de message qui indique ça explicitement mais ça finit par planter lors de l’invocation du postLoad, et l’objet est “mal” chargé. C’est assez étonnant que ça arrive jusque là…

On a amélioré le loader pour que dans ce cas le message remonté soit plus clair (“Object xxx not granted”),


#5

En effet, c’était juste un problème de case dans le nom de l’objet.
Tout fonctionne maintenant.
Encore merci David.
Abed.


(David AZOULAY) #6

En fait un simple problème de casse dans le nom de l’objet était un cas particulier qui faisait que le message “objet inconnu” n’était pas affiché, du coup le message d’erreur suivant (l’erreur au postLoad indiquée) n’était ni pertinente ni explicite…

On a donc renforcé les contrôles sur le nom de l’objet dans ce cas particulier