function populateChargeCodeFromProject(executionContext) {
var formContext = executionContext.getFormContext();
// Get the selected Project from the lookup field
var projectLookup = formContext.getAttribute("msdyn_project").getValue();
if (projectLookup && projectLookup[0]) {
var projectId = projectLookup[0].id.replace(/[{}]/g, "");
// Retrieve Charge Code from Project entity
Xrm.WebApi.retrieveRecord("msdyn_project", projectId, "?$select=tcg_chargecode").then(
function success(result) {
var chargeCode = result.tcg_chargecode;
if (chargeCode !== null && chargeCode !== undefined) {
// Set the Charge Code in Actuals entity form
formContext.getAttribute("tcg_chargecode").setValue(chargeCode);
formContext.getAttribute("tcg_chargecode").setSubmitMode("always");
// Save the form (this updates the database)
formContext.data.entity.save();
// Update the record in the database directly
var recordId = formContext.data.entity.getId().replace(/[{}]/g, "");
var entityName = formContext.data.entity.getEntityName();
var data = { "tcg_chargecode": chargeCode };
Xrm.WebApi.updateRecord(entityName, recordId, data).then(
function success(result) {
console.log("Charge Code updated successfully in database.");
// Force a refresh of the Active Actuals View
Xrm.Utility.refreshParentGrid();
},
function error(error) {
console.error("Error updating Charge Code:", error.message);
}
);
} else {
console.warn("Charge Code not found in Project entity.");
formContext.getAttribute("tcg_chargecode").setValue(null);
formContext.data.entity.save();
}
},
function error(error) {
console.error("Error retrieving Charge Code:", error.message);
}
);
} else {
console.warn("No Project selected.");
}
}