How to Add Minimum and Maximum restriction in Weekly Time Sheet Time Tracking

 let currentRecord = scriptContext.currentRecord;

                let lineCount = currentRecord.getLineCount({ sublistId: ‘timeitem’ });

                let weekData = getWeeklyData(currentRecord, lineCount)

                console.log(‘weekData in save record’, weekData);

                let employee = currentRecord.getValue({

                    fieldId: ’employee’

                })

                let weekDay = currentRecord.getValue({

                    fieldId: ‘trandate’

                })

                let weekDayDate = new Date(weekDay);

                let month = (weekDayDate.getMonth()) + 1

                let year = weekDayDate.getFullYear();

                console.log(“weekDayDate”, weekDayDate)

                console.log(‘month’, month)

                console.log(‘year’, year)

                let workCalender = getWorkCalender(employee, month, year)

                console.log(‘workCalender’,workCalender)

                let minworkhour = getMinWokHour(workCalender)

                console.log(‘minworkhour’,minworkhour)

                let isTimeTypeAvailable = checkTimeTypes(currentRecord, lineCount)

                console.log(‘isTimeTypeAvailable’, isTimeTypeAvailable)

                let subsidiaryValue = currentRecord.getValue({

                    fieldId: ‘subsidiary’

                })

                console.log(‘subsidiaryValue’, subsidiaryValue);

                if (!isTimeTypeAvailable) {

                    return processForValidation(subsidiaryValue, weekData,minworkhour)

                }          

                return true

  function getWorkCalender(employee, month, year) {

            try {

                let customrecord_jj_payroll_detailsSearchObj = search.create({

                    type: “customrecord_jj_payroll_details”,

                    filters:

                        [

                            [“custrecord_jj_payroll_emp”, “anyof”, employee],

                            “AND”,

                            [“isinactive”, “is”, “F”],

                            “AND”,

                            [“custrecord_jj_month”, “anyof”, month],

                            “AND”,

                            [“custrecord_jj_year”, “equalto”, year]

                        ],

                    columns:

                        [

                            search.createColumn({ name: “custrecord_jj_wrk_calendar”, label: “Work Calendar” })

                        ]

                });

                let searchResultCount = customrecord_jj_payroll_detailsSearchObj.runPaged().count;

                if (searchResultCount > 0) {

                    let workCalender

                    customrecord_jj_payroll_detailsSearchObj.run().each(function (result) {

                        workCalender = result.getValue({

                            name: “custrecord_jj_wrk_calendar”, label: “Work Calendar”

                        })

                        return true;

                    });

                    return workCalender

                }

                else {

                    return false

                }

            }

            catch (err) {

                console.error(‘error@getWorkCalender’, err)

                return false

            }

        }

    function getMinWokHour(workCalender)

        {

            try

            {

                let workcalendarSearchObj = search.create({

                    type: “workcalendar”,

                    filters:

                        [

                            [“internalidnumber”, “equalto”, workCalender]

                        ],

                    columns:

                        [

                            search.createColumn({

                                name: “name”,

                                sort: search.Sort.ASC,

                                label: “Name”

                            }),

                            search.createColumn({ name: “comments”, label: “Comments” }),

                            search.createColumn({ name: “workhoursperday”, label: “Work Hours Per Day” })

                        ]

                });

                let searchResultCount = workcalendarSearchObj.runPaged().count;

                if(searchResultCount > 0)

                {

                    let minHour

                    workcalendarSearchObj.run().each(function (result) {

                        minHour=  result.getValue({

                        name: “workhoursperday”, label: “Work Hours Per Day”

                       })

                        return true;

                    });

                    return minHour

   

                }

                else

                {

                    return false

                }

               

             

            }

            catch(err)

            {

                console.error(‘error@getMinWokHour’)

            }

        }

 function checkTimeTypes(currentRecord, lineCount) {

            try {

                let flag = false;

                for (let i = 0; i < lineCount; i++) {

                    let timeType = currentRecord.getSublistValue({

                        sublistId: ‘timeitem’,

                        fieldId: ‘custcol_jj_time_type’,

                        line: i

                    });

                    console.log(‘timeType’, timeType)

                    console.log(‘timeType’, typeof timeType)

                    if (TIME_TYPES.includes(Number(timeType))) {

                        console.log(‘time type’)

                        flag = true;

                        break;

                    }

                }

                return flag

            }

            catch (err) {

                console.log(‘error@checkTimeTypes’, err)

                return false

            }

        }

  function processForValidation(subsidiaryValue, weekData,minworkhour) {

            try {

                if (subsidiaryValue == SUBSIDIARY.AWRO) {

                    console.log(‘subsidiary is AWRO’)

                    return processAWROTimeSheet(weekData,minworkhour)

                }

            }

            catch (err) {

                console.error(‘error@processForValidation’, err)

            }

        }

   function processAWROTimeSheet(weekData,minworkhour) {

            try {

                let messageVariable =

                let fridayMessage =

                let greaterMessage =

                for (key in weekData) {

                    let sum = Number(weekData[key].sum)

                    if (key != ‘friday’ && (sum !== 0 && sum < Number(minworkhour))) {

                        messageVariable = messageVariable + n + weekData[key].date

                    }

                    if (key == ‘friday’ && (sum != 0 && sum < 4.5)) {

                        fridayMessage = fridayMessage + weekData[‘friday’].date

                    }

                    if (sum != 0 && sum > 9) {

                        greaterMessage = greaterMessage + n + weekData[key].date

                    }

                    let dataObj = {}

                    if (checkForParameter(messageVariable)) {

                        alert(‘The following time transactions do not meet the minimum requirement of a total of ‘ +minworkhour+‘ hours in a day.Please change the time.’ + n + n + messageVariable)

                        return false

                    }

                    if (checkForParameter(fridayMessage)) {

                        alert(‘The following time transactions do not meet the minimum requirement of a total of 4.5 hours in a day.Please change the time.’ + n + n + fridayMessage)

                        return false

                    }

                    if (checkForParameter(greaterMessage)) {

                        alert(‘The following time transactions do not meet the maximum requirement of a total of 9 hours in a day.Please change the time.’ + n + n + greaterMessage)

                        return false

                    }

                }

                return true

            }

            catch (err) {

                console.error(‘error@processAWROTimeSheet’, err)

                return false

            }

        }

Leave a comment

Your email address will not be published. Required fields are marked *