svn commit: r1153071 [3/3] - in /ofbiz/trunk/specialpurpose/scrum: data/ entitydef/ script/org/ofbiz/scrum/ servicedef/ webapp/scrum/WEB-INF/actions/ widget/

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

svn commit: r1153071 [3/3] - in /ofbiz/trunk/specialpurpose/scrum: data/ entitydef/ script/org/ofbiz/scrum/ servicedef/ webapp/scrum/WEB-INF/actions/ widget/

hansbak-2
Modified: ofbiz/trunk/specialpurpose/scrum/widget/scrumForms.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/scrum/widget/scrumForms.xml?rev=1153071&r1=1153070&r2=1153071&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/scrum/widget/scrumForms.xml (original)
+++ ofbiz/trunk/specialpurpose/scrum/widget/scrumForms.xml Tue Aug  2 09:00:06 2011
@@ -63,7 +63,7 @@
                     <condition-expr field-name="statusId" value="CRQ_ACCEPTED" />
                     <condition-expr field-name="productId" from-field="productId"/>
                 </condition-list>
-                <order-by field-name="sequenceNum"/>
+                <order-by field-name="custSequenceNum"/>
             </entity-condition>
         </actions>
         <field name="custRequestId"><hidden/></field>
@@ -113,7 +113,7 @@
             </service>
             <set field="taskActualHours" from-field="result.actualHours"/>
             <entity-one entity-name="CustRequest" value-field="custRequest"/>
-            <set field="defaultBacklogPlanHours" value="${custRequest.estimatedMilliSeconds/3600000}"/>
+            <set field="defaultBacklogPlanHours" value="${custRequest.custEstimatedMilliSeconds/3600000}"/>
             <set field="initialPlannedHours" from-field="defaultBacklogPlanHours"/>
             <entity-and entity-name="CustRequestItem" list="custRequestItems">
                 <field-map field-name="custRequestId" from-field="custRequestId"/>
@@ -478,7 +478,7 @@
         <field name="productId" title="${uiLabelMap.ScrumProductName}" use-when="workEffort==null">
             <drop-down>
                 <entity-options description="${groupName} -- ${internalName}[${productId}]" entity-name="ProductAndRole" key-field-name="productId">
-                    <entity-constraint name="statusId" value="PRODUCT_ACTIVE"/>
+                    <entity-constraint name="supportDiscontinuationDate" operator="equals" value=""/>
                     <entity-constraint name="roleTypeId" value="PRODUCT_OWNER_COMP"/>
                     <entity-order-by field-name="groupName"/>
                     <entity-order-by field-name="internalName"/>
@@ -489,7 +489,7 @@
             <drop-down>
                 <entity-options description="${groupName} -- ${internalName}[${productId}]" entity-name="ProductAndRole" key-field-name="productId">
                     <entity-constraint name="partyId" operator="equals" value="${productAndRoleMap.partyId}"/>
-                    <entity-constraint name="statusId" value="PRODUCT_ACTIVE"/>
+                    <entity-constraint name="supportDiscontinuationDate" operator="equals" value=""/>
                     <entity-constraint name="roleTypeId" value="PRODUCT_OWNER_COMP"/>
                     <entity-order-by field-name="groupName"/>
                     <entity-order-by field-name="internalName"/>
@@ -654,7 +654,7 @@
             <drop-down>
                 <entity-options description="${groupName}  ${internalName}[${productId}]" entity-name="ProductAndRole" key-field-name="productId">
                     <entity-constraint name="partyId" operator="equals" value="${Company.partyId}"/>
-                    <entity-constraint name="statusId" value="PRODUCT_ACTIVE"/>
+                    <entity-constraint name="supportDiscontinuationDate" operator="equals" value=""/>
                     <entity-constraint name="roleTypeId" value="PRODUCT_OWNER_COMP"/>
                     <entity-order-by field-name="groupName"/>
                     <entity-order-by field-name="internalName"/>
@@ -690,16 +690,16 @@
         <field name="parentCustRequestId" title="${uiLabelMap.ScrumBacklogItemCategory}" use-when="custRequest!=null&amp;&amp;isTeamMember==true">
             <display-entity entity-name="CustRequest" description="${custRequestName}" key-field-name="custRequestId"/>
         </field>
-        <field name="planedTime" parameter-name="estimatedMilliSeconds" title="${uiLabelMap.ScrumPlanedTime}" tooltip="${uiLabelMap.ScrumHrs}" use-when="custRequest==null">
+        <field name="planedTime" parameter-name="custEstimatedMilliSeconds" title="${uiLabelMap.ScrumPlanedTime}" tooltip="${uiLabelMap.ScrumHrs}" use-when="custRequest==null">
             <text size="3"/>
         </field>
-        <field name="planedTime" parameter-name="estimatedMilliSeconds" title="${uiLabelMap.ScrumPlanedTime}" tooltip="${uiLabelMap.ScrumHrs}" use-when="custRequest!=null&amp;&amp;isTeamMember==false"><text size="3" default-value="${custRequest.estimatedMilliSeconds/3600000}"/></field>
-        <field name="planedTime" parameter-name="estimatedMilliSeconds" title="${uiLabelMap.ScrumPlanedTime}" tooltip="${uiLabelMap.ScrumHrs}" use-when="custRequest!=null&amp;&amp;isTeamMember==true"><display description="${custRequest.estimatedMilliSeconds/3600000}"/></field>
-        <field name="sequenceNum" title="${uiLabelMap.CommonSequenceNum}" use-when="custRequest==null">
+        <field name="planedTime" parameter-name="custEstimatedMilliSeconds" title="${uiLabelMap.ScrumPlanedTime}" tooltip="${uiLabelMap.ScrumHrs}" use-when="custRequest!=null&amp;&amp;isTeamMember==false"><text size="3" default-value="${custRequest.custEstimatedMilliSeconds/3600000}"/></field>
+        <field name="planedTime" parameter-name="custEstimatedMilliSeconds" title="${uiLabelMap.ScrumPlanedTime}" tooltip="${uiLabelMap.ScrumHrs}" use-when="custRequest!=null&amp;&amp;isTeamMember==true"><display description="${custRequest.custEstimatedMilliSeconds/3600000}"/></field>
+        <field name="custSequenceNum" title="${uiLabelMap.CommonSequenceNum}" use-when="custRequest==null">
             <text size="3"></text>
         </field>
