You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by jl...@apache.org on 2009/10/09 14:39:26 UTC

svn commit: r823530 - /ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/PosTransaction.java

Author: jleroux
Date: Fri Oct  9 12:39:25 2009
New Revision: 823530

URL: http://svn.apache.org/viewvc?rev=823530&view=rev
Log:
Fix some issues in POS client profile screen when used OOTB

Modified:
    ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/PosTransaction.java

Modified: ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/PosTransaction.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/PosTransaction.java?rev=823530&r1=823529&r2=823530&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/PosTransaction.java (original)
+++ ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/PosTransaction.java Fri Oct  9 12:39:25 2009
@@ -1554,30 +1554,33 @@
         dynamicView.addAlias("PT", "partyId");
         dynamicView.addAlias("PT", "statusId");
         dynamicView.addAlias("PT", "partyTypeId");
+        dynamicView.addMemberEntity("PUL", "PartyAndUserLogin");
+        dynamicView.addAlias("PUL", "userLoginId");
         dynamicView.addMemberEntity("PE", "Person");
         dynamicView.addAlias("PE", "partyId");
         dynamicView.addAlias("PE", "lastName");
         dynamicView.addAlias("PE", "memberId");
         dynamicView.addAlias("PE", "lastNameLocal");
         dynamicView.addViewLink("PT", "PE", Boolean.FALSE, ModelKeyMap.makeKeyMapList("partyId"));
+        dynamicView.addViewLink("PT", "PUL", Boolean.FALSE, ModelKeyMap.makeKeyMapList("partyId"));
 
         Boolean onlyPhone = UtilValidate.isEmpty(name) && UtilValidate.isEmpty(email) && UtilValidate.isNotEmpty(phone) && UtilValidate.isEmpty(card);
         if (!onlyPhone) {
             // ContactMech (email)
             dynamicView.addMemberEntity("PM", "PartyContactMechPurpose");            
-            dynamicView.addMemberEntity("CM", "ContactMech");
             dynamicView.addAlias("PM", "contactMechId");
             dynamicView.addAlias("PM", "contactMechPurposeTypeId");            
             dynamicView.addAlias("PM", "thruDate");
+            dynamicView.addMemberEntity("CM", "ContactMech");
             dynamicView.addAlias("CM", "infoString");            
             dynamicView.addViewLink("PT", "PM", Boolean.FALSE, ModelKeyMap.makeKeyMapList("partyId"));
             dynamicView.addViewLink("PM", "CM", Boolean.FALSE, ModelKeyMap.makeKeyMapList("contactMechId"));
         } else {
             dynamicView.addMemberEntity("PM", "PartyContactMechPurpose");            
-            dynamicView.addMemberEntity("TN", "TelecomNumber");
             dynamicView.addAlias("PM", "contactMechId");
             dynamicView.addAlias("PM", "thruDate");
             dynamicView.addAlias("PM", "contactMechPurposeTypeId");            
+            dynamicView.addMemberEntity("TN", "TelecomNumber");
             dynamicView.addAlias("TN", "contactNumber");
             dynamicView.addViewLink("PT", "PM", Boolean.FALSE, ModelKeyMap.makeKeyMapList("partyId"));
             dynamicView.addViewLink("PM", "TN", Boolean.FALSE, ModelKeyMap.makeKeyMapList("contactMechId"));
@@ -1603,6 +1606,8 @@
             // This allows to get all clients when any informations has been entered
             andExprs.add(EntityCondition.makeCondition(EntityCondition.makeCondition("statusId", EntityOperator.EQUALS, null), EntityOperator.OR, EntityCondition.makeCondition("statusId", EntityOperator.NOT_EQUAL, "PARTY_DISABLED")));
             andExprs.add(EntityCondition.makeCondition("partyTypeId", EntityOperator.EQUALS, "PERSON")); // Only persons for now...
+            andExprs.add(EntityCondition.makeCondition("userLoginId", EntityOperator.NOT_EQUAL, null)); // Should have a login
+            andExprs.add(EntityCondition.makeCondition("memberId", EntityOperator.NOT_EQUAL, null)); // Should have a card Id (we take into account only the person created here)
             if (UtilValidate.isNotEmpty(name)) {
                 andExprs.add(EntityCondition.makeCondition("lastName", EntityOperator.EQUALS, name));
             }
@@ -1781,7 +1786,7 @@
                 pos.showDialog("dialog/error/exception", e.getMessage());
                 return result;
             }
