UI page code is not working - need urgent help

ssunpreet55
Giga Explorer

<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide">

<style>

body {

    font-family: Arial, sans-serif;

    display: flex;

    justify-content: center;

    align-items: flex-start;

    height: 100vh;

    margin: 80px;

    padding: 80px;

    background-color: #F4F4F4;

}

.container {

    width: 700px;

    background: white;

    padding: 40px;

    border-radius: 8px;

    box-shadow: 0 0 15px rgba(0, 0, 0, 0.1);

    margin-top: 20px;

}

h2 {

    text-align: center;

    color: #333;

    font-size: 28px;

    margin-bottom: 30px;

}

form {

    display: flex;

    flex-direction: column;

}

label {

    font-weight: bold;

    display: block;

    margin: 15px 0 8px;

}

input, select {

    width: 100%;

    padding: 12px;

    margin-bottom: 20px;

    border: 1px solid #ccc;

    border-radius: 4px;

    box-sizing: border-box;

}

button.submit-btn {

    width: 100%;

    padding: 12px;

    background-color: #007BFF;

    color: white;

    border: none;

    border-radius: 4px;

    font-size: 18px;

    cursor: pointer;

    margin-top: 20px;

}

button.submit-btn:hover {

    background-color: #0056B3;

}

</style>

<script>

 function onSubmit() {

console.log("Submit button clicked!");

    var contractorSysId = document.getElementById("contractor_sys_id").value;

    var newManagerSysId = document.getElementById("new_manager_sys_id").value; //:white_check_mark: Capture sys_id

    console.log("Contractor ID:", contractorSysId);

    console.log("New Manager sys_id:", newManagerSysId);

    if (!newManagerSysId) {

        alert("Please select a valid new manager.");

        return;

    }

    var ga = new GlideAjax('ChangeContractorManagerHandler');

    ga.addParam('sysparm_name', 'createRequest');

    ga.addParam('contractor', contractorSysId);

    ga.addParam('newManager', newManagerSysId); //:white_check_mark: Send sys_id instead of name

    ga.getXMLAnswer(function(response) {

        console.log("Server Response:", response);

        if (response === "success") {

            alert("Manager change request submitted. Waiting for approval.");

            location.reload();

        } else {

            alert("Failed: " + response);

        }

    });

}

// :white_check_mark: Update sys_id when a manager is selected

function updateSysId(sysId) {

    document.getElementById("new_manager_sys_id").value = sysId;

}

</script>

<div class="container">

    <h2>Change Contractor Manager Request</h2>

    <form id="changeContractorForm">

        <!-- Display the contractor's name (read-only) -->

        <label for="contractor_name_display">Contractor Name</label>

        <input type="text" id="contractor_name_display" value="${gs.getUser().getDisplayName()}" readonly="readonly" />

        <!-- Hidden field to pass the contractor's sys_id -->

        <input type="hidden" id="contractor_sys_id" name="contractor_name" value="${gs.getUserID()}" />

        <!-- Manager Selection Field -->

        <label for="new_manager">New Manager Name</label>

        <g:macro_invoke macro="ui_reference"

            id="ref_sys_user"

            name="new_manager"

            table="sys_user"

            show_popup="true"

            query="active=true"

            onchange="updateSysId(this.value);" />

        <!-- Hidden field to store the sys_id of selected manager -->

        <input type="hidden" id="new_manager_sys_id" name="new_manager_sys_id" />

        <button type="button" class="submit-btn" onclick="onSubmit()">Submit</button>

    </form>

</div>

</j:jelly>

 

 

Script include 

var ChangeContractorManagerHandler = Class.create();

ChangeContractorManagerHandler.prototype = {

    initialize: function() {},

 

    createRequest: function(contractor, newManager) {

        try {

            var gr = new GlideRecord('u_change_contractor_manager');

            gr.initialize();

            gr.u_contractor_name = contractor; // Ensure this is a REFERENCE field (sys_id)

            gr.u_new_manager = newManager; // Ensure this is a REFERENCE field (sys_id)

            gr.u_status = 'Pending';

           gr.u_requested_by = gs.getSession().getUserID();

            gr.u_appproval_status = 'Pending Approval'; // Fixed typo

 

            var budgetOwner = this.getBudgetOwner(contractor);

            if (budgetOwner) {

                gr.u_budget_owner = budgetOwner; // Ensure this is a REFERENCE field

            } else {

                gs.error("Budget owner not found for contractor: " + contractor);

                return "Budget owner could not be found.";

            }

 

            var sysId = gr.insert();

            if (sysId) {

                gs.info("Request created: " + sysId);

                return "success";

            } else {

                gs.error("Failed to create request for contractor: " + contractor);

                return "Failed to create the request.";

            }

        } catch (e) {

            gs.error("Error in createRequest: " + e.message);

            return "Error: " + e.message;

        }

    },

 

    getBudgetOwner: function(contractorID) {

        var userGR = new GlideRecord('sys_user');

        if (userGR.get(contractorID)) {

            // Replace "u_budget_owner" with the actual field name in your sys_user table

          var budgetOwner = userGR.getValue('u_budget_owner');

 

            return budgetOwner;

        } else {

            gs.error("Contractor not found: " + contractorID);

            return null;

        }

    },

 

    type: 'ChangeContractorManagerHandler'

};

 