-        <field name="sequenceNum" title="${uiLabelMap.CommonSequenceNum}" use-when="custRequest!=null&amp;&amp;isTeamMember==false"><text size="3"></text></field>
-        <field name="sequenceNum" title="${uiLabelMap.CommonSequenceNum}" use-when="custRequest!=null&amp;&amp;isTeamMember==true"><display/></field>
+        <field name="custSequenceNum" title="${uiLabelMap.CommonSequenceNum}" use-when="custRequest!=null&amp;&amp;isTeamMember==false"><text size="3"></text></field>
+        <field name="custSequenceNum" title="${uiLabelMap.CommonSequenceNum}" use-when="custRequest!=null&amp;&amp;isTeamMember==true"><display/></field>
         <field name="billed" title="${uiLabelMap.ScrumBilled}" use-when="custRequest==null">
             <drop-down allow-empty="false" no-current-selected-key="Y">
                 <option key="Y" description="${uiLabelMap.CommonY}"/>
@@ -764,7 +764,7 @@
             <sort-field name="parentCustRequestId"/>
             <sort-field name="Sprint"/>
             <sort-field name="planedTime"/>
-            <sort-field name="sequenceNum"/>
+            <sort-field name="custSequenceNum"/>
             <sort-field name="billed"/>
             <sort-field name="unplannedFlag"/>
             <sort-field name="custRequestTypeId"/>
@@ -907,7 +907,7 @@
             <entity-one entity-name="CustRequest" value-field="custRequest"/>
             <set field="description" from-field="custRequest.description"/>
             <set field="custRequestCategoryGroupId" from-field="parentCustRequestId"/>
-            <set field="estimatedHours" value="${groovy:estimatedMilliSeconds!=null?estimatedMilliSeconds/3600000:0;}"/>
+            <set field="estimatedHours" value="${groovy:custEstimatedMilliSeconds!=null?custEstimatedMilliSeconds/3600000:0;}"/>
             <set field="showPosition1" value="${bsh:String prev=(String)previousItem.get(&quot;parentCustRequestId&quot;);return new Boolean(!(prev!=null&amp;&amp;prev.equals(parentCustRequestId)));}" type="Boolean"/>
         </row-actions>
         <field name="postWorkHours"><hidden value="1"/></field>
@@ -1000,7 +1000,7 @@
                 <parameter param-name="searchOption_statusId" value="${parameters.statusId}"/>
             </hyperlink>
         </field>
-        <field name="sequenceNum" position="2" title="${uiLabelMap.ScrumSeq}"><display/></field>
+        <field name="custSequenceNum" position="2" title="${uiLabelMap.ScrumSeq}"><display/></field>
         <field name="custRequestId" position="2" title="${uiLabelMap.ScrumProductBacklogItem}">
             <hyperlink target="ViewProdBacklogItem" description="${description} [${custRequestId}]">
                 <parameter param-name="custRequestId"/>
@@ -1028,7 +1028,7 @@
         <row-actions>
             <entity-one entity-name="CustRequest" value-field="custRequest"/>
             <set field="product" from-field="custRequest.description"/>
-            <set field="estimatedHours" value="${groovy:estimatedMilliSeconds!=null?estimatedMilliSeconds/3600000:0;}"/>
+            <set field="estimatedHours" value="${groovy:custEstimatedMilliSeconds!=null?custEstimatedMilliSeconds/3600000:0;}"/>
         </row-actions>
         <field name="sequence"><hidden value="Y"/></field>
         <field name="custRequestCategoryGroupId"><hidden/></field>
@@ -1113,7 +1113,7 @@
                 <parameter param-name="searchOption_statusId" value="${parameters.statusId}"/>
             </hyperlink>
         </field>
-        <field name="sequenceNum" position="1" title="${uiLabelMap.ScrumSeq}"><display/></field>
+        <field name="custSequenceNum" position="1" title="${uiLabelMap.ScrumSeq}"><display/></field>
         <field name="realSequenceNum"><hidden/></field>
         <field name="custRequestId"><hidden/></field>
         <field name="backlogId" position="1" title="${uiLabelMap.ScrumBacklogId}">
@@ -1439,7 +1439,7 @@
                     <condition-expr field-name="statusId" value="CRQ_ACCEPTED" />
                     <condition-expr field-name="productId" from-field="productId"/>
                </condition-list>
-               <order-by field-name="sequenceNum"/>
+               <order-by field-name="custSequenceNum"/>
             </entity-condition>
             <set field="maxNum" value="${groovy: return productBacklog.size();}"/>
         </actions>
@@ -1460,12 +1460,16 @@
         <field name="custRequestId" title="${uiLabelMap.ScrumSprintBacklog}">
             <display-entity entity-name="CustRequest" key-field-name="custRequestId" description="${custRequestName}"></display-entity>
         </field>
-        <field name="sequenceNum"><display/></field>
-        <field name="estimatedHours" title="${uiLabelMap.ScrumPlanedHours}"><text default-value="${groovy:return custRequest.estimatedMilliSeconds/3600000}"/></field>
+        <field name="custSequenceNum"><display/></field>
+        <field name="estimatedHours" title="${uiLabelMap.ScrumPlanedHours}"><text default-value="${groovy:return custRequest.custEstimatedMilliSeconds/3600000}"/></field>
         <field name="submitButton" title="${uiLabelMap.CommonUpdate}"><submit/></field>
     </form>
     <!-- Product -->
     <form name="EditProduct" type="single" target="createProductAndRole" default-map-name="product">
+        <actions>
+            <set field="supportDiscontinuationDate" from-field="supportDiscontinuationDate"/>
+            <set field="statusId" value="${groovy: if(supportDiscontinuationDate == null) return 'PRODUCT_ACTIVE' else return 'PRODUCT_CLOSED'}"/>
+        </actions>
         <alt-target use-when="product!=null" target="updateProduct"/>
         <field name="partyCompany"><hidden/></field>
         <field name="partyId" title="${uiLabelMap.ScrumCompanyAndProductOwner}" tooltip="${uiLabelMap.ScrumCompanyNameShow} -- ${uiLabelMap.ScrumProductName}" event="onchange" action="javascrip:document.EditProduct.partyCompany.value=this.options[this.selectedIndex].text;" parameter-name="partyId" use-when="companyCurrent==null">
