Author: ashish
Date: Fri Jun 12 12:40:07 2009 New Revision: 784099 URL: http://svn.apache.org/viewvc?rev=784099&view=rev Log: Applied patch from jira issue OFBIZ-2547 (In Packing screens to use online shipping estimates from UPS to compare with the estimated shipping cost). Following points are covered in this patch. -- Part of weight package screen ( calculate online shipping rate from UPS in weight package screen ), -- Now instead of calling "upsRateInquire" service, called upsShipmentConfirm and upsShipmentAccept service Thanks to Akash Jain, Pranay Pandey & others involved in this contribution. Modified: ofbiz/trunk/applications/product/config/shipment.properties ofbiz/trunk/applications/product/servicedef/services_shipment.xml ofbiz/trunk/applications/product/src/org/ofbiz/shipment/thirdparty/ups/UpsServices.java ofbiz/trunk/applications/product/src/org/ofbiz/shipment/weightPackage/WeightPackageServices.java ofbiz/trunk/applications/product/src/org/ofbiz/shipment/weightPackage/WeightPackageSession.java ofbiz/trunk/applications/product/webapp/facility/WEB-INF/actions/shipment/WeightPackage.groovy ofbiz/trunk/applications/product/webapp/facility/WEB-INF/controller.xml ofbiz/trunk/applications/product/webapp/facility/shipment/WeightPackage.ftl Modified: ofbiz/trunk/applications/product/config/shipment.properties URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/config/shipment.properties?rev=784099&r1=784098&r2=784099&view=diff ============================================================================== --- ofbiz/trunk/applications/product/config/shipment.properties (original) +++ ofbiz/trunk/applications/product/config/shipment.properties Fri Jun 12 12:40:07 2009 @@ -40,6 +40,9 @@ # UPS XPCI Configuration ############################################ +# UPS configuration indicator +shipment.ups.shipping="N" + # UPS Connection URL & timeout in seconds shipment.ups.connect.url=https://wwwcie.ups.com/ups.app/xml shipment.ups.connect.timeout=60 Modified: ofbiz/trunk/applications/product/servicedef/services_shipment.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/servicedef/services_shipment.xml?rev=784099&r1=784098&r2=784099&view=diff ============================================================================== --- ofbiz/trunk/applications/product/servicedef/services_shipment.xml (original) +++ ofbiz/trunk/applications/product/servicedef/services_shipment.xml Fri Jun 12 12:40:07 2009 @@ -524,18 +524,26 @@ location="org.ofbiz.shipment.weightPackage.WeightPackageServices" invoke="completePackage" auth="true"> <description>Complete the packging and set the shipment to packed</description> <attribute name="weightPackageSession" type="org.ofbiz.shipment.weightPackage.WeightPackageSession" mode="IN" optional="false"/> - <attribute name="orderId" type="String" mode="IN" optional="true"/> - <attribute name="invoiceId" type="String" mode="IN" optional="true"/> + <attribute name="orderId" type="String" mode="IN" optional="false"/> + <attribute name="invoiceId" type="String" mode="IN" optional="false"/> <attribute name="facilityId" type="String" mode="IN" optional="true"/> <attribute name="dimensionUomId" type="String" mode="IN" optional="true"/> <attribute name="weightUomId" type="String" mode="IN" optional="true"/> <attribute name="estimatedShippingCost" type="BigDecimal" mode="IN" optional="true"/> - <attribute name="shipNow" type="String" mode="IN" optional="true"/> <attribute name="newEstimatedShippingCost" type="BigDecimal" mode="IN" optional="true"/> <attribute name="shipmentId" type="String" mode="INOUT" optional="true"/> <attribute name="showWarningForm" type="Boolean" mode="OUT" optional="true"/> </service> + <service name="completeShipment" engine="java" + location="org.ofbiz.shipment.weightPackage.WeightPackageServices" invoke="completeShipment" auth="true"> + <description>Complete the packaging set the shipment to packed</description> + <attribute name="weightPackageSession" type="org.ofbiz.shipment.weightPackage.WeightPackageSession" mode="IN" optional="false"/> + <attribute name="orderId" type="String" mode="IN" optional="false"/> + <attribute name="facilityId" type="String" mode="IN" optional="true"/> + <attribute name="shipmentId" type="String" mode="INOUT" optional="true"/> + </service> + <!-- Pack Order Services --> <service name="packSingleItem" engine="java" location="org.ofbiz.shipment.packing.PackingServices" invoke="addPackLine" auth="true"> Modified: ofbiz/trunk/applications/product/src/org/ofbiz/shipment/thirdparty/ups/UpsServices.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/shipment/thirdparty/ups/UpsServices.java?rev=784099&r1=784098&r2=784099&view=diff ============================================================================== --- ofbiz/trunk/applications/product/src/org/ofbiz/shipment/thirdparty/ups/UpsServices.java (original) +++ ofbiz/trunk/applications/product/src/org/ofbiz/shipment/thirdparty/ups/UpsServices.java Fri Jun 12 12:40:07 2009 @@ -487,6 +487,20 @@ UtilXml.addChildElementValue(dimensionsElement, "Length", UtilValidate.isNotEmpty(boxLength) ? ""+boxLength.intValue() : "", shipmentConfirmRequestDoc); UtilXml.addChildElementValue(dimensionsElement, "Width", UtilValidate.isNotEmpty(boxWidth) ? ""+boxWidth.intValue() : "", shipmentConfirmRequestDoc); UtilXml.addChildElementValue(dimensionsElement, "Height", UtilValidate.isNotEmpty(boxHeight) ? ""+boxHeight.intValue() : "", shipmentConfirmRequestDoc); + } else if (UtilValidate.isNotEmpty(shipmentPackage) && UtilValidate.isNotEmpty(shipmentPackage.getBigDecimal("boxLength")) + && UtilValidate.isNotEmpty(shipmentPackage.getBigDecimal("boxWidth")) + && UtilValidate.isNotEmpty(shipmentPackage.getBigDecimal("boxHeight"))) { + Element dimensionsElement = UtilXml.addChildElement(packageElement, "Dimensions", shipmentConfirmRequestDoc); + Element unitOfMeasurementElement = UtilXml.addChildElement(dimensionsElement, "UnitOfMeasurement", shipmentConfirmRequestDoc); + GenericValue dimensionUom = shipmentPackage.getRelatedOne("DimensionUom"); + if (UtilValidate.isNotEmpty(dimensionUom)) { + UtilXml.addChildElementValue(unitOfMeasurementElement, "Code", dimensionUom.getString("abbreviation").toUpperCase(), shipmentConfirmRequestDoc); + } else { + UtilXml.addChildElementValue(unitOfMeasurementElement, "Code", "IN", shipmentConfirmRequestDoc); + } + UtilXml.addChildElementValue(dimensionsElement, "Length", ""+shipmentPackage.getBigDecimal("boxLength").intValue(), shipmentConfirmRequestDoc); + UtilXml.addChildElementValue(dimensionsElement, "Width", ""+shipmentPackage.getBigDecimal("boxWidth").intValue(), shipmentConfirmRequestDoc); + UtilXml.addChildElementValue(dimensionsElement, "Height", ""+shipmentPackage.getBigDecimal("boxHeight").intValue(), shipmentConfirmRequestDoc); } Element packageWeightElement = UtilXml.addChildElement(packageElement, "PackageWeight", shipmentConfirmRequestDoc); Modified: ofbiz/trunk/applications/product/src/org/ofbiz/shipment/weightPackage/WeightPackageServices.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/shipment/weightPackage/WeightPackageServices.java?rev=784099&r1=784098&r2=784099&view=diff ============================================================================== --- ofbiz/trunk/applications/product/src/org/ofbiz/shipment/weightPackage/WeightPackageServices.java (original) +++ ofbiz/trunk/applications/product/src/org/ofbiz/shipment/weightPackage/WeightPackageServices.java Fri Jun 12 12:40:07 2009 @@ -166,31 +166,45 @@ weightPackageSession.setShipmentId(shipmentId); weightPackageSession.setInvoiceId(invoiceId); weightPackageSession.setEstimatedShipCost(estimatedShippingCost); + weightPackageSession.setActualShipCost(newEstimatedShippingCost); - BigDecimal diffInShipCostInPerc = ZERO; Map<String, Object> response = FastMap.newInstance(); try { - String shipNow = (String) context.get("shipNow"); - if (UtilValidate.isEmpty(shipNow)) { - shipNow = "N"; + String getActualShippingQuoteFromUps = UtilProperties.getPropertyValue("shipment.properties", "shipment.ups.shipping", "N"); + String result = "error"; + // Check if UPS integration is done + if ("Y".equals(getActualShippingQuoteFromUps)) { + result = weightPackageSession.complete(orderId, locale, "Y"); + } else { + result = weightPackageSession.complete(orderId, locale); + } + if ("showWarningForm".equals(result)) { + response.put("showWarningForm", true); + } else if ("success".equals(result)) { + response.put("shipmentId", shipmentId); + } else { + response = ServiceUtil.returnError(UtilProperties.getMessage("ProductErrorUiLabels", "ProductErrorNoItemsCurrentlySetToBeShippedCannotComplete", locale)); } - if ("N".equals(shipNow)) { - BigDecimal doEstimates = new BigDecimal(UtilProperties.getPropertyValue("shipment.properties", "shipment.default.cost.actual_over_estimated_percent_allowed", "10")); - // calculate the difference (in percentage) between estimatedShippingCharges (taken when order is created) and newEstimatedShippingCharges (calculated according to package weight) - if (estimatedShippingCost.compareTo(ZERO) > 0) { - diffInShipCostInPerc = (((newEstimatedShippingCost.subtract(estimatedShippingCost)).divide(estimatedShippingCost, 2, rounding)).multiply(new BigDecimal(100))).abs(); - } else { - diffInShipCostInPerc = newEstimatedShippingCost; - } - // check the difference in shippingCharges, if it is greater/less than 10% then show warning form - if (doEstimates.compareTo(diffInShipCostInPerc) == -1) { - response.put("showWarningForm", true); - } else if (weightPackageSession.complete(orderId, locale)) { - response.put("shipmentId", shipmentId); - } else { - response = ServiceUtil.returnError(UtilProperties.getMessage("ProductErrorUiLabels", "ProductErrorNoItemsCurrentlySetToBeShippedCannotComplete", locale)); - } - } else if (weightPackageSession.complete(orderId, locale)) { + } catch (GeneralException e) { + return ServiceUtil.returnError(e.getMessage(), e.getMessageList()); + } + return response; + } + + public static Map<String, Object> completeShipment(DispatchContext dctx, Map<String, ? extends Object> context) { + Locale locale = (Locale) context.get("locale"); + WeightPackageSession weightPackageSession = (WeightPackageSession) context.get("weightPackageSession"); + + String shipmentId = (String) context.get("shipmentId"); + String orderId = (String) context.get("orderId"); + + Map<String, Object> response = FastMap.newInstance(); + try { + String getActualShippingQuoteFromUps = UtilProperties.getPropertyValue("shipment.properties", "shipment.ups.shipping", "N"); + // Check if UPS integration is done + if ("Y".equals(getActualShippingQuoteFromUps) && weightPackageSession.completeShipment(orderId, "Y")) { + response.put("shipmentId", shipmentId); + } else if (weightPackageSession.completeShipment(orderId)) { response.put("shipmentId", shipmentId); } else { response = ServiceUtil.returnError(UtilProperties.getMessage("ProductErrorUiLabels", "ProductErrorNoItemsCurrentlySetToBeShippedCannotComplete", locale)); Modified: ofbiz/trunk/applications/product/src/org/ofbiz/shipment/weightPackage/WeightPackageSession.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/shipment/weightPackage/WeightPackageSession.java?rev=784099&r1=784098&r2=784099&view=diff ============================================================================== --- ofbiz/trunk/applications/product/src/org/ofbiz/shipment/weightPackage/WeightPackageSession.java (original) +++ ofbiz/trunk/applications/product/src/org/ofbiz/shipment/weightPackage/WeightPackageSession.java Fri Jun 12 12:40:07 2009 @@ -31,6 +31,8 @@ import org.ofbiz.base.util.GeneralException; import org.ofbiz.base.util.UtilFormatOut; import org.ofbiz.base.util.UtilMisc; +import org.ofbiz.base.util.UtilNumber; +import org.ofbiz.base.util.UtilProperties; import org.ofbiz.base.util.UtilValidate; import org.ofbiz.entity.GenericDelegator; import org.ofbiz.entity.GenericValue; @@ -56,12 +58,14 @@ protected String dimensionUomId = null; protected String weightUomId = null; protected BigDecimal estimatedShipCost = null; + protected BigDecimal actualShipCost = null; protected int weightPackageSeqId = 1; protected List<WeightPackageSessionLine> weightPackageLines = null; private transient GenericDelegator _delegator = null; private transient LocalDispatcher _dispatcher = null; private static BigDecimal ZERO = BigDecimal.ZERO; + private static int rounding = UtilNumber.getBigDecimalRoundingMode("invoice.rounding"); public WeightPackageSession() { } @@ -152,6 +156,14 @@ return this.estimatedShipCost; } + public void setActualShipCost(BigDecimal actualShipCost) { + this.actualShipCost = actualShipCost; + } + + public BigDecimal getActualShipCost() { + return this.actualShipCost; + } + public String getShipmentId() { return this.shipmentId; } @@ -281,17 +293,117 @@ } } - public boolean complete(String orderId, Locale locale) throws GeneralException { + public String complete(String orderId, Locale locale) throws GeneralException { + return complete(orderId, locale, "N"); + } + + public String complete(String orderId, Locale locale, String calculateOnlineShippingRateFromUps) throws GeneralException { + //create the package(s) this.createPackages(orderId); - this.changeOrderItemStatus(orderId, shipmentId); + // calculate the actual shipping charges according to package(s) weight and dimensions + BigDecimal actualShippingCost = ZERO; + // Check if UPS integration is done + if ("Y".equals(calculateOnlineShippingRateFromUps)) { + // call upsShipmentConfirm service, it will calculate the online shipping rate from UPS and save in ShipmentRouteSegment entity in actualCost field + actualShippingCost = this.upsShipmentConfirm(); + } else { + // calculate the shipping charges manually + actualShippingCost = this.getActualShipCost(); + } + // calculate the difference between estimated shipping charges and actual shipping charges + if (diffInShipCost(actualShippingCost)) { + return "showWarningForm"; + } else if ("Y".equals(calculateOnlineShippingRateFromUps)) { + // call upsShipmentAccept service, it will made record(s) in ShipmentPackageRouteSeg entity + this.upsShipmentAccept(); + } + // change order item(s) status + this.changeOrderItemStatus(orderId); + // assign item(s) to package(s) + this.applyItemsToPackages(orderId); + // update the ShipmentRouteSegments with total weight and weightUomId + this.updateShipmentRouteSegments(orderId); + // set the shipment to packed + this.setShipmentToPacked(); + + return "success"; + } + + public boolean completeShipment(String orderId) throws GeneralException { + return completeShipment(orderId, "N"); + } + + public boolean completeShipment(String orderId, String calculateOnlineShippingRateFromUps) throws GeneralException { + // Check if UPS integration is done + if ("Y".equals(calculateOnlineShippingRateFromUps)) { + // call upsShipmentAccept service, it will made record(s) in ShipmentPackageRouteSeg entity + this.upsShipmentAccept(); + } + // change order item(s) status + this.changeOrderItemStatus(orderId); + // assign item(s) to package(s) this.applyItemsToPackages(orderId); + // update the ShipmentRouteSegments with total weight and weightUomId this.updateShipmentRouteSegments(orderId); + // set the shipment to packed this.setShipmentToPacked(); return true; } + protected BigDecimal upsShipmentConfirm() throws GeneralException { + GenericDelegator delegator = this.getDelegator(); + BigDecimal actualCost = ZERO; + List<GenericValue> shipmentRouteSegments = delegator.findByAnd("ShipmentRouteSegment", UtilMisc.toMap("shipmentId", shipmentId)); + if (UtilValidate.isNotEmpty(shipmentRouteSegments)) { + for (GenericValue shipmentRouteSegment : shipmentRouteSegments) { + Map<String, Object> shipmentRouteSegmentMap = FastMap.newInstance(); + shipmentRouteSegmentMap.put("shipmentId", shipmentId); + shipmentRouteSegmentMap.put("shipmentRouteSegmentId", shipmentRouteSegment.getString("shipmentRouteSegmentId")); + shipmentRouteSegmentMap.put("userLogin", userLogin); + Map<String, Object> shipmentRouteSegmentResult = this.getDispatcher().runSync("upsShipmentConfirm", shipmentRouteSegmentMap); + if (ServiceUtil.isError(shipmentRouteSegmentResult)) { + throw new GeneralException(ServiceUtil.getErrorMessage(shipmentRouteSegmentResult)); + } + GenericValue shipRouteSeg = delegator.findOne("ShipmentRouteSegment", UtilMisc.toMap("shipmentId", shipmentId, "shipmentRouteSegmentId", shipmentRouteSegment.getString("shipmentRouteSegmentId")), false); + actualCost = actualCost.add(shipRouteSeg.getBigDecimal("actualCost")); + } + } + return actualCost; + } + + protected void upsShipmentAccept() throws GeneralException { + List<GenericValue> shipmentRouteSegments = this.getDelegator().findByAnd("ShipmentRouteSegment", UtilMisc.toMap("shipmentId", shipmentId)); + if (UtilValidate.isNotEmpty(shipmentRouteSegments)) { + for (GenericValue shipmentRouteSegment : shipmentRouteSegments) { + Map<String, Object> shipmentRouteSegmentMap = FastMap.newInstance(); + shipmentRouteSegmentMap.put("shipmentId", shipmentId); + shipmentRouteSegmentMap.put("shipmentRouteSegmentId", shipmentRouteSegment.getString("shipmentRouteSegmentId")); + shipmentRouteSegmentMap.put("userLogin", userLogin); + Map<String, Object> shipmentRouteSegmentResult = this.getDispatcher().runSync("upsShipmentAccept", shipmentRouteSegmentMap); + if (ServiceUtil.isError(shipmentRouteSegmentResult)) { + throw new GeneralException(ServiceUtil.getErrorMessage(shipmentRouteSegmentResult)); + } + } + } + } + + protected boolean diffInShipCost(BigDecimal actualShippingCost) throws GeneralException { + BigDecimal estimatedShipCost = this.getEstimatedShipCost(); + BigDecimal doEstimates = new BigDecimal(UtilProperties.getPropertyValue("shipment.properties", "shipment.default.cost_actual_over_estimated_percent_allowed", "10")); + BigDecimal diffInShipCostInPerc = ZERO; + if (estimatedShipCost.compareTo(ZERO) == 0) { + diffInShipCostInPerc = actualShippingCost; + } else { + diffInShipCostInPerc = (((actualShippingCost.subtract(estimatedShipCost)).divide(estimatedShipCost, 2, rounding)).multiply(new BigDecimal(100))).abs(); + } + if (doEstimates.compareTo(diffInShipCostInPerc) == -1) { + return true; + } + return false; + } + protected void createPackages(String orderId) throws GeneralException { int shipPackSeqId = 0; for (WeightPackageSessionLine packedLine : this.getPackedLines(orderId)) { @@ -316,7 +428,7 @@ } } - protected void changeOrderItemStatus(String orderId, String shipmentId) throws GeneralException { + protected void changeOrderItemStatus(String orderId) throws GeneralException { List<GenericValue> shipmentItems = this.getDelegator().findByAnd("ShipmentItem", UtilMisc.toMap("shipmentId", shipmentId)); for (GenericValue shipmentItem : shipmentItems) { for (WeightPackageSessionLine packedLine : this.getPackedLines(orderId)) { Modified: ofbiz/trunk/applications/product/webapp/facility/WEB-INF/actions/shipment/WeightPackage.groovy URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/facility/WEB-INF/actions/shipment/WeightPackage.groovy?rev=784099&r1=784098&r2=784099&view=diff ============================================================================== --- ofbiz/trunk/applications/product/webapp/facility/WEB-INF/actions/shipment/WeightPackage.groovy (original) +++ ofbiz/trunk/applications/product/webapp/facility/WEB-INF/actions/shipment/WeightPackage.groovy Fri Jun 12 12:40:07 2009 @@ -22,6 +22,7 @@ import org.ofbiz.entity.condition.EntityCondition; import org.ofbiz.order.order.OrderReadHelper; import org.ofbiz.shipment.weightPackage.WeightPackageSession; + weightPackageSession = session.getAttribute("weightPackageSession"); if (!weightPackageSession) { weightPackageSession = new WeightPackageSession(dispatcher, userLogin); @@ -46,6 +47,13 @@ } else { context.invoice = null; } +if (shipment) { + shipmentRouteSegment = EntityUtil.getFirst(delegator.findByAnd("ShipmentRouteSegment", [shipmentId : shipment.shipmentId])); + actualCost = shipmentRouteSegment.actualCost; + if (actualCost) { + context.shipmentPackages = delegator.findByAnd("ShipmentPackage", [shipmentId : shipment.shipmentId]); + } +} facilityId = parameters.facilityId; if (facilityId) { @@ -77,7 +85,6 @@ shipmentId = request.getAttribute("shipmentId"); } context.shipmentId = shipmentId; -//invoiceIds = null; if (shipmentId) { // Get the primaryOrderId from the shipment shipment = delegator.findOne("Shipment", [shipmentId : shipmentId], false); @@ -98,11 +105,13 @@ weightPackageSession.setFacilityId(facilityId); context.primaryOrderId = orderId; +carrierPartyId = null; if (orderId) { orderHeader = delegator.findOne("OrderHeader", [orderId : orderId], false); 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) { @@ -121,17 +130,20 @@ context.productStoreId = productStoreId; context.estimatedShippingCost = estimatedShippingCost; } else { - orderId = null; 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; } } @@ -139,8 +151,14 @@ context.shipGroupSeqId = shipGroupSeqId; context.picklistBinId = picklistBinId; -shipmentBoxTypes = delegator.findList("ShipmentBoxType", null, null, ["description"], null, true); -context.shipmentBoxTypes = shipmentBoxTypes; +if (carrierPartyId) { + carrierShipmentBoxTypes = delegator.findByAnd("CarrierShipmentBoxType", [partyId : carrierPartyId]); + shipmentBoxTypes = []; + carrierShipmentBoxTypes.each { carrierShipmentBoxType -> + shipmentBoxTypes.add(delegator.findOne("ShipmentBoxType", [shipmentBoxTypeId : carrierShipmentBoxType.shipmentBoxTypeId], false)); + context.shipmentBoxTypes = shipmentBoxTypes; + } +} defaultDimensionUomId = null; if (facility) { 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?rev=784099&r1=784098&r2=784099&view=diff ============================================================================== --- ofbiz/trunk/applications/product/webapp/facility/WEB-INF/controller.xml (original) +++ ofbiz/trunk/applications/product/webapp/facility/WEB-INF/controller.xml Fri Jun 12 12:40:07 2009 @@ -718,7 +718,7 @@ </request-map> <request-map uri="shipNow"> <security https="true" auth="true"/> - <event type="service" invoke="completePackage"/> + <event type="service" invoke="completeShipment"/> <response name="success" type="view" value="WeightPackageOnly"/> <response name="error" type="view" value="WeightPackageOnly"/> </request-map> Modified: ofbiz/trunk/applications/product/webapp/facility/shipment/WeightPackage.ftl URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/facility/shipment/WeightPackage.ftl?rev=784099&r1=784098&r2=784099&view=diff ============================================================================== --- ofbiz/trunk/applications/product/webapp/facility/shipment/WeightPackage.ftl (original) +++ ofbiz/trunk/applications/product/webapp/facility/shipment/WeightPackage.ftl Fri Jun 12 12:40:07 2009 @@ -92,9 +92,9 @@ </tr> </table> </form> - </#if> - <#if !(invoiceIds?has_content) && (orderId?has_content)> + <#else> <#assign packedLines = weightPackageSession.getPackedLines(orderId)/> + <#if !(shipmentPackages?has_content)> <#if packedLines?has_content> <table class="basic-table" cellpadding="2" cellspacing='0'> <tr> @@ -202,6 +202,49 @@ </tr> </form> </table> + <#else> + <table class="basic-table" cellpadding="2" cellspacing='0'> + <tr> + <th> + ${uiLabelMap.ProductPackedWeight} (${("uiLabelMap.ProductShipmentUomAbbreviation_" + defaultWeightUomId)?eval}): + </th> + <th> + ${uiLabelMap.CommonDimension} (${("uiLabelMap.ProductShipmentUomAbbreviation_" + defaultDimensionUomId)?eval}): + </th> + <th> + ${uiLabelMap.ProductPackageInputBox}: + </th> + </tr> + <#list shipmentPackages as shipmentPackage> + <form name="completePackForm" method="post" action="<@ofbizUrl>shipNow</@ofbizUrl>"> + <input type="hidden" name="orderId" value="${orderId?if_exists}"/> + <input type="hidden" name="shipGroupSeqId" value="${shipGroupSeqId?if_exists}"/> + <input type="hidden" name="facilityId" value="${(facility.facilityId)?if_exists}"/> + <input type="hidden" name="shipmentId" value="${(shipment.shipmentId)?if_exists}"/> + <input type="hidden" name="invoiceId" value="${(invoice.invoiceId)?if_exists}"/> + <tr> + <td> + <span class="label"> + ${uiLabelMap.ProductPackage} ${shipmentPackage_index} + <input type="text" size="7" readonly name="packageWeight" value="${(shipmentPackage.weight)?if_exists}"> + </span> + </td> + <td> + <span class="label">${uiLabelMap.CommonLength}<input type="text" readonly name="packageLength" value="${(shipmentPackage.boxLength())?if_exists}"/></span> + <span class="label">${uiLabelMap.ProductWidth}<input type="text" readonly name="packageWidth" value="${(shipmentPackage.boxWidth())?if_exists}" size="5"/></span> + <span class="label">${uiLabelMap.PartyHeight}<input type="text" readonly name="packageHeight" value="${(shipmentPackage.boxHeight())?if_exists}" size="5"/></span> + </td> + <td> + <input type="text" readonly name="shipmentBoxTypeId" value="${(shipmentPackage.shipmentBoxTypeId())?if_exists}" size="5"/> + </td> + </tr> + </form> + </#list> + </table> + <div align="right"> + <a href="javascript:document.completePackForm.submit()" class="buttontext">${uiLabelMap.ProductComplete}</a> + </div> + </#if> </#if> </div> </div> @@ -222,8 +265,6 @@ <input type="hidden" name="shipGroupSeqId" value="${shipGroupSeqId?if_exists}"/> <input type="hidden" name="facilityId" value="${(facility.facilityId)?if_exists}"/> <input type="hidden" name="shipmentId" value="${(shipment.shipmentId)?if_exists}"/> - <input type="hidden" name="invoiceId" value="${(invoice.invoiceId)?if_exists}"/> - <input type="hidden" name="shipNow" value="Y"/> </form> <form name="holdShipmentForm" method="post" action="<@ofbizUrl>HoldShipment</@ofbizUrl>"> <input type="hidden" name="orderId" value="${orderId?if_exists}"/> |
Free forum by Nabble | Edit this page |