Attached Files | issue36850.patch [^] (9,349 bytes) 2017-09-13 19:49 [Show Content] [Hide Content]# HG changeset patch
# User Antonio Moreno <antonio.moreno@openbravo.com>
# Date 1505324687 -7200
# Wed Sep 13 19:44:47 2017 +0200
# Node ID c4e5ea1ec8ec0d2ff0c097b0fe471f191421ef20
# Parent f720a0d92a9ee2357bdc5e29d7530052a461bd70
Fixed issue 36850. Login will be disallowed if synchronized mode is enabled, and there are cashup errors pending to be saved correctly in this terminal.
Moved some utility functions useful to validate this check to POSUtils class, and called them from there.
diff -r f720a0d92a9e -r c4e5ea1ec8ec src/org/openbravo/retail/posterminal/InitialValidations.java
--- a/src/org/openbravo/retail/posterminal/InitialValidations.java Tue Sep 12 10:40:43 2017 +0200
+++ b/src/org/openbravo/retail/posterminal/InitialValidations.java Wed Sep 13 19:44:47 2017 +0200
@@ -16,6 +16,7 @@
import org.codehaus.jettison.json.JSONException;
import org.hibernate.criterion.Restrictions;
+import org.openbravo.base.exception.OBException;
import org.openbravo.base.weld.WeldUtils;
import org.openbravo.dal.core.OBContext;
import org.openbravo.dal.service.OBCriteria;
@@ -156,6 +157,13 @@
}
}
+ // Login should be disallowed if synchronized mode is enabled, and there are cashup errors in
+ // the current terminal
+ if (POSUtils.isSynchronizedModeEnabled()
+ && POSUtils.cashupErrorsExistInTerminal(posTerminal.getId())) {
+ throw new OBException("OBPOS_CashupErrorsMsg");
+ }
+
for (CustomInitialValidation customInitialValidation : getCustomInitialValidations()) {
customInitialValidation.validation(posTerminal);
}
diff -r f720a0d92a9e -r c4e5ea1ec8ec src/org/openbravo/retail/posterminal/POSUtils.java
--- a/src/org/openbravo/retail/posterminal/POSUtils.java Tue Sep 12 10:40:43 2017 +0200
+++ b/src/org/openbravo/retail/posterminal/POSUtils.java Wed Sep 13 19:44:47 2017 +0200
@@ -38,7 +38,10 @@
import org.openbravo.dal.service.OBCriteria;
import org.openbravo.dal.service.OBDal;
import org.openbravo.dal.service.OBQuery;
+import org.openbravo.erpCommon.businessUtility.Preferences;
import org.openbravo.erpCommon.utility.OBMessageUtils;
+import org.openbravo.erpCommon.utility.PropertyException;
+import org.openbravo.erpCommon.utility.PropertyNotFoundException;
import org.openbravo.erpCommon.utility.Utility;
import org.openbravo.model.ad.module.Module;
import org.openbravo.model.ad.module.ModuleDependency;
@@ -51,6 +54,7 @@
import org.openbravo.model.pricing.pricelist.PriceListVersion;
import org.openbravo.retail.config.OBRETCOProductList;
import org.openbravo.service.db.DalConnectionProvider;
+import org.openbravo.service.importprocess.ImportEntry;
/**
* @author iperdomo
@@ -816,4 +820,43 @@
return result;
}
+ public static boolean cashupErrorsExistInTerminal(String posId) {
+ OBPOSApplications terminal = OBDal.getInstance().getProxy(OBPOSApplications.class, posId);
+ OBCriteria<OBPOSErrors> errorsInPOSWindow = OBDal.getInstance().createCriteria(
+ OBPOSErrors.class);
+ errorsInPOSWindow.add(Restrictions.eq(OBPOSErrors.PROPERTY_OBPOSAPPLICATIONS, terminal));
+ errorsInPOSWindow.add(Restrictions.eq(OBPOSErrors.PROPERTY_TYPEOFDATA, "OBPOS_App_Cashup"));
+ errorsInPOSWindow.add(Restrictions.eq(OBPOSErrors.PROPERTY_ORDERSTATUS, "N"));
+ errorsInPOSWindow.setMaxResults(1);
+ if (errorsInPOSWindow.list().size() > 0) {
+ return true;
+ }
+ OBCriteria<ImportEntry> errorsInImportEntry = OBDal.getInstance().createCriteria(
+ ImportEntry.class);
+ errorsInImportEntry.add(Restrictions.eq(ImportEntry.PROPERTY_OBPOSPOSTERMINAL, terminal));
+ errorsInImportEntry.add(Restrictions.eq(ImportEntry.PROPERTY_TYPEOFDATA, "OBPOS_App_Cashup"));
+ errorsInImportEntry.add(Restrictions.eq(ImportEntry.PROPERTY_IMPORTSTATUS, "Error"));
+ errorsInImportEntry.setMaxResults(1);
+ if (errorsInImportEntry.list().size() > 0) {
+ return true;
+ }
+
+ return false;
+ }
+
+ public static boolean isSynchronizedModeEnabled() {
+
+ boolean isSynchronizeModeActive;
+ try {
+ isSynchronizeModeActive = "Y".equals(Preferences.getPreferenceValue(
+ "OBMOBC_SynchronizedMode", true, OBContext.getOBContext().getCurrentClient(), OBContext
+ .getOBContext().getCurrentOrganization(), OBContext.getOBContext().getUser(),
+ OBContext.getOBContext().getRole(), null));
+ } catch (PropertyNotFoundException prop) {
+ isSynchronizeModeActive = false;
+ } catch (PropertyException e) {
+ throw new OBException("Error while reading synchronized preference", e);
+ }
+ return isSynchronizeModeActive;
+ }
}
diff -r f720a0d92a9e -r c4e5ea1ec8ec src/org/openbravo/retail/posterminal/UpdateCashup.java
--- a/src/org/openbravo/retail/posterminal/UpdateCashup.java Tue Sep 12 10:40:43 2017 +0200
+++ b/src/org/openbravo/retail/posterminal/UpdateCashup.java Wed Sep 13 19:44:47 2017 +0200
@@ -25,8 +25,6 @@
import org.openbravo.dal.core.OBContext;
import org.openbravo.dal.service.OBDal;
import org.openbravo.dal.service.OBQuery;
-import org.openbravo.erpCommon.businessUtility.Preferences;
-import org.openbravo.erpCommon.utility.PropertyNotFoundException;
import org.openbravo.mobile.core.process.JSONPropertyToEntity;
import org.openbravo.mobile.core.process.PropertyByType;
import org.openbravo.service.importprocess.ImportEntryManager;
@@ -97,22 +95,12 @@
cashUp.setNewOBObject(true);
OBDal.getInstance().save(cashUp);
- boolean isSynchronizeModeActive;
- try {
- isSynchronizeModeActive = "Y".equals(Preferences.getPreferenceValue(
- "OBMOBC_SynchronizedMode", true, OBContext.getOBContext().getCurrentClient(),
- OBContext.getOBContext().getCurrentOrganization(),
- OBContext.getOBContext().getUser(), OBContext.getOBContext().getRole(), null));
- } catch (PropertyNotFoundException prop) {
- isSynchronizeModeActive = false;
- }
-
// If synchronize mode is active, there is no way to process two cashups with the same id at
// the same time.
// If synchronize mode is not active, we have to persist the header of the cashup. Doing
// this, we avoid possible conflicts trying to save two cashups with the same id at the same
// time.
- if (!isSynchronizeModeActive) {
+ if (!POSUtils.isSynchronizedModeEnabled()) {
OBDal.getInstance().flush();
OBDal.getInstance().getConnection().commit();
}
diff -r f720a0d92a9e -r c4e5ea1ec8ec src/org/openbravo/retail/posterminal/master/Cashup.java
--- a/src/org/openbravo/retail/posterminal/master/Cashup.java Tue Sep 12 10:40:43 2017 +0200
+++ b/src/org/openbravo/retail/posterminal/master/Cashup.java Wed Sep 13 19:44:47 2017 +0200
@@ -33,11 +33,9 @@
import org.openbravo.retail.posterminal.JSONProcessSimple;
import org.openbravo.retail.posterminal.OBPOSAppCashup;
import org.openbravo.retail.posterminal.OBPOSAppPayment;
-import org.openbravo.retail.posterminal.OBPOSApplications;
-import org.openbravo.retail.posterminal.OBPOSErrors;
import org.openbravo.retail.posterminal.OBPOSPaymentMethodCashup;
import org.openbravo.retail.posterminal.OBPOSTaxCashup;
-import org.openbravo.service.importprocess.ImportEntry;
+import org.openbravo.retail.posterminal.POSUtils;
import org.openbravo.service.json.DataResolvingMode;
import org.openbravo.service.json.DataToJsonConverter;
import org.openbravo.service.json.JsonConstants;
@@ -55,7 +53,7 @@
JSONArray respArray = new JSONArray();
String posId = jsonsent.getString("pos");
- if (cashupErrorsExistInTerminal(posId)) {
+ if (POSUtils.cashupErrorsExistInTerminal(posId)) {
result.put(JsonConstants.RESPONSE_ERRORMESSAGE, "There are cashup errors in this terminal");
result.put(JsonConstants.RESPONSE_STATUS, JsonConstants.RPCREQUEST_STATUS_FAILURE);
return result;
@@ -133,31 +131,6 @@
}
- private boolean cashupErrorsExistInTerminal(String posId) {
- OBPOSApplications terminal = OBDal.getInstance().getProxy(OBPOSApplications.class, posId);
- OBCriteria<OBPOSErrors> errorsInPOSWindow = OBDal.getInstance().createCriteria(
- OBPOSErrors.class);
- errorsInPOSWindow.add(Restrictions.eq(OBPOSErrors.PROPERTY_OBPOSAPPLICATIONS, terminal));
- errorsInPOSWindow.add(Restrictions.eq(OBPOSErrors.PROPERTY_TYPEOFDATA, "OBPOS_App_Cashup"));
- errorsInPOSWindow.add(Restrictions.eq(OBPOSErrors.PROPERTY_ORDERSTATUS, "N"));
- errorsInPOSWindow.setMaxResults(1);
- if (errorsInPOSWindow.list().size() > 0) {
- return true;
- }
- OBCriteria<ImportEntry> errorsInImportEntry = OBDal.getInstance().createCriteria(
- ImportEntry.class);
- errorsInImportEntry.add(Restrictions.eq(ImportEntry.PROPERTY_OBPOSPOSTERMINAL, terminal));
- errorsInImportEntry.add(Restrictions.eq(ImportEntry.PROPERTY_TYPEOFDATA, "OBPOS_App_Cashup"));
- errorsInImportEntry.add(Restrictions.eq(ImportEntry.PROPERTY_IMPORTSTATUS, "Error"));
- errorsInImportEntry.setMaxResults(1);
- if (errorsInImportEntry.list().size() > 0) {
- return true;
- }
-
- return false;
-
- }
-
private JSONArray getPayments(String cashupId, DataToJsonConverter converter)
throws JSONException {
JSONArray respArray = new JSONArray();
|