@@ -1481,7 +1485,6 @@
                 <list-options list-name="scrumRolesPersonAndCompanyList" description="${groupName}[${partyIdFrom}] - ${lastName} ${firstName} ${middleName}" key-name="partyId"/>
             </drop-down>
         </field>
-        <field name="statusId" use-when="product==null"><hidden value="PRODUCT_ACTIVE"/></field>
         <field name="statusId" title="${uiLabelMap.CommonStatus}" use-when="product!=null">
             <drop-down>
                 <entity-options description="${description}" entity-name="StatusItem">
@@ -1540,17 +1543,19 @@
                 <field-map field-name="partyIdFrom" from-field="productComRole[0].partyId"/>
                 <field-map field-name="partyId" from-field="productRole[0].partyId"/>
             </entity-and>
+            <set field="supportDiscontinuationDate" from-field="product.supportDiscontinuationDate"/>
+            <set field="statusMap.statusId" value="${groovy: if(supportDiscontinuationDate == null) return 'PRODUCT_ACTIVE' else return 'PRODUCT_CLOSED'}"/>
         </actions>
         <field name="productOwerId" title="${uiLabelMap.ScrumCompanyAndProductOwner}">
             <hyperlink target="viewprofile" description="${parties[0].groupName} -- ${parties[0].lastName} ${parties[0].firstName} ${parties[0].middleName}">
                 <parameter param-name="partyId" from-field="productRole[0].partyId"/>
             </hyperlink>
         </field>
-        <field name="statusId" title="${uiLabelMap.CommonStatus}" use-when="product!=null">
+        <field name="statusId" title="${uiLabelMap.CommonStatus}" use-when="product!=null" map-name="statusMap">
             <display-entity entity-name="StatusItem" description="${description}"/>
         </field>
         <field name="internalName" title="${uiLabelMap.ScrumProductName}"><display description="${product.internalName} [${product.productId}]"/></field>
-        <field name="longDescription" title="${uiLabelMap.CommonDescription}"><display/></field>
+        <field name="longDescription" title="${uiLabelMap.CommonDescription}"><display /></field>
         <field name="productTypeId"><hidden value="SCRUM_ITEM"/></field>
         <field name="submitButton" title="${uiLabelMap.CommonSubmit}" use-when="product==null" widget-style="smallSubmit"><submit button-type="button"/></field>
     </form>
@@ -1634,8 +1639,7 @@
                 <field-map field-name="productId" from-field="productId"/>
             </entity-one>
             <set field="longDescription" from-field="product.longDescription"/>
-            <set field="statusId" from-field="product.statusId"/>
-            
+            <set field="statusId" value="${groovy: if(product.supportDiscontinuationDate == null) return 'PRODUCT_ACTIVE' else return 'PRODUCT_CLOSED'}"/>
             <entity-and entity-name="PartyRelationshipAndPartyDetail" list="company">
                 <field-map field-name="partyId" from-field="partyId"/>
                 <field-map field-name="roleTypeIdFrom" value="ACCOUNT"/>
@@ -1688,7 +1692,7 @@
         </form>
         <form name="FindProduct" type="single" target="EditProduct">
             <field name="productId"><text></text></field>
-            <field name="internalName" title="${uiLabelMap.ScrumProductName}"><text-find/></field>
+            <field name="internalName" title="${uiLabelMap.ScrumProductName}"><text/></field>
             <field name="statusId" parameter-name="statusId">
                 <drop-down allow-empty="false">
                     <option key="Any" description="${uiLabelMap.CommonAny}"/>
@@ -1721,8 +1725,7 @@
              </entity-one>
              <set field="internalName" from-field="product.internalName"/>
              <set field="longDescription" from-field="product.longDescription"/>
-             <set field="statusId" from-field="product.statusId"/>
-            
+             <set field="statusId" value="${groovy: if(product.supportDiscontinuationDate == null) return 'PRODUCT_ACTIVE' else return 'PRODUCT_CLOSED'}"/>
              <entity-and entity-name="PartyRelationshipAndPartyDetail" list="company">
                 <field-map field-name="partyId" from-field="partyId"/>
                 <field-map field-name="roleTypeIdFrom" value="ACCOUNT"/>
@@ -1882,7 +1885,7 @@
         <field name="productId" title="${uiLabelMap.ScrumProductName}">
             <drop-down>
                 <entity-options description="${groupName} -- ${internalName}[${productId}]" entity-name="ProductAndRole" key-field-name="productId">
-                    <entity-constraint name="statusId" value="PRODUCT_ACTIVE"/>
+                    <entity-constraint name="supportDiscontinuationDate" operator="equals" value=""/>
                     <entity-constraint name="roleTypeId" value="PRODUCT_OWNER_COMP"/>
                     <entity-order-by field-name="groupName"/>
                     <entity-order-by field-name="internalName"/>
@@ -1905,7 +1908,7 @@
             <set field="statusId" from-field="custRequest.statusId"/>
             <set field="openDateTime" from-field="custRequest.openDateTime"/>
             <set field="closedDateTime" from-field="custRequest.closedDateTime"/>
-            <set field="estimatedMilliSeconds" from-field="custRequest.estimatedMilliSeconds" type="String"></set>
+            <set field="custEstimatedMilliSeconds" from-field="custRequest.custEstimatedMilliSeconds" type="String"></set>
             <entity-and entity-name="CustRequestNoteView" list="custRequestNotes">
                 <field-map field-name="custRequestId" from-field="custRequestId"/>
                 <field-map field-name="noteName" value="How to test"/>
@@ -1971,9 +1974,9 @@
                 <parameter param-name="sprintId" from-field="workEffortlist[0].workEffortId"/>
             </hyperlink>
         </field>
-        <field name="estimated" title="${uiLabelMap.ScrumPlanedTime}" tooltip="${uiLabelMap.ScrumHrs}"><display description="${custRequest.estimatedMilliSeconds/3600000}"/></field>
+        <field name="estimated" title="${uiLabelMap.ScrumPlanedTime}" tooltip="${uiLabelMap.ScrumHrs}"><display description="${custRequest.custEstimatedMilliSeconds/3600000}"/></field>
         <field name="actualHours"><display description="${actualHours}"/></field>
