You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ha...@apache.org on 2008/12/27 05:20:08 UTC

svn commit: r729591 - in /ofbiz/trunk/specialpurpose/projectmgr: script/org/ofbiz/project/ProjectServices.xml servicedef/services.xml webapp/projectmgr/WEB-INF/controller.xml widget/ProjectScreens.xml widget/forms/ProjectForms.xml

Author: hansbak
Date: Fri Dec 26 20:20:08 2008
New Revision: 729591

URL: http://svn.apache.org/viewvc?rev=729591&view=rev
Log:
can now specify billfrom(organizationParty) and billTo(clientBilling) on the project and use for invoice generation and show separated in the project resource list

Modified:
    ofbiz/trunk/specialpurpose/projectmgr/script/org/ofbiz/project/ProjectServices.xml
    ofbiz/trunk/specialpurpose/projectmgr/servicedef/services.xml
    ofbiz/trunk/specialpurpose/projectmgr/webapp/projectmgr/WEB-INF/controller.xml
    ofbiz/trunk/specialpurpose/projectmgr/widget/ProjectScreens.xml
    ofbiz/trunk/specialpurpose/projectmgr/widget/forms/ProjectForms.xml

Modified: ofbiz/trunk/specialpurpose/projectmgr/script/org/ofbiz/project/ProjectServices.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/projectmgr/script/org/ofbiz/project/ProjectServices.xml?rev=729591&r1=729590&r2=729591&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/projectmgr/script/org/ofbiz/project/ProjectServices.xml (original)
+++ ofbiz/trunk/specialpurpose/projectmgr/script/org/ofbiz/project/ProjectServices.xml Fri Dec 26 20:20:08 2008
@@ -30,6 +30,69 @@
                 <call-simple-method method-name="createWorkEffort" xml-resource="component://workeffort/script/org/ofbiz/workeffort/workeffort/WorkEffortSimpleServices.xml"/>
             </else>
         </if-not-empty>
+        <set field="parameters.workEffortId" from-field="newEntity.workEffortId"/>
+        <if-not-empty field="parameters.organizationPartyId">
+            <set field="updProjectRole.newPartyId" from-field="parameters.organizationPartyId"/>
+            <set field="updProjectRole.roleTypeId" value="INTERNAL_ORGANIZATIO"/>
+            <call-simple-method method-name="updProjectRole"/>
+        </if-not-empty>
+        <if-not-empty field="parameters.clientBillingPartyId">
+            <set field="updProjectRole.newPartyId" from-field="parameters.clientBillingPartyId"/>
+            <set field="updProjectRole.roleTypeId" value="CLIENT_BILLING"/>
+            <call-simple-method method-name="updProjectRole"/>
+        </if-not-empty>
+    </simple-method>
+    
+    <simple-method method-name="updateProject" short-description="Update a project">
+        <set-service-fields service-name="updateWorkEffort" map-name="parameters" to-map-name="updWorkEffort"/>
+        <call-service service-name="updateWorkEffort" in-map-name="updWorkEffort"/>
+        <if-not-empty field="parameters.organizationPartyId">
+            <set field="updProjectRole.newPartyId" from-field="parameters.organizationPartyId"/>
+            <set field="updProjectRole.roleTypeId" value="INTERNAL_ORGANIZATIO"/>
+            <call-simple-method method-name="updProjectRole"/>
+        </if-not-empty>
+        <if-not-empty field="parameters.clientBillingPartyId">
+            <set field="updProjectRole.newPartyId" from-field="parameters.clientBillingPartyId"/>
+            <set field="updProjectRole.roleTypeId" value="CLIENT_BILLING"/>
+            <call-simple-method method-name="updProjectRole"/>
+        </if-not-empty>
+    </simple-method>
+    
+    <simple-method method-name="updProjectRole" 
+        short-description="update/create a specif role and type for a project 
+                            input map: updProjectRole.newPartyId, updProjectRole.roleTypeId">
+        <entity-and entity-name="WorkEffortPartyAssignment" list-name="workEffortPartyAssignments" filter-by-date="true">
+            <field-map field-name="workEffortId" env-name="parameters.workEffortId"/>
+            <field-map field-name="roleTypeId" value="updProjectRole.roleTypeId"/>
+        </entity-and>
+        <!-- end current record if required -->
+        <if-not-empty field="workEffortPartyAssignments">
+            <first-from-list entry-name="workEffortPartyAssignment" list-name="workEffortPartyAssignments"/>
+            <if-compare-field field="updProjectRole.newPartyId" operator="not-equals" to-field="workEffortPartyAssignment.partyId">
+                <now-timestamp-to-env env-name="workEffortPartyAssignment.thruDate"/>
+                <store-value value-name="workEffortPartyAssignment"/>
+            </if-compare-field>
+        </if-not-empty>
+        <!-- create new record if required -->
+        <if>
+            <condition>
+                <or>
+                    <if-empty field="workEffortPartyAssignments"/>
+                    <and>
+                        <not><if-empty field="workEffortPartyAssignments"/></not>
+                        <if-compare-field field="updProjectRole.newPartyId" operator="not-equals" to-field="workEffortPartyAssignment.partyId"/>
+                    </and>
+                </or>
+            </condition>
+            <then>
+                <make-value value-name="workEffortPartyAssignment" entity-name="WorkEffortPartyAssignment"/>
+                <set field="workEffortPartyAssignment.workEffortId" from-field="parameters.workEffortId"/>
+                <set field="workEffortPartyAssignment.partyId" from-field="updProjectRole.newPartyId"/>
+                <set field="workEffortPartyAssignment.roleTypeId" from-field="updProjectRole.roleTypeId"/>
+                <now-timestamp-to-env env-name="workEffortPartyAssignment.fromDate"/>
+                <create-value value-name="workEffortPartyAssignment"/>
+            </then>
+        </if>
     </simple-method>
     
     <simple-method method-name="createProjectTask" short-description="Create a project task and optionally assign">

