New Userscript

This makes HRMS more user friendly and easy to use

Você precisará instalar uma extensão como Tampermonkey, Greasemonkey ou Violentmonkey para instalar este script.

You will need to install an extension such as Tampermonkey to install this script.

Você precisará instalar uma extensão como Tampermonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Userscripts para instalar este script.

Você precisará instalar uma extensão como o Tampermonkey para instalar este script.

Você precisará instalar um gerenciador de scripts de usuário para instalar este script.

(Eu já tenho um gerenciador de scripts de usuário, me deixe instalá-lo!)

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

(Eu já possuo um gerenciador de estilos de usuário, me deixar fazer a instalação!)

// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      1.9
// @description  This makes HRMS more user friendly and easy to use
// @author       You
// @match        https://hrms.indianrail.gov.in/HRMS/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=gov.in
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    // Your code here...
    $(document).ready(function() {
    var currentUrl = window.location.href;
    var nav = `<li class="nav-item">
                <a class="nav-link" href="https://hrms.indianrail.gov.in/HRMS/ipass/accept-promotion-office-order">Promotion Order</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="https://hrms.indianrail.gov.in/HRMS/ipass/new-joinee-onboarding-process-approve">On-Boarding</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="https://hrms.indianrail.gov.in/HRMS/ipass/accept-new-joinee-office-order">New Joinee</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="https://hrms.indianrail.gov.in/HRMS/ipass/accept-regular-posting-office-order">Regular Posting</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="https://hrms.indianrail.gov.in/HRMS/ipass/accept-exit-office-order">Exit Order</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="https://hrms.indianrail.gov.in/HRMS/leave-management/all-leave-encashment-pending">Leave Encashment</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="https://hrms.indianrail.gov.in/HRMS/transfer/forward-mutual-transfer-requests">Mutual Transfer</a>
            </li>`;
    $('#myMenu').append(nav);


    if (currentUrl === "https://hrms.indianrail.gov.in/HRMS/loan-advances/submitted-pf-loan-applications") {
        console.log('On submitted applications page - clicking fetch link');

        $('#pfLoanListBody tr:last-child #fetch-pf-loan-application').click();
    }


    else if (currentUrl === "https://hrms.indianrail.gov.in/HRMS/loan-advances/get-pf-loan-application") {
        console.log('On loan application page - filling form and submitting');

        $('#remarksForPfLoan').val('OK');

        $('#print-pf-loan-application-button').click();

        setTimeout(function() {
            var yesButton = $('button.bootbox-accept');
            if (yesButton.length > 0) {
                console.log('Clicking Yes button in confirmation popup');
                yesButton.click();

                setTimeout(function() {
                    var digitalSignButton = $('#digital-sign');
                    if (digitalSignButton.length > 0) {
                        console.log('Clicking Sign Digitally button');
                        digitalSignButton.click();

                        setTimeout(function() {
                            var yesButton = $('button.bootbox-accept');
                            if (yesButton.length > 0) {
                                console.log('Clicking Yes button in final confirmation popup');
                                yesButton.click();

                                setTimeout(function() {
                                    var signButton = $('#pdf-sign');
                                    if (signButton.length > 0) {
                                        console.log('Digitally sigining');
                                        signButton.click();

                                        setTimeout(function() {
                                            var okButton = $('button.ok');
                                            if (okButton.length > 0) {
                                                console.log('OK');
                                                okButton.click();
                                            }
                                        }, 4000);
                                    }
                                }, 1000);
                            }
                        }, 1000);
                    }
                }, 2500);

            }
        }, 1000);

        console.log('Form filled and submitted');
    }

    else if (currentUrl === "https://hrms.indianrail.gov.in/HRMS/leave-management/get-leave-application") {
        console.log('On leave application page');

        if($('#infoCertified').text() == 'NO') {
            alert('Leave not certified');
            return;
        }
        $("#process-leave-application-btn").after('<button onclick="forwardIt()" type="button" class="btn zoom" id="forward-btn">Forward</button>');
    }

    else if (currentUrl === "https://hrms.indianrail.gov.in/HRMS/organization/map-org-employees") {
        console.log('On map org employee page');

        $("#reset").after('<button onclick="selectSection()" type="button" class="btn zoom" id="forward-btn">Select Employees</button>');
    }


    else if (currentUrl === "https://hrms.indianrail.gov.in/HRMS/assign-bill-unit") {
        console.log('On Assign Bill Unit page');

        var ids = prompt('Enter HRMS ids with comma').replace(/\s+/g, '').split(",");
        for (i = 0; i < ids.length; i++) {
            $("#addRowButton").click(); console.log(ids[i]); $("#ipasEmployeeId" + i).val(ids[i]).change();
        }
    }

    else if (currentUrl === "https://hrms.indianrail.gov.in/HRMS/leave-management/periodic-credit-of-leave") {
        console.log('On Periodic Credit leave page');

        $("#fetch-employee-list").after('<button type="button" onclick="leaveCreditReport()" class="btn btn-primary-grad" id="fetch-report">Get Report</button>');
    }

    else if (currentUrl === "https://hrms.indianrail.gov.in/HRMS/leave-management/updation-of-initial-balance") {
        console.log('On Initial leave vetting page');

        $("#proceedProcess").after('<button type="button" onclick="leaveVettingReport()" class="btn btn-primary" id="fetch-report">Get Report</button>');
    }

    else if (currentUrl === "https://hrms.indianrail.gov.in/HRMS/transfer/forward-mutual-transfer-requests") {
        console.log('On Mutual transfer page');
        $('#fetch-transfer-proposal-details').click(function() {
            mutualTransfer();
        });
    }

	else if (currentUrl === "https://hrms.indianrail.gov.in/HRMS/groupb-my-inbox/groupb-flow") {
                exit();
		setTimeout(function() {
			if($($("#remarksHistoryTable tbody tr td")[0]).text() == "1") window.location.assign("https://hrms.indianrail.gov.in/HRMS/groupb-my-inbox");
			else {
				$("select#action").val(1).trigger('change'); 
				$("textarea#remarks").val("Examine");
				var dept = $("#applicationBaiscDetailTable tbody tr td:nth-child(9)").text();
				if (dept.indexOf("OPERATING") == 0) {
					var chos = 'DSIOGM';
				}
				else if (dept.indexOf("COMMERCIAL") == 0) {
					var chos = 'YCQDBU';
				}

				else if (dept.indexOf("ELECTRICAL") == 0) {
					var chos = 'GRUUNU';
				}
				else if (dept.indexOf("MECHANICAL") == 0) {
					var chos = 'MJBMPA';
				}

				$('#forwardTo').append($('<option>', {value:chos})); 
				$("#forwardTo").val(chos);
						setTimeout(function() {
					$("#submitApplicationBtn").click();
						}, 1000);
			}
		}, 1000);


	}

        else if (currentUrl.indexOf("https://hrms.indianrail.gov.in/HRMS/groupb-my-inbox") == 0) {
                exit();
		setTimeout(function() {
			$("#groupBPendingAppnListTable tr td:last-child a")[Math.floor(Math.random() * $("#groupBPendingAppnListTable tr").length)].click();
		}, 1000);
	}

	

    else {
        console.log('Not on expected pages. Current URL:', currentUrl);
    }

    window.selectSection = function () {
        var ids = prompt('Enter HRMS ids with comma').trim().split(" ");
        var new_section = prompt('Enter New Section');
        var non_matchingRows = [];

        $('#mappingEmpListTable tr').each(function() {
            var $row = $(this);
            var firstTdText = $row.find('td:first label').text().trim();

            if (ids.includes(firstTdText)) {
                console.log(firstTdText);
                $row.find('input.addToOrg').prop('checked', true).trigger('change');
                $row.find('.sectionId option:contains('+new_section+')').filter(function() {
                    return $(this).text() === new_section;
                }).prop('selected', true).trigger('change');
            }
            else {
                non_matchingRows.push(firstTdText);
            }
        });

        alert(non_matchingRows);
    };

    window.forwardIt = function () {
        $('#leaveAction').val('F').trigger('change');
        $('#modifySearchRange').click();
        var dept = '';
        var authority = '';
        var empDetails1 = $('#empDetails1').text();
        if (empDetails1.indexOf("COMMERCIAL") == 0) {
            dept = 'COMMERCIAL';
            authority = 'GAUPWX';
        }
        else if (empDetails1.indexOf("OPERATING") == 0) {
            dept = 'OPERATING';
            authority = 'ULLDXE';
        }
        else if (empDetails1.indexOf("ELECTRICAL") == 0) {
            dept = 'ELECTRICAL';
            var empDetails = $('#empDetails').text();
            if (empDetails.indexOf(" TRD ") > 0) {
                authority = 'SR DEE/TRD';
            }
            else if (empDetails.indexOf("GENERAL") > 0) {
                authority = 'SR DEE/G';
            }
            else {
                var match = $("label#sancAuthorityDetails").text().match(/\((.*?)\)/);
                if (match != null) authority = match[1];
        }

        }
        $('#remarks').val('Forwarded for suitable action please');

        setTimeout(function() {
            if (dept == '') {
                $('#searchRangeBtn').click();
                return;
            }
            $('#frwDept option:contains('+dept+')').prop('selected', true).trigger('change');
            console.log(dept + " department selected in popup.");

            setTimeout(function() {
                $('#searchRangeBtn').click();
                if (authority == '') {
                    return;
                }
                $('#frwAuthority option:contains('+authority+')').prop('selected', true).trigger('change');
                console.log(dept + " " + authority + " authority selected.");
                $('#process-leave-application-btn').click();

                setTimeout(function() {
                    //$('button[data-bb-handler="confirm"]').click();
                }, 500);
            }, 500);

        }, 500);
    };


    window.leaveCreditReport = async function () {
        var billUnitCount = $("#billUnit").children().length;
        var output = '';
        var count = '';
        var txt = '';
        for (var i=1; i < billUnitCount; i++) {
            $(`#billUnit option:eq(${i})`).prop("selected", true);
            $("#fetch-employee-list").click();
            count = $("#empCount").text();

            if (count != '0') {
                txt = $(`#billUnit option:eq(${i})`).val() + " \t" + count + " ";
                $("#employeeListTBody tr").each(function() {
                    txt += $(this).find("td:eq(3)").text().substring(0,3) + ",";
                });

                $("#proceedButtonDiv").after(`<div>${txt}</div>`)
            }
            await delay(500);
        }
    }

    window.leaveVettingReport = async function () {
        var billUnitCount = $("#billUnit1").children().length;
        var output = '';
        var count = '';
        var txt = '';
        for (var i=1; i < billUnitCount; i++) {
            $(`#billUnit1 option:eq(${i})`).prop("selected", true);
            $("#proceedProcess").click();
            await delay(100);
            if ($(".loading-overlay-content").is(":visible")) {
                await delay(3000);
            }

            if ($("div.alertify .ok").length == 0) {
                console.log("hello");
                txt = $(`#billUnit1 option:eq(${i})`).val() + " \t";
                $("#initialLeaveBalanceTBody tr").each(function() {
                    txt += $(this).find("td:eq(5) input").val().substring(0,3) + ",";
                });
                $("#resetButton").after(`<div>${txt}</div>`)
            }
            else {
                $("div.alertify button.ok").click();
            }
        }
    }

    window.mutualTransfer = async function () {
        await delay(3000);
        var edu1 = $('#educationalQualification1').val();
        if(edu1 == '') throw new Error("Something went badly wrong!");

        var edu2 = $('#educationalQualification2').val();
        var comm1 = $('#community1').val();
        var comm2 = $('#community2').val();
        var med1 = $('#existingMedicalClassification1').val();
        var med2 = $('#existingMedicalClassification2').val();
        var div1 = $('#unitDivisionName1').val();
        var div2 = $('#unitDivisionName2').val();
        var cur1 = $('#departmentName1').val() + '-> ' + $('#designationName1').val() + '- L' + $('#payLevel1').val();
        var cur2 = $('#departmentName2').val() + '-> ' + $('#designationName2').val() + '- L' + $('#payLevel2').val();
        var bef1 = $('#postOfInitialAppointment1').val() + '- L' + $('#gradePayOfInitialAppointment1').val();
        var bef2 = $('#postOfInitialAppointment2').val() + '- L' + $('#gradePayOfInitialAppointment2').val();
        var rem1 = $('#remarks1').val();
        var rem2 = $('#remarks2').val();


        var insert = `
        <div style="width: 30%">
        <table class="table color-table table-bordered table-padding-5">
          <thead>
            <tr>
              <th></th>
              <th>Emp 1</th>
              <th>Emp 2</th>
            </tr>
          </thead>
          <tbody>
            <tr><td>Education</td><td>${edu1}</td><td>${edu2}</td></tr>
            <tr><td>Community</td><td>${comm1}</td><td>${comm2}</td></tr>
            <tr><td>Medical</td><td>${med1}</td><td>${med2}</td></tr>
            <tr><td>Division</td><td>${div1}</td><td>${div2}</td></tr>
            <tr><td>Current</td><td>${cur1}</td><td>${cur2}</td></tr>
            <tr><td>Before</td><td>${bef1}</td><td>${bef2}</td></tr>
            <tr><td>Remarks</td><td>${rem1}</td><td>${rem2}</td></tr>
          </tbody>
        </table>`;

        $('#employeeDataDiv table.color-table').after(insert);
    }

    window.delay = function (ms) {
        return new Promise(resolve => setTimeout(resolve, ms));
    }

	window.exit = function () {
		throw new Error('This is not an error. This is just to abort javascript');
	} 
});
























































































































})();