We're reclaiming inactive PDIs to keep them available for active builders. Learn what's changing, who's affected, and how to protect your work. Read More

Time sheet portal can visible in progress records

Anish9515
Tera Contributor

Anish9515_0-1736225471806.png

OOB widget -(Time Card Portal - Task Selector) , Below script we can  I change  to get the only IN progress records
function getRecords(table) {
        table = table.trim();
        var gr = new GlideRecordSecure(table); //Get records
        if (!gr.isValid()) {
            return;
        }
        if (gr.instanceOf('pm_project') || gr.instanceOf('pm_project_task') || gr.instanceOf('sn_audit_task') || gr.instanceOf('sn_audit_engagement') || gr.instanceOf('sn_audit_advanced_milestone') || gr.instanceOf('sn_audit_advanced_engagement_project') || gr.instanceOf('sn_grc_issue')) {
            var actualDatesQuery = 'work_startISNOTEMPTY^work_start<=' + weekEndsOnDateTime +
                '^work_endISEMPTY^ORwork_end>=' + weekStartsOnDateTime +
                '^assigned_to=' + data.userId + '^ORadditional_assignee_listLIKE' +
                data.userId;
            var plannedDatesQuery = '^NQwork_startISEMPTY^start_date<=' + weekEndsOnDateTime +
                '^end_date>=' + weekStartsOnDateTime + '^assigned_to=' +
                data.userId + '^ORadditional_assignee_listLIKE' +
                data.userId;
                    //var state1='state=2';
            var encodedQuery = actualDatesQuery + plannedDatesQuery ;
       
            gr.addEncodedQuery(encodedQuery);
        } else {
            gr.addEncodedQuery('assigned_to=' + data.userId + '^sys_created_on<=' + weekEndsOnDateTime + '^active=true');
            var gr_part1 = new GlideRecordSecure(table);
            gr_part1.addEncodedQuery('assigned_to=' + data.userId + '^sys_created_on<=' + weekEndsOnDateTime + '^closed_atBETWEEN' + weekStartsOnDateTime + '@' + weekEndsOnDateTime);
            gr_part1.query();
            _addRecordsToList(gr_part1, false);
            var gr_part2 = new GlideRecordSecure(table);
            gr_part2.addEncodedQuery('additional_assignee_listLIKE' + data.userId + '^sys_created_on<=' + weekEndsOnDateTime + '^active=true');
            gr_part2.query();
            _addRecordsToList(gr_part2, false);
            var gr_part3 = new GlideRecordSecure(table);
            gr_part3.addEncodedQuery('additional_assignee_listLIKE' + data.userId + '^sys_created_on<=' + weekEndsOnDateTime + '^closed_atBETWEEN' + weekStartsOnDateTime + '@' + weekEndsOnDateTime);
            gr_part3.query();
            _addRecordsToList(gr_part3, false);
        }
        gr.query();
        _addRecordsToList(gr, false);
1 REPLY 1

Ankur Bawiskar
Tera Patron

@Anish9515 

something like this

I have assumed State=2 as In progress, you can enhance as per your choice value

function getRecords(table) {
    table = table.trim();
    var gr = new GlideRecordSecure(table); // Get records
    if (!gr.isValid()) {
        return;
    }
    if (gr.instanceOf('pm_project') || gr.instanceOf('pm_project_task') || gr.instanceOf('sn_audit_task') || gr.instanceOf('sn_audit_engagement') || gr.instanceOf('sn_audit_advanced_milestone') || gr.instanceOf('sn_audit_advanced_engagement_project') || gr.instanceOf('sn_grc_issue')) {
        var actualDatesQuery = 'work_startISNOTEMPTY^work_start<=' + weekEndsOnDateTime +
            '^work_endISEMPTY^ORwork_end>=' + weekStartsOnDateTime +
            '^assigned_to=' + data.userId + '^ORadditional_assignee_listLIKE' +
            data.userId + '^state=2'; // Add state condition for "In Progress"
        var plannedDatesQuery = '^NQwork_startISEMPTY^start_date<=' + weekEndsOnDateTime +
            '^end_date>=' + weekStartsOnDateTime + '^assigned_to=' +
            data.userId + '^ORadditional_assignee_listLIKE' +
            data.userId + '^state=2'; // Add state condition for "In Progress"
        var encodedQuery = actualDatesQuery + plannedDatesQuery;

        gr.addEncodedQuery(encodedQuery);
    } else {
        gr.addEncodedQuery('assigned_to=' + data.userId + '^sys_created_on<=' + weekEndsOnDateTime + '^active=true^state=2'); // Add state condition for "In Progress"
        var gr_part1 = new GlideRecordSecure(table);
        gr_part1.addEncodedQuery('assigned_to=' + data.userId + '^sys_created_on<=' + weekEndsOnDateTime + '^closed_atBETWEEN' + weekStartsOnDateTime + '@' + weekEndsOnDateTime + '^state=2'); // Add state condition for "In Progress"
        gr_part1.query();
        _addRecordsToList(gr_part1, false);
        var gr_part2 = new GlideRecordSecure(table);
        gr_part2.addEncodedQuery('additional_assignee_listLIKE' + data.userId + '^sys_created_on<=' + weekEndsOnDateTime + '^active=true^state=2'); // Add state condition for "In Progress"
        gr_part2.query();
        _addRecordsToList(gr_part2, false);
        var gr_part3 = new GlideRecordSecure(table);
        gr_part3.addEncodedQuery('additional_assignee_listLIKE' + data.userId + '^sys_created_on<=' + weekEndsOnDateTime + '^closed_atBETWEEN' + weekStartsOnDateTime + '@' + weekEndsOnDateTime + '^state=2'); // Add state condition for "In Progress"
        gr_part3.query();
        _addRecordsToList(gr_part3, false);
    }
    gr.query();
    _addRecordsToList(gr, false);
}

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  10x ServiceNow MVP  ||  ServiceNow Community Leader