svn commit: r578930 - in /ofbiz/trunk/applications/product: config/ entitydef/ script/org/ofbiz/product/product/ servicedef/ webapp/catalog/WEB-INF/ webapp/catalog/product/ widget/catalog/

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r578930 - in /ofbiz/trunk/applications/product: config/ entitydef/ script/org/ofbiz/product/product/ servicedef/ webapp/catalog/WEB-INF/ webapp/catalog/product/ widget/catalog/

adrianc
Author: adrianc
Date: Mon Sep 24 12:38:03 2007
New Revision: 578930

URL: http://svn.apache.org/viewvc?rev=578930&view=rev
Log:
New feature - assign parties to products. Patch is from Ean Schuessler - OFBIZ-1177, plus some additional work from me. Still needs a party ID lookup screen.

Added:
    ofbiz/trunk/applications/product/webapp/catalog/product/EditProductParties.ftl
Modified:
    ofbiz/trunk/applications/product/config/ProductUiLabels.properties
    ofbiz/trunk/applications/product/entitydef/entitygroup.xml
    ofbiz/trunk/applications/product/entitydef/entitymodel.xml
    ofbiz/trunk/applications/product/script/org/ofbiz/product/product/ProductServices.xml
    ofbiz/trunk/applications/product/servicedef/services.xml
    ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/controller.xml
    ofbiz/trunk/applications/product/webapp/catalog/product/ProductTabBar.ftl
    ofbiz/trunk/applications/product/widget/catalog/CatalogCommonScreens.xml
    ofbiz/trunk/applications/product/widget/catalog/ProductScreens.xml

Modified: ofbiz/trunk/applications/product/config/ProductUiLabels.properties
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/config/ProductUiLabels.properties?rev=578930&r1=578929&r2=578930&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/config/ProductUiLabels.properties (original)
+++ ofbiz/trunk/applications/product/config/ProductUiLabels.properties Mon Sep 24 12:38:03 2007
@@ -132,6 +132,7 @@
 PageTitleEditProductPromos=Edit Product Promos
 PageTitleEditProductPromotionCode=Edit Product Promotion Code
 PageTitleEditProductQuickAdmin=Edit Product Quick Admin
+PageTitleEditProductParties=Edit Product Parties
 PageTitleEditProductStore=Edit Product Store
 PageTitleEditProductStoreCatalogs=Edit Product Store Catalogs
 PageTitleEditProductStoreEmailSetup=Edit Product Store Email Setup
@@ -329,6 +330,7 @@
 ProductAssetUsage=Rental
 ProductAssignPicker=Assign Picker
 ProductAssociatePartyToCategory=Associate Party to Category (enter Party ID, select Type, then enter optional From Date)
+ProductAssociatePartyToProduct=Associate Party to Product (enter Party ID, select Type, then enter optional From Date)
 ProductAssociationNotFound=Association not found: Product Id=${productId?if_exists}, Product Id To=${productIdTo?if_exists}, Association Type Id=${productAssocTypeId?if_exists}, From Date=${fromDate?if_exists}
 ProductAssociationType=Association Type
 ProductAssociationTypeId=Association Type ID
@@ -434,7 +436,6 @@
 ProductCopyProductCategoryMembersToAnotherCategory=Copy Product Category Members to Another Category
 ProductCostPrice=Cost Price
 ProductCosts=Costs
-ProductCostPrice=Cost Price
 ProductCouldNotFindFacilityWithId=Could Not Find Facility with ID
 ProductCouldNotFindProduct=Could Not Find Product with ID
 ProductCouldNotFindProductCategoryWithId=Could not Find Product Category with Id

Modified: ofbiz/trunk/applications/product/entitydef/entitygroup.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/entitydef/entitygroup.xml?rev=578930&r1=578929&r2=578930&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/entitydef/entitygroup.xml (original)
+++ ofbiz/trunk/applications/product/entitydef/entitygroup.xml Mon Sep 24 12:38:03 2007
@@ -176,6 +176,7 @@
     <entity-group group="org.ofbiz" entity="ProductMaint" />
     <entity-group group="org.ofbiz" entity="ProductMaintType" />
     <entity-group group="org.ofbiz" entity="ProductReview" />
+    <entity-group group="org.ofbiz" entity="ProductRole" />
     <entity-group group="org.ofbiz" entity="ProductSearchConstraint" />
     <entity-group group="org.ofbiz" entity="ProductSearchResult" />
     <entity-group group="org.ofbiz" entity="ProductType" />
@@ -336,5 +337,7 @@
     <entity-group group="org.ofbiz" entity="ShippingDocument" />
     <entity-group group="org.ofbiz" entity="PackedQtyVsOrderItemQuantity" />
 </entitygroup>
+
+
 
 

Modified: ofbiz/trunk/applications/product/entitydef/entitymodel.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/entitydef/entitymodel.xml?rev=578930&r1=578929&r2=578930&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/entitydef/entitymodel.xml (original)
+++ ofbiz/trunk/applications/product/entitydef/entitymodel.xml Mon Sep 24 12:38:03 2007
@@ -2190,6 +2190,33 @@
         <key-map field-name="parentTypeId" rel-field-name="productAssocTypeId"/>
       </relation>
     </entity>
+    <entity entity-name="ProductRole"
+            package-name="org.ofbiz.product.product"
+            title="Product Role Entity">
+      <field name="productId" type="id-ne"></field>
+      <field name="partyId" type="id-ne"></field>
+      <field name="roleTypeId" type="id-ne"></field>
+      <field name="fromDate" type="date-time"></field>
+      <field name="thruDate" type="date-time"></field>
+      <field name="comments" type="comment"></field>
+      <prim-key field="productId"/>
+      <prim-key field="partyId"/>
+      <prim-key field="roleTypeId"/>
+      <prim-key field="fromDate"/>
+      <relation type="one-nofk" rel-entity-name="Party">
+        <key-map field-name="partyId"/>
+      </relation>
+      <relation type="one-nofk" rel-entity-name="RoleType">
+        <key-map field-name="roleTypeId"/>
+      </relation>
+      <relation type="one" fk-name="PROD_RLE_PTYRLE" rel-entity-name="PartyRole">
+        <key-map field-name="partyId"/>
+        <key-map field-name="roleTypeId"/>
+      </relation>
+      <!-- <relation type="one" fk-name="PROD_RLE_CATEGORY" rel-entity-name="Product">
+        <key-map field-name="productCategoryId"/>
+      </relation> -->
+    </entity>    
     <entity entity-name="ProductAttribute"
             package-name="org.ofbiz.product.product"
             title="Product Attribute Entity">