Modified: ofbiz/trunk/specialpurpose/projectmgr/servicedef/services.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/projectmgr/servicedef/services.xml?rev=729591&r1=729590&r2=729591&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/projectmgr/servicedef/services.xml (original)
+++ ofbiz/trunk/specialpurpose/projectmgr/servicedef/services.xml Fri Dec 26 20:20:08 2008
@@ -57,15 +57,6 @@
         <attribute name="timeEntryId" type="String" mode="IN" optional="true"/>        
     </service>
 
-    <!-- TO BE REMOVED
-    <service name="updateTaskStatus" engine="simple"
-        location="org/ofbiz/project/ProjectServices.xml" invoke="updateTaskStatus">
-        <description>Update task status if required</description>
-        <permission-service service-name="projectMgrPermission" main-action="UPDATE"/>
-        <attribute name="workEffortId" type="String" mode="IN"/>
-    </service>
-    -->
-    
     <service name="updateTimeEntryByWorkeffort" engine="simple"
         location="org/ofbiz/project/ProjectServices.xml" invoke="updateTimeEntryByWorkeffort">
         <description>Update workeffort by workeffortId and timesheetId </description>
@@ -106,11 +97,23 @@
         <attribute name="quickAssignPartyId" type="String" mode="IN" optional="true"/>
         <attribute name="requirementId" type="String" mode="IN" optional="true"/>
         <attribute name="communicationEventId" type="String" mode="IN" optional="true"/>
+        <attribute name="organizationPartyId" type="String" mode="IN" optional="true"/>
+        <attribute name="clientBillingPartyId" type="String" mode="IN" optional="true"/>
         <override name="workEffortTypeId" optional="false"/>
         <override name="workEffortName" optional="false"/>
         <override name="currentStatusId" optional="false"/>
     </service>
     
+    <service name="updateProject" default-entity-name="WorkEffort" engine="simple"
+        location="org/ofbiz/project/ProjectServices.xml" invoke="updateProject">
+        <description>Update a Project</description>
+        <permission-service service-name="projectMgrPermission" main-action="UPDATE"/>
+        <implements service="interfaceWorkEffort"/>
+        <auto-attributes mode="IN" include="pk" optional="false"/>
+        <attribute name="organizationPartyId" type="String" mode="IN" optional="true"/>
+        <attribute name="clientBillingPartyId" type="String" mode="IN" optional="true"/>
+    </service>
+
     <service name="createProjectTask" engine="simple" default-entity-name="WorkEffort"
         location="org/ofbiz/project/ProjectServices.xml" invoke="createProjectTask">
         <description>Create a new task and optionally assign to a resource.</description>

