Scott Gray wrote:
> Of course it's not part of the primary key but that is irrelevant.
> 
> If you are creating Products outside of createProduct then chances are you 
> are doing it wrong anyway but all you have to do is make sure some sort of 
> default type gets set.
> 
> OFBiz is heavily dependent on the type pattern in general and I don't want to 
> see people making a mess of that while they hack their way through custom 
> projects.  Maybe next week you will want to create Parties without types or 
> WorkEfforts, CommunicationEvents, Agreements, Content, it is not for OFBiz to 
> try and accommodate every strange little thing you may decide to do.
> 
> And I believe it does actually hurt, we end up with inconsistent code and if 
> people start to think that TypeIds are optional then it opens up room for 
> more of this type of thing.  There was no bug in trunk or 10.04, the bug is 
> in your custom code.

I agree with Scott here.  It's one thing to add a new FooType, work
with FooType in your own custom code, and make certain that ofbiz
proper either ignores the new FooType, or that it following the type
inheritance to do basic processing.

But do not allow for the type field to be null.

> 
> Regards
> Scott
> 
> On 24/06/2010, at 1:47 AM, Jacques Le Roux wrote:
> 
>> I think we should discuss this. Product.productTypeId is not part of Product 
>> prmary key.
>> You may create other services that may not rely on OOTB createProduct and 
>> then you get caught by this when using the UI (even an UI based on OOTB UI)
>> Also consider that this is only checking if the value is there. As OOTB it's 
>> mandatory there is no problems: it can't hurt (I know you don't like this 
>> sentence ;o).
>>
>> When I say we should discuss this, I don't think about this peculiar case 
>> but at large: should we consider only OOTB cases when enforcing NPE or such?
>>
>> Jacques
>>
>> Scott Gray wrote:
>>> Check the createProduct service definition.  productTypeId is required and 
>>> the out of the box code shouldn't have to deal with
>>> any other scenario, please revert this.
>>>
>>> Thanks
>>> Scott
>>>
>>> HotWax Media
>>> http://www.hotwaxmedia.com
>>>
>>> On 23/06/2010, at 11:16 PM, [email protected] wrote:
>>>
>>>> Author: jleroux
>>>> Date: Wed Jun 23 11:16:33 2010
>>>> New Revision: 957160
>>>>
>>>> URL: http://svn.apache.org/viewvc?rev=957160&view=rev
>>>> Log:
>>>> Product.productTypeId may not exist in a custom application
>>>>
>>>> Modified:
>>>>   
>>>> ofbiz/trunk/applications/order/webapp/ordermgr/entry/cart/showcartitems.ftl
>>>>
>>>> Modified: 
>>>> ofbiz/trunk/applications/order/webapp/ordermgr/entry/cart/showcartitems.ftl
>>>> URL:
>>>> http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/webapp/ordermgr/entry/cart/showcartitems.ftl?rev=957160&r1=957159&r2=957160&view=diff
>>>> ==============================================================================
>>>>  ---
>>>> ofbiz/trunk/applications/order/webapp/ordermgr/entry/cart/showcartitems.ftl
>>>>  (original) +++
>>>> ofbiz/trunk/applications/order/webapp/ordermgr/entry/cart/showcartitems.ftl
>>>>  Wed Jun 23 11:16:33 2010 @@ -156,7 +156,7 @@ under
>>>>                      the License. <span style="color: red; font-size:
>>>>                    
>>>> 15px;">[${backOrdered?if_exists}&nbsp;${uiLabelMap.OrderBackOrdered}]</span>
>>>>  </#if>
>>>>                    </#if>
>>>> -                    <#if 
>>>> (availableToPromiseMap.get(cartLine.getProductId()) <= 0) && 
>>>> (shoppingCart.getOrderType() ==
>>>> 'SALES_ORDER') && product.productTypeId != "DIGITAL_GOOD" && 
>>>> product.productTypeId != "MARKETING_PKG_AUTO" &&
>>>>                      product.productTypeId != "MARKETING_PKG_PICK"> +      
>>>>               <#if
>>>>                    (availableToPromiseMap.get(cartLine.getProductId()) <= 
>>>> 0) && (shoppingCart.getOrderType() == 'SALES_ORDER')
>>>>                      && product.productTypeId! != "DIGITAL_GOOD" && 
>>>> product.productTypeId! != "MARKETING_PKG_AUTO" &&
>>>> product.productTypeId! != "MARKETING_PKG_PICK"> <span style="color:
>>>> red;">[${cartLine.getQuantity()}&nbsp;${uiLabelMap.OrderBackOrdered}]</span>
>>>>  <#else> <#if
>>>> (availableToPromiseMap.get(cartLine.getProductId()) < 
>>>> cartLine.getQuantity()) && (shoppingCart.getOrderType() == 'SALES_ORDER')
>>>> && product.productTypeId != "DIGITAL_GOOD" && product.productTypeId != 
>>>> "MARKETING_PKG_AUTO" && product.productTypeId !=
>>>> "MARKETING_PKG_PICK"> 
>>
> 

Reply via email to