Author: lektran
Date: Sat Oct 17 09:38:02 2009 New Revision: 826206 URL: http://svn.apache.org/viewvc?rev=826206&view=rev Log: Prevent an NPE when a primaryOrderId hasn't been supplied, also set partyIdFrom using the facility.ownerPartyId in this situation. (This bug was exposed using the unit tests) Modified: ofbiz/trunk/applications/product/src/org/ofbiz/shipment/packing/PackingSession.java Modified: ofbiz/trunk/applications/product/src/org/ofbiz/shipment/packing/PackingSession.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/shipment/packing/PackingSession.java?rev=826206&r1=826205&r2=826206&view=diff ============================================================================== --- ofbiz/trunk/applications/product/src/org/ofbiz/shipment/packing/PackingSession.java (original) +++ ofbiz/trunk/applications/product/src/org/ofbiz/shipment/packing/PackingSession.java Sat Oct 17 09:38:02 2009 @@ -725,25 +725,33 @@ if (UtilValidate.isNotEmpty(orderRoleShipTo)) { newShipment.put("partyIdTo", orderRoleShipTo.getString("partyId")); } - String partyIdFrom = null; - GenericValue orderItemShipGroup = EntityUtil.getFirst(delegator.findByAnd("OrderItemShipGroup", UtilMisc.toMap("orderId", primaryOrderId, "shipGroupSeqId", primaryShipGrp))); - if (UtilValidate.isNotEmpty(orderItemShipGroup.getString("vendorPartyId"))) { - partyIdFrom = orderItemShipGroup.getString("vendorPartyId"); - } else if (UtilValidate.isNotEmpty(orderItemShipGroup.getString("facilityId"))) { - GenericValue facility = delegator.findOne("Facility", UtilMisc.toMap("facilityId", orderItemShipGroup.getString("facilityId")), false); + String partyIdFrom = null; + if (primaryOrderId != null) { + GenericValue orderItemShipGroup = EntityUtil.getFirst(delegator.findByAnd("OrderItemShipGroup", UtilMisc.toMap("orderId", primaryOrderId, "shipGroupSeqId", primaryShipGrp))); + if (UtilValidate.isNotEmpty(orderItemShipGroup.getString("vendorPartyId"))) { + partyIdFrom = orderItemShipGroup.getString("vendorPartyId"); + } else if (UtilValidate.isNotEmpty(orderItemShipGroup.getString("facilityId"))) { + GenericValue facility = delegator.findOne("Facility", UtilMisc.toMap("facilityId", orderItemShipGroup.getString("facilityId")), false); + if (UtilValidate.isNotEmpty(facility.getString("ownerPartyId"))) { + partyIdFrom = facility.getString("ownerPartyId"); + } + } + if (UtilValidate.isEmpty(partyIdFrom)) { + GenericValue orderRoleShipFrom = EntityUtil.getFirst(delegator.findByAnd("OrderRole", UtilMisc.toMap("orderId", primaryOrderId, "roleTypeId", "SHIP_FROM_VENDOR"))); + if (UtilValidate.isNotEmpty(orderRoleShipFrom)) { + partyIdFrom = orderRoleShipFrom.getString("partyId"); + } else { + orderRoleShipFrom = EntityUtil.getFirst(delegator.findByAnd("OrderRole", UtilMisc.toMap("orderId", primaryOrderId, "roleTypeId", "BILL_FROM_VENDOR"))); + partyIdFrom = orderRoleShipFrom.getString("partyId"); + } + } + } else if (this.facilityId != null) { + GenericValue facility = delegator.findOne("Facility", UtilMisc.toMap("facilityId", this.facilityId), false); if (UtilValidate.isNotEmpty(facility.getString("ownerPartyId"))) { partyIdFrom = facility.getString("ownerPartyId"); } } - if (UtilValidate.isEmpty(partyIdFrom)) { - GenericValue orderRoleShipFrom = EntityUtil.getFirst(delegator.findByAnd("OrderRole", UtilMisc.toMap("orderId", primaryOrderId, "roleTypeId", "SHIP_FROM_VENDOR"))); - if (UtilValidate.isNotEmpty(orderRoleShipFrom)) { - partyIdFrom = orderRoleShipFrom.getString("partyId"); - } else { - orderRoleShipFrom = EntityUtil.getFirst(delegator.findByAnd("OrderRole", UtilMisc.toMap("orderId", primaryOrderId, "roleTypeId", "BILL_FROM_VENDOR"))); - partyIdFrom = orderRoleShipFrom.getString("partyId"); - } - } + newShipment.put("partyIdFrom", partyIdFrom); Debug.log("Creating new shipment with context: " + newShipment, module); Map<String, Object> newShipResp = this.getDispatcher().runSync("createShipment", newShipment); |
Free forum by Nabble | Edit this page |