Modified: ofbiz/trunk/specialpurpose/projectmgr/webapp/projectmgr/WEB-INF/controller.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/projectmgr/webapp/projectmgr/WEB-INF/controller.xml?rev=729591&r1=729590&r2=729591&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/projectmgr/webapp/projectmgr/WEB-INF/controller.xml (original)
+++ ofbiz/trunk/specialpurpose/projectmgr/webapp/projectmgr/WEB-INF/controller.xml Fri Dec 26 20:20:08 2008
@@ -79,7 +79,7 @@
     </request-map>
     <request-map uri="updateProject">
         <security https="true" auth="true"/>
-        <event type="service" invoke="updateWorkEffort"/>
+        <event type="service" invoke="updateProject"/>
         <response name="success" type="view" value="projectView"/>
         <response name="error" type="view" value="EditProject"/>
     </request-map>

Modified: ofbiz/trunk/specialpurpose/projectmgr/widget/ProjectScreens.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/projectmgr/widget/ProjectScreens.xml?rev=729591&r1=729590&r2=729591&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/projectmgr/widget/ProjectScreens.xml (original)
+++ ofbiz/trunk/specialpurpose/projectmgr/widget/ProjectScreens.xml Fri Dec 26 20:20:08 2008
@@ -578,9 +578,64 @@
     </screen>
     <screen name="PartiesInfo">
         <section>
+            <actions>
+                <entity-condition entity-name="WorkEffortPartyAssignView" list-name="clientAssigns" distinct="true">
+                    <condition-list combine="and">
+                        <condition-expr field-name="workEffortId" env-name="parameters.projectId" operator="equals"/>
+                        <condition-expr field-name="roleTypeId" value="CLIENT%" operator="like"/>
+                        <condition-expr field-name="roleTypeId" value="CLIENT_BILLING" operator="not-equals"/>
+                    </condition-list>
+                    <select-field field-name="partyId"/>
+                    <select-field field-name="firstName"/>
+                    <select-field field-name="lastName"/>
+                    <select-field field-name="middleName"/>
+                    <select-field field-name="groupName"/>
+                    <select-field field-name="roleTypeId"/>
+                    <order-by field-name="lastName"/>
+                    <order-by field-name="firstName"/>
+                    <order-by field-name="groupName"/>
+                </entity-condition>
+                <entity-condition entity-name="WorkEffortPartyAssignView" list-name="companyAssigns" distinct="true">
+                    <condition-list combine="and">
+                        <condition-expr field-name="workEffortId" env-name="parameters.projectId" operator="equals"/>
+                        <condition-list combine="or">
+                            <condition-expr field-name="roleTypeId" value="INTERNAL_ORGANIZATIO" operator="equals"/>
+                            <condition-expr field-name="roleTypeId" value="CLIENT_BILLING" operator="equals"/>
+                        </condition-list>
+                    </condition-list>
+                    <select-field field-name="partyId"/>
+                    <select-field field-name="firstName"/>
+                    <select-field field-name="lastName"/>
+                    <select-field field-name="middleName"/>
+                    <select-field field-name="groupName"/>
+                    <select-field field-name="roleTypeId"/>
+                    <order-by field-name="lastName"/>
+                    <order-by field-name="firstName"/>
+                    <order-by field-name="groupName"/>
+                </entity-condition>
+            </actions>
             <widgets>
                 <screenlet title="${uiLabelMap.ProjectMgrResources}">
