| /* |
| * 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; |
| } |