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/16 13:23:57 UTC
svn commit: r825846 - in /ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos:
PosTransaction.java screen/ClientProfile.java
Author: jleroux
Date: Fri Oct 16 11:23:56 2009
New Revision: 825846
URL: http://svn.apache.org/viewvc?rev=825846&view=rev
Log:
Modify the Client Profile screen behavior.
Not having an UserLogin for parties created from the POS was not a good idea.
I will soon update the Till manual to explain how this new feature is supposed to be used, how it works and what it brings to the POS.
A the same time I will also update the Till manual for the other things introduced since its last update (2006/09/15)
Modified:
ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/PosTransaction.java
ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/ClientProfile.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=825846&r1=825845&r2=825846&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 16 11:23:56 2009
@@ -98,7 +98,6 @@
private static PrintWriter defaultPrintWriter = new Log4jLoggerWriter(Debug.getLogger(module));
private static PosTransaction currentTx = null;
private static LifoSet<PosTransaction> savedTx = new LifoSet<PosTransaction>();
- private Locale defaultLocale = Locale.getDefault();
protected XuiSession session = null;
protected ShoppingCart cart = null;
@@ -113,7 +112,7 @@
protected String currency = null;
protected String orderId = null;
protected String partyId = null;
- protected Locale locale = null;
+ protected Locale locale = Locale.getDefault();
protected boolean isOpen = false;
protected int drawerIdx = 0;
@@ -265,7 +264,7 @@
itemInfo.put("adjustments", "");
if (item.getOtherAdjustments().compareTo(BigDecimal.ZERO) != 0) {
itemInfo.put("itemDiscount", UtilFormatOut.padString(
- UtilProperties.getMessage(PosTransaction.resource,"PosItemDiscount",defaultLocale), Receipt.pridLength[0] + 1, true, ' '));
+ UtilProperties.getMessage(resource,"PosItemDiscount", locale), Receipt.pridLength[0] + 1, true, ' '));
itemInfo.put("adjustments", UtilFormatOut.formatPrice(item.getOtherAdjustments()));
}
@@ -812,7 +811,7 @@
// cart.setCarrierPartyId();
// validate payment methods
- output.print(UtilProperties.getMessage(PosTransaction.resource,"PosValidating",defaultLocale));
+ output.print(UtilProperties.getMessage(resource, "PosValidating", locale));
Map valRes = ch.validatePaymentMethods();
if (valRes != null && ServiceUtil.isError(valRes)) {
throw new GeneralException(ServiceUtil.getErrorMessage(valRes));
@@ -820,7 +819,7 @@
// store the "order"
if (UtilValidate.isEmpty(this.orderId)) { // if order does not exist
- output.print(UtilProperties.getMessage(PosTransaction.resource,"PosSaving",defaultLocale));
+ output.print(UtilProperties.getMessage(resource, "PosSaving", locale));
Map orderRes = ch.createOrder(session.getUserLogin());
//Debug.log("Create Order Resp : " + orderRes, module);
@@ -839,7 +838,7 @@
svcCtx.put("userLogin", session.getUserLogin());
svcCtx.put("orderId", orderId);
svcCtx.put("shoppingCart", cart);
- svcCtx.put("locale", this.locale);
+ svcCtx.put("locale", locale);
svcCtx.put("changeMap", changeMap);
Map svcRes = null;
@@ -854,7 +853,7 @@
}
// process the payment(s)
- output.print(UtilProperties.getMessage(PosTransaction.resource, "PosProcessing", defaultLocale));
+ output.print(UtilProperties.getMessage(resource, "PosProcessing", locale));
Map payRes = null;
try {
payRes = ch.processPayment(ProductStoreWorker.getProductStore(productStoreId, session.getDelegator()), session.getUserLogin(), true);
@@ -871,7 +870,7 @@
BigDecimal change = grandTotal.subtract(paymentAmt);
// notify the change due
- output.print(UtilProperties.getMessage(PosTransaction.resource,"PosChange",defaultLocale) + " " + UtilFormatOut.formatPrice(this.getTotalDue().negate()));
+ output.print(UtilProperties.getMessage(resource,"PosChange",locale) + " " + UtilFormatOut.formatPrice(this.getTotalDue().negate()));
// threaded drawer/receipt printing
final PosTransaction currentTrans = this;
@@ -977,7 +976,7 @@
// append the promo info
XModel promo = Journal.appendNode(model, "tr", "itemadjustment", "");
Journal.appendNode(promo, "td", "sku", "");
- Journal.appendNode(promo, "td", "desc", UtilProperties.getMessage(PosTransaction.resource,"PosItemDiscount",defaultLocale));
+ Journal.appendNode(promo, "td", "desc", UtilProperties.getMessage(resource, "PosItemDiscount", locale));
Journal.appendNode(promo, "td", "qty", "");
Journal.appendNode(promo, "td", "price", UtilFormatOut.formatPrice(adjustment));
}
@@ -1016,7 +1015,7 @@
XModel adjustmentLine = Journal.appendNode(model, "tr", "adjustment", "");
Journal.appendNode(adjustmentLine, "td", "sku", "");
Journal.appendNode(adjustmentLine, "td", "desc",
- UtilProperties.getMessage(PosTransaction.resource, "PosSalesDiscount",defaultLocale));
+ UtilProperties.getMessage(resource, "PosSalesDiscount", locale));
if (UtilValidate.isNotEmpty(amount)) {
Journal.appendNode(adjustmentLine, "td", "qty", "");
Journal.appendNode(adjustmentLine, "td", "price", UtilFormatOut.formatPrice(amount));
@@ -1033,14 +1032,14 @@
XModel taxLine = Journal.appendNode(model, "tr", "tax", "");
Journal.appendNode(taxLine, "td", "sku", "");
- Journal.appendNode(taxLine, "td", "desc", UtilProperties.getMessage(PosTransaction.resource,"PosSalesTax",defaultLocale));
+ Journal.appendNode(taxLine, "td", "desc", UtilProperties.getMessage(resource, "PosSalesTax", locale));
Journal.appendNode(taxLine, "td", "qty", "");
Journal.appendNode(taxLine, "td", "price", UtilFormatOut.formatPrice(taxAmount));
Journal.appendNode(taxLine, "td", "index", "-1");
XModel totalLine = Journal.appendNode(model, "tr", "total", "");
Journal.appendNode(totalLine, "td", "sku", "");
- Journal.appendNode(totalLine, "td", "desc", UtilProperties.getMessage(PosTransaction.resource,"PosGrandTotal",defaultLocale));
+ Journal.appendNode(totalLine, "td", "desc", UtilProperties.getMessage(resource, "PosGrandTotal", locale));
Journal.appendNode(totalLine, "td", "qty", "");
Journal.appendNode(totalLine, "td", "price", UtilFormatOut.formatPrice(total));
Journal.appendNode(totalLine, "td", "index", "-1");
@@ -1067,7 +1066,7 @@
paymentMethodType = paymentInfoObj;
}
- Object desc = paymentMethodType != null ? paymentMethodType.get("description",defaultLocale) : "??";
+ Object desc = paymentMethodType != null ? paymentMethodType.get("description",locale) : "??";
String descString = desc.toString();
BigDecimal amount = BigDecimal.ZERO;
if (inf.amount == null) {
@@ -1405,13 +1404,12 @@
public void saveOrder(String shoppingListName, PosScreen pos) {
trace("Save an order");
if (cart.size() == 0) {
- pos.showDialog("dialog/error/exception", UtilProperties.getMessage("OrderErrorUiLabels", "OrderUnableToCreateNewShoppingList",locale));
+ pos.showDialog("dialog/error/exception", UtilProperties.getMessage("OrderErrorUiLabels", "OrderUnableToCreateNewShoppingList", locale));
return;
}
Delegator delegator = this.session.getDelegator();
LocalDispatcher dispatcher = session.getDispatcher();
GenericValue userLogin = session.getUserLogin();
- Locale locale = defaultLocale;
String shoppingListId = null;
if (!UtilValidate.isEmpty(shoppingListName)) {
@@ -1435,13 +1433,12 @@
public void saveSale(String shoppingListName, PosScreen pos) {
trace("Save a sale");
if (cart.size() == 0) {
- pos.showDialog("dialog/error/exception", UtilProperties.getMessage("OrderErrorUiLabels", "OrderUnableToCreateNewShoppingList",locale));
+ pos.showDialog("dialog/error/exception", UtilProperties.getMessage("OrderErrorUiLabels", "OrderUnableToCreateNewShoppingList", locale));
return;
}
Delegator delegator = this.session.getDelegator();
LocalDispatcher dispatcher = session.getDispatcher();
GenericValue userLogin = session.getUserLogin();
- Locale locale = defaultLocale;
String shoppingListId = null;
if (!UtilValidate.isEmpty(shoppingListName)) {
@@ -1456,7 +1453,7 @@
newListResult = dispatcher.runSync("createShoppingList", serviceCtx);
} catch (GenericServiceException e) {
Debug.logError(e, "Problem while creating new ShoppingList", module);
- pos.showDialog("dialog/error/exception", UtilProperties.getMessage("OrderErrorUiLabels", "OrderUnableToCreateNewShoppingList",locale));
+ pos.showDialog("dialog/error/exception", UtilProperties.getMessage("OrderErrorUiLabels", "OrderUnableToCreateNewShoppingList", locale));
return;
}
@@ -1473,7 +1470,7 @@
shoppingListId = (String) newListResult.get("shoppingListId");
} else {
Debug.logError("Problem while creating new ShoppingList", module);
- pos.showDialog("dialog/error/exception", UtilProperties.getMessage("OrderErrorUiLabels", "OrderUnableToCreateNewShoppingList",locale));
+ pos.showDialog("dialog/error/exception", UtilProperties.getMessage("OrderErrorUiLabels", "OrderUnableToCreateNewShoppingList", locale));
return;
}
}
@@ -1488,7 +1485,7 @@
ShoppingListEvents.addBulkFromCart(delegator, dispatcher, cart, userLogin, shoppingListId, selectedCartItems, true, true);
} catch (IllegalArgumentException e) {
Debug.logError(e, "Problem while creating new ShoppingList", module);
- pos.showDialog("dialog/error/exception", UtilProperties.getMessage("OrderErrorUiLabels", "OrderUnableToCreateNewShoppingList",locale));
+ pos.showDialog("dialog/error/exception", UtilProperties.getMessage("OrderErrorUiLabels", "OrderUnableToCreateNewShoppingList", locale));
}
}
@@ -1552,11 +1549,14 @@
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", "cardId");
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 (UtilValidate.isNotEmpty(email)) {
@@ -1589,7 +1589,7 @@
// fields we need to select; will be used to set distinct
fieldsToSelect.add("partyId");
fieldsToSelect.add("lastName");
- fieldsToSelect.add("memberId");
+ fieldsToSelect.add("cardId");
if (UtilValidate.isNotEmpty(email)) {
fieldsToSelect.add("infoString");
} else if (onlyPhone) {
@@ -1600,6 +1600,7 @@
// 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 (which implies an email and phone if created from the POS)
if (UtilValidate.isNotEmpty(name)) {
// andExprs.add(EntityCondition.makeCondition("lastName", EntityOperator.EQUALS, name)); // Plain name
// andExprs.add(EntityCondition.makeCondition("lastName", EntityOperator.LIKE, "%"+name+"%")); // Less restrictive
@@ -1607,7 +1608,7 @@
}
if (UtilValidate.isNotEmpty(card)) {
- andExprs.add(EntityCondition.makeCondition("memberId", EntityOperator.EQUALS, card));
+ andExprs.add(EntityCondition.makeCondition("cardId", EntityOperator.EQUALS, card));
}
if (UtilValidate.isNotEmpty(email)) {
andExprs.add(EntityCondition.makeCondition("infoString", EntityOperator.EQUALS, email));
@@ -1670,7 +1671,7 @@
Map partyMap = FastMap.newInstance();
partyMap.put("partyId", party.getString("partyId"));
partyMap.put("lastName", party.getString("lastName"));
- partyMap.put("memberId", party.getString("memberId"));
+ partyMap.put("cardId", party.getString("cardId"));
if (!onlyPhone && UtilValidate.isNotEmpty(email)) {
partyMap.put("infoString", party.getString("infoString"));
partyMap.put("contactNumber", "");
@@ -1700,13 +1701,14 @@
}
public String editClientProfile(String name, String email, String phone, String card, PosScreen pos, String editType, String partyId) {
- // We suppose here that a memberId (card number) can only belongs to one person (it's used as owned PromoCode)
+ // We suppose here that a cardId (card number) can only belongs to one person (it's used as owned PromoCode)
// We use the 1st party's login (it may change and be multiple since it depends on email and card)
// We suppose only one email address (should be ok anyway because of the contactMechPurposeTypeId == "PRIMARY_EMAIL")
// we suppose only one phone number (should be ok anyway because of the contactMechPurposeTypeId == "PHONE_HOME")
Delegator delegator = session.getDelegator();
LocalDispatcher dispatcher = session.getDispatcher();
GenericValue userLogin = session.getUserLogin();
+ GenericValue partyUserLogin = null;
String result = null;
Map<String, Object> svcCtx = FastMap.newInstance();
@@ -1715,183 +1717,178 @@
// Create
if ("create".equals(editType)) {
trace("Create a client profile");
- if (UtilValidate.isNotEmpty(name)) {
- // createPersonAndUserLogin
- trace("createPersonAndUserLogin");
- if (UtilValidate.isNotEmpty(card)) {
- svcCtx.put("memberId", card);
- }
- svcCtx.put("lastName", name);
- svcCtx.put("firstName", ""); // Needed by service createPersonAndUserLogin
- svcCtx.put("userLogin", userLogin);
- if (UtilValidate.isNotEmpty(email) && UtilValidate.isNotEmpty(card)) {
- svcCtx.put("userLoginId", email);
- svcCtx.put("currentPassword", card);
- svcCtx.put("currentPasswordVerify", card);
- svcCtx.put("passwordHint", "Your card number is your password");
- try {
- svcRes = dispatcher.runSync("createPersonAndUserLogin", 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;
- }
-
- } else {
- // createPerson
- trace("createPerson");
- try {
- svcRes = dispatcher.runSync("createPerson", 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;
- }
- }
-
- partyId = (String) svcRes.get("partyId");
+ // createPersonAndUserLogin
+ trace("createPersonAndUserLogin");
+ if (UtilValidate.isNotEmpty(card)) {
+ svcCtx.put("cardId", card);
}
+ svcCtx.put("userLogin", userLogin);
+ svcCtx.put("lastName", name);
+ svcCtx.put("firstName", ""); // Needed by service createPersonAndUserLogin
+ svcCtx.put("userLoginId", email);
+ svcCtx.put("currentPassword", phone);
+ svcCtx.put("currentPasswordVerify", phone);
+ try {
+ svcRes = dispatcher.runSync("createPersonAndUserLogin", svcCtx);
+ } catch (GenericServiceException e) {
+ Debug.logError(e, module);
+ pos.showDialog("dialog/error/exception", e.getMessage());
+ return null;
+ }
+ if (ServiceUtil.isError(svcRes)) {
+ pos.showDialog("dialog/error/exception", ServiceUtil.getErrorMessage(svcRes));
+ return null;
+ }
+ partyId = (String) svcRes.get("partyId");
+ partyUserLogin = (GenericValue) svcRes.get("newUserLogin");
- if (UtilValidate.isNotEmpty(email)) {
- // createPartyEmailAddress
- trace("createPartyEmailAddress");
- svcCtx.clear();
- svcCtx.put("userLogin", userLogin);
- svcCtx.put("emailAddress", email);
- svcCtx.put("partyId", partyId);
- svcCtx.put("contactMechPurposeTypeId", "PRIMARY_EMAIL");
- try {
- svcRes = dispatcher.runSync("createPartyEmailAddress", 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;
- }
+ // createPartyEmailAddress
+ trace("createPartyEmailAddress");
+ svcCtx.clear();
+ svcCtx.put("userLogin", partyUserLogin);
+ svcCtx.put("emailAddress", email);
+ svcCtx.put("partyId", partyId);
+ svcCtx.put("contactMechPurposeTypeId", "PRIMARY_EMAIL");
+ try {
+ svcRes = dispatcher.runSync("createPartyEmailAddress", svcCtx);
+ } catch (GenericServiceException e) {
+ Debug.logError(e, module);
+ pos.showDialog("dialog/error/exception", e.getMessage());
+ return null;
+ }
+ if (ServiceUtil.isError(svcRes)) {
+ pos.showDialog("dialog/error/exception", ServiceUtil.getErrorMessage(svcRes));
+ return null;
}
- if (UtilValidate.isNotEmpty(phone)) {
- // createPartyTelecomNumber
- trace("createPartyTelecomNumber");
- svcCtx.clear();
- svcCtx.put("userLogin", userLogin);
- svcCtx.put("contactNumber", phone);
- svcCtx.put("partyId", partyId);
- svcCtx.put("contactMechPurposeTypeId", "PHONE_HOME");
- try {
- svcRes = dispatcher.runSync("createPartyTelecomNumber", 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;
- }
+ // createPartyTelecomNumber
+ trace("createPartyTelecomNumber");
+ svcCtx.clear();
+ svcCtx.put("userLogin", partyUserLogin);
+ svcCtx.put("contactNumber", phone);
+ svcCtx.put("partyId", partyId);
+ svcCtx.put("contactMechPurposeTypeId", "PHONE_HOME");
+ try {
+ svcRes = dispatcher.runSync("createPartyTelecomNumber", svcCtx);
+ } catch (GenericServiceException e) {
+ Debug.logError(e, module);
+ pos.showDialog("dialog/error/exception", e.getMessage());
+ return null;
+ }
+ if (ServiceUtil.isError(svcRes)) {
+ pos.showDialog("dialog/error/exception", ServiceUtil.getErrorMessage(svcRes));
+ return null;
}
+
result = partyId;
- } else {
+
+ // Update
+ } else if (UtilValidate.isNotEmpty(partyId)){
trace("Update a client profile");
- List<GenericValue> userLogins = null;
+ GenericValue person = null;
+
try {
- userLogins = session.getDelegator().findByAnd("UserLogin", UtilMisc.toMap("partyId", partyId));
+ person = session.getDelegator().findByPrimaryKey("Person", UtilMisc.toMap("partyId", partyId));
} catch (GenericEntityException e) {
Debug.logError(e, module);
pos.showDialog("dialog/error/exception", e.getMessage());
- return result;
+ return null;
}
- 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));
+ List<GenericValue> userLogins = session.getDelegator().findByAnd("UserLogin", UtilMisc.toMap("partyId", partyId));
+ partyUserLogin = userLogins.get(0); // We need a party's login, it can't be empty because we filter on PartyAndUserLogin in searchClientProfile
} catch (GenericEntityException e) {
Debug.logError(e, module);
pos.showDialog("dialog/error/exception", e.getMessage());
- return result;
+ return null;
}
-
- if (UtilValidate.isNotEmpty(name) && !person.getString("lastName").equals(name)
- || UtilValidate.isNotEmpty(card) && !card.equals(person.getString("memberId"))) {
+
+ if (!person.getString("lastName").equals(name)
+ || UtilValidate.isNotEmpty(card) && !card.equals(person.getString("cardId"))) {
+ // Update name and card (cardId)
svcCtx.put("partyId", partyId);
svcCtx.put("firstName", ""); // Needed by service updatePerson
- svcCtx.put("userLogin", partyLogin);
- if (UtilValidate.isNotEmpty(name)) {
- svcCtx.put("lastName", name);
- }
+ svcCtx.put("userLogin", partyUserLogin);
+ svcCtx.put("lastName", name);
if (UtilValidate.isNotEmpty(card)) {
- svcCtx.put("memberId", card);
- if (!card.equals(person.getString("memberId"))) {
- // Update password, we need to temporary set password.accept.encrypted.and.plain to "true"
- // This is done only for the properties loaded for the session in memory (we don't persist the value)
- String passwordAcceptEncryptedAndPlain = UtilProperties.getPropertyValue("security.properties", "password.accept.encrypted.and.plain");
- UtilProperties.setPropertyValueInMemory("security.properties", "password.accept.encrypted.and.plain", "true");
- try {
- svcRes = dispatcher.runSync("updatePassword",
- UtilMisc.toMap("userLogin", partyLogin,
- "userLoginId", partyLogin.getString("userLoginId"),
- "currentPassword", partyLogin.getString("currentPassword"),
- "newPassword", card,
- "newPasswordVerify", card,
- "passwordHint", "Your card number is your password"));
- } catch (GenericServiceException e) {
- Debug.logError(e, "Error calling updatePassword service", module);
- pos.showDialog("dialog/error/exception", e.getMessage());
- return result;
- }
- if (ServiceUtil.isError(svcRes)) {
- pos.showDialog("dialog/error/exception", ServiceUtil.getErrorMessage(svcRes));
- return result;
- }
- // Put back passwordAcceptEncryptedAndPlain value in memory
- UtilProperties.setPropertyValueInMemory("security.properties", "password.accept.encrypted.and.plain", passwordAcceptEncryptedAndPlain);
- partyLogin = (GenericValue) svcRes.get("updatedUserLogin");
- svcCtx.put("userLogin", partyLogin);
- }
- }
-
- // Update name and card (memberId)
+ svcCtx.put("cardId", card);
+ }
try {
svcRes = dispatcher.runSync("updatePerson", svcCtx);
} catch (GenericServiceException e) {
Debug.logError(e, module);
pos.showDialog("dialog/error/exception", e.getMessage());
- return result;
+ return null;
}
if (ServiceUtil.isError(svcRes)) {
pos.showDialog("dialog/error/exception", ServiceUtil.getErrorMessage(svcRes));
- return result;
- }
+ return null;
+ }
}
- // Update email
- if (UtilValidate.isNotEmpty(email) && !partyLogin.getString("userLoginId").equals(email)) {
- // create a new UserLogin (Update a UserLoginId by creating a new one and expiring the old one)
+ // Update phone
+ GenericValue PartyTelecomNumber = null;
+ String contactNumber = null;
+ String newContactMechId = null;
+ svcCtx.clear();
+ svcCtx.put("partyId", partyId);
+ svcCtx.put("thruDate", null); // last one
+ try {
+ List<GenericValue> PartyTelecomNumbers = session.getDelegator().findByAnd("PartyAndTelecomNumber", svcCtx);
+ PartyTelecomNumber = PartyTelecomNumbers.get(0); // There is only one phone number (contactMechPurposeTypeId == "PHONE_HOME") and there is always one (used as password in UserLogin)
+ contactNumber = PartyTelecomNumber.getString("contactNumber");
+ newContactMechId = PartyTelecomNumber.getString("contactMechId");
+ } catch (GenericEntityException e) {
+ Debug.logError(e, module);
+ pos.showDialog("dialog/error/exception", e.getMessage());
+ return null;
+ }
+ if (UtilValidate.isNotEmpty(contactNumber) && !phone.equals(contactNumber)) {
+ svcCtx.clear();
+ svcCtx.put("partyId", partyId);
+ svcCtx.put("thruDate", null); // last one
+ svcCtx.put("userLogin", partyUserLogin);
+ svcCtx.put("contactNumber", phone);
+ svcCtx.put("contactMechPurposeTypeId", "PHONE_HOME");
+ svcCtx.put("contactMechId", newContactMechId);
try {
- svcRes = dispatcher.runSync("updateUserLoginId", UtilMisc.toMap("userLoginId", email, "userLogin", partyLogin));
+ svcRes = dispatcher.runSync("updatePartyTelecomNumber", svcCtx);
} catch (GenericServiceException e) {
Debug.logError(e, module);
pos.showDialog("dialog/error/exception", e.getMessage());
- return result;
+ return null;
}
if (ServiceUtil.isError(svcRes)) {
pos.showDialog("dialog/error/exception", ServiceUtil.getErrorMessage(svcRes));
- return result;
+ return null;
}
-
- partyLogin = (GenericValue) svcRes.get("newUserLogin");
-
+ // Update password, we need to temporary set password.accept.encrypted.and.plain to "true"
+ // This is done only for the properties loaded for the session in memory (we don't persist the value)
+ String passwordAcceptEncryptedAndPlain = UtilProperties.getPropertyValue("security.properties", "password.accept.encrypted.and.plain");
+ UtilProperties.setPropertyValueInMemory("security.properties", "password.accept.encrypted.and.plain", "true");
+ try {
+ svcRes = dispatcher.runSync("updatePassword",
+ UtilMisc.toMap("userLogin", partyUserLogin,
+ "userLoginId", partyUserLogin.getString("userLoginId"),
+ "currentPassword", partyUserLogin.getString("currentPassword"),
+ "newPassword", phone,
+ "newPasswordVerify", phone));
+ } catch (GenericServiceException e) {
+ Debug.logError(e, "Error calling updatePassword service", module);
+ pos.showDialog("dialog/error/exception", e.getMessage());
+ return null;
+ }
+ if (ServiceUtil.isError(svcRes)) {
+ pos.showDialog("dialog/error/exception", ServiceUtil.getErrorMessage(svcRes));
+ return null;
+ }
+ // Put back passwordAcceptEncryptedAndPlain value in memory
+ UtilProperties.setPropertyValueInMemory("security.properties", "password.accept.encrypted.and.plain", passwordAcceptEncryptedAndPlain);
+ }
+
+ // Update email
+ if (!partyUserLogin.getString("userLoginId").equals(email)) {
svcCtx.clear();
svcCtx.put("partyId", partyId);
svcCtx.put("contactMechTypeId", "EMAIL_ADDRESS");
@@ -1902,91 +1899,45 @@
} catch (GenericEntityException e) {
Debug.logError(e, module);
pos.showDialog("dialog/error/exception", e.getMessage());
- return result;
+ return null;
}
svcCtx.clear();
- svcCtx.put("userLogin", partyLogin);
+ svcCtx.put("userLogin", userLogin);
svcCtx.put("emailAddress", email);
svcCtx.put("partyId", partyId);
svcCtx.put("contactMechPurposeTypeId", "PRIMARY_EMAIL");
-
- if (UtilValidate.isNotEmpty(PartyEmails)) {
- svcCtx.put("contactMechId", PartyEmails.get(0).getString("contactMechId")); // We suppose only one email address (should be ok anyway because of the contactMechPurposeTypeId == "PRIMARY_EMAIL")
- }
+ svcCtx.put("contactMechId", PartyEmails.get(0).getString("contactMechId")); // We suppose only one email address (should be ok anyway because of the contactMechPurposeTypeId == "PRIMARY_EMAIL")
try {
svcRes = dispatcher.runSync("createUpdatePartyEmailAddress", svcCtx);
} catch (GenericServiceException e) {
Debug.logError(e, module);
pos.showDialog("dialog/error/exception", e.getMessage());
- return result;
+ return null;
}
if (ServiceUtil.isError(svcRes)) {
pos.showDialog("dialog/error/exception", ServiceUtil.getErrorMessage(svcRes));
- return result;
+ return null;
}
- }
- // Update phone
- if (UtilValidate.isNotEmpty(phone)) {
- svcCtx.clear();
- svcCtx.put("partyId", partyId);
- svcCtx.put("thruDate", null); // last one
- List<GenericValue> PartyTelecomNumbers = null;
+ // create a new UserLogin (Update a UserLoginId by creating a new one and expiring the old one). Keep the same password possibly changed just above if phone has also changed.
try {
- PartyTelecomNumbers = session.getDelegator().findByAnd("PartyAndTelecomNumber", svcCtx);
- } catch (GenericEntityException e) {
+ svcRes = dispatcher.runSync("updateUserLoginId", UtilMisc.toMap("userLoginId", email, "userLogin", userLogin));
+ } catch (GenericServiceException e) {
Debug.logError(e, module);
pos.showDialog("dialog/error/exception", e.getMessage());
- return result;
- }
-
- if (UtilValidate.isNotEmpty(PartyTelecomNumbers)) {
- 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 (!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;
- }
- }
- } else {
- // createPartyTelecomNumber
- svcCtx.clear();
- svcCtx.put("userLogin", partyLogin);
- svcCtx.put("contactNumber", phone);
- svcCtx.put("partyId", partyId);
- svcCtx.put("contactMechPurposeTypeId", "PHONE_HOME");
- try {
- svcRes = dispatcher.runSync("createPartyTelecomNumber", 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;
- }
+ return null;
}
+ if (ServiceUtil.isError(svcRes)) {
+ pos.showDialog("dialog/error/exception", ServiceUtil.getErrorMessage(svcRes));
+ return null;
+ }
}
+
+ } else {
+ pos.showDialog("dialog/error/exception", UtilProperties.getMessage(resource, "PosNoClientProfile", locale));
+ return null;
}
- return result;
+ return null;
}
}
Modified: ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/ClientProfile.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/ClientProfile.java?rev=825846&r1=825845&r2=825846&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/ClientProfile.java (original)
+++ ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/ClientProfile.java Fri Oct 16 11:23:56 2009
@@ -142,7 +142,7 @@
Debug.logError(e, module);
}
if (UtilValidate.isNotEmpty(person)) {
- String promoCode = person.getString("memberId");
+ String promoCode = person.getString("cardId");
if (UtilValidate.isNotEmpty(promoCode)) {
String result = m_trans.addProductPromoCode(promoCode);
if(UtilValidate.isNotEmpty(result)) {
@@ -234,10 +234,14 @@
String email = m_emailEdit.getText().trim();
String phone = m_phoneEdit.getText().trim();
String card = m_cardEdit.getText().trim();
- if (UtilValidate.isNotEmpty(name)) {
- editClientProfile(name, email, phone, card, editType, m_partyId);
+ if (UtilValidate.isNotEmpty(name) && UtilValidate.isNotEmpty(email) && UtilValidate.isNotEmpty(phone) ) {
+ if (phone.length() > 4 ) {
+ editClientProfile(name, email, phone, card, editType, m_partyId);
+ } else {
+ m_pos.showDialog("dialog/error/exception", UtilProperties.getMessage(PosTransaction.resource, "PosPhoneField5Required", locale));
+ }
} else {
- m_pos.showDialog("dialog/error/exception", UtilProperties.getMessage(PosTransaction.resource, "PosNameFieldRequired", locale));
+ m_pos.showDialog("dialog/error/exception", UtilProperties.getMessage(PosTransaction.resource, "PosFieldsRequired", locale));
}
}
}
@@ -256,7 +260,7 @@
phone = (String) party.get("contactNumber");
String partyId = (String) party.get("partyId");
m_clientListBidingCombo.add(partyId);
- card = (String) party.get("memberId");
+ card = (String) party.get("cardId");
name = name == null ? "" : name;
email = email == null ? "" : email;
phone = phone == null ? "" : phone;