-                    <include-form name="ListProjectParties" location="component://projectmgr/widget/forms/ProjectForms.xml"/>
+                    <label style="h3" text="Providers"></label>
+                    <include-form name="ListProjectProviderParties" location="component://projectmgr/widget/forms/ProjectForms.xml"/>
+                    <section>
+                        <condition>
+                            <not><if-empty field-name="clientAssigns"/></not>
+                        </condition>
+                        <widgets>
+                            <label style="h3" text="ClientContacts"></label>
+                            <include-form name="ListProjectClientParties" location="component://projectmgr/widget/forms/ProjectForms.xml"/>
+                        </widgets>
+                    </section>
+                    <section>
+                        <condition>
+                            <not><if-empty field-name="companyAssigns"/></not>
+                        </condition>
+                        <widgets>
+                            <label style="h3" text="Companies"></label>
+                            <include-form name="ListProjectCompanyParties" location="component://projectmgr/widget/forms/ProjectForms.xml"/>
+                        </widgets>
+                    </section>
                 </screenlet>
             </widgets>
         </section>

Modified: ofbiz/trunk/specialpurpose/projectmgr/widget/forms/ProjectForms.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/projectmgr/widget/forms/ProjectForms.xml?rev=729591&r1=729590&r2=729591&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/projectmgr/widget/forms/ProjectForms.xml (original)
+++ ofbiz/trunk/specialpurpose/projectmgr/widget/forms/ProjectForms.xml Fri Dec 26 20:20:08 2008
@@ -21,6 +21,11 @@
     xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/widget-form.xsd">
     <form name="EditProject" type="single" target="updateProject" default-map-name="project"
         header-row-style="header-row" default-table-style="basic-table">
+        <actions>
+            <entity-one entity-name="PartyGroup" value-name="partyGroup">
+                <field-map field-name="partyId" env-name="partyId"/>
+            </entity-one>
+        </actions>
         <alt-target use-when="project==null" target="createProject"/>
         <field use-when="project==null" name="templateId">
             <drop-down allow-empty="true">
@@ -36,6 +41,12 @@
         <field name="projectDescription" parameter-name="description" title="${uiLabelMap.CommonDescription}"><text/></field>
         <field use-when="project!=null" name="currentStatusId" title="${uiLabelMap.CommonStatus}" parameter-name="dummy"><display-entity entity-name="StatusItem" key-field-name="statusId"/></field>
         <field use-when="project==null" name="currentStatusId"><hidden value="_NA_"/></field>
+        <field name="clientBillingPartyId"><lookup target-form-name="LookupPartyGroup"><sub-hyperlink target="viewprofile?partyId=${partyId}" description="${partyGroup.groupName}"/></lookup></field>
+        <field name="organizationPartyId">
+            <drop-down no-current-selected-key="defaultOrganizationPartyId">
+                <entity-options entity-name="PartyAcctgPrefAndGroup" description="${groupName}" key-field-name="partyId"/>        
+            </drop-down>
+        </field>
         <field name="priority" title="${uiLabelMap.CommonPriority}"><display/></field>
         <field name="scopeEnumId" title="${uiLabelMap.ProjectMgrWorkEffortScopeEnumId}">
             <drop-down allow-empty="false">
@@ -329,16 +340,20 @@
         <field name="plannedHours"><display/></field>
         <field name="actualHours"><display/></field>
     </form>
-    <form name="ListProjectParties" type="list" list-name="assigns"
+    <form name="ListProjectProviderParties" type="list" list-name="assigns"
         odd-row-style="alternate-row" default-table-style="basic-table hover-bar">
         <actions>
             <entity-condition entity-name="WorkEffortPartyAssignView" list-name="assigns" distinct="true">
-                <condition-expr field-name="workEffortId" env-name="parameters.projectId"/>
+                <condition-list combine="and">
+                    <condition-expr field-name="workEffortId" env-name="parameters.projectId" operator="equals"/>
+                    <condition-expr field-name="roleTypeId" value="PROVIDER%" operator="like"/>
+                </condition-list>
                 <select-field field-name="partyId"/>
                 <select-field field-name="firstName"/>
                 <select-field field-name="lastName"/>
                 <select-field field-name="middleName"/>
                 <select-field field-name="groupName"/>
+                <select-field field-name="roleTypeId"/>
                 <order-by field-name="lastName"/>
                 <order-by field-name="firstName"/>
                 <order-by field-name="groupName"/>
@@ -354,9 +369,26 @@
         <field name="partyName" title="${uiLabelMap.CommonName}">
             <hyperlink target="viewprofile?partyId=${partyId}" description="${lastName}, ${firstName} ${middleName} ${groupName} [${partyId}]"/>
         </field>