Modified: ofbiz/trunk/applications/product/script/org/ofbiz/product/product/ProductServices.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/product/product/ProductServices.xml?rev=578930&r1=578929&r2=578930&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/script/org/ofbiz/product/product/ProductServices.xml (original)
+++ ofbiz/trunk/applications/product/script/org/ofbiz/product/product/ProductServices.xml Mon Sep 24 12:38:03 2007
@@ -900,4 +900,49 @@
         <entity-one entity-name="ProductAttribute" value-name="lookedUpValue"/>
         <remove-value value-name="lookedUpValue"/>
     </simple-method>
+    
+    <!-- ================================================================ -->
+    <!-- ProductRole Services -->
+    <!-- ================================================================ -->
+
+    <simple-method method-name="addPartyToProduct" short-description="Add Party to Product">
+        <set value="addPartyToProduct" field="callingMethodName"/>
+        <set value="CREATE" field="checkAction"/>
+        <call-simple-method method-name="checkProductRelatedPermission"/>
+        <check-errors/>
+
+        <make-value value-name="newEntity" entity-name="ProductRole"/>
+        <set-pk-fields map-name="parameters" value-name="newEntity"/>
+        <set-nonpk-fields map-name="parameters" value-name="newEntity"/>
+
+        <if-empty field-name="newEntity.fromDate">
+            <now-timestamp-to-env env-name="newEntity.fromDate"/>
+        </if-empty>
+
+        <create-value value-name="newEntity"/>
+    </simple-method>
+    <simple-method method-name="updatePartyToProduct" short-description="Update Party to Product">
+        <set value="updatePartyToProduct" field="callingMethodName"/>
+        <set value="UPDATE" field="checkAction"/>
+        <call-simple-method method-name="checkProductRelatedPermission"/>
+        <check-errors/>
+
+        <make-value value-name="lookupPKMap" entity-name="ProductRole"/>
+        <set-pk-fields map-name="parameters" value-name="lookupPKMap"/>
+        <find-by-primary-key entity-name="ProductRole" map-name="lookupPKMap" value-name="lookedUpValue"/>
+        <set-nonpk-fields map-name="parameters" value-name="lookedUpValue"/>
+        <store-value value-name="lookedUpValue"/>
+    </simple-method>
+    <simple-method method-name="removePartyFromProduct" short-description="Remove Party From Product">
+        <set value="removePartyFromProduct" field="callingMethodName"/>
+        <set value="DELETE" field="checkAction"/>
+        <call-simple-method method-name="checkProductRelatedPermission"/>
+        <check-errors/>
+
+        <make-value value-name="lookupPKMap" entity-name="ProductRole"/>
+        <set-pk-fields map-name="parameters" value-name="lookupPKMap"/>
+        <find-by-primary-key entity-name="ProductRole" map-name="lookupPKMap" value-name="lookedUpValue"/>
+        <remove-value value-name="lookedUpValue"/>
+    </simple-method>
+    
 </simple-methods>

Modified: ofbiz/trunk/applications/product/servicedef/services.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/servicedef/services.xml?rev=578930&r1=578929&r2=578930&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/servicedef/services.xml (original)
+++ ofbiz/trunk/applications/product/servicedef/services.xml Mon Sep 24 12:38:03 2007
@@ -716,6 +716,35 @@
         <attribute name="fromDate" type="Timestamp" mode="IN" optional="false"/>
     </service>
 
+    <service name="addPartyToProduct" engine="simple"
+                location="component://product/script/org/ofbiz/product/product/ProductServices.xml" invoke="addPartyToProduct" auth="true">
+        <description>Add Party To Product</description>
+        <attribute name="productId" type="String" mode="IN" optional="false"/>
+        <attribute name="partyId" type="String" mode="IN" optional="false"/>
+        <attribute name="roleTypeId" type="String" mode="IN" optional="false"/>
+        <attribute name="fromDate" type="Timestamp" mode="IN" optional="true"/>
+        <attribute name="thruDate" type="Timestamp" mode="IN" optional="true"/>
+        <attribute name="comments" type="String" mode="IN" optional="true"/>
+    </service>
+    <service name="updatePartyToProduct" engine="simple"
+                location="component://product/script/org/ofbiz/product/product/ProductServices.xml" invoke="updatePartyToProduct" auth="true">
+        <description>Update Party To Product</description>
+        <attribute name="productId" type="String" mode="IN" optional="false"/>
+        <attribute name="partyId" type="String" mode="IN" optional="false"/>
+        <attribute name="roleTypeId" type="String" mode="IN" optional="false"/>
+        <attribute name="fromDate" type="Timestamp" mode="IN" optional="false"/>
+        <attribute name="thruDate" type="Timestamp" mode="IN" optional="true"/>
+        <attribute name="comments" type="String" mode="IN" optional="true"/>
+    </service>
+    <service name="removePartyFromProduct" engine="simple"
+                location="component://product/script/org/ofbiz/product/product/ProductServices.xml" invoke="removePartyFromProduct" auth="true">
+        <description>Remove Party From Product</description>
+        <attribute name="productId" type="String" mode="IN" optional="false"/>
+        <attribute name="partyId" type="String" mode="IN" optional="false"/>
+        <attribute name="roleTypeId" type="String" mode="IN" optional="false"/>
+        <attribute name="fromDate" type="Timestamp" mode="IN" optional="false"/>
+    </service>
+
     <service name="safeAddProductCategoryToCategory" engine="simple"
                 location="org/ofbiz/product/category/CategoryServices.xml" invoke="addProductCategoryToCategory" auth="true">
         <description>Safe Add ProductCategory To Category (requires fromDate)</description>

Modified: ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/controller.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/controller.xml?rev=578930&r1=578929&r2=578930&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/controller.xml (original)
+++ ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/controller.xml Mon Sep 24 12:38:03 2007
@@ -512,8 +512,31 @@
     <request-map uri="ProductBarCode.pdf">
         <security https="true" auth="true"/>
         <response name="success" type="view" value="ProductBarCode.pdf"/>
