/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ import org.apache.ofbiz.entity.* import org.apache.ofbiz.entity.util.* import org.apache.ofbiz.entity.condition.* import org.apache.ofbiz.base.util.Debug import org.apache.ofbiz.base.util.UtilDateTime // get all timesheets of all user, including the planned hours timesheets = [] inputFields = [:] if (!parameters.noConditionFind) { parameters.noConditionFind = "N" } inputFields.putAll(parameters) performFindResults = runService('performFind', ["entityName": "Timesheet", "inputFields": inputFields, "orderBy": "fromDate DESC"]) if (performFindResults.listSize > 0) { timesheetsDb = performFindResults.listIt.getCompleteList() performFindResults.listIt.close() timesheetsDb.each { timesheetDb -> //get hours from EmplLeave findOpts = new EntityFindOptions(true, EntityFindOptions.TYPE_SCROLL_INSENSITIVE, EntityFindOptions.CONCUR_READ_ONLY, true) leaveExprsList = [] leaveExprsList.add(EntityCondition.makeCondition("fromDate", EntityOperator.GREATER_THAN_EQUAL_TO, timesheetDb.fromDate)) leaveExprsList.add(EntityCondition.makeCondition("fromDate", EntityOperator.LESS_THAN_EQUAL_TO, timesheetDb.thruDate)) leaveExprsList.add(EntityCondition.makeCondition("partyId", EntityOperator.EQUALS, timesheetDb.partyId)) emplLeaveList = from("EmplLeave").where(leaveExprsList).cursorScrollInsensitive().distinct().queryIterator() leaveHours = 0.00 while ((emplLeaveMap = emplLeaveList.next())) { emplLeaveEntry = emplLeaveMap resultHour = runService('getPartyLeaveHoursForDate', ["userLogin": parameters.userLogin, "partyId": emplLeaveEntry.partyId, "leaveTypeId": emplLeaveEntry.leaveTypeId, "fromDate": emplLeaveEntry.fromDate]) if (resultHour) { leaveActualHours = resultHour.hours.doubleValue() leaveHours += leaveActualHours } } //get hours from TimeEntry timesheet = [:] timesheet.putAll(timesheetDb) entries = timesheetDb.getRelated("TimeEntry", null, null, false) hours = 0.00 entries.each { timeEntry -> if (timeEntry.hours) { hours += timeEntry.hours.doubleValue() } } timesheet.weekNumber = UtilDateTime.weekNumber(timesheetDb.fromDate) timesheet.hours = hours + leaveHours timesheets.add(timesheet) emplLeaveList.close() } context.timesheets = timesheets }