+        <field name="roleTypeId"><display-entity entity-name="RoleType" description="${description}"/></field>
         <field name="actualHours" entry-name="actualHours" map-name="result.projectInfo"><display/></field>
         <field name="nonBilledHours"  entry-name="actualNonBilledHours" map-name="result.projectInfo"><display/></field>
     </form>
+    <form name="ListProjectClientParties" type="list" list-name="clientAssigns"
+        odd-row-style="alternate-row" default-table-style="basic-table hover-bar">
+        <field name="projectId"><hidden/></field>
+        <field name="partyName" title="${uiLabelMap.CommonName}">
+            <hyperlink target="viewprofile?partyId=${partyId}" description="${lastName}, ${firstName} ${middleName} ${groupName} [${partyId}]"/>
+        </field>
+        <field name="roleTypeId"><display-entity entity-name="RoleType" description="${description}"/></field>
+    </form>
+    <form name="ListProjectCompanyParties" type="list" list-name="companyAssigns"
+        odd-row-style="alternate-row" default-table-style="basic-table hover-bar">
+        <field name="projectId"><hidden/></field>
+        <field name="partyName" title="${uiLabelMap.CommonName}">
+            <hyperlink target="viewprofile?partyId=${partyId}" description="${groupName} [${partyId}]"/>
+        </field>
+        <field name="roleTypeId"><display-entity entity-name="RoleType" description="${description}"/></field>
+    </form>
     <form name="EditProjectSkills" type="list" target="updateProjectSkillStandard" list-name="workEffortSkillStandardList" paginate-target="EditProjectSkills"
         odd-row-style="alternate-row" default-table-style="basic-table hover-bar">
         <field name="workEffortId" title="${uiLabelMap.ProjectMgrWorkEffortId}">
@@ -574,9 +606,21 @@
         <field name="submitButton" title="${uiLabelMap.CommonAdd}" widget-style="smallSubmit"><submit button-type="button"/></field>
     </form>
     <form name="AddProjectTimeToNewInvoice" target="addProjectTimeToNewInvoice" title="" type="single">
+        <actions>
+            <entity-and entity-name="WorkEffortPartyAssignment" list-name="assignOrg" filter-by-date="true">
+                <field-map field-name="workEffortId" env-name="parameters.projectId"/>
+                <field-map field-name="roleTypeId" value="INTERNAL_ORGANIZATIO"/>
+            </entity-and>
+            <set field="partyIdFrom" value="${assignOrg[0].partyId}"/> 
+            <entity-and entity-name="WorkEffortPartyAssignment" list-name="assignBilling" filter-by-date="true">
+                <field-map field-name="workEffortId" env-name="parameters.projectId"/>
+                <field-map field-name="roleTypeId" value="CLIENT_BILLING"/>
+            </entity-and>
+            <set field="partyId" value="${assignBilling[0].partyId}"/> 
+        </actions>
         <field name="projectId"><hidden value="${parameters.projectId}"/></field>
-        <field name="partyIdFrom" title="${uiLabelMap.WorkEffortTimeBillFromParty}"><lookup target-form-name="LookupPartyName"/></field>
-        <field name="partyId" title="${uiLabelMap.WorkEffortTimeBillToParty}"><lookup target-form-name="LookupPartyName" default-value="${timesheet.clientPartyId}"/></field>
+        <field name="partyIdFrom" title="${uiLabelMap.WorkEffortTimeBillFromParty}"><display-entity entity-name="PartyNameView" key-field-name="partyId" description="${groupName}"/></field>
+        <field name="partyId" title="${uiLabelMap.WorkEffortTimeBillToParty}"><display-entity entity-name="PartyNameView" key-field-name="partyId" description="${groupName}"/></field>
         <field name="thruDate" title="${uiLabelMap.CommonThruDate}"><date-time type="timestamp"/></field>
         <field name="invoiceId"><hidden/></field>
         <field name="reCreate" position="1" title="re-create Invoice: ${invoiceId}" use-when="context.get(&quot;invoiceId&quot;)!=null">