blob: 8cc901143ea6b29283313844b62b6bfee1a0bd9b [file] [log] [blame]
/*******************************************************************************
* 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.
*******************************************************************************/
package org.ofbiz.shipment.verify;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Locale;
import java.util.Map;
import javolution.util.FastMap;
import org.ofbiz.base.util.GeneralException;
import org.ofbiz.base.util.UtilProperties;
import org.ofbiz.base.util.UtilValidate;
import org.ofbiz.entity.Delegator;
import org.ofbiz.entity.GenericValue;
import org.ofbiz.service.LocalDispatcher;
import org.ofbiz.service.ServiceUtil;
@SuppressWarnings("serial")
public class VerifyPickSessionRow implements Serializable {
protected String orderId = null;
protected String orderItemSeqId = null;
protected String shipGroupSeqId = null;
protected String productId = null;
protected String originGeoId = null;
protected String inventoryItemId = null;
protected BigDecimal readyToVerifyQty = BigDecimal.ZERO;
protected GenericValue orderItem = null;
protected String shipmentItemSeqId = null;
protected String invoiceItemSeqId = null;
public VerifyPickSessionRow() {
}
public VerifyPickSessionRow(String orderId, String orderItemSeqId, String shipGroupSeqId, String productId, String originGeoId, String inventoryItemId, BigDecimal quantity) {
this.orderId = orderId;
this.orderItemSeqId = orderItemSeqId;
this.shipGroupSeqId = shipGroupSeqId;
this.productId = productId;
this.originGeoId = originGeoId;
this.readyToVerifyQty = quantity;
this.inventoryItemId = inventoryItemId;
this.shipmentItemSeqId = null;
this.invoiceItemSeqId = null;
}
public String getOrderId() {
return this.orderId;
}
public String getOrderItemSeqId() {
return this.orderItemSeqId;
}
public String getShipGroupSeqId() {
return this.shipGroupSeqId;
}
public String getProductId() {
return this.productId;
}
public String getOriginGeoId() {
return this.originGeoId;
}
public String getInventoryItemId() {
return this.inventoryItemId;
}
public BigDecimal getReadyToVerifyQty() {
return this.readyToVerifyQty;
}
public void setReadyToVerifyQty(BigDecimal readyToVerifyQty) {
this.readyToVerifyQty = readyToVerifyQty;
}
public void setShipmentItemSeqId(String shipmentItemSeqId) {
this.shipmentItemSeqId = shipmentItemSeqId;
}
public String getShipmentItemSeqId() {
return this.shipmentItemSeqId;
}
public void setInvoiceItemSeqId(String invoiceItemSeqId) {
this.invoiceItemSeqId = invoiceItemSeqId;
}
public String getInvoiceItemSeqId() {
return this.invoiceItemSeqId;
}
public GenericValue getOrderItem() {
return this.orderItem;
}
public boolean isSameItem(VerifyPickSessionRow line) {
if (this.getInventoryItemId().equals(line.getInventoryItemId()) && this.getOrderItemSeqId().equals(line.getOrderItemSeqId())
&& this.getOrderId().equals(line.getOrderId()) && this.getShipGroupSeqId().equals(line.getShipGroupSeqId())) {
return true;
}
return false;
}
protected void issueItemToShipment(String shipmentId, String picklistBinId, GenericValue userLogin, BigDecimal quantity, LocalDispatcher dispatcher, Locale locale) throws GeneralException {
if (quantity == null) {
quantity = this.getReadyToVerifyQty();
}
Map<String, Object> issueOrderItemMap = FastMap.newInstance();
issueOrderItemMap.put("shipmentId", shipmentId);
issueOrderItemMap.put("orderId", this.getOrderId());
issueOrderItemMap.put("orderItemSeqId", this.getOrderItemSeqId());
issueOrderItemMap.put("shipGroupSeqId", this.getShipGroupSeqId());
issueOrderItemMap.put("inventoryItemId", this.getInventoryItemId());
issueOrderItemMap.put("quantity", quantity);
issueOrderItemMap.put("userLogin", userLogin);
Map<String, Object> issueOrderItemResp = dispatcher.runSync("issueOrderItemShipGrpInvResToShipment", issueOrderItemMap);
if (ServiceUtil.isError(issueOrderItemResp)) {
throw new GeneralException(ServiceUtil.getErrorMessage(issueOrderItemResp));
}
String shipmentItemSeqId = (String) issueOrderItemResp.get("shipmentItemSeqId");
if (shipmentItemSeqId == null) {
throw new GeneralException(UtilProperties.getMessage("ProductErrorUiLabels", "ProductErrorIssueItemDidNotReturnAValidShipmentItemSeqId", locale));
} else {
this.setShipmentItemSeqId(shipmentItemSeqId);
}
if (picklistBinId != null) {
// find the pick list item
Delegator delegator = dispatcher.getDelegator();
Map<String, Object> picklistItemMap = FastMap.newInstance();
picklistItemMap.put("picklistBinId", picklistBinId);
picklistItemMap.put("orderId", this.getOrderId());
picklistItemMap.put("orderItemSeqId", this.getOrderItemSeqId());
picklistItemMap.put("shipGroupSeqId", this.getShipGroupSeqId());
picklistItemMap.put("inventoryItemId", this.getInventoryItemId());
GenericValue picklistItem = delegator.findOne("PicklistItem", picklistItemMap, true);
if (UtilValidate.isNotEmpty(picklistItem)) {
BigDecimal itemQty = picklistItem.getBigDecimal("quantity");
if (itemQty.compareTo(quantity) == 0) {
// set to complete
picklistItemMap.put("itemStatusId", "PICKITEM_COMPLETED");
} else {
picklistItemMap.put("itemStatusId", "PICKITEM_CANCELLED");
}
picklistItemMap.put("userLogin", userLogin);
Map<String, Object> picklistItemResp = dispatcher.runSync("updatePicklistItem", picklistItemMap);
if (ServiceUtil.isError(picklistItemResp)) {
throw new GeneralException(ServiceUtil.getErrorMessage(picklistItemResp));
}
}
}
}
}