+    </request-map>    
+
+    <!-- ================ Product Roles Requests ================= -->
+    <request-map uri="EditProductParties">
+        <security https="true" auth="true"/>
+        <response name="success" type="view" value="EditProductParties"/>
+    </request-map>
+    <request-map uri="addPartyToProduct">
+        <security https="true" auth="true"/>
+        <event type="service" path="" invoke="addPartyToProduct"/>
+        <response name="success" type="view" value="EditProductParties"/>
+        <response name="error" type="view" value="EditProductParties"/>
+    </request-map>
+    <request-map uri="updatePartyToProduct">
+        <security https="true" auth="true"/>
+        <event type="service" path="" invoke="updatePartyToProduct"/>
+        <response name="success" type="view" value="EditProductParties"/>
+        <response name="error" type="view" value="EditProductParties"/>
+    </request-map>
+    <request-map uri="removePartyFromProduct">
+        <security https="true" auth="true"/>
+        <event type="service" path="" invoke="removePartyFromProduct"/>
+        <response name="success" type="view" value="EditProductParties"/>
+        <response name="error" type="view" value="EditProductParties"/>
     </request-map>
-    
 
     <!-- ================ Product Asset Usage (rental) Requests ================= -->
     <request-map uri="EditProductAssetUsage">
@@ -2505,6 +2528,7 @@
     <view-map name="EditProduct" type="screen" page="component://product/widget/catalog/ProductScreens.xml#EditProduct"/>
     <view-map name="EditProductPrices" type="screen" page="component://product/widget/catalog/ProductScreens.xml#EditProductPrices"/>
     <view-map name="EditProductAssetUsage" type="screen" page="component://product/widget/catalog/ProductScreens.xml#EditProductAssetUsage"/>
+    <view-map name="EditProductParties" type="screen" page="component://product/widget/catalog/ProductScreens.xml#EditProductParties"/>
     <view-map name="showFixedAssetProduct" type="screen" page="component://product/widget/catalog/ProductScreens.xml#showFixedAssetProduct"/>
     <view-map name="newFixedAssetProduct" type="screen" page="component://product/widget/catalog/ProductScreens.xml#newFixedAssetProduct"/>
     <view-map name="ProductBarCode.pdf" type="screenfop" page="component://product/widget/catalog/ProductScreens.xml#ProductBarCode.fo" content-type="application/pdf" encoding="none"/>

Added: ofbiz/trunk/applications/product/webapp/catalog/product/EditProductParties.ftl
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/catalog/product/EditProductParties.ftl?rev=578930&view=auto
==============================================================================
--- ofbiz/trunk/applications/product/webapp/catalog/product/EditProductParties.ftl (added)
+++ ofbiz/trunk/applications/product/webapp/catalog/product/EditProductParties.ftl Mon Sep 24 12:38:03 2007
@@ -0,0 +1,78 @@
+<#--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<#if productId?exists && product?exists>    
+  <table class="basic-table" cellspacing="0">
+    <tr class="header-row">
+      <td>${uiLabelMap.PartyPartyId}</td>
+      <td>${uiLabelMap.PartyRole}</td>
+      <td>${uiLabelMap.CommonFromDateTime}</td>
+      <td>${uiLabelMap.CommonThruDateTime}</td>
+      <td>&nbsp;</td>
+    </tr>
+    <#assign line = 0>
+    <#list productRoles as productRole>
+      <#assign line = line + 1>
+      <#assign curRoleType = productRole.getRelatedOneCache("RoleType")>
+      <tr>
+        <td><a href="/partymgr/control/viewprofile?party_id=${(productRole.partyId)?if_exists}" target="_blank" class="buttontext">${(productRole.partyId)?if_exists}</a></td>
+        <td>${(curRoleType.get("description",locale))?if_exists}</td>
+        <#assign hasntStarted = false>
+        <#if (productRole.getTimestamp("fromDate"))?exists && Static["org.ofbiz.base.util.UtilDateTime"].nowTimestamp().before(productRole.getTimestamp("fromDate"))> <#assign hasntStarted = true></#if>
+        <td<#if hasntStarted> class="alert"</#if>>${(productRole.fromDate)?if_exists}</td>
+        <td align="center">
+          <form method="post" action="<@ofbizUrl>updatePartyToProduct</@ofbizUrl>" name="lineForm${line}">
+            <#assign hasExpired = false>
+            <#if (productRole.getTimestamp("thruDate"))?exists && (Static["org.ofbiz.base.util.UtilDateTime"].nowTimestamp().after(productRole.getTimestamp("thruDate")))> <#assign hasExpired = true></#if>
+            <input type="hidden" name="productId" value="${(productRole.productId)?if_exists}">
+            <input type="hidden" name="partyId" value="${(productRole.partyId)?if_exists}">
+            <input type="hidden" name="roleTypeId" value="${(productRole.roleTypeId)?if_exists}">
+            <input type="hidden" name="fromDate" value="${(productRole.getTimestamp("fromDate"))?if_exists}">
+            <input type="text" size="25" name="thruDate" value="${(productRole. getTimestamp("thruDate"))?if_exists}" class="inputBox" <#if hasExpired> style="color: red;"</#if>>
+            <a href="javascript:call_cal(document.lineForm${line}.thruDate, '${(productRole.getTimestamp("thruDate"))?default(nowTimestamp?string)}');"><img src="<@ofbizContentUrl>/images/cal.gif</@ofbizContentUrl>" width="16" height="16" border="0" alt="Calendar"></a>
+            <input type="submit" value="${uiLabelMap.CommonUpdate}">
+          </form>
+        </td>
+        <td align="center">
+          <a href="<@ofbizUrl>removePartyFromProduct?productId=${(productRole.productId)?if_exists}&partyId=${(productRole.partyId)?if_exists}&roleTypeId=${(productRole.roleTypeId)?if_exists}&fromDate=${Static["org.ofbiz.base.util.UtilFormatOut"].encodeQueryValue(productRole.getTimestamp("fromDate").toString())}</@ofbizUrl>" class="buttontext">
+          ${uiLabelMap.CommonDelete}</a>
+        </td>
+      </tr>
+    </#list>
+  </table>
+  <br/>
+  <h2>${uiLabelMap.ProductAssociatePartyToProduct}:</h2>
+  <br/>
+  <form method="post" action="<@ofbizUrl>addPartyToProduct</@ofbizUrl>" name="addNewForm">
+    <input type="hidden" name="productId" value="${productId}">
+    <input type="text" size="20" maxlength="20" name="partyId" value="">
+    <#-- TODO: Add PartyId lookup screen
+    <a href="javascript:call_fieldlookup2(document.addNewForm.partyId,'LookupCustomerName');">
+      <img src='/images/fieldlookup.gif' width='15' height='14' border='0' alt='Click here For Field Lookup'/>
+    </a> -->
+    <select name="roleTypeId" size="1">
+    <#list roleTypes as roleType>
+        <option value="${(roleType.roleTypeId)?if_exists}" <#if roleType.roleTypeId.equals("_NA_")> ${uiLabelMap.ProductSelected}</#if>>${(roleType.get("description",locale))?if_exists}</option>
+    </#list>
+    </select>
+    <input type="text" size="25" name="fromDate">
+    <a href="javascript:call_cal(document.addNewForm.fromDate, '${nowTimestamp?string}');"><img src="<@ofbizContentUrl>/images/cal.gif</@ofbizContentUrl>" width="16" height="16" border="0" alt="Calendar"></a>
+    <input type="submit" value="${uiLabelMap.CommonAdd}">
+  </form>
+</#if>

