blob: 2a43aff4e537138eeffc7a0adc9ded9fef5c86b6 [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.
*/
import org.ofbiz.entity.*;
import org.ofbiz.base.util.*;
inventoryStock = [:];
shipmentId = parameters.shipmentId;
shipment = from("Shipment").where("shipmentId", shipmentId).queryOne();
context.shipmentIdPar = shipment.shipmentId;
context.estimatedReadyDatePar = shipment.estimatedReadyDate;
context.estimatedShipDatePar = shipment.estimatedShipDate;
records = [];
if (shipment) {
shipmentPlans = from("OrderShipment").where("shipmentId", shipmentId).queryList();
shipmentPlans.each { shipmentPlan ->
orderLine = from("OrderItem").where("orderId", shipmentPlan.orderId , "orderItemSeqId", shipmentPlan.orderItemSeqId).queryOne();
recordGroup = [:];
recordGroup.ORDER_ID = shipmentPlan.orderId;
recordGroup.ORDER_ITEM_SEQ_ID = shipmentPlan.orderItemSeqId;
recordGroup.SHIPMENT_ID = shipmentPlan.shipmentId;
recordGroup.SHIPMENT_ITEM_SEQ_ID = shipmentPlan.shipmentItemSeqId;
recordGroup.PRODUCT_ID = orderLine.productId;
recordGroup.QUANTITY = shipmentPlan.quantity;
product = from("Product").where("productId", orderLine.productId).queryOne();
recordGroup.PRODUCT_NAME = product.internalName;
inputPar = [productId : orderLine.productId,
quantity : shipmentPlan.quantity,
fromDate : "" + new Date(),
userLogin: userLogin];
result = [:];
result = runService('getNotAssembledComponents',inputPar);
if (result) {
components = (List)result.get("notAssembledComponents");
}
components.each { oneComponent ->
record = new HashMap(recordGroup);
record.componentId = oneComponent.getProduct().productId;
record.componentName = oneComponent.getProduct().internalName;
record.componentQuantity = new Float(oneComponent.getQuantity());
facilityId = shipment.originFacilityId;
float qty = 0;
if (facilityId) {
if (!inventoryStock.containsKey(oneComponent.getProduct().productId)) {
serviceInput = [productId : oneComponent.getProduct().productId , facilityId : facilityId];
serviceOutput = runService('getInventoryAvailableByFacility',serviceInput);
qha = serviceOutput.quantityOnHandTotal ?: 0.0;
inventoryStock.put(oneComponent.getProduct().productId, qha);
}
qty = inventoryStock[oneComponent.getProduct().productId];
qty = qty - oneComponent.getQuantity();
inventoryStock.put(oneComponent.getProduct().productId, qty);
}
record.componentOnHand = qty;
// Now we get the products qty already reserved by production runs
serviceInput = [productId : oneComponent.getProduct().productId,
userLogin : userLogin];
serviceOutput = runService('getProductionRunTotResQty', serviceInput);
resQty = serviceOutput.reservedQuantity;
record.reservedQuantity = resQty;
records.add(record);
}
}
context.records = records;
// check permission
hasPermission = false;
if (security.hasEntityPermission("MANUFACTURING", "_VIEW", session)) {
hasPermission = true;
}
context.hasPermission = hasPermission;
}
return "success";