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
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  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader