| /* |
| * 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.*; |
| import org.apache.ofbiz.order.task.*; |
| |
| context.userLogin = userLogin; |
| |
| // create the sort order |
| sort = parameters.sort; |
| sortOrder = ["currentStatusId", "-priority", "orderDate"]; |
| if (sort) { |
| if (sort.equals("name")) { |
| sortOrder.add(0, "firstName"); |
| sortOrder.add(0, "lastName"); |
| } else if (sort.equals("grandTotal")) { |
| sortOrder.add(0, "-grandTotal"); |
| } else { |
| sortOrder.add(0, sort); |
| } |
| } |
| |
| partyBase = [EntityCondition.makeCondition("statusId", EntityOperator.EQUALS, "CAL_ACCEPTED"), EntityCondition.makeCondition("wepaPartyId", EntityOperator.EQUALS, userLogin.partyId)]; |
| partyRole = [EntityCondition.makeCondition("orderRoleTypeId", EntityOperator.EQUALS, "PLACING_CUSTOMER"), EntityCondition.makeCondition("orderRoleTypeId", EntityOperator.EQUALS, "SUPPLIER_AGENT")]; |
| partyExpr = [EntityCondition.makeCondition(partyBase, EntityOperator.AND), EntityCondition.makeCondition(partyRole, EntityOperator.OR)]; |
| partyTasks = from("OrderTaskList").where(partyExpr).orderBy(sortOrder).queryList(); |
| |
| if (partyTasks) partyTasks = EntityUtil.filterByDate(partyTasks); |
| context.partyTasks = partyTasks; |
| |
| // Build a map of orderId and currency |
| orderCurrencyMap = [:]; |
| partyTasks.each { ptItem -> |
| orderHeader = from("OrderHeader").where("orderId", ptItem.orderId).queryOne(); |
| orderCurrencyMap[ptItem.orderId] = orderHeader.currencyUom; |
| } |
| |
| // get this user's roles |
| partyRoles = from("PartyRole").where("partyId", userLogin.partyId).queryList(); |
| |
| // build the role list |
| pRolesList = []; |
| partyRoles.each { partyRole -> |
| if (!partyRole.roleTypeId.equals("_NA_")) |
| pRolesList.add(EntityCondition.makeCondition("roleTypeId", EntityOperator.EQUALS, partyRole.roleTypeId)); |
| } |
| |
| custList = [EntityCondition.makeCondition("orderRoleTypeId", EntityOperator.EQUALS, "PLACING_CUSTOMER"), EntityCondition.makeCondition("orderRoleTypeId", EntityOperator.EQUALS, "SUPPLIER_AGENT")]; |
| baseList = [EntityCondition.makeCondition("statusId", EntityOperator.NOT_EQUAL, "CAL_CANCELLED"), EntityCondition.makeCondition("statusId", EntityOperator.NOT_EQUAL, "CAL_COMPLETED"), EntityCondition.makeCondition("statusId", EntityOperator.NOT_EQUAL, "CAL_DELEGATED")]; |
| expressions = []; |
| expressions.add(EntityCondition.makeCondition(custList, EntityOperator.OR)); |
| if (pRolesList) expressions.add(EntityCondition.makeCondition(pRolesList, EntityOperator.OR)); |
| expressions.add(EntityCondition.makeCondition(baseList, EntityOperator.AND)); |
| |
| // invoke the query |
| roleTasks = from("OrderTaskList").where(expressions).orderBy(sortOrder).queryList(); |
| roleTasks = EntityUtil.filterByAnd(roleTasks, baseList); |
| roleTasks = EntityUtil.filterByDate(roleTasks); |
| context.roleTasks = roleTasks; |
| |
| // Add to the map of orderId and currency |
| roleTasks.each { rtItem -> |
| orderHeader = from("OrderHeader").where("orderId", rtItem.orderId).queryOne(); |
| orderCurrencyMap[rtItem.orderId] = orderHeader.currencyUom; |
| } |
| context.orderCurrencyMap = orderCurrencyMap; |
| |
| context.now = nowTimestamp; |
| |
| // purchase order schedule |
| poList = from("OrderHeaderAndRoles").where("partyId", userLogin.partyId, "orderTypeId", "PURCHASE_ORDER").queryList(); |
| poIter = poList.iterator(); |
| listedPoIds = new HashSet(); |
| while (poIter.hasNext()) { |
| poGv = poIter.next(); |
| poOrderId = poGv.orderId; |
| if (listedPoIds.contains(poOrderId)) { |
| poIter.remove(); |
| } else { |
| listedPoIds.add(poOrderId); |
| } |
| } |
| context.poList = poList; |
| |