Author: sichen
Date: Mon Mar 12 14:12:48 2007 New Revision: 517398 URL: http://svn.apache.org/viewvc?view=rev&rev=517398 Log: OFBIZ-793: Receive inventory verified against purchase order - Adding a tab in shipment screens to receive purchase order items one unit at a time, while checking quantities against ordered quantity and previously received quantity for the purchase order Added: ofbiz/trunk/applications/product/webapp/facility/WEB-INF/actions/shipment/ReceiveInventoryAgainstPurchaseOrder.bsh (with props) ofbiz/trunk/applications/product/webapp/facility/shipment/ReceiveInventoryAgainstPurchaseOrder.ftl (with props) Modified: ofbiz/trunk/applications/product/config/ProductUiLabels.properties ofbiz/trunk/applications/product/webapp/facility/WEB-INF/controller.xml ofbiz/trunk/applications/product/webapp/facility/shipment/ShipmentTabBar.ftl ofbiz/trunk/applications/product/widget/facility/ShipmentScreens.xml ofbiz/trunk/framework/common/config/CommonUiLabels.properties Modified: ofbiz/trunk/applications/product/config/ProductUiLabels.properties URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/config/ProductUiLabels.properties?view=diff&rev=517398&r1=517397&r2=517398 ============================================================================== --- ofbiz/trunk/applications/product/config/ProductUiLabels.properties (original) +++ ofbiz/trunk/applications/product/config/ProductUiLabels.properties Mon Mar 12 14:12:48 2007 @@ -511,7 +511,9 @@ ProductErrorFacilityIdNotFound=ERROR: Facility with ID [${facilityId}] not found ProductErrorNoPackagesFoundForShipment=ERROR: No packages found for this shipment ProductErrorOrderIdNotFound=ERROR: Order with ID [${orderId}] not found +ProductErrorOrderNotPurchaseOrder=Order ${orderId} is not a Purchase Order ProductErrorProductNotFound=ERROR: Product not found +ProductErrorShipmentNotPurchaseShipment=Shipment ${shipmentId} is not a Purchase Shipment ProductErrorType=Error: Type ProductEstimateId=Estimate ID ProductEstimatedArrivalDate=Estimated Arrival Date @@ -1071,9 +1073,14 @@ ProductReceiptForReturn=Receipt(s) For Return ProductReceiptPurchaseOrder=Receipt(s) For Purchase Order ProductReceiveInventory=Receive Inventory +ProductReceiveInventoryAddProductToReceive=Add Product to Receive +ProductReceiveInventoryAgainstPO=Receive Against PO +ProductReceiveInventoryAgainstPurchaseOrder=Receive Inventory Against Purchase Order ProductReceiveItem=Receive Item(s) ProductReceiveProduct=Receive Product(s) ProductReceivePurchaseOrder=Receive Purchase Order +ProductReceiveInventoryAgainstPurchaseOrderProductNotFound=Product ${productId} not found in order ${orderId} +ProductReceiveInventoryAgainstPurchaseOrderQuantityExceedsAvailableToReceive=Quantity ${newQuantity} for product ${productId} exceeds quantity available to receive ProductReceiveReturn=Receive Return ProductReceiveSelectedProduct=Receive Selected Product(s) ProductReceiveSelectedShipment=Receive Selected Shipment Added: ofbiz/trunk/applications/product/webapp/facility/WEB-INF/actions/shipment/ReceiveInventoryAgainstPurchaseOrder.bsh URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/facility/WEB-INF/actions/shipment/ReceiveInventoryAgainstPurchaseOrder.bsh?view=auto&rev=517398 ============================================================================== --- ofbiz/trunk/applications/product/webapp/facility/WEB-INF/actions/shipment/ReceiveInventoryAgainstPurchaseOrder.bsh (added) +++ ofbiz/trunk/applications/product/webapp/facility/WEB-INF/actions/shipment/ReceiveInventoryAgainstPurchaseOrder.bsh Mon Mar 12 14:12:48 2007 @@ -0,0 +1,213 @@ +/* + * 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.util.*; +import org.ofbiz.service.ServiceUtil; +import org.ofbiz.base.util.*; + +delegator = request.getAttribute("delegator"); + +shipmentId = request.getParameter("shipmentId"); +orderId = request.getParameter("purchaseOrderId"); +shipGroupSeqId = request.getParameter("shipGroupSeqId"); +context.put("shipmentId", shipmentId); +context.put("orderId", orderId); +context.put("shipGroupSeqId", shipGroupSeqId); + +// Retrieve the map resident in session which stores order item quantities to receive +itemQuantitiesToReceive = session.getAttribute("purchaseOrderItemQuantitiesToReceive"); +if (! UtilValidate.isEmpty(itemQuantitiesToReceive)) { + sessionShipmentId = itemQuantitiesToReceive.get("_shipmentId"); + sessionOrderId = itemQuantitiesToReceive.get("_orderId"); + if ( (UtilValidate.isNotEmpty(sessionShipmentId) && ! sessionShipmentId.equals(shipmentId)) || + ((UtilValidate.isNotEmpty(sessionOrderId) && ! sessionOrderId.equals(orderId))) || + "Y".equals(request.getParameter("clearAll")) ) { + + // Clear the map if the shipmentId or orderId are different than the current ones, or + // if the clearAll parameter is present + itemQuantitiesToReceive.clear(); + } +} + +shipment = delegator.findByPrimaryKey("Shipment", UtilMisc.toMap("shipmentId", shipmentId)); +context.put("shipment", shipment); +if (UtilValidate.isEmpty(shipment)) { + return; +} + +isPurchaseShipment = "PURCHASE_SHIPMENT".equals(shipment.getString("shipmentTypeId")); +context.put("isPurchaseShipment", isPurchaseShipment); +if (! isPurchaseShipment) { + return; +} + +facility = shipment.getRelatedOne("DestinationFacility"); +context.put("facility", facility); +context.put("facilityId", shipment.get("destinationFacilityId")); +context.put("now", UtilDateTime.nowTimestamp()); + +if (UtilValidate.isEmpty(orderId)) { + orderId = shipment.get("primaryOrderId"); +} +if (UtilValidate.isEmpty(shipGroupSeqId)) { + shipGroupSeqId = shipment.get("primaryShipGroupSeqId"); +} + +if (UtilValidate.isEmpty(orderId)) { + return; +} + +orderHeader = delegator.findByPrimaryKey("OrderHeader", UtilMisc.toMap("orderId", orderId)); +context.put("orderHeader", orderHeader); +if (UtilValidate.isEmpty(orderHeader)) { + return; +} + +isPurchaseOrder = "PURCHASE_ORDER".equals(orderHeader.getString("orderTypeId")); +context.put("isPurchaseOrder", isPurchaseOrder); +if (! isPurchaseOrder) { + return; +} + +// Get the base currency from the facility owner, for currency conversions +baseCurrencyUomId = null; +if (! UtilValidate.isEmpty(facility)) { + owner = facility.getRelatedOne("OwnerParty"); + if (! UtilValidate.isEmpty(owner)) { + ownerAcctgPref = owner.getRelatedOne("PartyAcctgPreference"); + } + if (! UtilValidate.isEmpty(ownerAcctgPref)) { + baseCurrencyUomId = ownerAcctgPref.get("baseCurrencyUomId"); + } +} + +inventoryItemTypes = delegator.findAll("InventoryItemType"); +context.put("inventoryItemTypes", inventoryItemTypes); + +// Populate the tracking map with shipment and order IDs +if (UtilValidate.isEmpty(itemQuantitiesToReceive)) { + itemQuantitiesToReceive = UtilMisc.toMap("_shipmentId", shipmentId, "_orderId", orderId); +} + +oiasgaLimitMap = null; +if (! UtilValidate.isEmpty(shipGroupSeqId)) { + oiasgaLimitMap = UtilMisc.toMap("shipGroupSeqId", shipGroupSeqId); +} + +orderItemDatas = new TreeMap(); +totalAvailableToReceive = 0; + +// Populate the order item data for the FTL +orderItems = orderHeader.getRelated("OrderItemAndShipGroupAssoc", oiasgaLimitMap, UtilMisc.toList("shipGroupSeqId", "orderItemSeqId")); +orderItemIter = orderItems.iterator(); +while (orderItemIter.hasNext()) { + orderItemAndShipGroupAssoc = orderItemIter.next(); + product = orderItemAndShipGroupAssoc.getRelatedOne("Product"); + orderItemData = new HashMap(); + + // Get the item's ordered quantity + totalOrdered = 0; + ordered = orderItemAndShipGroupAssoc.getDouble("quantity"); + if (ordered != null) + totalOrdered += ordered.doubleValue(); + + // Get the item quantity received from all shipments via the ShipmentReciept entity + totalReceived = 0.0; + receipts = delegator.findByAnd("ShipmentReceipt", UtilMisc.toMap("orderId", orderId, "orderItemSeqId", orderItemAndShipGroupAssoc.get("orderItemSeqId"))); + if (receipts != null && receipts.size() > 0) { + recIter = receipts.iterator(); + while (recIter.hasNext()) { + rec = recIter.next(); + accepted = rec.getDouble("quantityAccepted"); + rejected = rec.getDouble("quantityRejected"); + if (accepted != null) + totalReceived += accepted.doubleValue(); + if (rejected != null) + totalReceived += rejected.doubleValue(); + } + } + + // Update the unit cost with the converted value, if any + if (UtilValidate.isNotEmpty(baseCurrencyUomId)) { + if (! UtilValidate.isEmpty(product)) { + result = dispatcher.runSync("getProductCost", UtilMisc.toMap("productId", product.get("productId"), "currencyUomId", baseCurrencyUomId, "costComponentTypePrefix", "EST_STD", "userLogin", request.getAttribute("userLogin"))); + if (!ServiceUtil.isError(result)) { + orderItemAndShipGroupAssoc.put("unitPrice", result.get("productCost")); + } + } + } + + // Calculate how many units it should be possible to recieve for this purchase order + availableToReceive = totalOrdered - totalReceived; + totalAvailableToReceive += availableToReceive; + orderItemData.put("availableToReceive", availableToReceive); + orderItemData.put("totalQuantityReceived", totalReceived); + orderItemData.put("orderItemAndShipGroupAssoc", orderItemAndShipGroupAssoc); + orderItemData.put("product", product); + orderItemDatas.put(orderItemAndShipGroupAssoc.getString("orderItemSeqId"), orderItemData); +} +context.put("orderItemDatas", orderItemDatas.values()); + +// Handle any item product quantities to receive by adding to the map in session +productIdToReceive = request.getParameter("productId"); +productQtyToReceive = request.getParameter("quantity"); +if (UtilValidate.isNotEmpty(productIdToReceive)) { + + // Get the first order item with the productId + orderItem = EntityUtil.getFirst(EntityUtil.filterByAnd(orderItems, UtilMisc.toMap("productId", productIdToReceive))); + if (! UtilValidate.isEmpty(orderItem)) { + orderItemSeqId = orderItem.getString("orderItemSeqId"); + newQuantity = 0; + if (! UtilValidate.isEmpty(productQtyToReceive)) { + try { + quantity = Double.parseDouble(productQtyToReceive); + } catch (Exception e) { + quantity = 0; + } + + if (itemQuantitiesToReceive.containsKey(orderItemSeqId)) { + try { + newQuantity = itemQuantitiesToReceive.get(orderItemSeqId) + quantity; + } catch (Exception e) { + // Ignore the quantity update if there's a problem parsing it + } + } else { + newQuantity = quantity; + } + } + + if (newQuantity <= orderItemDatas.get(orderItemSeqId).get("availableToReceive")) { + itemQuantitiesToReceive.put(orderItemSeqId, newQuantity); + } else { + + // If the new quantity would be more than the quantity left to receive for this purchase order item, add an error message to the context + context.put("newQuantity", newQuantity); + context.put("ProductReceiveInventoryAgainstPurchaseOrderQuantityExceedsAvailableToReceive", true); + } + } else { + + // Add an error message to the context if the productId doesn't exist in this purchase order + context.put("ProductReceiveInventoryAgainstPurchaseOrderProductNotFound", true); + } +} + +// Put the tracking map back into the session, in case it has been reconstructed +session.setAttribute("purchaseOrderItemQuantitiesToReceive", itemQuantitiesToReceive); +context.put("itemQuantitiesToReceive", itemQuantitiesToReceive); +context.put("totalAvailableToReceive", totalAvailableToReceive); Propchange: ofbiz/trunk/applications/product/webapp/facility/WEB-INF/actions/shipment/ReceiveInventoryAgainstPurchaseOrder.bsh ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/applications/product/webapp/facility/WEB-INF/actions/shipment/ReceiveInventoryAgainstPurchaseOrder.bsh ------------------------------------------------------------------------------ svn:keywords = Date Rev Author URL Id Propchange: ofbiz/trunk/applications/product/webapp/facility/WEB-INF/actions/shipment/ReceiveInventoryAgainstPurchaseOrder.bsh ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: ofbiz/trunk/applications/product/webapp/facility/WEB-INF/controller.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/facility/WEB-INF/controller.xml?view=diff&rev=517398&r1=517397&r2=517398 ============================================================================== --- ofbiz/trunk/applications/product/webapp/facility/WEB-INF/controller.xml (original) +++ ofbiz/trunk/applications/product/webapp/facility/WEB-INF/controller.xml Mon Mar 12 14:12:48 2007 @@ -1003,6 +1003,10 @@ <response name="success" type="view" value="AddItemsFromOrder"/> <response name="error" type="view" value="AddItemsFromOrder"/> </request-map> + <request-map uri="ReceiveInventoryAgainstPurchaseOrder"> + <security https="true" auth="true"/> + <response name="success" type="view" value="ReceiveInventoryAgainstPurchaseOrder"/> + </request-map> <!-- ================ Shipment Items From Order Requests ================= --> <request-map uri="EditShipmentPlan"> <security https="true" auth="true"/> @@ -1101,6 +1105,7 @@ <view-map name="EditShipmentPackages" type="screen" page="component://product/widget/facility/ShipmentScreens.xml#EditShipmentPackages"/> <view-map name="EditShipmentRouteSegments" type="screen" page="component://product/widget/facility/ShipmentScreens.xml#EditShipmentRouteSegments"/> <view-map name="AddItemsFromOrder" type="screen" page="component://product/widget/facility/ShipmentScreens.xml#AddItemsFromOrder"/> + <view-map name="ReceiveInventoryAgainstPurchaseOrder" type="screen" page="component://product/widget/facility/ShipmentScreens.xml#ReceiveInventoryAgainstPurchaseOrder"/> <view-map name="QuickShipOrder" type="screen" page="component://product/widget/facility/ShipmentScreens.xml#QuickShipOrder"/> <view-map name="InventoryReports" type="screen" page="component://product/widget/facility/ReportScreens.xml#InventoryReports"/> Added: ofbiz/trunk/applications/product/webapp/facility/shipment/ReceiveInventoryAgainstPurchaseOrder.ftl URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/facility/shipment/ReceiveInventoryAgainstPurchaseOrder.ftl?view=auto&rev=517398 ============================================================================== --- ofbiz/trunk/applications/product/webapp/facility/shipment/ReceiveInventoryAgainstPurchaseOrder.ftl (added) +++ ofbiz/trunk/applications/product/webapp/facility/shipment/ReceiveInventoryAgainstPurchaseOrder.ftl Mon Mar 12 14:12:48 2007 @@ -0,0 +1,177 @@ +<#-- +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. +--> +<#if shipment?exists> + + <#assign productId = parameters.productId?if_exists/> + <div class="head3">${uiLabelMap.ProductReceiveInventoryAgainstPurchaseOrder}</div> + + <div class="errorMessage"> + <#if ! isPurchaseShipment> + <#assign uiLabelWithVar=uiLabelMap.ProductErrorShipmentNotPurchaseShipment?interpret><@uiLabelWithVar/> + <#elseif orderId?has_content && !orderHeader?exists> + <#assign uiLabelWithVar=uiLabelMap.ProductErrorOrderIdNotFound?interpret><@uiLabelWithVar/> + <#elseif orderHeader?exists && orderHeader.orderTypeId != "PURCHASE_ORDER"> + <#assign uiLabelWithVar=uiLabelMap.ProductErrorOrderNotPurchaseOrder?interpret><@uiLabelWithVar/> + <#elseif ProductReceiveInventoryAgainstPurchaseOrderProductNotFound?exists> + <#assign uiLabelWithVar=uiLabelMap.ProductReceiveInventoryAgainstPurchaseOrderProductNotFound?interpret><@uiLabelWithVar/> + <#elseif ProductReceiveInventoryAgainstPurchaseOrderQuantityExceedsAvailableToReceive?exists> + <#assign uiLabelWithVar=uiLabelMap.ProductReceiveInventoryAgainstPurchaseOrderQuantityExceedsAvailableToReceive?interpret><@uiLabelWithVar/> + </#if> + </div> + + <form name="ReceiveInventoryAgainstPurchaseOrder" action="<@ofbizUrl>ReceiveInventoryAgainstPurchaseOrder</@ofbizUrl>"> + <input type="hidden" name="clearAll" value="Y"/> + <div class="tabletext"> + ${uiLabelMap.ProductShipmentId} : <input type="text" class='inputBox' size="20" name="shipmentId" value="${shipmentId?if_exists}"/> + ${uiLabelMap.ProductOrderId} : <input type="text" class='inputBox' size="20" name="purchaseOrderId" value="${orderId?if_exists}"/> + <span class='tabletext'> + <a href="javascript:call_fieldlookup2(document.additemsfromorder.orderId,'LookupOrderHeaderAndShipInfo');"> + <img src='/images/fieldlookup.gif' width='15' height='14' border='0' alt='Click here For Field Lookup'> + </a> + </span> + ${uiLabelMap.ProductOrderShipGroupId} : <input type="text" class='inputBox' size="20" name="shipGroupSeqId" value="${shipGroupSeqId?if_exists}"/> + <input type="submit" value="${uiLabelMap.CommonSelect}" class="smallSubmit"/> + </div> + </form> + + <#if isPurchaseShipment> + + <#assign itemsAvailableToReceive = totalAvailableToReceive?default(0) > 0/> + <#if orderItemDatas?exists> + <#assign rowCount = 0> + <#assign totalReadyToReceive = 0/> + <form action="<@ofbizUrl>receiveInventoryProduct/ReceiveInventoryAgainstPurchaseOrder?clearAll=Y</@ofbizUrl>" method="post" name="selectAllForm"> + <input type="hidden" name="facilityId" value="${facilityId}"/> + <input type="hidden" name="purchaseOrderId" value="${orderId}"/> + <input type="hidden" name="shipmentId" value="${shipmentId}"> + <input type="hidden" name="_useRowSubmit" value="Y"/> + <table width="100%" cellpadding="2" cellspacing="0" border="1"> + <tr> + <td><div class="tableheadtext">${uiLabelMap.ProductProduct}</div></td> + <td><div class="tableheadtext">${uiLabelMap.OrderOrder}</div></td> + <td><div class="tableheadtext">${uiLabelMap.CommonReceived}</div></td> + <td><div class="tableheadtext">${uiLabelMap.ProductOpenQuantity}</div></td> + <td><div class="tableheadtext">${uiLabelMap.CommonReceive}</div></td> + <td><div class="tableheadtext">${uiLabelMap.ProductInventoryItemType}</div></td> + <#if itemsAvailableToReceive> + <td colspan="2" align="right"> + <div class="tableheadtext">${uiLabelMap.CommonAll}<input type="checkbox" name="selectAll" value="${uiLabelMap.CommonY}" onclick="javascript:toggleAll(this, 'selectAllForm');"></div> + </td> + </#if> + </tr> + <#list orderItemDatas?if_exists as orderItemData> + <#assign orderItemAndShipGroupAssoc = orderItemData.orderItemAndShipGroupAssoc> + <#assign product = orderItemData.product?if_exists> + <#assign totalQuantityReceived = orderItemData.totalQuantityReceived?default(0)> + <#assign availableToReceive = orderItemData.availableToReceive?default(0)> + + <tr> + <td><div class="tabletext">${(product.internalName)?if_exists} [${orderItemAndShipGroupAssoc.productId?default("N/A")}]</div></td> + <td> + <div class="tabletext"> + ${orderItemAndShipGroupAssoc.quantity} + </div> + </td> + <td> + <div class="tabletext">${totalQuantityReceived}</div> + </td> + <td> + <div class="tabletext"> + ${orderItemAndShipGroupAssoc.quantity - totalQuantityReceived} + </div> + </td> + <#if availableToReceive > 0 > + <td> + <input type="hidden" name="productId_o_${rowCount}" value="${(product.productId)?if_exists}"/> + <input type="hidden" name="facilityId_o_${rowCount}" value="${facilityId}"/> + <input type="hidden" name="shipmentId_o_${rowCount}" value="${shipmentId}"/> + <input type="hidden" name="orderId_o_${rowCount}" value="${orderItemAndShipGroupAssoc.orderId}"/> + <input type="hidden" name="shipGroupSeqId_o_${rowCount}" value="${orderItemAndShipGroupAssoc.shipGroupSeqId}"/> + <input type="hidden" name="orderItemSeqId_o_${rowCount}" value="${orderItemAndShipGroupAssoc.orderItemSeqId}"/> + <input type="hidden" name="unitCost_o_${rowCount}" value="${orderItemAndShipGroupAssoc.unitPrice?default(0)}"/> + <input type="hidden" name="currencyUomId_o_${rowCount}" value="${currencyUomId?default("")}"/> + <input type="hidden" name="ownerPartyId_o_${rowCount}" value="${(facility.ownerPartyId)?if_exists}"/> + <input type="hidden" name="datetimeReceived_o_${rowCount}" value="${now}"/> + <input type="hidden" name="quantityRejected_o_${rowCount}" value="0"/> + <#if itemQuantitiesToReceive?exists && itemQuantitiesToReceive.get(orderItemAndShipGroupAssoc.orderItemSeqId)?exists> + <#assign quantityToReceive = itemQuantitiesToReceive.get(orderItemAndShipGroupAssoc.orderItemSeqId)> + <#else> + <#assign quantityToReceive = 0> + </#if> + <#assign totalReadyToReceive = totalReadyToReceive + quantityToReceive/> + <input type="text" class='inputBox' size="5" name="quantityAccepted_o_${rowCount}" value="${quantityToReceive}"/> + </td> + <td> + <select name="inventoryItemTypeId_o_${rowCount}" class="selectBox"> + <#list inventoryItemTypes as inventoryItemType> + <option value="${inventoryItemType.inventoryItemTypeId}" + <#if (facility.defaultInventoryItemTypeId?has_content) && (inventoryItemType.inventoryItemTypeId == facility.defaultInventoryItemTypeId)> + selected="selected" + </#if> + >${inventoryItemType.get("description",locale)?default(inventoryItemType.inventoryItemTypeId)}</option> + </#list> + </select> + </td> + <td align="right"> + <a href="<@ofbizUrl>ReceiveInventoryAgainstPurchaseOrder?shipmentId=${shipmentId}&purchaseOrderId=${orderId}&productId=${product.productId}</@ofbizUrl>" class="buttontext">${uiLabelMap.CommonClear}</a> + </td> + <td align="right"> + <input type="checkbox" name="_rowSubmit_o_${rowCount}" value="Y" onclick="javascript:checkToggle(this, 'selectAllForm');"> + </td> + <#assign rowCount = rowCount + 1> + </#if> + </tr> + </#list> + <#if itemsAvailableToReceive> + <tr> + <td colspan="7" align="right"> + <a href="<@ofbizUrl>ReceiveInventoryAgainstPurchaseOrder?shipmentId=${shipmentId}&purchaseOrderId=${orderId}&clearAll=Y</@ofbizUrl>" class="buttontext">${uiLabelMap.CommonClearAll}</a> + </td> + <td align="right"> + <input type="submit" class="smallSubmit" value="${uiLabelMap.ProductReceiveItem}"/> + </td> + </tr> + </#if> + </table> + <input type="hidden" name="_rowCount" value="${rowCount}"> + </form> + <script language="JavaScript" type="text/javascript">selectAll('selectAllForm');</script> + </#if> + <#if itemsAvailableToReceive && totalReadyToReceive < totalAvailableToReceive> + <div class="head3">${uiLabelMap.ProductReceiveInventoryAddProductToReceive}</div> + <form name="addProductToReceive" method="post" action="<@ofbizUrl>ReceiveInventoryAgainstPurchaseOrder</@ofbizUrl>"> + <input type="hidden" name="shipmentId" value="${shipmentId}"/> + <input type="hidden" name="purchaseOrderId" value="${orderId}"/> + <div class="tabletext"> + <span class="tabletext"> + ${uiLabelMap.ProductProductId} <input type="text" class="inputBox" size="20" id="productId" name="productId" value=""/> + @ + <input type="text" class="inputBox" name="quantity" size="6" maxlength="6" value="1" tabindex="0"/> + <input type="submit" value="${uiLabelMap.CommonAdd}" class="smallSubmit"/> + </span> + </div> + </form> + <script language="javascript"> + document.getElementById('productId').focus(); + </script> + </#if> + </#if> +<#else> + <h3>${uiLabelMap.ProductShipmentNotFoundId}: [${shipmentId?if_exists}]</h3> +</#if> Propchange: ofbiz/trunk/applications/product/webapp/facility/shipment/ReceiveInventoryAgainstPurchaseOrder.ftl ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/applications/product/webapp/facility/shipment/ReceiveInventoryAgainstPurchaseOrder.ftl ------------------------------------------------------------------------------ svn:keywords = Date Rev Author URL Id Propchange: ofbiz/trunk/applications/product/webapp/facility/shipment/ReceiveInventoryAgainstPurchaseOrder.ftl ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: ofbiz/trunk/applications/product/webapp/facility/shipment/ShipmentTabBar.ftl URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/facility/shipment/ShipmentTabBar.ftl?view=diff&rev=517398&r1=517397&r2=517398 ============================================================================== --- ofbiz/trunk/applications/product/webapp/facility/shipment/ShipmentTabBar.ftl (original) +++ ofbiz/trunk/applications/product/webapp/facility/shipment/ShipmentTabBar.ftl Mon Mar 12 14:12:48 2007 @@ -33,6 +33,9 @@ <#if shipment.shipmentTypeId?exists && shipment.shipmentTypeId='PURCHASE_SHIPMENT' && shipment.destinationFacilityId?exists> <a href="<@ofbizUrl>ReceiveInventory?shipmentId=${shipmentId}&facilityId=${shipment.destinationFacilityId?if_exists}<#if shipment.primaryOrderId?exists>&purchaseOrderId=${shipment.primaryOrderId}</#if></@ofbizUrl>" class="${selectedClassMap.ReceiveInventory?default(unselectedClassName)}">${uiLabelMap.ProductReceiveInventory}</a> </#if> + <#if shipment.shipmentTypeId?exists && shipment.shipmentTypeId='PURCHASE_SHIPMENT' && shipment.destinationFacilityId?exists && shipment.primaryOrderId?exists> + <a href="<@ofbizUrl>ReceiveInventoryAgainstPurchaseOrder?shipmentId=${shipmentId?if_exists}&purchaseOrderId=${shipment.primaryOrderId?if_exists}</@ofbizUrl>" class="${selectedClassMap.ProductReceiveInventoryAgainstPurchaseOrder?default(unselectedClassName)}">${uiLabelMap.ProductReceiveInventoryAgainstPO}</a> + </#if> <#if shipment.shipmentTypeId?exists && shipment.shipmentTypeId='SALES_SHIPMENT'> <a href="<@ofbizUrl>EditShipmentItems?shipmentId=${shipmentId}</@ofbizUrl>" class="${selectedClassMap.EditShipmentItems?default(unselectedClassName)}">${uiLabelMap.ProductItems}</a> <a href="<@ofbizUrl>EditShipmentPackages?shipmentId=${shipmentId}</@ofbizUrl>" class="${selectedClassMap.EditShipmentPackages?default(unselectedClassName)}">${uiLabelMap.ProductPackages}</a> Modified: ofbiz/trunk/applications/product/widget/facility/ShipmentScreens.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/widget/facility/ShipmentScreens.xml?view=diff&rev=517398&r1=517397&r2=517398 ============================================================================== --- ofbiz/trunk/applications/product/widget/facility/ShipmentScreens.xml (original) +++ ofbiz/trunk/applications/product/widget/facility/ShipmentScreens.xml Mon Mar 12 14:12:48 2007 @@ -319,4 +319,26 @@ </widgets> </section> </screen> + + <screen name="ReceiveInventoryAgainstPurchaseOrder"> + <section> + <actions> + <set field="titleProperty" value="ProductReceiveInventoryAgainstPurchaseOrder"/> + <set field="headerItem" value="shipment"/> + <set field="tabButtonItem" value="ProductReceiveInventoryAgainstPO"/> + <property-map resource="OrderUiLabels" map-name="uiLabelMap" global="true"/> + <script location="component://product/webapp/facility/WEB-INF/actions/shipment/ReceiveInventoryAgainstPurchaseOrder.bsh"/> + </actions> + <widgets> + <decorator-screen name="CommonShipmentDecorator"> + <decorator-section name="body"> + <platform-specific> + <html><html-template location="component://product/webapp/facility/shipment/ReceiveInventoryAgainstPurchaseOrder.ftl"/></html> + </platform-specific> + </decorator-section> + </decorator-screen> + </widgets> + </section> + </screen> + </screens> Modified: ofbiz/trunk/framework/common/config/CommonUiLabels.properties URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/config/CommonUiLabels.properties?view=diff&rev=517398&r1=517397&r2=517398 ============================================================================== --- ofbiz/trunk/framework/common/config/CommonUiLabels.properties (original) +++ ofbiz/trunk/framework/common/config/CommonUiLabels.properties Mon Mar 12 14:12:48 2007 @@ -81,6 +81,7 @@ CommonChooseLanguage=Choose Language CommonCity=City CommonClear=Clear +CommonClearAll=Clear All CommonClickHere=Click Here CommonClose=Close CommonCloseTab=- |
Free forum by Nabble | Edit this page |