Author: mor
Date: Mon Aug 4 09:08:22 2008 New Revision: 682434 URL: http://svn.apache.org/viewvc?rev=682434&view=rev Log: Improved the logic for create/update shipping and billing addresses during checkout on One Page Modified: ofbiz/trunk/applications/ecommerce/script/org/ofbiz/ecommerce/customer/CustomerEvents.xml ofbiz/trunk/applications/ecommerce/webapp/ecommerce/order/OnePageCheckoutProcess.ftl 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=682434&r1=682433&r2=682434&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 Mon Aug 4 09:08:22 2008 @@ -1065,22 +1065,27 @@ </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> - <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}"/> + <if-compare-field field="parameters.shipToContactMechId" operator="equals" to-field="parameters.billToContactMechId"> + <make-value entity-name="PostalAddress" value-name="newValue"/> + <set-pk-fields value-name="newValue" map-name="shipToAddressCtx"/> + <find-by-primary-key entity-name="PostalAddress" map-name="newValue" value-name="oldValue" /> + <set-nonpk-fields map-name="shipToAddressCtx" value-name="newValue"/> + <if-compare-field field="oldValue" to-field="newValue" operator="not-equals" type="Object"> + <entity-and entity-name="PartyContactMechPurpose" list-name="pcmpList" filter-by-date="true"> + <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> + <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="serviceInMap"/> + <call-service service-name="deletePartyContactMechPurposeIfExists" in-map-name="serviceInMap"/> + </if-not-empty> + <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}"/> + </if-compare-field> <else> <call-service service-name="updatePartyPostalAddress" in-map-name="shipToAddressCtx"> <result-to-field result-name="contactMechId" field-name="parameters.shipToContactMechId"/> @@ -1248,7 +1253,6 @@ </simple-method> <simple-method method-name="createUpdateBillingAddress" short-description="create and update billing address"> - <if-compare field="parameters.useShippingAddressForBilling" operator="not-equals" value="Y"> <call-map-processor xml-resource="org/ofbiz/ecommerce/customer/CheckoutMapProcs.xml" processor-name="billToAddress" in-map-name="parameters" out-map-name="billToAddressCtx"/> @@ -1258,22 +1262,30 @@ <set field="billToAddressCtx.partyId" from-field="partyId"/> <if-compare field="parameters.useShippingAddressForBilling" operator="equals" value="Y"> - <set field="billToAddressCtx.contactMechId" from-field="parameters.shipToContactMechId"/> <if-empty field="parameters.billToContactMechId"> - <call-service service-name="createPartyContactMechPurpose" in-map-name="billToAddressCtx"/> + <set-service-fields service-name="createPartyContactMechPurpose" map-name="billToAddressCtx" to-map-name="serviceInMap"/> + <set field="serviceInMap.contactMechId" from-field="parameters.shipToContactMechId"/> + <call-service service-name="createPartyContactMechPurpose" in-map-name="serviceInMap"/> <else> <if-compare-field field="parameters.shipToContactMechId" operator="not-equals" to-field="parameters.billToContactMechId"> - <entity-and entity-name="PartyContactMechPurpose" list-name="pcmpList"> + <entity-and entity-name="PartyContactMechPurpose" list-name="pcmpList" filter-by-date="true"> <field-map field-name="contactMechId" env-name="parameters.billToContactMechId"/> <field-map field-name="partyId" env-name="partyId"/> <field-map field-name="contactMechPurposeTypeId" value="BILLING_LOCATION"/> </entity-and> - <filter-list-by-date list-name="pcmpList"/> - <iterate list-name="pcmpList" entry-name="pcmp"> - <set-service-fields service-name="deletePartyContactMechPurposeIfExists" map-name="pcmp" to-map-name="deletePartyContactMechPurposeCtx"/> - <call-service service-name="deletePartyContactMechPurposeIfExists" in-map-name="deletePartyContactMechPurposeCtx"/> - </iterate> - <call-service service-name="createPartyContactMechPurpose" in-map-name="billToAddressCtx"/> + <first-from-list entry-name="pcmp" list-name="pcmpList"/> + <set-service-fields service-name="deletePartyContactMechPurposeIfExists" map-name="pcmp" to-map-name="serviceInMap"/> + <call-service service-name="deletePartyContactMechPurposeIfExists" in-map-name="serviceInMap"/> + <clear-field field-name="serviceInMap"/> + + <set-service-fields service-name="deletePartyContactMech" map-name="pcmp" to-map-name="serviceInMap"/> + <call-service service-name="deletePartyContactMech" in-map-name="serviceInMap"/> + <clear-field field-name="serviceInMap"/> + + <set-service-fields service-name="createPartyContactMechPurpose" map-name="pcmp" to-map-name="serviceInMap"/> + <set field="serviceInMap.contactMechId" from-field="parameters.shipToContactMechId"/> + <call-service service-name="createPartyContactMechPurpose" in-map-name="serviceInMap"> + </call-service> <log level="info" message="Billing address updated with contactMechId ${parameters.billToContactMechId}"/> </if-compare-field> </else> @@ -1287,39 +1299,26 @@ </call-service> <log level="info" message="Billing address created with contactmechId ${parameters.billToContactMechId}"/> <else> - <entity-and entity-name="PartyContactMechPurpose" list-name="pcmpList"> - <field-map field-name="contactMechId" env-name="parameters.billToContactMechId"/> - <field-map field-name="partyId" env-name="partyId"/> - <field-map field-name="contactMechPurposeTypeId" value="BILLING_LOCATION"/> - </entity-and> - <filter-list-by-date list-name="pcmpList"/> <if-compare-field field="parameters.shipToContactMechId" operator="equals" to-field="parameters.billToContactMechId"> - <iterate list-name="pcmpList" entry-name="pcmp"> - <set-service-fields service-name="deletePartyContactMechPurposeIfExists" map-name="pcmp" to-map-name="deletePartyContactMechPurposeCtx"/> - <call-service service-name="deletePartyContactMechPurposeIfExists" in-map-name="deletePartyContactMechPurposeCtx"/> - </iterate> + <entity-and entity-name="PartyContactMechPurpose" list-name="pcmpList" filter-by-date="true"> + <field-map field-name="contactMechId" env-name="parameters.billToContactMechId"/> + <field-map field-name="partyId" env-name="partyId"/> + <field-map field-name="contactMechPurposeTypeId" value="BILLING_LOCATION"/> + </entity-and> + <first-from-list entry-name="pcmp" list-name="pcmpList"/> + + <set-service-fields service-name="deletePartyContactMechPurposeIfExists" map-name="pcmp" to-map-name="serviceInMap"/> + <call-service service-name="deletePartyContactMechPurposeIfExists" in-map-name="serviceInMap"/> + <call-service service-name="createPartyPostalAddress" in-map-name="billToAddressCtx"> <result-to-field result-name="contactMechId" field-name="parameters.billToContactMechId"/> </call-service> <log level="info" message="Billing address updated with contactMechId ${parameters.billToContactMechId}"/> <else> - <first-from-list list-name="pcmpList" entry-name="pcmp"/> - <if-compare-field field="parameters.billToContactMechId" operator="equals" to-field="pcmp.contactMechId"> - <call-service service-name="updatePartyPostalAddress" in-map-name="billToAddressCtx"> - <result-to-field result-name="contactMechId" field-name="parameters.billToContactMechId"/> - </call-service> - <log level="info" message="Billing Postal Address Updated billToContactMechId is ${parameters.billToContactMechId}"/> - <else> - <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> - <call-service service-name="createPartyPostalAddress" in-map-name="billToAddressCtx"> - <result-to-field result-name="contactMechId" field-name="parameters.billToContactMechId"/> - </call-service> - <log level="info" message="Billing Postal Address created billToContactMechId is ${parameters.billToContactMechId}"/> - </else> - </if-compare-field> + <call-service service-name="updatePartyPostalAddress" in-map-name="billToAddressCtx"> + <result-to-field result-name="contactMechId" field-name="parameters.billToContactMechId"/> + </call-service> + <log level="info" message="Billing Postal Address created billToContactMechId is ${parameters.billToContactMechId}"/> </else> </if-compare-field> </else> Modified: ofbiz/trunk/applications/ecommerce/webapp/ecommerce/order/OnePageCheckoutProcess.ftl URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/ecommerce/webapp/ecommerce/order/OnePageCheckoutProcess.ftl?rev=682434&r1=682433&r2=682434&view=diff ============================================================================== --- ofbiz/trunk/applications/ecommerce/webapp/ecommerce/order/OnePageCheckoutProcess.ftl (original) +++ ofbiz/trunk/applications/ecommerce/webapp/ecommerce/order/OnePageCheckoutProcess.ftl Mon Aug 4 09:08:22 2008 @@ -289,6 +289,7 @@ <div id="editShippingPanel" class="screenlet-body" style="display: none;"> <form name="shippingForm" id="shippingForm" action="<@ofbizUrl>createUpdateShippingAddress</@ofbizUrl>" method="post"> <input type="hidden" id="shipToContactMechId" name="shipToContactMechId" value="${parameters.shipToContactMechId?if_exists}"/> + <input type="hidden" name="billToContactMechId" value="${parameters.billToContactMechId?if_exists}"/> <input type="hidden" id="shippingPartyId" name="partyId" value="${parameters.partyId?if_exists}"/> <input type="hidden" name="userLogin" value="${parameters.userLogin?if_exists}"/> <input type="hidden" id="phoneContactMechId" name="phoneContactMechId" value="${parameters.phoneContactMechId?if_exists}"/> |
Free forum by Nabble | Edit this page |