| /* |
| * 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.ofbiz.base.util.UtilProperties; |
| import org.ofbiz.entity.GenericValue; |
| import org.ofbiz.entity.util.EntityUtil; |
| import org.ofbiz.entity.condition.EntityCondition; |
| import org.ofbiz.entity.util.EntityUtilProperties; |
| import org.ofbiz.order.order.OrderReadHelper; |
| import org.ofbiz.shipment.weightPackage.WeightPackageSession; |
| |
| weightPackageSession = session.getAttribute("weightPackageSession"); |
| if (!weightPackageSession) { |
| weightPackageSession = new WeightPackageSession(dispatcher, userLogin); |
| session.setAttribute("weightPackageSession", weightPackageSession); |
| } |
| context.weightPackageSession = weightPackageSession; |
| |
| showWarningForm = parameters.showWarningForm; |
| if (!showWarningForm) { |
| showWarningForm = request.getAttribute("showWarningForm"); |
| if (!showWarningForm) { |
| showWarningForm = false; |
| } |
| } |
| context.showWarningForm = showWarningForm; |
| |
| orderId = parameters.orderId; |
| shipGroupSeqId = parameters.shipGroupSeqId; |
| |
| shipment = from("Shipment").where("primaryOrderId", orderId, "statusId", "SHIPMENT_PICKED").queryFirst(); |
| context.shipment = shipment; |
| if (shipment) { |
| invoice = from("ShipmentItemBilling").where("shipmentId", shipment.shipmentId).queryFirst(); |
| context.invoice = invoice; |
| } else { |
| context.invoice = null; |
| } |
| actualCost = null; |
| if (shipment) { |
| shipmentRouteSegment = from("ShipmentRouteSegment").where("shipmentId", shipment.shipmentId).queryFirst(); |
| actualCost = shipmentRouteSegment.actualCost; |
| if (actualCost) { |
| context.shipmentPackages = from("ShipmentPackage").where("shipmentId", shipment.shipmentId).queryList(); |
| } |
| } |
| |
| facilityId = parameters.facilityId; |
| if (facilityId) { |
| facility = from("Facility").where("facilityId", facilityId).queryOne(); |
| context.facility = facility; |
| } |
| |
| if (orderId && !shipGroupSeqId && orderId.indexOf("/") > -1) { |
| idSplit = orderId.split("\\/"); |
| orderId = idSplit[0]; |
| shipGroupSeqId = idSplit[1]; |
| } else if (orderId && !shipGroupSeqId) { |
| shipGroupSeqId = "00001"; |
| } |
| |
| picklistBinId = parameters.picklistBinId; |
| if (picklistBinId) { |
| picklistBin = from("PicklistBin").where("picklistBinId", picklistBinId).queryOne(); |
| if (picklistBin) { |
| orderId = picklistBin.primaryOrderId; |
| shipGroupSeqId = picklistBin.primaryShipGroupSeqId; |
| } else { |
| picklistBinId = null; |
| } |
| } |
| |
| shipmentId = parameters.shipmentId; |
| if (!shipmentId) { |
| shipmentId = request.getAttribute("shipmentId"); |
| } |
| if (!shipmentId && shipment) { |
| shipmentId = shipment.shipmentId; |
| } |
| context.shipmentId = shipmentId; |
| if (shipmentId) { |
| // Get the primaryOrderId from the shipment |
| shipment = from("Shipment").where("shipmentId", shipmentId).queryOne(); |
| if (shipment && shipment.primaryOrderId) { |
| orderItemBillingList = from("OrderItemBilling").where("orderId", shipment.primaryOrderId).orderBy("invoiceId").queryList(); |
| invoiceIds = EntityUtil.getFieldListFromEntityList(orderItemBillingList, "invoiceId", true); |
| if (invoiceIds) { |
| context.invoiceIds = invoiceIds; |
| |
| } |
| } |
| if (shipment.statusId && "SHIPMENT_PACKED" == shipment.statusId) { |
| orderId = null; |
| } |
| shipmentPackageRouteSegs = from("ShipmentPackageRouteSeg").where("shipmentId", shipmentId).queryList(); |
| shipmentPackageRouteSegList = []; |
| shipmentPackageRouteSegs.each { shipmentPackageRouteSeg -> |
| if (shipmentPackageRouteSeg.labelImage) { |
| shipmentPackageRouteSegList.add(shipmentPackageRouteSeg); |
| } |
| } |
| context.shipmentPackageRouteSegList = shipmentPackageRouteSegList; |
| } |
| |
| weightPackageSession.setShipmentId(shipmentId) |
| weightPackageSession.setPrimaryShipGroupSeqId(shipGroupSeqId); |
| weightPackageSession.setPrimaryOrderId(orderId); |
| weightPackageSession.setPicklistBinId(picklistBinId); |
| weightPackageSession.setFacilityId(facilityId); |
| context.primaryOrderId = orderId; |
| |
| carrierPartyId = null; |
| if (orderId) { |
| orderHeader = from("OrderHeader").where("orderId", orderId).queryOne(); |
| if (orderHeader) { |
| OrderReadHelper orderReadHelper = new OrderReadHelper(orderHeader); |
| GenericValue orderItemShipGroup = orderReadHelper.getOrderItemShipGroup(shipGroupSeqId); |
| carrierPartyId = orderItemShipGroup.carrierPartyId; |
| if ("ORDER_APPROVED".equals(orderHeader.statusId)) { |
| if (shipGroupSeqId) { |
| if (shipment) { |
| productStoreId = orderReadHelper.getProductStoreId(); |
| shippableItemInfo = orderReadHelper.getOrderItemAndShipGroupAssoc(shipGroupSeqId); |
| shippableItems = from("OrderItemAndShipGrpInvResAndItemSum").where("orderId", orderId, "shipGroupSeqId", shipGroupSeqId).queryList(); |
| shippableTotal = orderReadHelper.getShippableTotal(shipGroupSeqId); |
| shippableWeight = orderReadHelper.getShippableWeight(shipGroupSeqId); |
| shippableQuantity = orderReadHelper.getShippableQuantity(shipGroupSeqId); |
| estimatedShippingCost = weightPackageSession.getShipmentCostEstimate(orderItemShipGroup, orderId, productStoreId, shippableItemInfo, shippableTotal, shippableWeight, shippableQuantity); |
| if (weightPackageSession.getPackedLines(orderId)) { |
| shipWeight = weightPackageSession.getShippableWeight(orderId); |
| newEstimatedShippingCost = weightPackageSession.getShipmentCostEstimate(orderItemShipGroup, orderId, productStoreId, shippableItemInfo, shippableTotal, shipWeight, shippableQuantity); |
| context.newEstimatedShippingCost = newEstimatedShippingCost; |
| } |
| context.productStoreId = productStoreId; |
| context.estimatedShippingCost = estimatedShippingCost; |
| } else { |
| request.setAttribute("_ERROR_MESSAGE_", UtilProperties.getMessage("OrderErrorUiLabels", "OrderErrorOrderNotVerified", ["orderId" : orderId], locale)); |
| orderId = null; |
| } |
| } else { |
| request.setAttribute("_ERROR_MESSAGE_", UtilProperties.getMessage("ProductErrorUiLabels", "ProductErrorNoShipGroupSequenceIdFoundCannotProcess", locale)); |
| orderId = null; |
| } |
| } else { |
| request.setAttribute("_ERROR_MESSAGE_", UtilProperties.getMessage("OrderErrorUiLabels", "OrderErrorOrderNotApprovedForPacking", [orderId : orderId], locale)); |
| orderId = null; |
| } |
| } else { |
| request.setAttribute("_ERROR_MESSAGE_", UtilProperties.getMessage("OrderErrorUiLabels", "OrderErrorOrderIdNotFound", [orderId : orderId], locale)); |
| orderId = null; |
| } |
| context.orderedQuantity = weightPackageSession.getOrderedQuantity(orderId); |
| } |
| weightPackageSession.setCarrierPartyId(carrierPartyId); |
| context.orderId = orderId; |
| context.shipGroupSeqId = shipGroupSeqId; |
| context.picklistBinId = picklistBinId; |
| |
| if (carrierPartyId) { |
| carrierShipmentBoxTypes = from("CarrierShipmentBoxType").where("partyId", carrierPartyId).queryList(); |
| shipmentBoxTypes = []; |
| carrierShipmentBoxTypes.each { carrierShipmentBoxType -> |
| shipmentBoxTypes.add(from("ShipmentBoxType").where("shipmentBoxTypeId", carrierShipmentBoxType.shipmentBoxTypeId).queryOne()); |
| context.shipmentBoxTypes = shipmentBoxTypes; |
| } |
| } |
| |
| if (actualCost) { |
| context.newEstimatedShippingCost = actualCost; |
| } |
| |
| defaultDimensionUomId = null; |
| if (facility) { |
| defaultDimensionUomId = facility.defaultDimensionUomId; |
| } |
| if (!defaultDimensionUomId) { |
| defaultDimensionUomId = EntityUtilProperties.getPropertyValue("shipment.properties", "shipment.default.dimension.uom", "LEN_in", delegator); |
| } |
| context.defaultDimensionUomId = defaultDimensionUomId; |
| |
| defaultWeightUomId = null; |
| if (facility) { |
| defaultWeightUomId = facility.defaultWeightUomId; |
| } |
| if (!defaultWeightUomId) { |
| defaultWeightUomId = EntityUtilProperties.getPropertyValue("shipment.properties", "shipment.default.weight.uom", "WT_kg", delegator); |
| } |
| context.defaultWeightUomId = defaultWeightUomId; |