Modified: ofbiz/trunk/applications/product/webapp/catalog/product/ProductTabBar.ftl
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/catalog/product/ProductTabBar.ftl?rev=578930&r1=578929&r2=578930&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/webapp/catalog/product/ProductTabBar.ftl (original)
+++ ofbiz/trunk/applications/product/webapp/catalog/product/ProductTabBar.ftl Mon Sep 24 12:38:03 2007
@@ -55,6 +55,7 @@
         <#if product?exists && product.productTypeId?if_exists == "ASSET_USAGE">
             <a href="<@ofbizUrl>EditProductAssetUsage?productId=${productId}</@ofbizUrl>" class="${selectedClassMap.EditProductAssetUsage?default(unselectedClassName)}">${uiLabelMap.ProductAssetUsage}</a>
         </#if>
-        <a href="<@ofbizUrl>EditProductWorkEfforts?productId=${productId}</@ofbizUrl>" class="${selectedClassMap.EditProductWorkEfforts?default(unselectedClassName)}">${uiLabelMap.WorkEffortWorkEffort}</a>        
+        <a href="<@ofbizUrl>EditProductWorkEfforts?productId=${productId}</@ofbizUrl>" class="${selectedClassMap.EditProductWorkEfforts?default(unselectedClassName)}">${uiLabelMap.WorkEffortWorkEffort}</a>
+        <a href="<@ofbizUrl>EditProductParties?productId=${productId}</@ofbizUrl>" class="${selectedClassMap.EditProductParties?default(unselectedClassName)}">${uiLabelMap.PartyParties}</a>
     </div>
 </#if>

Modified: ofbiz/trunk/applications/product/widget/catalog/CatalogCommonScreens.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/widget/catalog/CatalogCommonScreens.xml?rev=578930&r1=578929&r2=578930&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/widget/catalog/CatalogCommonScreens.xml (original)
+++ ofbiz/trunk/applications/product/widget/catalog/CatalogCommonScreens.xml Mon Sep 24 12:38:03 2007
@@ -78,7 +78,7 @@
                                         </container>
                                         
                                         <!-- add Create Product and View Product (in ecommerce) links -->
-                                        <container>
+                                        <container style="button-bar">
                                             <link target="EditProduct" text="${uiLabelMap.ProductNewProduct}" style="buttontext"/>
                                             <link target="CreateVirtualWithVariantsForm" text="${uiLabelMap.ProductNewVirtualProduct}" style="buttontext"/>
                                             <link target="/ecommerce/control/product?product_id=${productId}" url-mode="inter-app" text="${uiLabelMap.ProductProductPage}" style="buttontext"/>

Modified: ofbiz/trunk/applications/product/widget/catalog/ProductScreens.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/widget/catalog/ProductScreens.xml?rev=578930&r1=578929&r2=578930&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/widget/catalog/ProductScreens.xml (original)
+++ ofbiz/trunk/applications/product/widget/catalog/ProductScreens.xml Mon Sep 24 12:38:03 2007
@@ -974,4 +974,37 @@
         </section>
     </screen>
             
+    <screen name="EditProductParties">
+        <section>
+            <actions>
+                <set field="titleProperty" value="PageTitleEditProductParties"/>
+                <set field="headerItem" value="product"/>
+                <set field="tabButtonItem" value="EditProductParties"/>
+                <set field="labelTitleProperty" value="PartyParties"/>
+
+                <set field="productId" from-field="parameters.productId"/>
+                <entity-one entity-name="Product" value-name="product"/>
+
+                <entity-condition entity-name="ProductRole" list-name="productRoles">
+                    <condition-expr field-name="productId" env-name="productId"/>
+                    <order-by field-name="roleTypeId"/>
+                    <order-by field-name="partyId"/>
+                </entity-condition>
+
+                <entity-condition entity-name="RoleType" list-name="roleTypes">
+                    <order-by field-name="description"/>
+                </entity-condition>
+            </actions>
+            <widgets>
+                <decorator-screen name="CommonProductDecorator" location="${parameters.mainDecoratorLocation}">
+                    <decorator-section name="body">
+                        <platform-specific>
+                            <html><html-template location="component://product/webapp/catalog/product/EditProductParties.ftl"/></html>
+                        </platform-specific>
+                    </decorator-section>
+                </decorator-screen>
+            </widgets>
+        </section>
+    </screen>
+    
 </screens>


Reply | Threaded
Open this post in threaded view
|

Re: svn commit: r578930 - in /ofbiz/trunk/applications/product: config/ entitydef/ script/org/ofbiz/product/product/ servicedef/ webapp/catalog/WEB-INF/ webapp/catalog/product/ widget/catalog/

David E Jones

The loopkup for a party is pretty easy, though easier (as with many things here...) using the form widget instead of an ftl file.

In fact, we have a project-wide goal of converting all generic ftl screens like this to use the form widget.

Of course, I wasn't involved in discussions around this and only read what has gone through the lists and the issue... was there a reason for using FTL instead of the Form Widget (Ean or Adrian)?

-David


[hidden email] wrote:

