Built something you're proud of? Tell the story. A quick G2 review of App Engine or Build Agent helps other developers see what's possible on ServiceNow. Share your experience.

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