Author: mor
Date: Thu Jul 31 05:20:38 2008
New Revision: 681354

URL: http://svn.apache.org/viewvc?rev=681354&view=rev
Log:
Splitting the method createUpdateCustomerAndShippingAddress on One Page 
Checkout customer events into separate smaller methods. This way these methods 
can be re-used in other methods. Thanks to Sumit Pandit, Jyotsna Rathore and 
Brajesh Patel for their efforts ...

Modified:
    
ofbiz/trunk/applications/ecommerce/script/org/ofbiz/ecommerce/customer/CustomerEvents.xml
    ofbiz/trunk/applications/ecommerce/webapp/ecommerce/WEB-INF/controller.xml

Modified: 
ofbiz/trunk/applications/ecommerce/script/org/ofbiz/ecommerce/customer/CustomerEvents.xml
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/ecommerce/script/org/ofbiz/ecommerce/customer/CustomerEvents.xml?rev=681354&r1=681353&r2=681354&view=diff
==============================================================================
--- 
ofbiz/trunk/applications/ecommerce/script/org/ofbiz/ecommerce/customer/CustomerEvents.xml
 (original)
+++ 
ofbiz/trunk/applications/ecommerce/script/org/ofbiz/ecommerce/customer/CustomerEvents.xml
 Thu Jul 31 05:20:38 2008
@@ -844,8 +844,9 @@
            </if-not-empty>
        </if-not-empty>
     </simple-method>
-    
-    <simple-method method-name="createUpdateCustomerAndShippingContact" 
+
+    <!-- One page checkout process  -->
+    <simple-method method-name="createUpdateCustomerAndShippingAddress" 
             short-description="Create/Update Customer, Shipping Address and 
other contact details. Set shipping method type" login-required="false">
         <set field="shoppingCart" from-field="parameters.shoppingCart"/>
         <set field="partyId" from-field="parameters.partyId"/>
@@ -854,7 +855,7 @@
 
         <if-empty field="userLogin">
             <session-to-field field-name="userLogin" session-name="userLogin"/>
-        </if-empty>        
+        </if-empty>
         <if-empty field="shoppingCart">
             <session-to-field field-name="shoppingCart"/>
         </if-empty>
@@ -871,19 +872,37 @@
         <if-empty field="shipToContactMechId">
            <set field="shipToContactMechId" 
from-field="parameters.shipToContactMechId"/>
         </if-empty>
-        <set field="parameters.shipToName"  value="${parameters.firstName} 
${parameters.lastName}"/>
 
+        <call-simple-method method-name="createUpdatePersonAndUserLogin"/>
+        <call-simple-method method-name="createUpdateShippingAddress"/>
+        <set field="parameters.phoneContactMechPurposeTypeId" 
value="PRIMARY_PHONE"/>
+        <call-simple-method method-name="createUpdateTelecomNumber"/>
+        <set field="parameters.emailContactMechPurposeTypeId" 
value="PRIMARY_EMAIL"/>
+        <call-simple-method method-name="createUpdateEmailAddress"/>
+
+        <!-- Set partyId, in shoppingCart -->
+        <call-object-method obj-field-name="shoppingCart" 
method-name="setUserLogin">
+            <field field-name="userLogin" 
type="org.ofbiz.entity.GenericValue"/>
+            <field field-name="dispatcher" 
type="org.ofbiz.service.LocalDispatcher"/>
+        </call-object-method>
+        <call-object-method obj-field-name="shoppingCart" 
method-name="addContactMech">
+            <string value="SHIPPING_LOCATION"/>
+            <field field-name="parameters.shipToContactMechId"/>
+        </call-object-method>
+        <call-object-method obj-field-name="shoppingCart" 
method-name="setShippingContactMechId">
+            <field field-name="parameters.shipToContactMechId"/>
+        </call-object-method>
+        <log level="info" message="updated shopping cart shipToContactMechId 
${parameters.shipToContactMechId}"/>
+        <call-object-method obj-field-name="shoppingCart" 
method-name="setOrderPartyId">
+            <field field-name="partyId"/>
+        </call-object-method>
+    </simple-method>
+
+    <simple-method method-name="createUpdatePersonAndUserLogin" 
short-description="create and update person and user login" 
login-required="false">
+        <set field="parameters.shipToName"  value="${parameters.firstName} 
${parameters.lastName}"/>
         <call-map-processor 
