Hello,
I have problem that my code is not completing the work on spBeforesave function before closing the form.
I am sure that there is no problem in my code, unless i am missing something!
The goal of this code is to create and set a unique custom id
I think the problem is that it needs more time in order to complete the task and set the values
before contiue to the main list.
what i should do in this case i tried the set timeout function but did not resolve my issue :
setTimeout(xxxxxxxxxxxxxxxx, 500);
this is my code below:
fd.spBeforeSave(function () {
fd.field("BaptismRecordParishNameIdFk").ready().then(function () {
return fd.field("BaptismRecordTypeIdFk").ready();
}).then(function () {
// Filter by Parish id and year number
var fdParishCurrentID = fd.field('BaptismRecordParishNameIdFk').value.LookupId ? fd.field('BaptismRecordParishNameIdFk').value.LookupId : fd.field('BaptismRecordParishNameIdFk').value;
var fdRecordYear = fd.field('BaptismRecordYear').value;
var fdRecordCode = fd.field("BaptismRecordTypeIdFk").value.TransactionCode;
var filter = "BaptismRecordParishNameIdFk/Id eq " + fdParishCurrentID + " and BaptismRecordYear eq " + fdRecordYear;
var newNumber = 0;
pnp.sp.web.lists.getByTitle("BaptismList").items.select("Id", "Title", "BaptismIDYearlyNumber").filter(filter).top(1).orderBy("BaptismIDYearlyNumber", false).get().then((items) => {
console.log(items);
var lastNumber = 0;
if (items.length > 0) {
lastNumber = items[0].BaptismIDYearlyNumber;
} else {
lastNumber = 0;
}
//Get New yearly number
newNumber = lastNumber + 1;
//Set Yearly Number
fd.field('BaptismIDYearlyNumber').value = newNumber;
//Set Code
fd.field('BaptismRecordCode').value = fdRecordCode;
//Set Baptism New Sys ID
fd.field('BaptismRecordParishFullID').value = fdRecordCode + " " + fdRecordYear + "/" + newNumber;
});
});
});