Author: mor
Date: Thu May 8 09:47:55 2008 New Revision: 654579 URL: http://svn.apache.org/viewvc?rev=654579&view=rev Log: Merge contacts tool, patch applied from OFBIZ-1650 (https://issues.apache.org/jira/browse/OFBIZ-1650) - still need improvements, Thanks Jyotsna for patch and also thanks to Mridul Pathak for reviewing this work Added: ofbiz/trunk/applications/marketing/webapp/sfa/WEB-INF/action/ ofbiz/trunk/applications/marketing/webapp/sfa/WEB-INF/action/mergeContacts.bsh (with props) ofbiz/trunk/applications/marketing/webapp/sfa/contact/ ofbiz/trunk/applications/marketing/webapp/sfa/contact/mergeContacts.ftl (with props) Modified: ofbiz/trunk/applications/marketing/config/MarketingUiLabels.xml ofbiz/trunk/applications/marketing/script/org/ofbiz/sfa/contact/ContactServices.xml ofbiz/trunk/applications/marketing/servicedef/services.xml ofbiz/trunk/applications/marketing/webapp/sfa/WEB-INF/controller.xml ofbiz/trunk/applications/marketing/widget/sfa/ContactScreens.xml ofbiz/trunk/applications/marketing/widget/sfa/forms/ContactForms.xml Modified: ofbiz/trunk/applications/marketing/config/MarketingUiLabels.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/marketing/config/MarketingUiLabels.xml?rev=654579&r1=654578&r2=654579&view=diff ============================================================================== --- ofbiz/trunk/applications/marketing/config/MarketingUiLabels.xml (original) +++ ofbiz/trunk/applications/marketing/config/MarketingUiLabels.xml Thu May 8 09:47:55 2008 @@ -1134,6 +1134,9 @@ <property key="SfaCompanyName"> <value xml:lang="en">OFBiz: SFA Manager</value> </property> + <property key="SfaCanNotMergeSameContact"> + <value xml:lang="en">Failed to merge contacts. You have selected same contact to merge.</value> + </property> <property key="SfaCompetitors"> <value xml:lang="en">Competitors & Partners </value> </property> @@ -1167,6 +1170,9 @@ <property key="SfaFindResults"> <value xml:lang="en">Find Results</value> </property> + <property key="SfaFirstContact"> + <value xml:lang="en">First Contact</value> + </property> <property key="SfaForecasts"> <value xml:lang="en">Forecast</value> </property> @@ -1191,6 +1197,12 @@ <property key="SfaManagerWelcome"> <value xml:lang="en">Welcome to the SFA Manager Application</value> </property> + <property key="SfaMergeContacts"> + <value xml:lang="en">Merge Contacts</value> + </property> + <property key="SfaMergeParty"> + <value xml:lang="en">Merge Party</value> + </property> <property key="SfaNewOpportunity"> <value xml:lang="en">Create New Opportunity</value> </property> @@ -1221,6 +1233,9 @@ <property key="SfaQuickAddContactForm"> <value xml:lang="en">Quick Add Contact Form</value> </property> + <property key="SfaSecondContact"> + <value xml:lang="en">Second Contact</value> + </property> <property key="SfaType"> <value xml:lang="en">Type</value> </property> Modified: ofbiz/trunk/applications/marketing/script/org/ofbiz/sfa/contact/ContactServices.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/marketing/script/org/ofbiz/sfa/contact/ContactServices.xml?rev=654579&r1=654578&r2=654579&view=diff ============================================================================== --- ofbiz/trunk/applications/marketing/script/org/ofbiz/sfa/contact/ContactServices.xml (original) +++ ofbiz/trunk/applications/marketing/script/org/ofbiz/sfa/contact/ContactServices.xml Thu May 8 09:47:55 2008 @@ -30,5 +30,154 @@ <set field="partyRelationContext.roleTypeIdFrom" value="_NA_"/> <set field="partyRelationContext.partyRelationshipTypeId" value="CONTACT_REL"></set> <call-service service-name="createPartyRelationship" in-map-name="partyRelationContext"/> + <field-to-result field-name="partyId"/> + </simple-method> + + <simple-method short-description="Merge two Contacts" method-name="mergeContacts"> + <set field="partyIdTo" from-field="parameters.partyId_1"/> + <set field="contactMechIdGenLoc_1" from-field="parameters.contactMechIdGenLoc_1"/> + <set field="contactMechIdPrimPhone_1" from-field="parameters.contactMechIdPrimPhone_1"/> + <set field="contactMechIdEmail_1" from-field="parameters.contactMechIdEmail_1"/> + <set field="partyId" from-field="parameters.partyId_2"/> + <set field="contactMechIdGenLoc_2" from-field="parameters.contactMechIdGenLoc_2"/> + <set field="contactMechIdPrimPhone_2" from-field="parameters.contactMechIdPrimPhone_2"/> + <set field="contactMechIdEmail_2" from-field="parameters.contactMechIdEmail_2"/> + <if-compare-field field-name="partyIdTo" operator="not-equals" to-field-name="partyId"> + <if-compare field-name="parameters.useAddress2" operator="equals" value="Y" > + <if-not-empty field-name="contactMechIdGenLoc_2"> + <if-not-empty field-name="contactMechIdGenLoc_1"> + <set field="deletePartyContactMechPurposeCtx.partyId" from-field="partyIdTo"/> + <set field="deletePartyContactMechPurposeCtx.contactMechId" from-field="contactMechIdGenLoc_1"/> + <set field="deletePartyContactMechPurposeCtx.contactMechPurposeTypeId" value="GENERAL_LOCATION"/> + <set field="deletePartyContactMechPurposeCtx.fromDate" from-field="parameters.fromDateGenLoc_1"/> + <call-service service-name="deletePartyContactMechPurpose" in-map-name="deletePartyContactMechPurposeCtx"/> + + <set field="deletePartyContactMechCtx.partyId" from-field="partyIdTo"/> + <set field="deletePartyContactMechCtx.contactMechId" from-field="contactMechIdGenLoc_1"/> + <call-service service-name="deletePartyContactMech" in-map-name="deletePartyContactMechCtx"/> + + <clear-field field-name="deletePartyContactMechPurposeCtx"/> + <clear-field field-name="deletePartyContactMechCtx"/> + </if-not-empty> + + <set field="deletePartyContactMechPurposeCtx.partyId" from-field="partyId"/> + <set field="deletePartyContactMechPurposeCtx.contactMechId" from-field="contactMechIdGenLoc_2"/> + <set field="deletePartyContactMechPurposeCtx.contactMechPurposeTypeId" value="GENERAL_LOCATION"/> + <set field="deletePartyContactMechPurposeCtx.fromDate" from-field="parameters.fromDateGenLoc_2"/> + <call-service service-name="deletePartyContactMechPurpose" in-map-name="deletePartyContactMechPurposeCtx"/> + + <set field="deletePartyContactMechCtx.partyId" from-field="partyId"/> + <set field="deletePartyContactMechCtx.contactMechId" from-field="contactMechIdGenLoc_2"/> + <call-service service-name="deletePartyContactMech" in-map-name="deletePartyContactMechCtx_2"/> + + <clear-field field-name="deletePartyContactMechPurposeCtx"/> + <clear-field field-name="deletePartyContactMechCtx"/> + + <set field="createPartyContactMechCtx.partyId" from-field="partyIdTo"/> + <set field="createPartyContactMechCtx.contactMechId" from-field="contactMechIdGenLoc_2"/> + <call-service service-name="createPartyContactMech" in-map-name="createPartyContactMechCtx"> + <result-to-field result-name="contactMechId" field-name="contactMechIdGenLoc"/> + </call-service> + + <set field="createPartyContactMechPurposeCtx.partyId" from-field="partyIdTo"/> + <set field="createPartyContactMechPurposeCtx.contactMechId" from-field="contactMechIdGenLoc_2"/> + <set field="createPartyContactMechPurposeCtx.contactMechPurposeTypeId" value="GENERAL_LOCATION"/> + <call-service service-name="createPartyContactMechPurpose" in-map-name="createPartyContactMechPurposeCtx"/> + + <clear-field field-name="createPartyContactMechCtx"/> + <clear-field field-name="createPartyContactMechPurposeCtx"/> + </if-not-empty> + </if-compare> + <if-compare field-name="parameters.useContactNum2" operator="equals" value="Y" > + <if-not-empty field-name="contactMechIdPrimPhone_2"> + <if-not-empty field-name="contactMechIdPrimPhone_1"> + <set field="deletePartyContactMechPurposeCtx.partyId" from-field="partyIdTo"/> + <set field="deletePartyContactMechPurposeCtx.contactMechId" from-field="contactMechIdPrimPhone_1"/> + <set field="deletePartyContactMechPurposeCtx.contactMechPurposeTypeId" value="PRIMARY_PHONE"/> + <set field="deletePartyContactMechPurposeCtx.fromDate" from-field="parameters.fromDateTelecom_1"/> + <call-service service-name="deletePartyContactMechPurpose" in-map-name="deletePartyContactMechPurposeCtx"/> + + <set field="deletePartyContactMechCtx.partyId" from-field="partyIdTo"/> + <set field="deletePartyContactMechCtx.contactMechId" from-field="contactMechIdPrimPhone_1"/> + <call-service service-name="deletePartyContactMech" in-map-name="deletePartyContactMechCtx"/> + + <clear-field field-name="deletePartyContactMechPurposeCtx"/> + <clear-field field-name="deletePartyContactMechCtx"/> + </if-not-empty> + + <set field="deletePartyContactMechPurposeCtx.partyId" from-field="partyId"/> + <set field="deletePartyContactMechPurposeCtx.contactMechId" from-field="contactMechIdPrimPhone_2"/> + <set field="deletePartyContactMechPurposeCtx.contactMechPurposeTypeId" value="PRIMARY_PHONE"/> + <set field="deletePartyContactMechPurposeCtx.fromDate" from-field="parameters.fromDateTelecom_2"/> + <call-service service-name="deletePartyContactMechPurpose" in-map-name="deletePartyContactMechPurposeCtx"/> + + <set field="deletePartyContactMechCtx.partyId" from-field="partyId"/> + <set field="deletePartyContactMechCtx.contactMechId" from-field="contactMechIdPrimPhone_2"/> + <call-service service-name="deletePartyContactMech" in-map-name="deletePartyContactMechCtx"/> + + <clear-field field-name="deletePartyContactMechPurposeCtx"/> + <clear-field field-name="deletePartyContactMechCtx"/> + + <set field="createPartyContactMechCtx.partyId" from-field="partyIdTo"/> + <set field="createPartyContactMechCtx.contactMechId" from-field="contactMechIdPrimPhone_2"/> + <call-service service-name="createPartyContactMech" in-map-name="createPartyContactMechCtx"> + <result-to-field result-name="contactMechId" field-name="contactMechIdPhone"/> + </call-service> + <set field="createPartyContactMechPurposeCtx.partyId" from-field="partyIdTo"/> + <set field="createPartyContactMechPurposeCtx.contactMechId" from-field="contactMechIdPrimPhone_2"/> + <set field="createPartyContactMechPurposeCtx.contactMechPurposeTypeId" value="PRIMARY_PHONE"/> + <call-service service-name="createPartyContactMechPurpose" in-map-name="createPartyContactMechPurposeCtx"/> + + <clear-field field-name="createPartyContactMechCtx"/> + <clear-field field-name="createPartyContactMechPurposeCtx"/> + </if-not-empty> + </if-compare> + <if-compare field-name="parameters.useEmail2" operator="equals" value="Y" > + <if-not-empty field-name="contactMechIdEmail_2"> + <if-not-empty field-name="contactMechIdEmail_1"> + + <set field="deletePartyContactMechPurposeCtx.partyId" from-field="partyIdTo"/> + <set field="deletePartyContactMechPurposeCtx.contactMechId" from-field="contactMechIdEmail_1"/> + <set field="deletePartyContactMechPurposeCtx.contactMechPurposeTypeId" value="PRIMARY_EMAIL"/> + <set field="deletePartyContactMechPurposeCtx.fromDate" from-field="parameters.fromDateEmail_1"/> + <call-service service-name="deletePartyContactMechPurpose" in-map-name="deletePartyContactMechPurposeCtx"/> + + <set field="deletePartyContactMechCtx.partyId" from-field="partyIdTo"/> + <set field="deletePartyContactMechCtx.contactMechId" from-field="contactMechIdEmail_1"/> + <call-service service-name="deletePartyContactMech" in-map-name="deletePartyContactMechCtx"/> + + <clear-field field-name="deletePartyContactMechPurposeCtx"/> + <clear-field field-name="deletePartyContactMechCtx"/> + </if-not-empty> + + <set field="deletePartyContactMechPurposeCtx.partyId" from-field="partyId"/> + <set field="deletePartyContactMechPurposeCtx.contactMechId" from-field="contactMechIdEmail_2"/> + <set field="deletePartyContactMechPurposeCtx.contactMechPurposeTypeId" value="PRIMARY_EMAIL"/> + <set field="deletePartyContactMechPurposeCtx.fromDate" from-field="parameters.fromDateEmail_2"/> + <call-service service-name="deletePartyContactMechPurpose" in-map-name="deletePartyContactMechPurposeCtx"/> + + <set field="deletePartyContactMechCtx.partyId" from-field="partyId"/> + <set field="deletePartyContactMechCtx.contactMechId" from-field="contactMechIdEmail_2"/> + <call-service service-name="deletePartyContactMech" in-map-name="deletePartyContactMechCtx"/> + + <set field="createPartyContactMechCtx.partyId" from-field="partyIdTo"/> + <set field="createPartyContactMechCtx.contactMechId" from-field="contactMechIdEmail_2"/> + <call-service service-name="createPartyContactMech" in-map-name="createPartyContactMechCtx_3"> + <result-to-field result-name="contactMechId" field-name="contactMechIdEmail"/> + </call-service> + + <set field="createPartyContactMechPurposeCtx.partyId" from-field="partyIdTo"/> + <set field="createPartyContactMechPurposeCtx.contactMechId" from-field="contactMechIdEmail_2"/> + <set field="createPartyContactMechPurposeCtx.contactMechPurposeTypeId" value="PRIMARY_EMAIL"/> + <call-service service-name="createPartyContactMechPurpose" in-map-name="createPartyContactMechPurposeCtx"/> + </if-not-empty> + </if-compare> + + <set field="updatePartyCtx.partyId" from-field="partyId"/> + <set field="updatePartyCtx.statusId" value="PARTY_DISABLED"/> + <call-service service-name="setPartyStatus" in-map-name="updatePartyCtx"/> + <field-to-result field-name="partyIdTo" result-name="partyId"/> + <field-to-request field-name="partyIdTo" request-name="partyId"/> + </if-compare-field> </simple-method> </simple-methods> Modified: ofbiz/trunk/applications/marketing/servicedef/services.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/marketing/servicedef/services.xml?rev=654579&r1=654578&r2=654579&view=diff ============================================================================== --- ofbiz/trunk/applications/marketing/servicedef/services.xml (original) +++ ofbiz/trunk/applications/marketing/servicedef/services.xml Thu May 8 09:47:55 2008 @@ -418,7 +418,30 @@ <auto-attributes entity-name="TelecomNumber" mode="IN" optional="true"> <exclude field-name="contactMechId"/> </auto-attributes> + <attribute name="partyId" type="String" mode="OUT" /> <attribute name="emailAddress" type="String" mode="IN" optional="true"/> <attribute name="partyIdFrom" type="String" mode="IN" optional="true"/> </service> + <service name="mergeContacts" engine="simple" + location="org/ofbiz/sfa/contact/ContactServices.xml" invoke="mergeContacts"> + <description>This service merges the contact details of two parties</description> + <attribute name="contactMechIdGenLoc_1" type="String" mode="IN" optional="true"/> + <attribute name="contactMechIdPrimPhone_1" type="String" mode="IN" optional="true"/> + <attribute name="contactMechIdEmail_1" type="String" mode="IN" optional="true"/> + <attribute name="fromDateGenLoc_1" type="Timestamp" mode="IN" optional="true"/> + <attribute name="fromDateTelecom_1" type="Timestamp" mode="IN" optional="true"/> + <attribute name="fromDateEmail_1" type="Timestamp" mode="IN" optional="true"/> + <attribute name="contactMechIdGenLoc_2" type="String" mode="IN" optional="true"/> + <attribute name="contactMechIdPrimPhone_2" type="String" mode="IN" optional="true"/> + <attribute name="contactMechIdEmail_2" type="String" mode="IN" optional="true"/> + <attribute name="fromDateGenLoc_2" type="Timestamp" mode="IN" optional="true"/> + <attribute name="fromDateTelecom_2" type="Timestamp" mode="IN" optional="true"/> + <attribute name="fromDateEmail_2" type="Timestamp" mode="IN" optional="true"/> + <attribute name="partyId_1" type="String" mode="IN" optional="false"/> + <attribute name="partyId_2" type="String" mode="IN" optional="false"/> + <attribute name="useAddress2" type="String" mode="IN" optional="true"/> + <attribute name="useContactNum2" type="String" mode="IN" optional="true"/> + <attribute name="useEmail2" type="String" mode="IN" optional="true"/> + <attribute name="partyId" type="String" mode="OUT" optional="false"/> + </service> </services> Added: ofbiz/trunk/applications/marketing/webapp/sfa/WEB-INF/action/mergeContacts.bsh URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/marketing/webapp/sfa/WEB-INF/action/mergeContacts.bsh?rev=654579&view=auto ============================================================================== --- ofbiz/trunk/applications/marketing/webapp/sfa/WEB-INF/action/mergeContacts.bsh (added) +++ ofbiz/trunk/applications/marketing/webapp/sfa/WEB-INF/action/mergeContacts.bsh Thu May 8 09:47:55 2008 @@ -0,0 +1,62 @@ +import org.ofbiz.base.util.UtilValidate; +import org.ofbiz.base.util.UtilHttp; +import org.ofbiz.base.util.UtilMisc; +import org.ofbiz.entity.util.EntityUtil; +import javolution.util.FastList; + +FastList contactInfoList=FastList.newInstance(); +partyIdFrom = parameters.get("partyIdFrom"); +partyIdTo = parameters.get("partyIdTo"); +if(UtilValidate.isNotEmpty(partyIdFrom) && UtilValidate.isNotEmpty(partyIdTo)) { + partyList = UtilMisc.toList(partyIdTo, partyIdFrom); + partyListItr = partyList.iterator(); + while (partyListItr.hasNext()) { + partyId = partyListItr.next(); + party = delegator.findOne("Person", false, "partyId",partyId); + person = delegator.findOne("Person", false, "partyId",partyId)); + contactDetailMap = UtilMisc.toMap("partyId", partyId, "firstName", person.get("firstName"), "lastName", person.get("lastName")); + + cntctMechGenLoc = EntityUtil.getFirst(ContactHelper.getContactMech(party, "GENERAL_LOCATION", "POSTAL_ADDRESS", false)); + contactDetailMap.put("contactMechIdGenLoc", cntctMechGenLoc.get("contactMechId")); + contactDetailMap.put("fromDateGenLoc", cntctMechGenLoc.get("fromDate")); + postalAddress = cntctMechGenLoc.getRelatedOne("PostalAddress"); + if(UtilValidate.isNotEmpty(postalAddress)) { + contactDetailMap.put("address1", postalAddress.get("address1")); + contactDetailMap.put("city", postalAddress.get("city")); + address2 = postalAddress.get("address2"); + if(UtilValidate.isNotEmpty(address2)) { + contactDetailMap.put("address2", address2); + } + geo = delegator.findOne("Geo", "geoId", postalAddress.get("stateProvinceGeoId")); + contactDetailMap.put("state", geo.get("geoName")); + + geo = delegator.findOne("Geo", false, "geoId", postalAddress.get("countryGeoId")); + contactDetailMap.put("country", geo.get("geoName")); + } + cntctMechPrimEmail = EntityUtil.getFirst(ContactHelper.getContactMech(party, "PRIMARY_EMAIL", "EMAIL_ADDRESS", false)); + contactMech= cntctMechPrimEmail.getRelatedOne("ContactMech"); + if(UtilValidate.isNotEmpty(contactMech)) { + contactDetailMap.put("primaryEmail", contactMech.get("infoString")); + } + cntctMechPrimEmail = EntityUtil.getFirst(ContactHelper.getContactMech(party, "PRIMARY_PHONE", "TELECOM_NUMBER", false)); + contactDetailMap.put("contactMechIdPrimPhone", cntctMechPrimPhone.get("contactMechId")); + contactDetailMap.put("fromDateTelecom", cntctMechPrimPhone.get("fromDate")); + telecomNumber = cntctMechPrimPhone.getRelatedOne("TelecomNumber"); + if(UtilValidate.isNotEmpty(telecomNumber)) { + countryCode = telecomNumber.get("countryCode"); + if(UtilValidate.isNotEmpty(countryCode)) { + contactDetailMap.put("countryCode", countryCode); + } + areaCode = telecomNumber.get("areaCode"); + if(UtilValidate.isNotEmpty(areaCode)) { + contactDetailMap.put("areaCode", areaCode); + } + contactNumber = telecomNumber.get("contactNumber"); + if(UtilValidate.isNotEmpty(contactNumber)) { + contactDetailMap.put("contactNumber", contactNumber); + } + } + contactInfoList.add(contactDetailMap); + } +} +context.put("contactInfoList", contactInfoList); \ No newline at end of file Propchange: ofbiz/trunk/applications/marketing/webapp/sfa/WEB-INF/action/mergeContacts.bsh ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/applications/marketing/webapp/sfa/WEB-INF/action/mergeContacts.bsh ------------------------------------------------------------------------------ svn:keywords = Date Rev Author URL Id Propchange: ofbiz/trunk/applications/marketing/webapp/sfa/WEB-INF/action/mergeContacts.bsh ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: ofbiz/trunk/applications/marketing/webapp/sfa/WEB-INF/controller.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/marketing/webapp/sfa/WEB-INF/controller.xml?rev=654579&r1=654578&r2=654579&view=diff ============================================================================== --- ofbiz/trunk/applications/marketing/webapp/sfa/WEB-INF/controller.xml (original) +++ ofbiz/trunk/applications/marketing/webapp/sfa/WEB-INF/controller.xml Thu May 8 09:47:55 2008 @@ -114,9 +114,19 @@ <request-map uri="createContact"> <security https="true" auth="true"/> <event type="service" invoke="createContact"/> - <response name="success" type="view" value="FindContacts"/> + <response name="success" type="view" value="viewprofile"/> <response name="error" type="view" value="CreateContact"/> </request-map> + <request-map uri="MergeContacts"> + <security https="true" auth="true"/> + <response name="success" type="view" value="MergeContacts"/> + </request-map> + <request-map uri="mergeContacts"> + <security https="true" auth="true"/> + <event type="service" invoke="mergeContacts"/> + <response name="success" type="view" value="viewprofile"/> + <response name="error" type="view" value="MergeContacts"/> + </request-map> <!-- end of request mappings --> <!-- View Mappings --> @@ -132,5 +142,6 @@ <view-map name="CreateLead" type="screen" page="component://marketing/widget/sfa/LeadScreens.xml#CreateLead"/> <view-map name="FindContacts" type="screen" page="component://marketing/widget/sfa/ContactScreens.xml#FindContacts"/> <view-map name="CreateContact" type="screen" page="component://marketing/widget/sfa/ContactScreens.xml#CreateContact"/> + <view-map name="MergeContacts" type="screen" page="component://marketing/widget/sfa/ContactScreens.xml#MergeContacts"/> <!-- end of view mappings --> </site-conf> \ No newline at end of file Added: ofbiz/trunk/applications/marketing/webapp/sfa/contact/mergeContacts.ftl URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/marketing/webapp/sfa/contact/mergeContacts.ftl?rev=654579&view=auto ============================================================================== --- ofbiz/trunk/applications/marketing/webapp/sfa/contact/mergeContacts.ftl (added) +++ ofbiz/trunk/applications/marketing/webapp/sfa/contact/mergeContacts.ftl Thu May 8 09:47:55 2008 @@ -0,0 +1,139 @@ +<#-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> +<form method="post" action="<@ofbizUrl>mergeContacts</@ofbizUrl>" class="basic-form"> + <table border="0" width="100%" > + <tr> + <td> + <#if contactInfoList?has_content > + <#assign contactInfo1 = contactInfoList[0]/> + <#assign contactInfo2 = contactInfoList[1]/> + <input type="hidden" name="partyId_1" value="${contactInfo1.partyId?if_exists}"> + <input type="hidden" name="partyId_2" value="${contactInfo2.partyId?if_exists}"> + + <input type="hidden" name="contactMechIdGenLoc_1" value="${contactInfo1.contactMechIdGenLoc?if_exists}"> + <input type="hidden" name="contactMechIdPrimPhone_1" value="${contactInfo1.contactMechIdPrimPhone?if_exists}"> + <input type="hidden" name="contactMechIdEmail_1" value="${contactInfo1.contactMechIdEmail?if_exists}"> + <input type="hidden" name="fromDateGenLoc_1" value="${contactInfo1.fromDateGenLoc?if_exists}"> + <input type="hidden" name="fromDateEmail_1" value="${contactInfo1.fromDateEmail?if_exists}"> + <input type="hidden" name="fromDateTelecom_1" value="${contactInfo1.fromDateTelecom?if_exists}"> + + <input type="hidden" name="contactMechIdGenLoc_2" value="${contactInfo2.contactMechIdGenLoc?if_exists}"> + <input type="hidden" name="contactMechIdPrimPhone_2" value="${contactInfo2.contactMechIdPrimPhone?if_exists}"> + <input type="hidden" name="contactMechIdEmail_2" value="${contactInfo2.contactMechIdEmail?if_exists}"> + <input type="hidden" name="fromDateGenLoc_2" value="${contactInfo2.fromDateGenLoc?if_exists}"> + <input type="hidden" name="fromDateEmail_2" value="${contactInfo2.fromDateEmail?if_exists}"> + <input type="hidden" name="fromDateTelecom_2" value="${contactInfo2.fromDateTelecom?if_exists}"> + + <table align="left" > + <tr width="100%"> + <td width="20%" ></td> + <td width="30%"><h2>${uiLabelMap.SfaFirstContact}</h2><br/></b></td> + <td width="30%"><h2>${uiLabelMap.SfaSecondContact}</h2><br/></b></td> + <td width="20%"><h2>${uiLabelMap.CommonSelect}</h2></td> + <br/><br/> + </tr> + <tr width="100%"> + <td width="20%">${uiLabelMap.CommonFirstName?if_exists}</td> + <td width="30%"><h3>${contactInfo1.firstName?if_exists}</h3></td> + <td width="30%"><h3>${contactInfo2.firstName?if_exists}</h3></td> + <td width="20%"></td> + </tr> + <tr width="100%"> + <td width="20%">${uiLabelMap.CommonLastName?if_exists}</td> + <td width="30%"><h3>${contactInfo1.lastName?if_exists}</h3></td> + <td width="30%"><h3>${contactInfo2.lastName?if_exists}</h3></td> + <td width="20%"></td> + </tr><br/> + <tr> + <td width="30"><br/><h3>${uiLabelMap.PartyGeneralCorrespondenceAddress?if_exists}</h3></td> + <td width="30"></td> + <tr> + <td width="20%" >${uiLabelMap.CommonAddress1?if_exists}</td> + <td width="30%">${contactInfo1.address1?if_exists}</td> + <td width="30%">${contactInfo2.address1?if_exists}</td> + <td width="20%"><input type="checkbox" name="useAddress2" value="Y"/></td> + </tr> + + <tr> + <td width="20%" >${uiLabelMap.CommonAddress2?if_exists}</td> + <td width="30%">${contactInfo1.address2?if_exists}</td> + <td width="30%">${contactInfo2.address2?if_exists}</td> + <td width="20%"></td> + </tr> + + <tr> + <td width="20%" >${uiLabelMap.CommonCity?if_exists}</td> + <td width="30%">${contactInfo1.city?if_exists}</td> + <td width="30%">${contactInfo2.city?if_exists}</td> + <td width="20%"></td> + </tr> + <tr> + <td width="20%">${uiLabelMap.CommonState?if_exists}</td> + <td width="30%">${contactInfo1.state?if_exists}</td> + <td width="30%">${contactInfo2.state?if_exists}</td> + <td width="20%"></td> + </tr> + <tr> + <td width="20%">${uiLabelMap.CommonZipPostalCode?if_exists}</td> + <td width="30%">${contactInfo1.postalCode?if_exists}</td> + <td width="30%">${contactInfo2.postalCode?if_exists}</td> + <td width="20%"></td> + </tr> + <tr> + <td width="20%" >${uiLabelMap.CommonCountry?if_exists}</td> + <td width="30%">${contactInfo1.country?if_exists}</td> + <td width="30%">${contactInfo2.country?if_exists}</td> + <td width="20%"></td> + </tr><br/> + <tr><td><br/><h3>${uiLabelMap.PartyPrimaryPhone?if_exists}</h3></td></tr> + <tr> + <td width="20%">${uiLabelMap.PartyCountryCode?if_exists}</td> + <td width="30%">${contactInfo1.countryCode?if_exists}</td> + <td width="30%">${contactInfo2.countryCode?if_exists}</td> + <td width="10%"><input type="checkbox" name="useContactNum2" value="Y"/></td> + </tr> + <tr> + <td width="20%" >${uiLabelMap.PartyAreaCode?if_exists}</td> + <td width="30%">${contactInfo1.areaCode?if_exists}</td> + <td width="30%">${contactInfo2.areaCode?if_exists}</td> + <td width="20%"></td> + </tr> + <tr> + <td width="20%" >${uiLabelMap.PartyPhoneNumber?if_exists}</td> + <td width="30%">${contactInfo1.contactNumber?if_exists}</td> + <td width="30%">${contactInfo2.contactNumber?if_exists}</td> + <td width="20%"></td> + </tr> + <tr> + <td width="20%" >${uiLabelMap.CommonEmail?if_exists}</td> + <td width="30%">${contactInfo1.primaryEmail?if_exists}</td> + <td width="30%">${contactInfo2.primaryEmail?if_exists}</td> + <td width="10%"><input type="checkbox" name="useEmail2" value="Y"/></td> + </tr> + <tr> + <td colspan="4" align="center"><br/> + <input type="submit" value="submit"/> + </td> + </tr> + </table> + </#if> + </td> + </tr> + </table> +</form> \ No newline at end of file Propchange: ofbiz/trunk/applications/marketing/webapp/sfa/contact/mergeContacts.ftl ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/applications/marketing/webapp/sfa/contact/mergeContacts.ftl ------------------------------------------------------------------------------ svn:keywords = Date Rev Author URL Id Propchange: ofbiz/trunk/applications/marketing/webapp/sfa/contact/mergeContacts.ftl ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: ofbiz/trunk/applications/marketing/widget/sfa/ContactScreens.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/marketing/widget/sfa/ContactScreens.xml?rev=654579&r1=654578&r2=654579&view=diff ============================================================================== --- ofbiz/trunk/applications/marketing/widget/sfa/ContactScreens.xml (original) +++ ofbiz/trunk/applications/marketing/widget/sfa/ContactScreens.xml Thu May 8 09:47:55 2008 @@ -56,6 +56,11 @@ </condition> <widgets> <include-form name="ListContacts" location="component://marketing/widget/sfa/forms/ContactForms.xml"/> + <label text="&nbsp;<br/><br/>"/> + <container style="h3"> + <label text="${uiLabelMap.SfaMergeContacts}"/> + </container> + <include-form name="MergeContacts" location="component://marketing/widget/sfa/forms/ContactForms.xml"/> </widgets> <fail-widgets> <container style="h3"> @@ -83,27 +88,69 @@ <widgets> <decorator-screen name="main-decorator" location="${parameters.mainDecoratorLocation}"> <decorator-section name="body"> - <container style="screenlet"> - <container style="screenlet-title-bar"> - <container style="h3"> - <section> - <widgets> - <label text="${uiLabelMap.CommonCreate} ${uiLabelMap.SfaContact}"/> - </widgets> - </section> - </container> - </container> - <container style="screenlet-body"> + <container style="screenlet"> + <container style="screenlet-title-bar"> + <container style="h3"> <section> <widgets> - <include-form name="CreateContact" location="component://marketing/widget/sfa/forms/ContactForms.xml"/> + <label text="${uiLabelMap.CommonCreate} ${uiLabelMap.SfaContact}"/> </widgets> </section> - </container> + </container> </container> + <container style="screenlet-body"> + <section> + <widgets> + <include-form name="CreateContact" location="component://marketing/widget/sfa/forms/ContactForms.xml"/> + </widgets> + </section> + </container> + </container> </decorator-section> </decorator-screen> </widgets> </section> </screen> + <screen name="MergeContacts"> + <section> + <actions> + <set field="titleProperty" value="PageTitleCreateContact"/> + <set field="tabButtonItem" value="Contacts"/> + <set field="contactmechId1" ></set> + <script location="component://marketing/webapp/sfa/WEB-INF/action/mergeContacts.bsh"/> + </actions> + <widgets> + <decorator-screen name="main-decorator" location="${parameters.mainDecoratorLocation}"> + <decorator-section name="body"> + <container style="screenlet"> + <container style="screenlet-title-bar"> + <container style="h3"> + <section> + <widgets> + <label text="${uiLabelMap.SfaMergeContacts}"/> + </widgets> + </section> + </container> + </container> + <container style="screenlet-body"> + <section> + <condition> + <if-compare-field field-name="parameters.partyIdFrom" operator="not-equals" to-field-name="parameters.partyIdTo"/> + </condition> + <widgets> + <platform-specific> + <html><html-template location="component://marketing/webapp/sfa/contact/mergeContacts.ftl"/></html> + </platform-specific> + </widgets> + <fail-widgets> + <label text="${uiLabelMap.SfaCanNotMergeSameContact}" style="h3"></label> + </fail-widgets> + </section> + </container> + </container> + </decorator-section> + </decorator-screen> + </widgets> + </section> + </screen> </screens> Modified: ofbiz/trunk/applications/marketing/widget/sfa/forms/ContactForms.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/marketing/widget/sfa/forms/ContactForms.xml?rev=654579&r1=654578&r2=654579&view=diff ============================================================================== --- ofbiz/trunk/applications/marketing/widget/sfa/forms/ContactForms.xml (original) +++ ofbiz/trunk/applications/marketing/widget/sfa/forms/ContactForms.xml Thu May 8 09:47:55 2008 @@ -24,9 +24,6 @@ <form name="ListContacts" type="list" list-name="partyList" list-entry-name="partyRow" paginate-target="FindContact" odd-row-style="alternate-row" default-table-style="basic-table hover-bar" separate-columns="true"> <row-actions> - <entity-one entity-name="PartyGroup" value-name="partyGroup"> - <field-map field-name="partyId" env-name="partyRow.partyId"/> - </entity-one> <entity-one entity-name="Person" value-name="person"> <field-map field-name="partyId" env-name="partyRow.partyId"/> </entity-one> @@ -47,7 +44,7 @@ <field name="address1" title="${uiLabelMap.CommonAddress1}" tooltip="${uiLabelMap.CommonRequired}" widget-style="required"><text size="50" maxlength="60"/></field> <field name="address2" title="${uiLabelMap.CommonAddress2}"><text size="50" maxlength="60"/></field> <field name="city" title="${uiLabelMap.CommonCity}" tooltip="${uiLabelMap.CommonRequired}" widget-style="required"><text size="30" maxlength="60"/></field> - <field name="state" title="${uiLabelMap.CommonState}" tooltip="${uiLabelMap.CommonRequired}" widget-style="required"> + <field name="stateProvinceGeoId" title="${uiLabelMap.CommonState}" tooltip="${uiLabelMap.CommonRequired}" widget-style="required"> <drop-down allow-empty="true"> <entity-options entity-name="Geo" key-field-name="geoId" description="${geoId} - ${geoName}"> <entity-constraint name="geoTypeId" operator="in" value="STATE,PROVINCE"/> @@ -56,7 +53,7 @@ </drop-down> </field> <field name="postalCode" title="${uiLabelMap.CommonZipPostalCode}" tooltip="${uiLabelMap.CommonRequired}" widget-style="required"><text size="10" maxlength="30"/></field> - <field name="country" title="${uiLabelMap.CommonCountry}" tooltip="${uiLabelMap.CommonRequired}" widget-style="required"> + <field name="countryGeoId" title="${uiLabelMap.CommonCountry}" tooltip="${uiLabelMap.CommonRequired}" widget-style="required"> <drop-down allow-empty="false" no-current-selected-key="${defaultCountryGeoId}"> <entity-options entity-name="Geo" key-field-name="geoId" description="${geoId}: ${geoName}"> <entity-constraint name="geoTypeId" value="COUNTRY"/> @@ -73,4 +70,17 @@ <field name="emailAddress" title="${uiLabelMap.CommonEmail}"><text size="50" maxlength="60"/></field> <field name="submitButton" title="${uiLabelMap.CommonSave}" widget-style="smallSubmit"><submit button-type="button"/></field> </form> + <form name="MergeContacts" type="single" target="MergeContacts"> + <field name="partyIdFrom" title="${uiLabelMap.SfaMergeParty}" position="1"> + <drop-down allow-empty="false"> + <list-options list-name="partyList" key-name="contact.partyId" list-entry-name="contact" description="${contact.partyId}"/> + </drop-down> + </field> + <field name="partyIdTo" title="${uiLabelMap.AccountingToParty}" position="2"> + <drop-down allow-empty="false"> + <list-options list-name="partyList" key-name="contact.partyId" list-entry-name="contact" description="${contact.partyId}"/> + </drop-down> + </field> + <field name="submitButton" position="3" title="${uiLabelMap.SfaMergeContacts}" widget-style="buttontext" tooltip-style="button-text"><submit button-type="text-link"/></field> + </form> </forms> |
Free forum by Nabble | Edit this page |