xml-resource="org/ofbiz/ecommerce/customer/CheckoutMapProcs.xml"
                 processor-name="person" in-map-name="parameters" 
out-map-name="personMap"/>
-        <call-map-processor 
xml-resource="org/ofbiz/ecommerce/customer/CheckoutMapProcs.xml"
-                processor-name="phoneNumber" in-map-name="parameters" 
out-map-name="phoneContext"/>
-        <call-map-processor 
xml-resource="org/ofbiz/ecommerce/customer/CheckoutMapProcs.xml"
-                processor-name="emailAddress" in-map-name="parameters" 
out-map-name="emailAddressContext"/>
-        <call-map-processor 
xml-resource="org/ofbiz/ecommerce/customer/CheckoutMapProcs.xml"
-                processor-name="shipToAddress" in-map-name="parameters" 
out-map-name="shipToAddressContext"/>
-        <check-errors/>
 
-        <!-- person and userLogin -->
         <set-service-fields service-name="createPerson"  map-name="personMap" 
to-map-name="personContext"/>
         <set field="personContext.userLogin" from-field="userLogin"/>
         <if-empty field="partyId">
@@ -893,8 +912,9 @@
 
             <!-- the rest of the methods require a userLogin object; so if we 
are anonymous lets fake it -->
             <if-empty field="userLogin">
-                <set field="ulLookup.userLoginId" value="anonymous"/>
-                <find-by-primary-key entity-name="UserLogin" 
map-name="ulLookup" value-name="userLogin"/>
+                <entity-one entity-name="UserLogin" value-name="userLogin">
+                    <field-map field-name="userLoginId" value="anonymous"/>
+                </entity-one>
                 <set field="userLogin.partyId" from-field="partyId"/>
                 <set-current-user-login value-name="userLogin"/>
             <else>
@@ -922,35 +942,17 @@
         <field-to-request field-name="partyId" request-name="partyId"/>
         <field-to-request field-name="userLogin" request-name="userLogin"/>
         <log level="info" message=" ${partyId}"/>
+    </simple-method>
 
-        <!-- Create Or Update ship to address.-->
-        <set field="shipToAddressContext.partyId" from-field="partyId"/>
-        <set field="shipToAddressContext.roleTypeId" 
from-field="parameters.roleTypeId"/>
-        <set field="shipToAddressContext.userLogin" from-field="userLogin"/>
+    <simple-method method-name="createUpdateTelecomNumber" 
short-description="Create and update phone number" login-required="false">
+        <call-map-processor 
xml-resource="org/ofbiz/ecommerce/customer/CheckoutMapProcs.xml"
+                processor-name="phoneNumber" in-map-name="parameters" 
out-map-name="phoneContext"/>
         
-        <if-empty field="shipToContactMechId">
-            <set field="shipToAddressContext.contactMechPurposeTypeId" 
value="SHIPPING_LOCATION"/>
-            <call-service service-name="createPartyPostalAddress" 
in-map-name="shipToAddressContext">
-                <result-to-field result-name="contactMechId" 
map-name="shipToAddressPurposeContext"/>
-                <result-to-field result-name="contactMechId" 
field-name="parameters.shipToContactMechId"/>
-            </call-service>
-            <log level="info" message="Shipping Postal Address created 
shipToContactMechId is ${parameters.shipToContactMechId}"></log>
-        <else>
-            <set field="shipToAddressContext.contactMechId" 
from-field="shipToContactMechId"/>
-            <call-service service-name="updatePartyPostalAddress" 
in-map-name="shipToAddressContext">
-                <result-to-field result-name="contactMechId" 
field-name="parameters.shipToContactMechId"/>
-            </call-service>
-            <log level="info" message="Shipping Postal Address Updated 
shipToContactMechId is ${parameters.shipToContactMechId}"></log>
-        </else>
-        </if-empty>
-        <field-to-request field-name="parameters.shipToContactMechId" 
request-name="shipToContactMechId"/>
-
-        <!-- Create or Update phone -->
         <set field="phoneContext.partyId" from-field="partyId"/>
         <set field="phoneContext.roleTypeId" 