-        <field name="sequenceNum"><display description="${custRequest.sequenceNum}"/></field>
+        <field name="custSequenceNum"><display description="${custRequest.custSequenceNum}"/></field>
         <field name="billed"><display description="${custRequest.billed}"/></field>
         <field name="custRequestTypeId" title="${uiLabelMap.ScrumUnplanBacklog}">
             <display description="${custRequestType}"/>
@@ -1991,10 +1994,10 @@
             <entity-one entity-name="CustRequest" value-field="custRequest"/>
             <set field="description" from-field="custRequest.description"/>
             <set field="custRequestCategoryGroupId" from-field="parentCustRequestId"/>
-            <set field="estimatedHours" value="${groovy:estimatedMilliSeconds!=null?estimatedMilliSeconds/3600000:0;}"/>
+            <set field="estimatedHours" value="${groovy:custEstimatedMilliSeconds!=null?custEstimatedMilliSeconds/3600000:0;}"/>
             <set field="showPosition1" value="${bsh:String prev=(String)previousItem.get(&quot;parentCustRequestId&quot;);return new Boolean(!(prev!=null&amp;&amp;prev.equals(parentCustRequestId)));}" type="Boolean"/>
         </row-actions>
-        <field name="sequenceNum" position="2" title="${uiLabelMap.ScrumSeq}"><display/></field>
+        <field name="custSequenceNum" position="2" title="${uiLabelMap.ScrumSeq}"><display/></field>
         <field name="custRequestId" position="2" title="${uiLabelMap.ScrumProductBacklogItem}">
             <hyperlink target="ViewProdBacklogItem" description="${description} [${custRequestId}]">
                 <parameter param-name="custRequestId"/>
@@ -2010,7 +2013,7 @@
         <field name="parentCustRequestId" position="2" title="${uiLabelMap.ScrumCategory}">
             <display-entity entity-name="CustRequest" description="${custRequestName}" key-field-name="custRequestId"/>
         </field>
-        <field name="estimatedHours" position="2" title="${uiLabelMap.ScrumPlanedHours}"><display description="${estimatedMilliSeconds/1000/60/60}"/></field>
+        <field name="estimatedHours" position="2" title="${uiLabelMap.ScrumPlanedHours}"><display description="${custEstimatedMilliSeconds/1000/60/60}"/></field>
         <field name="billed" position="2" ><display></display></field>
         <field name="custRequestDate" position="2" title="${uiLabelMap.ScrumRequestDate}"><display/></field>
         <field name="fromPartyId" position="2" title="${uiLabelMap.ScrumRequesterName}">
@@ -2024,7 +2027,7 @@
         <row-actions>
             <entity-one entity-name="CustRequest" value-field="custRequest"/>
             <set field="description" from-field="custRequest.description"/>
-            <set field="estimatedHours" value="${groovy:estimatedMilliSeconds!=null?estimatedMilliSeconds/3600000:0;}"/>
+            <set field="estimatedHours" value="${groovy:custEstimatedMilliSeconds!=null?custEstimatedMilliSeconds/3600000:0;}"/>
             <set field="showPosition1" value="${bsh:String prev=(String)previousItem.get(&quot;productId&quot;);return new Boolean(!(prev!=null&amp;&amp;prev.equals(productId)));}" type="Boolean"/>
         </row-actions>
         <field name="productId" title="${uiLabelMap.PageTitleProduct}" position="1" use-when="showPosition1">
@@ -2034,7 +2037,7 @@
                 </sub-hyperlink>
             </display-entity>
         </field>
-        <field name="sequenceNum" position="2" title="${uiLabelMap.ScrumSeq}"><display/></field>
+        <field name="custSequenceNum" position="2" title="${uiLabelMap.ScrumSeq}"><display/></field>
         <field name="custRequestId" position="2" title="${uiLabelMap.ScrumProductBacklogItem}">
             <hyperlink target="ViewProdBacklogItem" description="${description} [${custRequestId}]">
                 <parameter param-name="custRequestId"/>
@@ -2047,7 +2050,7 @@
         <field name="parentCustRequestId" position="2" title="${uiLabelMap.ScrumCategory}">
             <display-entity entity-name="CustRequest" description="${custRequestName}" key-field-name="custRequestId"/>
         </field>
-        <field name="estimatedHours" position="2" title="${uiLabelMap.ScrumPlanedHours}"><display description="${estimatedMilliSeconds/1000/60/60}"/></field>
+        <field name="estimatedHours" position="2" title="${uiLabelMap.ScrumPlanedHours}"><display description="${custEstimatedMilliSeconds/1000/60/60}"/></field>
         <field name="billed" position="2" ><display></display></field>
         <field name="custRequestDate" position="2" title="${uiLabelMap.ScrumRequestDate}"><display type="date"/></field>
     </form>
@@ -2354,7 +2357,7 @@
                 <field-map field-name="sprintId" from-field="nullField"/>
             </service>
             <entity-one entity-name="CustRequest" value-field="custRequest"/>
-            <set field="hoursLeft" value="${custRequest.estimatedMilliSeconds/1000/60/60 - resultMap.planHours}"/>
+            <set field="hoursLeft" value="${custRequest.custEstimatedMilliSeconds/1000/60/60 - resultMap.planHours}"/>
         </actions>
         <alt-target use-when="task!=null" target="createTaskForSprintBacklog"/>
         <field name="id"><hidden/></field>
@@ -2413,6 +2416,8 @@
                 else
                     productTartget = &quot;ViewProduct&quot;
                 }"/>
+            <set field="supportDiscontinuationDate" from-field="supportDiscontinuationDate"/>
+            <set field="statusId" value="${groovy: if(supportDiscontinuationDate == null) return 'PRODUCT_ACTIVE' else return 'PRODUCT_CLOSED'}"/>
         </row-actions>
         <field name="isCurrentCompany"><hidden/></field>
         <field name="partyId"><hidden/></field>
@@ -2787,12 +2792,36 @@
         <field name="taskEstimatedStartDate" title="${uiLabelMap.CommonStartDate}" parameter-name="estimatedStartDate"><display type="date"/></field>
     </form>
     <form name="EditDeleteBacklogItem" type="single" target="deleteBacklogItem?custRequestId=${parameters.custRequestId}&amp;productId=${parameters.productId}">
