Hey everybody,

I created a new product with locales and attributes just fine and wanted to
add two new features/attributes to it: size & color. Just like in WG-9943. I
am doing the following steps, but neither color nor size show up:

1) check if product with detailed information exists, if not create
2) check if product is set to Virtual = Y, if not, edit and add Virtual
Variant Method = varianttree
3) create a new product with id similar to originalproduct (eg:
productIdcolor) with Virtual = No, Variant = Y
4) create ProductAssoc with createProductI18nRollup.productIdTo =
productIdColor, productId = productId, productAssocTypeId= PRODUCT_VARIANT
5) create ProductFeatureCategory if needed
6) create ProductFeature with productFeatureTypeId = COLOR,
productFeatureId= FproductIdcolor
7) create ProductFeatureAppl with productFeatureApplTypeId = 
SELECTABLE_FEATURE & productId = productIdColor
8) iterate through available sizes do
8a) create ProductFeature with productFeatureTypeId=SIZE, productId=
productIdColor, productFeatureId=FproductIdColorSize
8b) create ProductFeatureIactn with productFeatureIactnTypeId =
FEATURE_IACTN_INCOMP, productFeatureIdTo = FproductIdColor,
productFeatureId=FproductIdColorSize
8c) create ProductFeatureAppl with productFeatureId= FproductIdColorSize,
productFeatureApplTypeId=STANDARD_FEATURE, productId= productIdColor
8d) create ProductAssoc with productAssocTypeId= PRODUCT_VARIANT,
productIdTo= productIdColor, productId = product


As I do here: 


                                                             
                                
                                                    <entity-and 
entity-name="Product" list="resourceList">
                                                <field-map 
field-name="productId"
from-field="parameters.productId"/>
                                        </entity-and>
                                        
                                        <first-from-list entry="resource" 
list="resourceList"/>                                         
                                        <if-not-empty field="resource">
                                                                        
                                                                        <log 
level="warning" message="Updating
${parameters.productId}"></log>
                                                                        <set 
field="createProductI18nRollup.productId"
value="${parameters.productId}"/>                                       
                                                                        <set 
field="createProductI18nRollup.isVirtual" value="Y"/>
                                                                        <set 
field="createProductI18nRollup.isVariant" value="N"/>
                                                                        <set 
field="createProductI18nRollup.virtualVariantMethodEnum"
value="VV_VARIANTTREE"/>                                                        
                                                                                
                                                                        
<set-service-fields map="createProductI18nRollup"
service-name="editProductI18n" to-map="createProductI18nMap"/>
                                                                        
                                                                <call-service 