from-field="parameters.roleTypeId"/>
         <set field="phoneContext.userLogin" from-field="userLogin"/>
         <if-empty field="parameters.phoneContactMechId">
-            <set field="phoneContext.contactMechPurposeTypeId" 
value="PHONE_WORK"/>
+            <set field="phoneContext.contactMechPurposeTypeId" 
from-field="parameters.phoneContactMechPurposeTypeId"/>
             <call-service service-name="createPartyTelecomNumber" 
in-map-name="phoneContext">
                 <result-to-field result-name="contactMechId" 
field-name="parameters.phoneContactMechId"/>
             </call-service>
@@ -965,12 +967,17 @@
         </else>
         </if-empty>
         <field-to-request field-name="parameters.phoneContactMechId" 
request-name="phoneContactMechId"/>
-        
+    </simple-method>
+
+    <simple-method method-name="createUpdateEmailAddress" 
short-description="Create and update phone number" login-required="false">
+        <call-map-processor 
xml-resource="org/ofbiz/ecommerce/customer/CheckoutMapProcs.xml"
+                processor-name="emailAddress" in-map-name="parameters" 
out-map-name="emailAddressContext"/>
+
         <!-- Create Or Update email address -->
         <set  field="emailAddressContext.partyId" from-field="partyId"/>
         <set field="emailAddressContext.userLogin" from-field="userLogin"/>
         <if-empty field="parameters.emailContactMechId">
-            <set field="emailAddressContext.contactMechPurposeTypeId" 
value="PRIMARY_EMAIL" />
+            <set field="emailAddressContext.contactMechPurposeTypeId" 
from-field="parameters.emailContactMechPurposeTypeId"/>
             <call-service service-name="createPartyEmailAddress" 
in-map-name="emailAddressContext">
                 <result-to-field result-name="contactMechId" 
field-name="parameters.emailContactMechId"/>
             </call-service>
@@ -985,23 +992,47 @@
         </else>
         </if-empty>
         <field-to-request field-name="parameters.emailContactMechId" 
request-name="emailContactMechId"/>
-        
-        <!-- Set partyId, in shoppingCart -->
-        <call-object-method obj-field-name="shoppingCart" 
method-name="setUserLogin">
-            <field field-name="userLogin" 
type="org.ofbiz.entity.GenericValue"/>
-            <field field-name="dispatcher" 
type="org.ofbiz.service.LocalDispatcher"/>
-        </call-object-method>
-        <call-object-method obj-field-name="shoppingCart" 
method-name="addContactMech">
-            <string value="SHIPPING_LOCATION"/>
-            <field field-name="parameters.shipToContactMechId"/>
-        </call-object-method>
-        <call-object-method obj-field-name="shoppingCart" 
method-name="setShippingContactMechId">
-            <field field-name="parameters.shipToContactMechId"/>
-        </call-object-method>
-        <log level="info" message="updated shopping cart shipToContactMechId 
${parameters.shipToContactMechId}"/>
-        <call-object-method obj-field-name="shoppingCart" 
method-name="setOrderPartyId">
-            <field field-name="partyId"/>
-        </call-object-method>
+    </simple-method>
+
+    <simple-method method-name="createUpdateShippingAddress" 
short-description="create and update shipping address" login-required="false">
+        <call-map-processor 
xml-resource="org/ofbiz/ecommerce/customer/CheckoutMapProcs.xml"
+            processor-name="shipToAddress" in-map-name="parameters" 
out-map-name="shipToAddressCtx"/>
+        <check-errors/>
+        <set field="shipToAddressCtx.partyId" from-field="partyId"/>
+        <if-empty field="parameters.shipToContactMechId">
+            <set field="shipToAddressCtx.contactMechPurposeTypeId" 
value="SHIPPING_LOCATION"/>
+            <call-service service-name="createPartyPostalAddress" 
in-map-name="shipToAddressCtx">
+                <result-to-field result-name="contactMechId" 
field-name="parameters.shipToContactMechId"/>
+            </call-service>
+            <log level="info" message="Shipping address created with 
contactMechId ${parameters.shipToContactMechId}"/>
+        <else>
+            <if-compare-field field="parameters.shipToContactMechId" 
operator="equals" to-field="parameters.billTocontactMechId">
+                <entity-and entity-name="PartyContactMechPurpose" 
list-name="pcmpList">
+                    <field-map field-name="contactMechId" 
env-name="parameters.shipToContactMechId"/>
+                    <field-map field-name="partyId" env-name="partyId"/>
+                    <field-map field-name="contactMechPurposeTypeId" 
value="SHIPPING_LOCATION"/>
+                </entity-and>
+                <filter-list-by-date list-name="pcmpList"/>
+                <first-from-list list-name="pcmpList" entry-name="pcmp"/>
+                <if-not-empty field="pcmp">
+                    <set-service-fields 
service-name="deletePartyContactMechPurposeIfExists" map-name="pcmp" 
to-map-name="deletePartyContactMechPurposeCtx"/>
+                    <call-service 
service-name="deletePartyContactMechPurposeIfExists" 
in-map-name="deletePartyContactMechPurposeCtx"/>
+                </if-not-empty>
+                <set field="shipToAddressCtx.contactMechPurposeTypeId" 
value="SHIPPING_LOCATION"/>
+                <call-service service-name="createPartyPostalAddress" 
in-map-name="shipToAddressCtx">
+                    <result-to-field result-name="contactMechId" 
field-name="parameters.shipToContactMechId"/>
+                </call-service>
+                <log level="info" message="Shipping address updated with 
contactMechId ${parameters.shipToContactMechId}"/>
+            <else>
+                <call-service service-name="updatePartyPostalAddress" 
in-map-name="shipToAddressCtx">
+                    <result-to-field result-name="contactMechId" 
field-name="parameters.shipToContactMechId"/>
+                </call-service>
+                <log level="info" message="Shipping address updated with 
contactMechId ${parameters.shipToContactMechId}"/>
+            </else>
+            </if-compare-field>
+        </else>
+        </if-empty>
+        <field-to-request field-name="parameters.shipToContactMechId" 
request-name="shipToContactMechId"/>
     </simple-method>
 
     <simple-method method-name="getShipOptions" short-description="Get 
