Scott Gray wrote:
> On 9/03/2010, at 12:53 PM, [email protected] wrote:
> 
>> Author: doogie
>> Date: Tue Mar  9 19:53:25 2010
>> New Revision: 921087
>>
>> URL: http://svn.apache.org/viewvc?rev=921087&view=rev
>> Log:
>> Add helper method for determining whether a ship group contains only
>> digital goods.
>>
>> Modified:
>>    
>> ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCart.java
>>
>> Modified: 
>> ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCart.java
>> URL: 
>> http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCart.java?rev=921087&r1=921086&r2=921087&view=diff
>> ==============================================================================
>> --- 
>> ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCart.java
>>  (original)
>> +++ 
>> ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCart.java
>>  Tue Mar  9 19:53:25 2010
>> @@ -818,6 +818,28 @@ public class ShoppingCart implements Ser
>>         return true;
>>     }
>>
>> +    /**
>> +     * Check to see if the ship group contains only Digital Goods, ie no 
>> Finished Goods and no Finished/Digital Goods, et cetera.
>> +     * This is determined by making sure no Product has a type where 
>> ProductType.isPhysical!=N.
>> +     */
>> +    public boolean containOnlyDigitalGoods(int shipGroupIdx) {
>> +        CartShipInfo shipInfo = getShipInfo(shipGroupIdx);
>> +        for (ShoppingCartItem cartItem: shipInfo.getShipItems()) {
>> +            GenericValue product = cartItem.getProduct();
>> +            try {
>> +                GenericValue productType = 
>> product.getRelatedOneCache("ProductType");
>> +                if (productType == null || 
>> !"N".equals(productType.getString("isPhysical"))) {
>> +                    return false;
>> +                }
>> +            } catch (GenericEntityException e) {
>> +                Debug.logError(e, "Error looking up ProductType: " + 
>> e.toString(), module);
>> +                // consider this not a digital good if we don't have "proof"
>> +                return false;
>> +            }
>> +        }
>> +        return true;
>> +    }
>> +
> 
> It looks like we've ended up with some duplicated functionality around this 
> at some point, shippingApplies() and containOnlyDigitalGoods() do essentially 
> the same thing and we should probably deprecate one of them.   I'd prefer to 
> keep the former because digital good doesn't do a good job of describing the 
> purpose of the method e.g. shipping doesn't apply to a service item or 
> non-product item yet they aren't digital goods.

I don't care which, and will happily use another method instead of
this new one I just added.

I use this method to skip PostalAddress queries/creation if a
shipgroup only contains digital goods(our frontend puts all digital
goods into a single shipgroup).

> 
> Regards
> Scott
> 

Reply via email to