+        <actions>
+            <service service-name="getScrumActualHour" result-map="resultMap">
+                <field-map field-name="custRequestId" from-field="custRequestId"/>
+            </service>
+            <set field="actualHours" from-field="resultMap.actualHours" default-value="0" type="Double"/>
+            <set field="actualHoursMessage" value="${groovy:
+                if (actualHours > 0)
+                    actualHoursMessage = &quot;There are already &quot;+ actualHours +&quot; hours have been spent on this backlog item, Are you sure you want to delete?&quot;
+                else
+                    actualHoursMessage = &quot;Are you sure to delete selected product backlog item(s)?&quot;
+                }"/>
+        </actions>
         <field name="reason"><textarea/> </field>
-        <field name="buttonSubmit" title="${uiLabelMap.CommonSave}"><submit request-confirmation="true" confirmation-message="Are you sure you want to delete this product backlog item(s)?"/> </field>
+        <field name="buttonSubmit" title="${uiLabelMap.CommonSave}" ><submit request-confirmation="true" confirmation-message="${actualHoursMessage}"/> </field>
     </form>
     <form name="DeleteProductBacklogItem" type="single" target="deleteProductBacklogItem?productId=${parameters.productId}&amp;custRequestId=${parameters.custRequestId}&amp;statusId=${parameters.statusId}">
+        <actions>
+            <service service-name="getScrumActualHour" result-map="resultMap">
+                <field-map field-name="custRequestId" from-field="custRequestId"/>
+            </service>
+            <set field="actualHours" from-field="resultMap.actualHours" default-value="0" type="Double"/>
+            <set field="actualHoursMessage" value="${groovy:
+                if (actualHours > 0)
+                    actualHoursMessage = &quot;There are already &quot;+ actualHours +&quot; hours have been spent on this backlog item, Are you sure you want to delete?&quot;
+                else
+                    actualHoursMessage = &quot;Are you sure to delete selected product backlog item(s)?&quot;
+                }"/>
+        </actions>
         <field name="reason"><textarea/> </field>
-        <field name="buttonSubmit" title="${uiLabelMap.CommonSave}" ><submit request-confirmation="true" confirmation-message="Are you sure you want to delete this product backlog item(s)?"/> </field>
+        <field name="buttonSubmit" title="${uiLabelMap.CommonSave}" ><submit request-confirmation="true" confirmation-message="${actualHoursMessage}"/> </field>
     </form>
     <form name="ViewBacklogStatus" type="list" extends="ViewRequestStatus" extends-resource="component://order/widget/ordermgr/CustRequestForms.xml"
         odd-row-style="alternate-row" default-table-style="basic-table hover-bar">
@@ -2821,7 +2850,7 @@
             widget-style="required" tooltip="${uiLabelMap.CommonRequired}">
             <drop-down allow-empty="true">
                 <entity-options description="${groupName} -- ${internalName}[${productId}]" entity-name="ProductAndRole" key-field-name="productId">
-                    <entity-constraint name="statusId" value="PRODUCT_ACTIVE"/>
+                    <entity-constraint name="supportDiscontinuationDate" operator="equals" value=""/>
                     <entity-constraint name="roleTypeId" value="PRODUCT_OWNER_COMP"/>
                     <entity-order-by field-name="groupName"/>
                     <entity-order-by field-name="internalName"/>
@@ -2839,9 +2868,9 @@
                 <list-options key-name="custRequestId" list-name="categoryList" description="[${productId}] : ${internalName} -- [${custRequestId}] : ${custRequestName}"/>
             </drop-down>
         </field>
-        <field name="estimatedMilliSeconds" title="${uiLabelMap.ScrumPlanedTime}" tooltip="${uiLabelMap.ScrumHrs}"><text size="3"></text></field>
+        <field name="custEstimatedMilliSeconds" title="${uiLabelMap.ScrumPlanedTime}" tooltip="${uiLabelMap.ScrumHrs}"><text size="3"></text></field>
         <field name="story" title="${uiLabelMap.ScrumStory}" ><textarea  rows="4" cols="60"/></field>
-        <field name="sequenceNum"><hidden value="1"/></field>
+        <field name="custSequenceNum"><hidden value="1"/></field>
         <field name="noteInfo" title="${uiLabelMap.ScrumHowToTest}" ><textarea  rows="4" cols="60"/></field>
         <field name="submitButton" title="${uiLabelMap.CommonSubmit}" widget-style="smallSubmit"><submit button-type="button"/></field>
     </form>
@@ -2900,7 +2929,7 @@
         <row-actions>
             <entity-one entity-name="CustRequest" value-field="custRequest"/>
             <set field="product" from-field="custRequest.description"/>
-            <set field="estimatedHours" value="${groovy:estimatedMilliSeconds!=null?estimatedMilliSeconds/3600000:0;}"/>
+            <set field="estimatedHours" value="${groovy:custEstimatedMilliSeconds!=null?custEstimatedMilliSeconds/3600000:0;}"/>
             <set field="custRequestCategoryGroupId" from-field="parentCustRequestId"/>
         </row-actions>
         <field name="UnplannedSequence"><hidden value="Y"/></field>
@@ -2971,7 +3000,7 @@
             </service>
             <set field="taskActualHours" from-field="result.actualHours"/>
             <entity-one entity-name="CustRequest" value-field="custRequest"/>
-            <set field="defaultBacklogPlanHours" value="${custRequest.estimatedMilliSeconds/3600000}"/>
+            <set field="defaultBacklogPlanHours" value="${custRequest.custEstimatedMilliSeconds/3600000}"/>
             <set field="initialPlannedHours" from-field="defaultBacklogPlanHours"/>
             <entity-and entity-name="CustRequestItem" list="custRequestItems">
                 <field-map field-name="custRequestId" from-field="custRequestId"/>
@@ -3108,7 +3137,7 @@
             <entity-one entity-name="CustRequest" value-field="custRequest"/>
             <set field="description" from-field="custRequest.description"/>
             <set field="custRequestCategoryGroupId" from-field="parentCustRequestId"/>
-            <set field="estimatedHours" value="${groovy:estimatedMilliSeconds!=null?estimatedMilliSeconds/3600000:0;}"/>
+            <set field="estimatedHours" value="${groovy:custEstimatedMilliSeconds!=null?custEstimatedMilliSeconds/3600000:0;}"/>
             <set field="showPosition1" value="${bsh:String prev=(String)previousItem.get(&quot;parentCustRequestId&quot;);return new Boolean(!(prev!=null&amp;&amp;prev.equals(parentCustRequestId)));}" type="Boolean"/>
         </row-actions>
         <!--<field name="custRequestCategoryGroupId" position="1" use-when="${groovy:showPosition1}" title="${uiLabelMap.ScrumCategory}">