> Author: adrianc
> Date: Mon Sep 24 12:38:03 2007
> New Revision: 578930
>
> URL: http://svn.apache.org/viewvc?rev=578930&view=rev
> Log:
> New feature - assign parties to products. Patch is from Ean Schuessler - OFBIZ-1177, plus some additional work from me. Still needs a party ID lookup screen.
>
> Added:
>     ofbiz/trunk/applications/product/webapp/catalog/product/EditProductParties.ftl
> Modified:
>     ofbiz/trunk/applications/product/config/ProductUiLabels.properties
>     ofbiz/trunk/applications/product/entitydef/entitygroup.xml
>     ofbiz/trunk/applications/product/entitydef/entitymodel.xml
>     ofbiz/trunk/applications/product/script/org/ofbiz/product/product/ProductServices.xml
>     ofbiz/trunk/applications/product/servicedef/services.xml
>     ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/controller.xml
>     ofbiz/trunk/applications/product/webapp/catalog/product/ProductTabBar.ftl
>     ofbiz/trunk/applications/product/widget/catalog/CatalogCommonScreens.xml
>     ofbiz/trunk/applications/product/widget/catalog/ProductScreens.xml
>
> Modified: ofbiz/trunk/applications/product/config/ProductUiLabels.properties
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/config/ProductUiLabels.properties?rev=578930&r1=578929&r2=578930&view=diff
> ==============================================================================
> --- ofbiz/trunk/applications/product/config/ProductUiLabels.properties (original)
> +++ ofbiz/trunk/applications/product/config/ProductUiLabels.properties Mon Sep 24 12:38:03 2007
> @@ -132,6 +132,7 @@
>  PageTitleEditProductPromos=Edit Product Promos
>  PageTitleEditProductPromotionCode=Edit Product Promotion Code
>  PageTitleEditProductQuickAdmin=Edit Product Quick Admin
> +PageTitleEditProductParties=Edit Product Parties
>  PageTitleEditProductStore=Edit Product Store
>  PageTitleEditProductStoreCatalogs=Edit Product Store Catalogs
>  PageTitleEditProductStoreEmailSetup=Edit Product Store Email Setup
> @@ -329,6 +330,7 @@
>  ProductAssetUsage=Rental
>  ProductAssignPicker=Assign Picker
>  ProductAssociatePartyToCategory=Associate Party to Category (enter Party ID, select Type, then enter optional From Date)
> +ProductAssociatePartyToProduct=Associate Party to Product (enter Party ID, select Type, then enter optional From Date)
>  ProductAssociationNotFound=Association not found: Product Id=${productId?if_exists}, Product Id To=${productIdTo?if_exists}, Association Type Id=${productAssocTypeId?if_exists}, From Date=${fromDate?if_exists}
>  ProductAssociationType=Association Type
>  ProductAssociationTypeId=Association Type ID
> @@ -434,7 +436,6 @@
>  ProductCopyProductCategoryMembersToAnotherCategory=Copy Product Category Members to Another Category
>  ProductCostPrice=Cost Price
>  ProductCosts=Costs
> -ProductCostPrice=Cost Price
>  ProductCouldNotFindFacilityWithId=Could Not Find Facility with ID
>  ProductCouldNotFindProduct=Could Not Find Product with ID
>  ProductCouldNotFindProductCategoryWithId=Could not Find Product Category with Id
>
> Modified: ofbiz/trunk/applications/product/entitydef/entitygroup.xml
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/entitydef/entitygroup.xml?rev=578930&r1=578929&r2=578930&view=diff
> ==============================================================================
> --- ofbiz/trunk/applications/product/entitydef/entitygroup.xml (original)
> +++ ofbiz/trunk/applications/product/entitydef/entitygroup.xml Mon Sep 24 12:38:03 2007
> @@ -176,6 +176,7 @@
>      <entity-group group="org.ofbiz" entity="ProductMaint" />
>      <entity-group group="org.ofbiz" entity="ProductMaintType" />
>      <entity-group group="org.ofbiz" entity="ProductReview" />
> +    <entity-group group="org.ofbiz" entity="ProductRole" />
>      <entity-group group="org.ofbiz" entity="ProductSearchConstraint" />
>      <entity-group group="org.ofbiz" entity="ProductSearchResult" />
>      <entity-group group="org.ofbiz" entity="ProductType" />
> @@ -336,5 +337,7 @@
>      <entity-group group="org.ofbiz" entity="ShippingDocument" />
>      <entity-group group="org.ofbiz" entity="PackedQtyVsOrderItemQuantity" />
>  </entitygroup>
> +
> +
>  
>  
>
> Modified: ofbiz/trunk/applications/product/entitydef/entitymodel.xml
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/entitydef/entitymodel.xml?rev=578930&r1=578929&r2=578930&view=diff
> ==============================================================================
> --- ofbiz/trunk/applications/product/entitydef/entitymodel.xml (original)
> +++ ofbiz/trunk/applications/product/entitydef/entitymodel.xml Mon Sep 24 12:38:03 2007
> @@ -2190,6 +2190,33 @@
>          <key-map field-name="parentTypeId" rel-field-name="productAssocTypeId"/>
>        </relation>
>      </entity>
> +    <entity entity-name="ProductRole"
> +            package-name="org.ofbiz.product.product"
> +            title="Product Role Entity">
> +      <field name="productId" type="id-ne"></field>
> +      <field name="partyId" type="id-ne"></field>
> +      <field name="roleTypeId" type="id-ne"></field>
> +      <field name="fromDate" type="date-time"></field>
> +      <field name="thruDate" type="date-time"></field>
> +      <field name="comments" type="comment"></field>
> +      <prim-key field="productId"/>
> +      <prim-key field="partyId"/>
> +      <prim-key field="roleTypeId"/>
> +      <prim-key field="fromDate"/>
> +      <relation type="one-nofk" rel-entity-name="Party">
> +        <key-map field-name="partyId"/>
> +      </relation>
> +      <relation type="one-nofk" rel-entity-name="RoleType">
> +        <key-map field-name="roleTypeId"/>
> +      </relation>
> +      <relation type="one" fk-name="PROD_RLE_PTYRLE" rel-entity-name="PartyRole">
> +        <key-map field-name="partyId"/>
> +        <key-map field-name="roleTypeId"/>
> +      </relation>
> +      <!-- <relation type="one" fk-name="PROD_RLE_CATEGORY" rel-entity-name="Product">
> +        <key-map field-name="productCategoryId"/>
> +      </relation> -->
> +    </entity>    
>      <entity entity-name="ProductAttribute"
>              package-name="org.ofbiz.product.product"
>              title="Product Attribute Entity">
>
> Modified: ofbiz/trunk/applications/product/script/org/ofbiz/product/product/ProductServices.xml
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/product/product/ProductServices.xml?rev=578930&r1=578929&r2=578930&view=diff
> ==============================================================================
> --- ofbiz/trunk/applications/product/script/org/ofbiz/product/product/ProductServices.xml (original)
> +++ ofbiz/trunk/applications/product/script/org/ofbiz/product/product/ProductServices.xml Mon Sep 24 12:38:03 2007
> @@ -900,4 +900,49 @@
>          <entity-one entity-name="ProductAttribute" value-name="lookedUpValue"/>
>          <remove-value value-name="lookedUpValue"/>
>      </simple-method>
> +    
> +    <!-- ================================================================ -->
> +    <!-- ProductRole Services -->
> +    <!-- ================================================================ -->
> +
> +    <simple-method method-name="addPartyToProduct" short-description="Add Party to Product">
> +        <set value="addPartyToProduct" field="callingMethodName"/>
> +        <set value="CREATE" field="checkAction"/>
> +        <call-simple-method method-name="checkProductRelatedPermission"/>
> +        <check-errors/>
> +
> +        <make-value value-name="newEntity" entity-name="ProductRole"/>
> +        <set-pk-fields map-name="parameters" value-name="newEntity"/>
> +        <set-nonpk-fields map-name="parameters" value-name="newEntity"/>
> +
> +        <if-empty field-name="newEntity.fromDate">
> +            <now-timestamp-to-env env-name="newEntity.fromDate"/>
> +        </if-empty>
> +
> +        <create-value value-name="newEntity"/>
> +    </simple-method>
> +    <simple-method method-name="updatePartyToProduct" short-description="Update Party to Product">
> +        <set value="updatePartyToProduct" field="callingMethodName"/>
> +        <set value="UPDATE" field="checkAction"/>
> +        <call-simple-method method-name="checkProductRelatedPermission"/>
> +        <check-errors/>
> +
> +        <make-value value-name="lookupPKMap" entity-name="ProductRole"/>
> +        <set-pk-fields map-name="parameters" value-name="lookupPKMap"/>
> +        <find-by-primary-key entity-name="ProductRole" map-name="lookupPKMap" value-name="lookedUpValue"/>
> +        <set-nonpk-fields map-name="parameters" value-name="lookedUpValue"/>
> +        <store-value value-name="lookedUpValue"/>
> +    </simple-method>
> +    <simple-method method-name="removePartyFromProduct" short-description="Remove Party From Product">
> +        <set value="removePartyFromProduct" field="callingMethodName"/>
> +        <set value="DELETE" field="checkAction"/>
> +        <call-simple-method method-name="checkProductRelatedPermission"/>
> +        <check-errors/>
> +
> +        <make-value value-name="lookupPKMap" entity-name="ProductRole"/>
> +        <set-pk-fields map-name="parameters" value-name="lookupPKMap"/>
> +        <find-by-primary-key entity-name="ProductRole" map-name="lookupPKMap" value-name="lookedUpValue"/>
> +        <remove-value value-name="lookedUpValue"/>
> +    </simple-method>
> +    
>  </simple-methods>
>
> Modified: ofbiz/trunk/applications/product/servicedef/services.xml
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/servicedef/services.xml?rev=578930&r1=578929&r2=578930&view=diff
> ==============================================================================
> --- ofbiz/trunk/applications/product/servicedef/services.xml (original)
> +++ ofbiz/trunk/applications/product/servicedef/services.xml Mon Sep 24 12:38:03 2007
> @@ -716,6 +716,35 @@
>          <attribute name="fromDate" type="Timestamp" mode="IN" optional="false"/>
>      </service>
>  
> +    <service name="addPartyToProduct" engine="simple"
> +                location="component://product/script/org/ofbiz/product/product/ProductServices.xml" invoke="addPartyToProduct" auth="true">
> +        <description>Add Party To Product</description>
> +        <attribute name="productId" type="String" mode="IN" optional="false"/>
> +        <attribute name="partyId" type="String" mode="IN" optional="false"/>
> +        <attribute name="roleTypeId" type="String" mode="IN" optional="false"/>
> +        <attribute name="fromDate" type="Timestamp" mode="IN" optional="true"/>
> +        <attribute name="thruDate" type="Timestamp" mode="IN" optional="true"/>
> +        <attribute name="comments" type="String" mode="IN" optional="true"/>
> +    </service>
> +    <service name="updatePartyToProduct" engine="simple"
> +                location="component://product/script/org/ofbiz/product/product/ProductServices.xml" invoke="updatePartyToProduct" auth="true">
> +        <description>Update Party To Product</description>
> +        <attribute name="productId" type="String" mode="IN" optional="false"/>
> +        <attribute name="partyId" type="String" mode="IN" optional="false"/>
> +        <attribute name="roleTypeId" type="String" mode="IN" optional="false"/>
> +        <attribute name="fromDate" type="Timestamp" mode="IN" optional="false"/>
> +        <attribute name="thruDate" type="Timestamp" mode="IN" optional="true"/>
> +        <attribute name="comments" type="String" mode="IN" optional="true"/>
> +    </service>
> +    <service name="removePartyFromProduct" engine="simple"
> +                location="component://product/script/org/ofbiz/product/product/ProductServices.xml" invoke="removePartyFromProduct" auth="true">
> +        <description>Remove Party From Product</description>
> +        <attribute name="productId" type="String" mode="IN" optional="false"/>
> +        <attribute name="partyId" type="String" mode="IN" optional="false"/>
> +        <attribute name="roleTypeId" type="String" mode="IN" optional="false"/>
> +        <attribute name="fromDate" type="Timestamp" mode="IN" optional="false"/>
> +    </service>
> +
>      <service name="safeAddProductCategoryToCategory" engine="simple"
>                  location="org/ofbiz/product/category/CategoryServices.xml" invoke="addProductCategoryToCategory" auth="true">
>          <description>Safe Add ProductCategory To Category (requires fromDate)</description>
>
> Modified: ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/controller.xml
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/controller.xml?rev=578930&r1=578929&r2=578930&view=diff
> ==============================================================================
> --- ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/controller.xml (original)
> +++ ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/controller.xml Mon Sep 24 12:38:03 2007
> @@ -512,8 +512,31 @@
>      <request-map uri="ProductBarCode.pdf">
>          <security https="true" auth="true"/>
>          <response name="success" type="view" value="ProductBarCode.pdf"/>
> +    </request-map>    
> +
> +    <!-- ================ Product Roles Requests ================= -->
> +    <request-map uri="EditProductParties">
> +        <security https="true" auth="true"/>
> +        <response name="success" type="view" value="EditProductParties"/>
> +    </request-map>
> +    <request-map uri="addPartyToProduct">
> +        <security https="true" auth="true"/>
> +        <event type="service" path="" invoke="addPartyToProduct"/>
> +        <response name="success" type="view" value="EditProductParties"/>
> +        <response name="error" type="view" value="EditProductParties"/>
> +    </request-map>
> +    <request-map uri="updatePartyToProduct">
> +        <security https="true" auth="true"/>
> +        <event type="service" path="" invoke="updatePartyToProduct"/>
> +        <response name="success" type="view" value="EditProductParties"/>
> +        <response name="error" type="view" value="EditProductParties"/>
> +    </request-map>
> +    <request-map uri="removePartyFromProduct">
> +        <security https="true" auth="true"/>
> +        <event type="service" path="" invoke="removePartyFromProduct"/>
> +        <response name="success" type="view" value="EditProductParties"/>
> +        <response name="error" type="view" value="EditProductParties"/>
>      </request-map>
> -    
>  
>      <!-- ================ Product Asset Usage (rental) Requests ================= -->
>      <request-map uri="EditProductAssetUsage">
> @@ -2505,6 +2528,7 @@
>      <view-map name="EditProduct" type="screen" page="component://product/widget/catalog/ProductScreens.xml#EditProduct"/>
>      <view-map name="EditProductPrices" type="screen" page="component://product/widget/catalog/ProductScreens.xml#EditProductPrices"/>
>      <view-map name="EditProductAssetUsage" type="screen" page="component://product/widget/catalog/ProductScreens.xml#EditProductAssetUsage"/>
> +    <view-map name="EditProductParties" type="screen" page="component://product/widget/catalog/ProductScreens.xml#EditProductParties"/>
>      <view-map name="showFixedAssetProduct" type="screen" page="component://product/widget/catalog/ProductScreens.xml#showFixedAssetProduct"/>
>      <view-map name="newFixedAssetProduct" type="screen" page="component://product/widget/catalog/ProductScreens.xml#newFixedAssetProduct"/>
>      <view-map name="ProductBarCode.pdf" type="screenfop" page="component://product/widget/catalog/ProductScreens.xml#ProductBarCode.fo" content-type="application/pdf" encoding="none"/>
>
> Added: ofbiz/trunk/applications/product/webapp/catalog/product/EditProductParties.ftl
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/catalog/product/EditProductParties.ftl?rev=578930&view=auto
> ==============================================================================
> --- ofbiz/trunk/applications/product/webapp/catalog/product/EditProductParties.ftl (added)
> +++ ofbiz/trunk/applications/product/webapp/catalog/product/EditProductParties.ftl Mon Sep 24 12:38:03 2007
> @@ -0,0 +1,78 @@
> +<#--
> +Licensed to the Apache Software Foundation (ASF) under one
> +or more contributor license agreements.  See the NOTICE file
> +distributed with this work for additional information
> +regarding copyright ownership.  The ASF licenses this file
> +to you under the Apache License, Version 2.0 (the
> +"License"); you may not use this file except in compliance
> +with the License.  You may obtain a copy of the License at
> +
> +http://www.apache.org/licenses/LICENSE-2.0
> +
> +Unless required by applicable law or agreed to in writing,
> +software distributed under the License is distributed on an
> +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> +KIND, either express or implied.  See the License for the
> +specific language governing permissions and limitations
> +under the License.
> +-->
> +
> +<#if productId?exists && product?exists>    
> +  <table class="basic-table" cellspacing="0">
> +    <tr class="header-row">
> +      <td>${uiLabelMap.PartyPartyId}</td>
> +      <td>${uiLabelMap.PartyRole}</td>
> +      <td>${uiLabelMap.CommonFromDateTime}</td>
> +      <td>${uiLabelMap.CommonThruDateTime}</td>
> +      <td>&nbsp;</td>
> +    </tr>
> +    <#assign line = 0>
> +    <#list productRoles as productRole>
> +      <#assign line = line + 1>
> +      <#assign curRoleType = productRole.getRelatedOneCache("RoleType")>
> +      <tr>
> +        <td><a href="/partymgr/control/viewprofile?party_id=${(productRole.partyId)?if_exists}" target="_blank" class="buttontext">${(productRole.partyId)?if_exists}</a></td>
> +        <td>${(curRoleType.get("description",locale))?if_exists}</td>
> +        <#assign hasntStarted = false>
> +        <#if (productRole.getTimestamp("fromDate"))?exists && Static["org.ofbiz.base.util.UtilDateTime"].nowTimestamp().before(productRole.getTimestamp("fromDate"))> <#assign hasntStarted = true></#if>
> +        <td<#if hasntStarted> class="alert"</#if>>${(productRole.fromDate)?if_exists}</td>
> +        <td align="center">
> +          <form method="post" action="<@ofbizUrl>updatePartyToProduct</@ofbizUrl>" name="lineForm${line}">
> +            <#assign hasExpired = false>
> +            <#if (productRole.getTimestamp("thruDate"))?exists && (Static["org.ofbiz.base.util.UtilDateTime"].nowTimestamp().after(productRole.getTimestamp("thruDate")))> <#assign hasExpired = true></#if>
> +            <input type="hidden" name="productId" value="${(productRole.productId)?if_exists}">
> +            <input type="hidden" name="partyId" value="${(productRole.partyId)?if_exists}">
> +            <input type="hidden" name="roleTypeId" value="${(productRole.roleTypeId)?if_exists}">
> +            <input type="hidden" name="fromDate" value="${(productRole.getTimestamp("fromDate"))?if_exists}">
> +            <input type="text" size="25" name="thruDate" value="${(productRole. getTimestamp("thruDate"))?if_exists}" class="inputBox" <#if hasExpired> style="color: red;"</#if>>
> +            <a href="javascript:call_cal(document.lineForm${line}.thruDate, '${(productRole.getTimestamp("thruDate"))?default(nowTimestamp?string)}');"><img src="<@ofbizContentUrl>/images/cal.gif</@ofbizContentUrl>" width="16" height="16" border="0" alt="Calendar"></a>
> +            <input type="submit" value="${uiLabelMap.CommonUpdate}">
> +          </form>
> +        </td>
> +        <td align="center">
> +          <a href="<@ofbizUrl>removePartyFromProduct?productId=${(productRole.productId)?if_exists}&partyId=${(productRole.partyId)?if_exists}&roleTypeId=${(productRole.roleTypeId)?if_exists}&fromDate=${Static["org.ofbiz.base.util.UtilFormatOut"].encodeQueryValue(productRole.getTimestamp("fromDate").toString())}</@ofbizUrl>" class="buttontext">
> +          ${uiLabelMap.CommonDelete}</a>
> +        </td>
> +      </tr>
> +    </#list>
> +  </table>
> +  <br/>
> +  <h2>${uiLabelMap.ProductAssociatePartyToProduct}:</h2>
> +  <br/>
> +  <form method="post" action="<@ofbizUrl>addPartyToProduct</@ofbizUrl>" name="addNewForm">
> +    <input type="hidden" name="productId" value="${productId}">
> +    <input type="text" size="20" maxlength="20" name="partyId" value="">
> +    <#-- TODO: Add PartyId lookup screen
> +    <a href="javascript:call_fieldlookup2(document.addNewForm.partyId,'LookupCustomerName');">
> +      <img src='/images/fieldlookup.gif' width='15' height='14' border='0' alt='Click here For Field Lookup'/>
> +    </a> -->
> +    <select name="roleTypeId" size="1">
> +    <#list roleTypes as roleType>
> +        <option value="${(roleType.roleTypeId)?if_exists}" <#if roleType.roleTypeId.equals("_NA_")> ${uiLabelMap.ProductSelected}</#if>>${(roleType.get("description",locale))?if_exists}</option>
> +    </#list>
> +    </select>
> +    <input type="text" size="25" name="fromDate">
> +    <a href="javascript:call_cal(document.addNewForm.fromDate, '${nowTimestamp?string}');"><img src="<@ofbizContentUrl>/images/cal.gif</@ofbizContentUrl>" width="16" height="16" border="0" alt="Calendar"></a>
> +    <input type="submit" value="${uiLabelMap.CommonAdd}">
> +  </form>
> +</#if>
>
> Modified: ofbiz/trunk/applications/product/webapp/catalog/product/ProductTabBar.ftl
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/catalog/product/ProductTabBar.ftl?rev=578930&r1=578929&r2=578930&view=diff
> ==============================================================================
> --- ofbiz/trunk/applications/product/webapp/catalog/product/ProductTabBar.ftl (original)
> +++ ofbiz/trunk/applications/product/webapp/catalog/product/ProductTabBar.ftl Mon Sep 24 12:38:03 2007
> @@ -55,6 +55,7 @@
>          <#if product?exists && product.productTypeId?if_exists == "ASSET_USAGE">
>              <a href="<@ofbizUrl>EditProductAssetUsage?productId=${productId}</@ofbizUrl>" class="${selectedClassMap.EditProductAssetUsage?default(unselectedClassName)}">${uiLabelMap.ProductAssetUsage}</a>
>          </#if>
> -        <a href="<@ofbizUrl>EditProductWorkEfforts?productId=${productId}</@ofbizUrl>" class="${selectedClassMap.EditProductWorkEfforts?default(unselectedClassName)}">${uiLabelMap.WorkEffortWorkEffort}</a>        
> +        <a href="<@ofbizUrl>EditProductWorkEfforts?productId=${productId}</@ofbizUrl>" class="${selectedClassMap.EditProductWorkEfforts?default(unselectedClassName)}">${uiLabelMap.WorkEffortWorkEffort}</a>
> +        <a href="<@ofbizUrl>EditProductParties?productId=${productId}</@ofbizUrl>" class="${selectedClassMap.EditProductParties?default(unselectedClassName)}">${uiLabelMap.PartyParties}</a>
>      </div>
>  </#if>
>
> Modified: ofbiz/trunk/applications/product/widget/catalog/CatalogCommonScreens.xml
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/widget/catalog/CatalogCommonScreens.xml?rev=578930&r1=578929&r2=578930&view=diff
> ==============================================================================
> --- ofbiz/trunk/applications/product/widget/catalog/CatalogCommonScreens.xml (original)
> +++ ofbiz/trunk/applications/product/widget/catalog/CatalogCommonScreens.xml Mon Sep 24 12:38:03 2007
> @@ -78,7 +78,7 @@
>                                          </container>
>                                          
>                                          <!-- add Create Product and View Product (in ecommerce) links -->
> -                                        <container>
> +                                        <container style="button-bar">
>                                              <link target="EditProduct" text="${uiLabelMap.ProductNewProduct}" style="buttontext"/>
>                                              <link target="CreateVirtualWithVariantsForm" text="${uiLabelMap.ProductNewVirtualProduct}" style="buttontext"/>
>                                              <link target="/ecommerce/control/product?product_id=${productId}" url-mode="inter-app" text="${uiLabelMap.ProductProductPage}" style="buttontext"/>
>
> Modified: ofbiz/trunk/applications/product/widget/catalog/ProductScreens.xml
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/widget/catalog/ProductScreens.xml?rev=578930&r1=578929&r2=578930&view=diff
> ==============================================================================
> --- ofbiz/trunk/applications/product/widget/catalog/ProductScreens.xml (original)
> +++ ofbiz/trunk/applications/product/widget/catalog/ProductScreens.xml Mon Sep 24 12:38:03 2007
> @@ -974,4 +974,37 @@
>          </section>
>      </screen>
>              
> +    <screen name="EditProductParties">
> +        <section>
> +            <actions>
> +                <set field="titleProperty" value="PageTitleEditProductParties"/>
> +                <set field="headerItem" value="product"/>
> +                <set field="tabButtonItem" value="EditProductParties"/>
> +                <set field="labelTitleProperty" value="PartyParties"/>
> +
> +                <set field="productId" from-field="parameters.productId"/>
> +                <entity-one entity-name="Product" value-name="product"/>
> +
> +                <entity-condition entity-name="ProductRole" list-name="productRoles">
> +                    <condition-expr field-name="productId" env-name="productId"/>
> +                    <order-by field-name="roleTypeId"/>
> +                    <order-by field-name="partyId"/>
> +                </entity-condition>
> +
> +                <entity-condition entity-name="RoleType" list-name="roleTypes">
> +                    <order-by field-name="description"/>
> +                </entity-condition>
> +            </actions>
> +            <widgets>
> +                <decorator-screen name="CommonProductDecorator" location="${parameters.mainDecoratorLocation}">
> +                    <decorator-section name="body">
> +                        <platform-specific>
> +                            <html><html-template location="component://product/webapp/catalog/product/EditProductParties.ftl"/></html>
> +                        </platform-specific>
> +                    </decorator-section>
> +                </decorator-screen>
> +            </widgets>
> +        </section>
> +    </screen>
> +    
>  </screens>
>
>