Merci @Francois pour votre retour.
Il n’y a pas de duplication de champs dans cet objet.
Voici le code que j’utilise :
// ImmoLeaseTenant front side hook
(function(ui) {
if (!ui) return;
var app = ui.getAjax();
// Hook called by each object instance
Simplicite.UI.hooks.ImmoLeaseTenant = function(o, cbk) {
try {
console.log("ImmoLeaseTenant hooks loading...");
var p = o.locals.ui;
if (p && o.isMainInstance()) {
p.form.onload = function(ctn, obj) {
var leaseTenantImmoTenantId = ui.getUIField(ctn, obj, "leaseTenantImmoTenantId");
leaseTenantImmoTenantId.ui.on("change", function() {
var leaseTenantEndDt = ui.getUIField(ctn, obj, "leaseTenantEndDt");
var tenantEndDt = leaseTenantEndDt.ui.val();
if (tenantEndDt == '') { // Si la date de fin n'est pas encore renseignée :
// On récupère la date de fin du bail
var leaseEndDate = ui.getUIField(ctn, obj, "leaseTenantImmoLeaseId.leaseEndDate");
var leaseEndDt = leaseEndDate.ui.val();
// Quel type de bail ?
var leaseType = ui.getUIField(ctn, obj, "leaseTenantImmoLeaseId.leaseType");
var type = leaseType.ui.val();
if ((type == "10") || type == "100") { // 3,6,9 ou Box
// on met la date de fin du bail :
ui.getUIField(ctn, obj, "leaseTenantEndDt").ui.val(leaseEndDt);
}
var loc = leaseTenantImmoTenantId.ui.val();
console.log("RowId du locataire sélectionné = " + loc);
var tenantTypePerson = ui.getUIField(ctn, obj, "leaseTenantImmoTenantId.tenantTypePerson");
var typePerson = tenantTypePerson.ui.val();
console.log("typePerson = " + typePerson);
if (typePerson == 'PM') {
var legEntityFamily = ui.getUIField(ctn, obj, "leaseTenantImmoTenantId.tenantImmoLegEntityid.legEntityFamily");
var family = legEntityFamily.ui.val();
console.log(" family = " + family);
}
}
});
};
}
}
catch(e) {
app.error("Error in Simplicite.UI.hooks.ImmoLeaseTenant: " + e.message);
}
finally {
console.log("ImmoLeaseTenant hooks loaded.");
cbk && cbk(); // final callback
}
};
})(window.$ui);
Ce code est appelé dans le onchange de la clé technique leaseTenantImmoTenantId, donc à chaque fois qu’on change de locataire.
Dans l’exemple ci-dessous, j’ai sélectionné un locataire :
Avant même de faire un save, je vois déjà dans le formulaire la valeur du type personne associé à ce locataire, or, dans la console, la valeur n’est pas encore connue.
Bizarrement, si je resélectionne le locataire (toujours sans faire de save), cette fois-ci, la variable est alimentée :
Mon pb est là, car c’est avant de faire le save, et dès la sélection d’un locataire, que j’ai besoin de savoir son type.
Je ne sais pas si c’est clair.