@@ -3137,7 +3166,7 @@
                 <field-map field-name="sprintId" from-field="nullField"/>
             </service>
             <entity-one entity-name="CustRequest" value-field="custRequest"/>
-            <set field="hoursLeft" value="${custRequest.estimatedMilliSeconds/1000/60/60 - resultMap.planHours}"/>
+            <set field="hoursLeft" value="${custRequest.custEstimatedMilliSeconds/1000/60/60 - resultMap.planHours}"/>
         </actions>
         <alt-target use-when="task!=null" target="createTaskForUnplanBacklog?productId=${parameters.productId}"/>
         <field name="id"><ignored/></field>
@@ -3170,7 +3199,7 @@
         <field name="productId" title="${uiLabelMap.ScrumProductName}">
             <drop-down>
                 <entity-options description="${groupName} -- ${internalName}[${productId}]" entity-name="ProductAndRole" key-field-name="productId">
-                    <entity-constraint name="statusId" value="PRODUCT_ACTIVE"/>
+                    <entity-constraint name="supportDiscontinuationDate" operator="equals" value=""/>
                     <entity-constraint name="roleTypeId" value="PRODUCT_OWNER_COMP"/>
                     <entity-order-by field-name="groupName"/>
                     <entity-order-by field-name="internalName"/>

Modified: ofbiz/trunk/specialpurpose/scrum/widget/scrumMenus.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/scrum/widget/scrumMenus.xml?rev=1153071&r1=1153070&r2=1153071&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/scrum/widget/scrumMenus.xml (original)
+++ ofbiz/trunk/specialpurpose/scrum/widget/scrumMenus.xml Tue Aug  2 09:00:06 2011
@@ -259,7 +259,7 @@
                         <if-has-permission permission="SCRUM_ADMIN"/>
                     </or>
                     <not><if-empty field="product"/></not>
-                    <if-compare operator="equals" value="PRODUCT_ACTIVE" field="product.statusId"/>
+                    <if-empty field="product.supportDiscontinuationDate"/>
                     <if-compare field="hasUpdatePermission" operator="equals" value="true"/>
                 </and>
             </condition>
@@ -274,7 +274,7 @@
                         <if-has-permission permission="SCRUM_ADMIN"/>
                     </or>
                     <not><if-empty field="product"/></not>
-                    <if-compare operator="equals" value="PRODUCT_ACTIVE" field="product.statusId"/>
+                    <if-empty field="product.supportDiscontinuationDate"/>
                     <if-compare field="hasUpdatePermission" operator="equals" value="true"/>
                 </and>
             </condition>
@@ -286,7 +286,7 @@
             <condition>
                 <and>
                     <not><if-empty field="product"/></not>
-                    <if-compare operator="equals" value="PRODUCT_ACTIVE" field="product.statusId"/>
+                    <if-empty field="product.supportDiscontinuationDate"/>
                 </and>
             </condition>
             <link target="ViewTotalBacklog">
@@ -297,7 +297,7 @@
             <condition>
                 <and>
                     <not><if-empty field="product"/></not>
-                    <if-compare operator="equals" value="PRODUCT_ACTIVE" field="product.statusId"/>
+                    <if-empty field="product.supportDiscontinuationDate"/>
                     <if-service-permission service-name="scrumPermissionCheck" main-action="VIEW" resource-description="BACKLOG"/>
                 </and>
             </condition>
@@ -313,7 +313,7 @@
                         <if-service-permission service-name="scrumPermissionCheck" main-action="UPDATE" resource-description="BACKLOG"/>
                     </or>
                     <not><if-empty field="product"/></not>
-                    <if-compare operator="equals" value="PRODUCT_ACTIVE" field="product.statusId"/>
+                    <if-empty field="product.supportDiscontinuationDate"/>
                     <not><if-empty field="unPlannedBacklogList"/></not>
                 </and>
             </condition>
@@ -330,7 +330,7 @@
                         <if-has-permission permission="SCRUM_BILLING" action="_CREATE"/>
                     </or>
                     <not><if-empty field="product"/></not>
-                    <if-compare operator="equals" value="PRODUCT_ACTIVE" field="product.statusId"/>
+                    <if-empty field="product.supportDiscontinuationDate"/>
                 </and>
             </condition>
             <link text="Billing" target="ProductBilling">
@@ -341,7 +341,7 @@
             <condition>
                 <and>
                     <not><if-empty field="product"/></not>
-                    <if-compare operator="equals" value="PRODUCT_ACTIVE" field="product.statusId"/>
+                    <if-empty field="product.supportDiscontinuationDate"/>
                     <if-service-permission service-name="scrumPermissionCheck" main-action="VIEW" resource-description="BACKLOG"/>
                 </and>
             </condition>
@@ -353,7 +353,7 @@
             <condition>
                 <and>
                     <not><if-empty field="product"/></not>
-                    <if-compare operator="equals" value="PRODUCT_ACTIVE" field="product.statusId"/>
+                    <if-empty field="product.supportDiscontinuationDate"/>
                     <if-service-permission service-name="scrumPermissionCheck" main-action="VIEW" resource-description="BACKLOG"/>
                 </and>
             </condition>
@@ -366,7 +366,7 @@
                 <and>
                     <if-service-permission service-name="scrumPermissionCheck" main-action="VIEW" resource-description="BACKLOG"/>
                     <not><if-empty field="product"/></not>
-                    <if-compare operator="equals" value="PRODUCT_ACTIVE" field="product.statusId"/>
+                    <if-empty field="product.supportDiscontinuationDate"/>
                 </and>
             </condition>
             <link target="EditProductContents">
@@ -378,7 +378,7 @@
                 <and>
                     <if-service-permission service-name="scrumPermissionCheck" main-action="UPDATE" resource-description="BACKLOG"/>
                     <not><if-empty field="product"/></not>
-                    <if-compare operator="equals" value="PRODUCT_ACTIVE" field="product.statusId"/>
+                    <if-empty field="product.supportDiscontinuationDate"/>
                 </and>
             </condition>
             <link target="ProductEmails">
@@ -400,7 +400,7 @@
             <condition>
                 <and>
                     <not><if-empty field="product"/></not>
