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
}
}