shipping options" login-required="false">
@@ -1128,10 +1159,15 @@
             <call-object-method obj-field-name="shoppingCart" 
method-name="getPartyId" ret-field-name="partyId"/>
             <call-object-method obj-field-name="shoppingCart" 
method-name="getUserLogin" ret-field-name="userLogin"/>
             <call-object-method obj-field-name="shoppingCart" 
method-name="getShippingContactMechId" ret-field-name="shipToContactMechId"/>
+        <else>
+            <set field="partyId" from-field="parameters.partyId"/>
+            <session-to-field field-name="userLogin"/>
+            <if-empty field="userLogin">
+                <set field="userLogin" from-field="parameters.userLogin"/>
+            </if-empty>
+            <set field="shipToContactMechId" 
from-field="parameters.shipToContactMechId"/>
+        </else>
         </if-not-empty>
-        <if-empty field="parameters.shipToContactMechId">
-            <set field="parameters.shipToContactMechId" 
from-field="shipToContactMechId"/>
-        </if-empty>
         <set-current-user-login value-name="userLogin"/>
 
         <!--=================== Validate Bill and Payment settings 
================-->

Modified: 
ofbiz/trunk/applications/ecommerce/webapp/ecommerce/WEB-INF/controller.xml
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/ecommerce/webapp/ecommerce/WEB-INF/controller.xml?rev=681354&r1=681353&r2=681354&view=diff
==============================================================================
--- ofbiz/trunk/applications/ecommerce/webapp/ecommerce/WEB-INF/controller.xml 
(original)
+++ ofbiz/trunk/applications/ecommerce/webapp/ecommerce/WEB-INF/controller.xml 
Thu Jul 31 05:20:38 2008
@@ -1600,7 +1600,7 @@
      
     <request-map uri="createUpdateShippingAddress">
         <security https="true" auth="false"/>
-        <event type="jsonsimple" 
path="org/ofbiz/ecommerce/customer/CustomerEvents.xml" 
invoke="createUpdateCustomerAndShippingContact"/>
+        <event type="jsonsimple" 
path="org/ofbiz/ecommerce/customer/CustomerEvents.xml" 
invoke="createUpdateCustomerAndShippingAddress"/>
         <response name="success" type="none"/>
         <response name="error" type="none"/>
     </request-map>


Reply via email to