-            GenericValue partyLogin = userLogins.get(0); // We need at least a party's login ...
+            GenericValue partyLogin = userLogins.get(0); // We need at least a party's login, we are sure there is one as we keep only users with at least one login
             GenericValue  person = null;
             try {
                 person = session.getDelegator().findByPrimaryKey("Person", UtilMisc.toMap("partyId", partyId));
@@ -1792,7 +1797,7 @@
             }
             
             if (UtilValidate.isNotEmpty(name) && !person.getString("lastName").equals(name)
-                    || UtilValidate.isNotEmpty(card) && !person.getString("memberId").equals(card)) {
+                    || UtilValidate.isNotEmpty(card) && !card.equals(person.getString("memberId"))) {
                 svcCtx.put("partyId", partyId);
                 svcCtx.put("firstName", ""); // Needed by service updatePerson
                 svcCtx.put("userLogin", partyLogin);
@@ -1801,7 +1806,7 @@
                 }
                 if (UtilValidate.isNotEmpty(card)) {
                     svcCtx.put("memberId", card);
-                    if (!person.getString("memberId").equals(card)) {
+                    if (!card.equals(person.getString("memberId"))) {
                         // Update password
                         UtilProperties.setPropertyValue("security.properties", "password.accept.encrypted.and.plain", "true");
                         try {
@@ -1907,27 +1912,29 @@
                     return result;
                 }
                 GenericValue PartyTelecomNumber = PartyTelecomNumbers.get(0); // we suppose only one phone number (should be ok anyway because of the contactMechPurposeTypeId == "PHONE_HOME")
-                String contactNumber = PartyTelecomNumber.getString("contactNumber");
-                if (!contactNumber.equals(phone)) {
-                    String newContactMechId = PartyTelecomNumber.getString("contactMechId");
-    
-                    svcCtx.put("userLogin", partyLogin);
-                    svcCtx.put("contactNumber", phone);
-                    svcCtx.put("contactMechPurposeTypeId", "PHONE_HOME");
-                    if (UtilValidate.isNotEmpty(PartyTelecomNumbers)) {
-                        svcCtx.put("contactMechId", newContactMechId); 
-                    }
-                    
-                    try {
-                        svcRes = dispatcher.runSync("createUpdatePartyTelecomNumber", svcCtx);
-                    } catch (GenericServiceException e) {
-                        Debug.logError(e, module);
-                        pos.showDialog("dialog/error/exception", e.getMessage());
-                        return result;
-                    }
-                    if (ServiceUtil.isError(svcRes)) {
-                        pos.showDialog("dialog/error/exception", ServiceUtil.getErrorMessage(svcRes));
-                        return result;
+                if (UtilValidate.isNotEmpty(PartyTelecomNumber)) { // Should not be needed but in case memberId has been used for another purpose avoid an NPE (we test memberId not null initially to keep  only POS created users)
+                    String contactNumber = PartyTelecomNumber.getString("contactNumber");
+                    if (!phone.equals(contactNumber)) {
+                        String newContactMechId = PartyTelecomNumber.getString("contactMechId");
+        
+                        svcCtx.put("userLogin", partyLogin);
+                        svcCtx.put("contactNumber", phone);
+                        svcCtx.put("contactMechPurposeTypeId", "PHONE_HOME");
+                        if (UtilValidate.isNotEmpty(PartyTelecomNumbers)) {
+                            svcCtx.put("contactMechId", newContactMechId); 
+                        }
+                        
+                        try {
+                            svcRes = dispatcher.runSync("createUpdatePartyTelecomNumber", svcCtx);
+                        } catch (GenericServiceException e) {
+                            Debug.logError(e, module);
+                            pos.showDialog("dialog/error/exception", e.getMessage());
+                            return result;
+                        }
+                        if (ServiceUtil.isError(svcRes)) {
+                            pos.showDialog("dialog/error/exception", ServiceUtil.getErrorMessage(svcRes));
+                            return result;
+                        }
                     }
                 }
             }