-                    <if-compare operator="equals" value="PRODUCT_ACTIVE" field="product.statusId"/>
+                    <if-empty field="product.supportDiscontinuationDate"/>
                     <or>
                         <if-compare operator="equals" value="CRQ_ACCEPTED" field="custRequestMap.statusId"/>
                         <if-compare operator="equals" value="CRQ_REVIEWED" field="custRequestMap.statusId"/>
@@ -426,7 +426,7 @@
             <condition>
                 <and>
                     <not><if-empty field="product"/></not>
-                    <if-compare operator="equals" value="PRODUCT_ACTIVE" field="product.statusId"/>
+                    <if-empty field="product.supportDiscontinuationDate"/>
                     <or>
                         <if-compare operator="equals" value="CRQ_ACCEPTED" field="custRequestMap.statusId"/>
                         <if-compare operator="equals" value="CRQ_REVIEWED" field="custRequestMap.statusId"/>
@@ -443,7 +443,7 @@
             <condition>
                 <and>
                     <not><if-empty field="product"/></not>
-                    <if-compare operator="equals" value="PRODUCT_ACTIVE" field="product.statusId"/>
+                    <if-empty field="product.supportDiscontinuationDate"/>
                     <or>
                         <if-compare operator="equals" value="CRQ_ACCEPTED" field="custRequestMap.statusId"/>
                         <if-compare operator="equals" value="CRQ_REVIEWED" field="custRequestMap.statusId"/>
@@ -461,7 +461,7 @@
             <condition>
                 <and>
                     <not><if-empty field="product"/></not>
-                    <if-compare operator="equals" value="PRODUCT_ACTIVE" field="product.statusId"/>
+                    <if-empty field="product.supportDiscontinuationDate"/>
                     <or>
                         <if-compare operator="equals" value="CRQ_ACCEPTED" field="custRequestMap.statusId"/>
                         <if-compare operator="equals" value="CRQ_REVIEWED" field="custRequestMap.statusId"/>
@@ -483,7 +483,7 @@
                 <and>
                     <not><if-empty field="product"/></not>
                     <if-service-permission service-name="scrumPermissionCheck" main-action="VIEW" resource-description="BACKLOG"/>
-                    <if-compare operator="equals" value="PRODUCT_ACTIVE" field="product.statusId"/>
+                    <if-empty field="product.supportDiscontinuationDate"/>
                 </and>
             </condition>
             <link target="AddProdBacklog" style="buttontext create">
@@ -495,7 +495,7 @@
                 <and>
                     <not><if-empty field="product"/></not>
                     <not><if-service-permission service-name="scrumPermissionCheck" main-action="VIEW" resource-description="BACKLOG"/></not>
-                    <if-compare operator="equals" value="PRODUCT_ACTIVE" field="product.statusId"/>
+                    <if-empty field="product.supportDiscontinuationDate"/>
                 </and>
             </condition>
             <link target="ViewTotalBacklog">
@@ -506,7 +506,7 @@
             <condition>
                 <and>
                     <if-service-permission service-name="scrumPermissionCheck" main-action="VIEW" resource-description="BACKLOG"/>
-                    <if-compare operator="equals" value="PRODUCT_ACTIVE" field="product.statusId"/>
+                    <if-empty field="product.supportDiscontinuationDate"/>
                     <if-compare field="custRequestMap.billed" operator="equals" value="N"/>
                     <if-compare field="custRequest.statusId" operator="not-equals" value="CRQ_CANCELLED"/>
                 </and>
@@ -514,6 +514,7 @@
             <link target="updateProductBacklog">
                 <parameter param-name="custRequestId" from-field="parameters.custRequestId"/>
                 <parameter param-name="productId" from-field="parameters.productId"/>
+                <parameter param-name="description" from-field="custRequestMap.description"/>
                 <parameter param-name="billed" value="Y"/>
             </link>
         </menu-item>
@@ -521,7 +522,7 @@
             <condition>
                 <and>
                     <if-service-permission service-name="scrumPermissionCheck" main-action="VIEW" resource-description="BACKLOG"/>
-                    <if-compare operator="equals" value="PRODUCT_ACTIVE" field="product.statusId"/>
+                    <if-empty field="product.supportDiscontinuationDate"/>
                     <if-compare field="custRequestMap.billed" operator="equals" value="Y"/>
                     <if-compare field="custRequest.statusId" operator="not-equals" value="CRQ_CANCELLED"/>
                 </and>
@@ -529,6 +530,7 @@
             <link target="updateProductBacklog">
                 <parameter param-name="custRequestId" from-field="parameters.custRequestId"/>
                 <parameter param-name="productId" from-field="parameters.productId"/>
+                <parameter param-name="description" from-field="custRequestMap.description"/>
                 <parameter param-name="billed" value="N"/>
             </link>
         </menu-item>
@@ -568,7 +570,7 @@
                         <if-compare operator="equals" value="CRQ_REOPENED" field="custRequestMap.statusId"/>
                     </or>
                     <not><if-empty field="product"/></not>
-                    <if-compare operator="equals" value="PRODUCT_ACTIVE" field="product.statusId"/>
+                    <if-empty field="product.supportDiscontinuationDate"/>
                 </and>
             </condition>
             <link target="EditDeleteBacklogItem">
@@ -580,7 +582,7 @@
             <condition>
                 <and>
                     <not><if-empty field="product"/></not>
-                    <if-compare operator="equals" value="PRODUCT_ACTIVE" field="product.statusId"/>
+                    <if-empty field="product.supportDiscontinuationDate"/>
                     <if-compare field="custRequestMap.statusId" operator="equals" value="CRQ_ACCEPTED" />
                     <if-service-permission service-name="scrumPermissionCheck" main-action="CREATE" resource-description="MEMBER"/>
                 </and>
@@ -600,7 +602,7 @@
                         <if-compare operator="equals" value="CRQ_REOPENED" field="custRequestMap.statusId"/>
                     </or>
                     <not><if-empty field="product"/></not>
-                    <if-compare operator="equals" value="PRODUCT_ACTIVE" field="product.statusId"/>
+                    <if-empty field="product.supportDiscontinuationDate"/>
                 </and>
             </condition>
             <link target="editTask">