service-name="editProductI18n"
in-map-name="createProductI18nMap" break-on-error="true" /> 
                                                        </if-not-empty>
                                
                                                             
        <call-bsh><![CDATA[
            color = parameters.get("color");
            if(color != null && color !=""){
            
               parameters.put("colorId", color.substring(0, 3).replace("
","_"));
            }
        ]]></call-bsh>
                                                                
                                                                
                                                                
                                                             <!-- Create the 
basic item -->
                                
                                                                        
<map-to-map map="parameters" to-map="createProductI18nRollup"/>
                                
                                                                <set 
field="createProductI18nRollup.taxable" value="Y"/>
                                                        <set 
field="createProductI18nRollup.chargeShipping"
value="Y"/>
                                                                        <set 
field="createProductI18nRollup.isVirtual" value="N"/>
                                                                        <set 
field="createProductI18nRollup.isVariant" value="Y"/>
                                                                        
                                                                        <log 
level="warning" message="COLORID : ${parameters.colorId}"/>
                                                                        <set 
field="createProductI18nRollup.productId"
value="${parameters.productId}${parameters.colorId}"/>
                                                                        <set 
field="createProductI18nRollup.productTypeId"
value="FINISHED_GOOD"/>         
                                                                
                                                                                
                                                
                                                                
<set-service-fields map="createProductI18nRollup"
service-name="createProductI18n" to-map="createProductI18nMap"/>
                                            
                                            
                                                        <entity-and 
entity-name="Product" list="resourceList">
                                                                <field-map 
field-name="productId"
from-field="createProductI18nRollup.productId"/>
                                                        </entity-and>
                                                        
                                                        <first-from-list 
entry="resource" list="resourceList"/> 
                                                        <if-empty 
field="resource">
                                                                              
                                                                               
<call-service service-name="createProductI18n"
in-map-name="createProductI18nMap"/> 
                                                                        <else>
                                                                                
<call-service service-name="editProductI18n"
in-map-name="createProductI18nMap"/> 
                                                                        </else>
                                                                        
</if-empty>

                                                        
                                                        <!-- Create Assoc -->
                                                        
                                                        
                                                                <now-timestamp 
field="createProductI18nRollup.fromDate"/>
                                                                <set 
field="createProductI18nRollup.productIdTo"
value="${createProductI18nRollup.productId}"/>
                                                                <set 
field="createProductI18nRollup.productId"
value="${parameters.productId}"/>
                                                                <set 
field="createProductI18nRollup.productAssocTypeId"
value="PRODUCT_VARIANT"/>
                                                                
                                                                        
<entity-and entity-name="ProductAssoc" list="resourceList">
                                                                <field-map 
field-name="productId"
from-field="createProductI18nRollup.productId"/>
                                                                <field-map 
field-name="productIdTo"
from-field="createProductI18nRollup.productIdTo"/>
                                                             <field-map 
field-name="productAssocTypeId"
from-field="createProductI18nRollup.productAssocTypeId"/>
                                                        </entity-and>
                                                        
                                                        <first-from-list 
entry="resource" list="resourceList"/> 
                                                        <if-empty 
field="resource">
                                                                               
<set-service-fields map="createProductI18nRollup"
service-name="createProductAssocI18n"
to-map="createProductFeatureCategoryI18nMap"/>
                                                                               
<call-service service-name="createProductAssocI18n"
in-map-name="createProductFeatureCategoryI18nMap"/> 
                                                                        <else>
                                                                                
<set field="createProductI18nRollup.fromDate"
value="${resource.fromDate}"/>
                                                                        
<set-service-fields map="createProductI18nRollup"
service-name="editProductAssocI18n"
to-map="createProductFeatureCategoryI18nMap"/>
                                                                                
<call-service service-name="editProductAssocI18n"
in-map-name="createProductFeatureCategoryI18nMap"/> 
                                                                        </else>
                                                                        
</if-empty>
                                                        
                                                        <set 
field="createProductI18nRollup.productId"
value="${createProductI18nRollup.productIdTo}"/>
                                                        
                                                        
                                                                <!-- Create the 
ProductFeatureCategory if needed -->
                                                                
                                                                <set 
field="createProductI18nRollup.productFeatureCategoryId"
value="BPfeatcat"/>
                                                                <set 
field="createProductI18nRollup.description"
value="Brandsparadise Features"/>
                                                                
                                                                <entity-and 
entity-name="ProductFeatureCategory"
list="resourceList">
                                                                <field-map 
field-name="productFeatureCategoryId"
from-field="createProductI18nRollup.productFeatureCategoryId"/>
                                                        </entity-and>
                                                        
                                                        <first-from-list 
entry="resource" list="resourceList"/> 
                                                        <if-empty 
field="resource">
                                                                               
<set-service-fields map="createProductI18nRollup"
service-name="createProductFeatureCategoryI18n"
to-map="createProductFeatureCategoryI18nMap"/>
                                                                               
<call-service
service-name="createProductFeatureCategoryI18n"
in-map-name="createProductFeatureCategoryI18nMap"/> 
                                                                        <else>
                                                                        
<set-service-fields map="createProductI18nRollup"
service-name="editProductFeatureCategoryI18n"
to-map="createProductFeatureCategoryI18nMap"/>
                                                                                
<call-service service-name="editProductFeatureCategoryI18n"
in-map-name="createProductFeatureCategoryI18nMap"/> 
                                                                        </else>
                                                                        
</if-empty>



                                                                <!-- Create 
Product Feature Color -->
                                                                        <set 
field="createProductI18nRollup.productFeatureTypeId"
value="COLOR"/>         
                                                                        <set 
field="createProductI18nRollup.description"
value="${parameters.color}"/>           
                                                                        <set 
field="createProductI18nRollup.productFeatureId"
value="F${parameters.productId}${parameters.colorId}"/>
                                                                                
                                
                                                                <entity-and 
entity-name="ProductFeature"
list="resourceList">
                                                                <field-map 
field-name="productFeatureId"
from-field="createProductI18nRollup.productFeatureId"/>
                                                        </entity-and>
                                                        
                                                        <first-from-list 
entry="resource" list="resourceList"/> 
                                                        <if-empty 
field="resource">
                                                                              
<set-service-fields map="createProductI18nRollup"
service-name="createProductFeatureI18n"
to-map="createProductFeatureI18nMap"/>                
                                                                               
<call-service service-name="createProductFeatureI18n"
in-map-name="createProductFeatureI18nMap"/> 
                                                                        <else>
                                                                           
<set-service-fields map="createProductI18nRollup"
service-name="editProductFeatureI18n" to-map="createProductFeatureI18nMap"/>
                                                                                
<call-service service-name="editProductFeatureI18n"
in-map-name="createProductFeatureI18nMap"/> 
                                                                        </else>
                                                                        
</if-empty>



                                                                 <!-- Create 
Product Feature Appl -->
                                                                
                                                                                
<set field="createProductI18nRollup.productFeatureApplTypeId"
value="SELECTABLE_FEATURE"/>            
                                                                                
                                        
                                                                        
<entity-and entity-name="ProductFeatureAppl"
list="resourceList">
                                                                        
<field-map field-name="productId"
from-field="createProductI18nRollup.productId"/>
                                                                    <field-map 
field-name="productFeatureId"
from-field="createProductI18nRollup.productFeatureId"/>
                                                                    <field-map 
field-name="productFeatureApplTypeId"
from-field="createProductI18nRollup.productFeatureApplTypeId"/> 
                                                                </entity-and>
                                                                
                                                                
<first-from-list entry="resource"
list="resourceList"/>   
                                                                <if-empty 
field="resource">
                                                                                
      <set-service-fields map="createProductI18nRollup"
service-name="createProductFeatureApplI18n"
to-map="createProductFeatureI18nMap"/>                
                                                                                
       <call-service service-name="createProductFeatureApplI18n"
in-map-name="createProductFeatureI18nMap"/> 
                                                                                
<else>
                                                                                
   <set-service-fields map="createProductI18nRollup"
service-name="editProductFeatureApplI18n"
to-map="createProductFeatureI18nMap"/>
                                                                                
        <call-service service-name="editProductFeatureApplI18n"
in-map-name="createProductFeatureI18nMap"/> 
                                                                                
</else>
                                                                                
</if-empty>

                                                        
<set field="newMap.colorId" from-field="parameters.colorId"/>

                                                                <!-- Create 
Product Feature Size -->

                                                                <iterate 
entry="size" list="parameters.size" >
                                                               
                                                                
<call-bsh><![CDATA[
                                                                    color = 
parameters.get("color");
                                                                    if(color != 
null && color !=""){
                                                                    
                                                                       
parameters.put("colorId", color.substring(0,
3).replace(" ","_"));
                                                                    }
                                                                ]]></call-bsh>

                                                                <set 
field="createProductI18nRollup.productId"
value="${parameters.productId}${newMap.colorId}"/>              
                                                                        <set 
field="createProductI18nRollup.productFeatureTypeId"
value="SIZE"/>          
                                                                        <set 
field="createProductI18nRollup.description" value="${size}"/>              
                                                                        <set 
field="createProductI18nRollup.productFeatureId"
value="F${parameters.productId}${parameters.colorId}${size}"/>
                                                                                
                                
                                                                <entity-and 
entity-name="ProductFeature"
list="resourceList">
                                                                <field-map 
field-name="productFeatureId"
from-field="createProductI18nRollup.productFeatureId"/>
                                                        </entity-and>
                                                        
                                                        <first-from-list 
entry="resource" list="resourceList"/> 
                                                        <if-empty 
field="resource">
                                                                              
<set-service-fields map="createProductI18nRollup"
service-name="createProductFeatureI18n"
to-map="createProductFeatureI18nMap"/>                
                                                                               
<call-service service-name="createProductFeatureI18n"
in-map-name="createProductFeatureI18nMap"/> 
                                                                        <else>
                                                                           
<set-service-fields map="createProductI18nRollup"
service-name="editProductFeatureI18n" to-map="createProductFeatureI18nMap"/>
                                                                                
<call-service service-name="editProductFeatureI18n"
in-map-name="createProductFeatureI18nMap"/> 
                                                                        </else>
                                                                        
</if-empty>                                             
                                                                                
        
                                                                                
        
                                                                <log 
level="warning" message="createProductI18nRollup.productId is
now ${createProductI18nRollup.productId}"></log>
                                                                                
        
                                                                                
        <!-- Link to color -->
                                                                                
        
                                                                                
                <set field="createProductI18nRollup.productFeatureIdTo"
value="F${parameters.productId}${parameters.colorId}"/>
                                                                                
                <set field="createProductI18nRollup.productFeatureIactnTypeId"
value="FEATURE_IACTN_INCOMP"/>
                                                                                
                <set field="createProductI18nRollup.productFeatureId"
value="F${parameters.productId}${parameters.colorId}${size}"/>
                                                                                
        <entity-and entity-name="ProductFeatureIactn"
list="resourceList">
                                                                                
        <field-map field-name="productFeatureId"
from-field="createProductI18nRollup.productFeatureId"/>
                                                                                
        <field-map field-name="productFeatureIdTo"
from-field="createProductI18nRollup.productFeatureIdTo"/>
                                                                                
</entity-and>
                                                                                
                                                                                
                                                                                
<first-from-list entry="resource"
list="resourceList"/>   
                                                                                
<if-empty field="resource">
                                                                                
                                                                                
<now-timestamp
field="createProductI18nRollup.fromDate"/>
                                                                                
                     <set field="createProductI18nRollup.productId"
value="${createProductI18nRollup.productId}"/>
                                                                                
                      <set-service-fields map="createProductI18nRollup"
service-name="createProductFeatureIactnI18n"
to-map="createProductFeatureI18nMap"/>                
                                                                                
                       <call-service
service-name="createProductFeatureIactnI18n"
in-map-name="createProductFeatureI18nMap"/> 
                                                                                
                <else>
                                                                                
                <!-- 
                                                                                
                <set field="createProductI18nRollup.productFeatureId"
value="${resource.productFeatureId}"/>
                                                                                
                <set field="createProductI18nRollup.productFeatureIdTo"
value="${resource.productFeatureIdTo}"/>
                                                                                
        
                                                                                
                   <set-service-fields map="createProductI18nRollup"
service-name="editProductFeatureIactnI18n"
to-map="createProductFeatureI18nMap"/>
                                                                                
                        <call-service service-name="editProductFeatureIactnI18n"
in-map-name="createProductFeatureI18nMap"/> -->
                                                                                
                </else>
                                                                                
                </if-empty>     
                                                                                
                
                                                                <log 
level="warning" message="createProductI18nRollup.productId is
now ${createProductI18nRollup.productId}"></log>
                                                                                
                
                                                                                
        <!-- Product Feature Appl -->   
                                                                                
        
                                                                                
                        <set 
field="createProductI18nRollup.productFeatureApplTypeId"
value="STANDARD_FEATURE"/>              
                                                                                
                        <now-timestamp 
field="createProductI18nRollup.fromDate"/>                                      
 
                                                                                
                <entity-and entity-name="ProductFeatureAppl"
list="resourceList">
                                                                                
                <field-map field-name="productId"
from-field="createProductI18nRollup.productId"/>
                                                                                
            <field-map field-name="productFeatureId"
from-field="createProductI18nRollup.productFeatureId"/> 
                                                                                
        </entity-and>
                                                                                
        
                                                                                
        <first-from-list entry="resource"
list="resourceList"/>   
                                                                                
        <if-empty field="resource">
                                                                                
                              <set-service-fields map="createProductI18nRollup"
service-name="createProductFeatureApplI18n"
to-map="createProductFeatureI18nMap"/>                
                                                                                
                               <call-service
service-name="createProductFeatureApplI18n"
in-map-name="createProductFeatureI18nMap"/> 
                                                                                
                        <else>
                                                                                
                                <set field="createProductI18nRollup.fromDate"
value="${resource.fromDate}"/>          
                                                                                
                        
                                                                                
                           <set-service-fields map="createProductI18nRollup"
service-name="editProductFeatureApplI18n"
to-map="createProductFeatureI18nMap"/>
                                                                                
                                <call-service 
service-name="editProductFeatureApplI18n"
in-map-name="createProductFeatureI18nMap"/> 
                                                                                
                        </else>
                                                                                
                        </if-empty>
                                                                

                                                                <log 
level="warning" message="createProductI18nRollup.productId is
now ${createProductI18nRollup.productId}"></log>
                                                                
                                                                                
                                        <!-- Create Assoc -->
                                                        
                                                        
                                                                                
                                <now-timestamp 
field="createProductI18nRollup.fromDate"/>
                                                                                
                                <set field="createProductI18nRollup.productIdTo"
value="${createProductI18nRollup.productId}"/>
                                                                                
                                <set field="createProductI18nRollup.productId"
value="${parameters.productId}"/>
                                                                                
                                <set 
field="createProductI18nRollup.productAssocTypeId"
value="PRODUCT_VARIANT"/>
                                                                                
                                <log level="warning" message="Adding 
ProductAssoc for
Product_Variant ${createProductI18nRollup.productId} to
${createProductI18nRollup.productIdTo}"></log>
                                                                                
                                        <entity-and entity-name="ProductAssoc" 
list="resourceList">
                                                                                
                                <field-map field-name="productId"
from-field="createProductI18nRollup.productId"/>
                                                                                
                                <field-map field-name="productIdTo"
from-field="createProductI18nRollup.productIdTo"/>
                                                                                
                             <field-map field-name="productAssocTypeId"
from-field="createProductI18nRollup.productAssocTypeId"/>
                                                                                
                        </entity-and>
                                                                                
                        
                                                                                
                        <first-from-list entry="resource"
list="resourceList"/>   
                                                                                
                        <if-empty field="resource">
                                                                                
                                               <set-service-fields 
map="createProductI18nRollup"
service-name="createProductAssocI18n"
to-map="createProductFeatureCategoryI18nMap"/>
                                                                                
                                               <call-service 
service-name="createProductAssocI18n"
in-map-name="createProductFeatureCategoryI18nMap"/> 
                                                                                
                                        <else>
                                                                                
                                                <set 
field="createProductI18nRollup.fromDate"
value="${resource.fromDate}"/>
                                                                                
                                        <set-service-fields 
map="createProductI18nRollup"
service-name="editProductAssocI18n"
to-map="createProductFeatureCategoryI18nMap"/>
                                                                                
                                                <call-service 
service-name="editProductAssocI18n"
in-map-name="createProductFeatureCategoryI18nMap"/> 
                                                                                
                                        </else>
                                                                                
                                        </if-empty>
                                                                                
                        
                                                                                
                        <set field="createProductI18nRollup.productId"
value="${createProductI18nRollup.productIdTo}"/>
                                                                
                                                                
                                                                
                                                                </iterate>
                                                        
                                                        
                                                        
                                                                
                                                        
                                                        



I tried to follow the steps for WG-9943 in ProductDemo.xml carefully, but
the variants won't show up on my application. What am I missing?
-- 
View this message in context: 
http://www.nabble.com/Confused-over-Size---Color-tp23620869p23620869.html
Sent from the OFBiz - User mailing list archive at Nabble.com.

Reply via email to