function onSubmit() {

    var contractorSysId = document.getElementById("contractor_sys_id").value;

    var newManagerSysId = document.getElementById("new_manager_sys_id").value;

    if (!newManagerSysId) {

        alert("Please select a valid new manager.");

        return;

    }

 

    var ga = new GlideAjax('ChangeManagerRequest');

    ga.addParam('sysparm_name', 'createRequest');

    ga.addParam('sysparm_contractor', contractorSysId);

    ga.addParam('sysparm_new_manager', newManagerSysId);

    ga.addParam('sysparm_requested_by', gs.getUserID()); // Fix

 

    ga.getXMLAnswer(function(response) {

        console.log("Server Response:", response);

        if (response === "Request Created Successfully") {

            alert("Manager change request submitted.");

            location.reload();

        } else {

            alert("Failed: " + response);

        }

    });

}

// Problem is - it is not saving anything in the u_change_contractor_manager record 

1 REPLY 1

rohansargar
Kilo Guru

Hello,

 

<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide">

<style>
body {
font-family: Arial, sans-serif;
display: flex;
justify-content: center;
align-items: flex-start;
height: 100vh;
margin: 80px;
padding: 80px;
background-color: #F4F4F4;
}
.container {
width: 700px;
background: white;
padding: 40px;
border-radius: 8px;
box-shadow: 0 0 15px rgba(0, 0, 0, 0.1);
margin-top: 20px;
}
h2 {
text-align: center;
color: #333;
font-size: 28px;
margin-bottom: 30px;
}
form {
display: flex;
flex-direction: column;
}
label {
font-weight: bold;
display: block;
margin: 15px 0 8px;
}
input, select {
width: 100%;
padding: 12px;
margin-bottom: 20px;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
}
button.submit-btn {
width: 100%;
padding: 12px;
background-color: #007BFF;
color: white;
border: none;
border-radius: 4px;
font-size: 18px;
cursor: pointer;
margin-top: 20px;
}
button.submit-btn:hover {
background-color: #0056B3;
}
</style>

<script>
function onSubmit() {
console.log("Submit button clicked!");

var contractorSysId = document.getElementById("contractor_sys_id").value;
var newManagerSysId = document.getElementById("new_manager_sys_id").value;

console.log("Contractor ID:", contractorSysId);
console.log("New Manager sys_id:", newManagerSysId);

if (!newManagerSysId) {
alert("Please select a valid new manager.");
return;
}

var ga = new GlideAjax('ChangeContractorManagerHandler');
ga.addParam('sysparm_name', 'createRequest');
ga.addParam('contractor', contractorSysId);
ga.addParam('newManager', newManagerSysId);

ga.getXMLAnswer(function(response) {
console.log("Server Response:", response);
if (response === "success") {
alert("Manager change request submitted.");
location.reload();
} else {
alert("Failed: " + response);
}
});
}

// Update sys_id when a manager is selected
function updateSysId(sysId) {
document.getElementById("new_manager_sys_id").value = sysId;
}
</script>

<div class="container">
<h2>Change Contractor Manager Request</h2>

<form id="changeContractorForm">
<!-- Display the contractor's name (read-only) -->
<label for="contractor_name_display">Contractor Name</label>
<input type="text" id="contractor_name_display" value="${gs.getUser().getDisplayName()}" readonly="readonly" />

<!-- Hidden field to pass the contractor's sys_id -->
<input type="hidden" id="contractor_sys_id" name="contractor_sys_id" value="${gs.getUserID()}" />

<!-- Manager Selection Field -->
<label for="new_manager">New Manager Name</label>
<g:macro_invoke macro="ui_reference"
id="ref_sys_user"
name="new_manager"
table="sys_user"
show_popup="true"
query="active=true"
onchange="updateSysId(this.value);" />

<!-- Hidden field to store the sys_id of selected manager -->
<input type="hidden" id="new_manager_sys_id" name="new_manager_sys_id" />

<button type="button" class="submit-btn" onclick="onSubmit()">Submit</button>
</form>
</div>

</j:jelly>

 

Please try this code

mark as helpful if you got solution for your issue.

 

Best Regards,

Rohan.