@@ -636,7 +638,7 @@
                 <and>
                     <not><if-empty field="parameters.productId"/></not>
                     <if-service-permission service-name="scrumPermissionCheck" main-action="UPDATE" resource-description="SPRINT"/>
-                    <if-compare operator="equals" value="PRODUCT_ACTIVE" field="product.statusId"/>
+                    <if-empty field="product.supportDiscontinuationDate"/>
                 </and>
             </condition>
             <link text="New Project" target="newScrumProject" style="buttontext create">
@@ -648,7 +650,7 @@
                 <and>
                     <if-compare field="tabButtonItem" operator="equals" value="defaultTasks"/>
                     <if-service-permission service-name="scrumPermissionCheck" main-action="UPDATE" resource-description="SPRINT"/>
-                    <if-compare operator="equals" value="PRODUCT_ACTIVE" field="product.statusId"/>
+                    <if-empty field="product.supportDiscontinuationDate"/>
                 </and>
             </condition>
             <link text="Create A Default Task" target="editDefaultTask" style="buttontext create">
@@ -660,7 +662,7 @@
                 <and>
                     <if-compare field="tabButtonItem" operator="equals" value="categories"/>
                     <if-service-permission service-name="scrumPermissionCheck" main-action="UPDATE" resource-description="PROJECT"/>
-                    <if-compare operator="equals" value="PRODUCT_ACTIVE" field="product.statusId"/>
+                    <if-empty field="product.supportDiscontinuationDate"/>
                 </and>
             </condition>
             <link text="New Category" target="EditProductBacklogCategory" style="buttontext create">
@@ -673,7 +675,7 @@
                     <not><if-empty field="parameters.productId"/></not>
                     <if-has-permission permission="SCRUM" action="_ADMIN"/>
                     <not><if-empty field="product"/></not>
-                    <if-compare operator="equals" value="PRODUCT_ACTIVE" field="product.statusId"/>
+                    <if-empty field="product.supportDiscontinuationDate"/>
                 </and>
             </condition>
             <link text="Close Product" style="buttontext delete" target="updateProduct" request-confirmation="true" confirmation-message="The product and all related stuff(s) will be removed, Do you want to continue?">
@@ -689,7 +691,7 @@
             <and>
                 <if-compare field="tabButtonItem" operator="equals" value="productComm"/>
                 <if-service-permission service-name="scrumPermissionCheck" main-action="UPDATE" resource-description="TASK"/>
-                <if-compare operator="equals" value="PRODUCT_ACTIVE" field="product.statusId"/>
+                <if-empty field="product.supportDiscontinuationDate"/>
             </and>
             </condition>
             <link target="NewProductEmail" text="${uiLabelMap.ScrumNewEmail}" style="buttontext create">
@@ -702,7 +704,7 @@
                     <if-compare field="tabButtonItem" operator="equals" value="productComm"/>
                     <if-compare-field operator="equals" field="productOwnerId" to-field="communicationEvent.partyIdFrom"/>
                     <if-service-permission service-name="scrumPermissionCheck" main-action="UPDATE" resource-description="TASK"/>
-                    <if-compare operator="equals" value="PRODUCT_ACTIVE" field="product.statusId"/>
+                    <if-empty field="product.supportDiscontinuationDate"/>
                 </and>
             </condition>
             <link target="replyEmailForProduct" style="buttontext" text="${uiLabelMap.ScrumReply}">

Modified: ofbiz/trunk/specialpurpose/scrum/widget/scrumScreens.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/scrum/widget/scrumScreens.xml?rev=1153071&r1=1153070&r2=1153071&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/scrum/widget/scrumScreens.xml (original)
+++ ofbiz/trunk/specialpurpose/scrum/widget/scrumScreens.xml Tue Aug  2 09:00:06 2011
@@ -359,11 +359,13 @@
                 <entity-one entity-name="StatusItem" value-field="currentStatus">
                     <field-map field-name="statusId" from-field="workEffort.currentStatusId"/>
                 </entity-one>
-                <entity-and entity-name="ProductAndRole" list="productAndRoleList">
-                    <field-map field-name="productId" from-field="workEffort.productId"/>
-                    <field-map field-name="statusId" value="PRODUCT_ACTIVE"/>
-                    <field-map field-name="roleTypeId" value="PRODUCT_OWNER_COMP"/>
-                </entity-and>
+                <entity-condition entity-name="ProductAndRole" list="productAndRoleList">
+                    <condition-list>
+                        <condition-expr field-name="productId" operator="equals" from-field="workEffort.productId"/>
+                        <condition-expr field-name="supportDiscontinuationDate" operator="equals" value=""/>
+                        <condition-expr field-name="roleTypeId" operator="equals" value="PRODUCT_OWNER_COMP"/>
+                    </condition-list>
+                </entity-condition>
                 <set field="productAndRoleMap" from-field="productAndRoleList[0]"/>
             </actions>
             <widgets>
@@ -1776,7 +1778,7 @@
                 <set field="tabButtonItem" value="billing"/>
                 <set field="productId" from-field="parameters.productId"/>
                 <entity-one value-field="product" entity-name="Product"/>
-                <set field="includeMeeting" from-field="parameters.includeMeeting" default-value="Y"/>
+                <set field="includeMeeting" from-field="parameters.includeMeeting" default-value="N"/>
                 <set field="organizationPartyId" from-field="userPreferences.ORGANIZATION_PARTY" default-value="${defaultOrganizationPartyId}"/>
                 <script location="component://scrum/webapp/scrum/WEB-INF/actions/ProductBilling.groovy"/>
                 <set field="fromDate" from-field="parameters.fromDate" default-value="${resultDate}" type="Date"/>
@@ -2627,7 +2629,7 @@
                 <set field="tabButtonItem" value="totalBilling"/>
                 <set field="productId" from-field="parameters.productId"/>
                 <entity-one value-field="product" entity-name="Product"/>
-                <set field="includeMeeting" from-field="parameters.includeMeeting" default-value="Y"/>
+                <set field="includeMeeting" from-field="parameters.includeMeeting" default-value="N"/>
                 <set field="organizationPartyId" from-field="userPreferences.ORGANIZATION_PARTY" default-value="${defaultOrganizationPartyId}"/>
                 <script location="component://scrum/webapp/scrum/WEB-INF/actions/ProductBilling.groovy"/>
                 <set field="fromDate" from-field="parameters.fromDate" default-value="${resultDate}" type="Date"/>