details:   https://code.openbravo.com/erp/devel/pi/rev/72795668d074
changeset: 16214:72795668d074
user:      David Miguelez <david.miguelez <at> openbravo.com>
date:      Wed Apr 25 16:34:15 2012 +0200
summary:   Fixes issue 0020341, 20288: Adds a Callout to warn the user
when deactivating a Warehouse or an Storage Bin.

details:   https://code.openbravo.com/erp/devel/pi/rev/0e26ae8cd928
changeset: 16215:0e26ae8cd928
user:      Mikel Irurita <mikel.irurita <at> openbravo.com>
date:      Wed Apr 25 18:33:43 2012 +0200
summary:   Related to issue 20341: remove extra parenthesis

diffstat:

 src-db/database/sourcedata/AD_CALLOUT.xml                        |    9 +
 src-db/database/sourcedata/AD_COLUMN.xml                         |    2 +
 src-db/database/sourcedata/AD_MESSAGE.xml                        |   44 +++
 src-db/database/sourcedata/AD_MODEL_OBJECT.xml                   |   12 +
 src-db/database/sourcedata/AD_MODEL_OBJECT_MAPPING.xml           |   10 +
 src/org/openbravo/erpCommon/ad_callouts/SE_Locator_Activate.java |  144 
++++++++++
 6 files changed, 221 insertions(+), 0 deletions(-)

diffs (truncated from 303 to 300 lines):

diff -r 8e05e2cd1f5b -r 0e26ae8cd928 src-db/database/sourcedata/AD_CALLOUT.xml
--- a/src-db/database/sourcedata/AD_CALLOUT.xml Wed Apr 25 18:28:42 2012 +0200
+++ b/src-db/database/sourcedata/AD_CALLOUT.xml Wed Apr 25 18:33:43 2012 +0200
@@ -781,6 +781,15 @@
 <!--3585710F23F244D9B179A28D18242583-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
 <!--3585710F23F244D9B179A28D18242583--></AD_CALLOUT>
 
+<!--3C9DEC9042534CFA8C74B83D28CA777D--><AD_CALLOUT>
+<!--3C9DEC9042534CFA8C74B83D28CA777D-->  
<AD_CALLOUT_ID><![CDATA[3C9DEC9042534CFA8C74B83D28CA777D]]></AD_CALLOUT_ID>
+<!--3C9DEC9042534CFA8C74B83D28CA777D-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--3C9DEC9042534CFA8C74B83D28CA777D-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--3C9DEC9042534CFA8C74B83D28CA777D-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--3C9DEC9042534CFA8C74B83D28CA777D-->  
<NAME><![CDATA[SE_Locator_Activate]]></NAME>
+<!--3C9DEC9042534CFA8C74B83D28CA777D-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
+<!--3C9DEC9042534CFA8C74B83D28CA777D--></AD_CALLOUT>
+
 <!--3E7999A44EEA40FEBC71EACA93A51198--><AD_CALLOUT>
 <!--3E7999A44EEA40FEBC71EACA93A51198-->  
<AD_CALLOUT_ID><![CDATA[3E7999A44EEA40FEBC71EACA93A51198]]></AD_CALLOUT_ID>
 <!--3E7999A44EEA40FEBC71EACA93A51198-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff -r 8e05e2cd1f5b -r 0e26ae8cd928 src-db/database/sourcedata/AD_COLUMN.xml
--- a/src-db/database/sourcedata/AD_COLUMN.xml  Wed Apr 25 18:28:42 2012 +0200
+++ b/src-db/database/sourcedata/AD_COLUMN.xml  Wed Apr 25 18:33:43 2012 +0200
@@ -18526,6 +18526,7 @@
 <!--1249-->  <ISSESSIONATTR><![CDATA[N]]></ISSESSIONATTR>
 <!--1249-->  <ISSECONDARYKEY><![CDATA[N]]></ISSECONDARYKEY>
 <!--1249-->  <ISDESENCRYPTABLE><![CDATA[N]]></ISDESENCRYPTABLE>
+<!--1249-->  
<AD_CALLOUT_ID><![CDATA[3C9DEC9042534CFA8C74B83D28CA777D]]></AD_CALLOUT_ID>
 <!--1249-->  <DEVELOPMENTSTATUS><![CDATA[RE]]></DEVELOPMENTSTATUS>
 <!--1249-->  <AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
 <!--1249-->  <POSITION><![CDATA[4]]></POSITION>
@@ -20091,6 +20092,7 @@
 <!--1392-->  <ISSESSIONATTR><![CDATA[N]]></ISSESSIONATTR>
 <!--1392-->  <ISSECONDARYKEY><![CDATA[N]]></ISSECONDARYKEY>
 <!--1392-->  <ISDESENCRYPTABLE><![CDATA[N]]></ISDESENCRYPTABLE>
+<!--1392-->  
<AD_CALLOUT_ID><![CDATA[3C9DEC9042534CFA8C74B83D28CA777D]]></AD_CALLOUT_ID>
 <!--1392-->  <DEVELOPMENTSTATUS><![CDATA[RE]]></DEVELOPMENTSTATUS>
 <!--1392-->  <AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
 <!--1392-->  <POSITION><![CDATA[4]]></POSITION>
diff -r 8e05e2cd1f5b -r 0e26ae8cd928 src-db/database/sourcedata/AD_MESSAGE.xml
--- a/src-db/database/sourcedata/AD_MESSAGE.xml Wed Apr 25 18:28:42 2012 +0200
+++ b/src-db/database/sourcedata/AD_MESSAGE.xml Wed Apr 25 18:33:43 2012 +0200
@@ -14805,6 +14805,17 @@
 <!--1237DD133882495FB6AF87E80A852A66-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
 <!--1237DD133882495FB6AF87E80A852A66--></AD_MESSAGE>
 
+<!--1238635F09EC446A94D17D8D86BCEE3D--><AD_MESSAGE>
+<!--1238635F09EC446A94D17D8D86BCEE3D-->  
<AD_MESSAGE_ID><![CDATA[1238635F09EC446A94D17D8D86BCEE3D]]></AD_MESSAGE_ID>
+<!--1238635F09EC446A94D17D8D86BCEE3D-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--1238635F09EC446A94D17D8D86BCEE3D-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--1238635F09EC446A94D17D8D86BCEE3D-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--1238635F09EC446A94D17D8D86BCEE3D-->  
<VALUE><![CDATA[M_WAREHOUSE_ACTIVE_CHECK_ENTRIES]]></VALUE>
+<!--1238635F09EC446A94D17D8D86BCEE3D-->  <MSGTEXT><![CDATA[There are pending 
Goods Shipments/Receipts for this Warehouse]]></MSGTEXT>
+<!--1238635F09EC446A94D17D8D86BCEE3D-->  <MSGTYPE><![CDATA[I]]></MSGTYPE>
+<!--1238635F09EC446A94D17D8D86BCEE3D-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
+<!--1238635F09EC446A94D17D8D86BCEE3D--></AD_MESSAGE>
+
 <!--1312C32F5ECB439A8D5EE56876CC43C1--><AD_MESSAGE>
 <!--1312C32F5ECB439A8D5EE56876CC43C1-->  
<AD_MESSAGE_ID><![CDATA[1312C32F5ECB439A8D5EE56876CC43C1]]></AD_MESSAGE_ID>
 <!--1312C32F5ECB439A8D5EE56876CC43C1-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -15114,6 +15125,17 @@
 <!--1C3FA623333E4AE183F1F441E9F84DE9-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
 <!--1C3FA623333E4AE183F1F441E9F84DE9--></AD_MESSAGE>
 
+<!--1C68A76422C94FEC882C1E576C9F4F28--><AD_MESSAGE>
+<!--1C68A76422C94FEC882C1E576C9F4F28-->  
<AD_MESSAGE_ID><![CDATA[1C68A76422C94FEC882C1E576C9F4F28]]></AD_MESSAGE_ID>
+<!--1C68A76422C94FEC882C1E576C9F4F28-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--1C68A76422C94FEC882C1E576C9F4F28-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--1C68A76422C94FEC882C1E576C9F4F28-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--1C68A76422C94FEC882C1E576C9F4F28-->  
<VALUE><![CDATA[M_STORAGE_ACTIVE_CHECK_FULL]]></VALUE>
+<!--1C68A76422C94FEC882C1E576C9F4F28-->  <MSGTEXT><![CDATA[The Storage Bin is 
not empty.]]></MSGTEXT>
+<!--1C68A76422C94FEC882C1E576C9F4F28-->  <MSGTYPE><![CDATA[W]]></MSGTYPE>
+<!--1C68A76422C94FEC882C1E576C9F4F28-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
+<!--1C68A76422C94FEC882C1E576C9F4F28--></AD_MESSAGE>
+
 <!--1D9A15F68BC447C68725A544F8ED1719--><AD_MESSAGE>
 <!--1D9A15F68BC447C68725A544F8ED1719-->  
<AD_MESSAGE_ID><![CDATA[1D9A15F68BC447C68725A544F8ED1719]]></AD_MESSAGE_ID>
 <!--1D9A15F68BC447C68725A544F8ED1719-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -18474,6 +18496,17 @@
 <!--ADA611B9B6E04D92A88BDB2D0B1BC0F0-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
 <!--ADA611B9B6E04D92A88BDB2D0B1BC0F0--></AD_MESSAGE>
 
+<!--ADAF53CF368D4956BDFF326A9361C750--><AD_MESSAGE>
+<!--ADAF53CF368D4956BDFF326A9361C750-->  
<AD_MESSAGE_ID><![CDATA[ADAF53CF368D4956BDFF326A9361C750]]></AD_MESSAGE_ID>
+<!--ADAF53CF368D4956BDFF326A9361C750-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--ADAF53CF368D4956BDFF326A9361C750-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--ADAF53CF368D4956BDFF326A9361C750-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--ADAF53CF368D4956BDFF326A9361C750-->  
<VALUE><![CDATA[M_WAREHOUSE_ACTIVE_CHECK_ACTIVES]]></VALUE>
+<!--ADAF53CF368D4956BDFF326A9361C750-->  <MSGTEXT><![CDATA[There are active 
Storage Bins inside this Warehouse]]></MSGTEXT>
+<!--ADAF53CF368D4956BDFF326A9361C750-->  <MSGTYPE><![CDATA[W]]></MSGTYPE>
+<!--ADAF53CF368D4956BDFF326A9361C750-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
+<!--ADAF53CF368D4956BDFF326A9361C750--></AD_MESSAGE>
+
 <!--ADF8BF150C894C2D94A6A0AFE89E2843--><AD_MESSAGE>
 <!--ADF8BF150C894C2D94A6A0AFE89E2843-->  
<AD_MESSAGE_ID><![CDATA[ADF8BF150C894C2D94A6A0AFE89E2843]]></AD_MESSAGE_ID>
 <!--ADF8BF150C894C2D94A6A0AFE89E2843-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -18773,6 +18806,17 @@
 <!--B90DAD98BE6B409FA4D10CD01397A735-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
 <!--B90DAD98BE6B409FA4D10CD01397A735--></AD_MESSAGE>
 
+<!--B9EE1302AB724B3FA76024DB096412EE--><AD_MESSAGE>
+<!--B9EE1302AB724B3FA76024DB096412EE-->  
<AD_MESSAGE_ID><![CDATA[B9EE1302AB724B3FA76024DB096412EE]]></AD_MESSAGE_ID>
+<!--B9EE1302AB724B3FA76024DB096412EE-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--B9EE1302AB724B3FA76024DB096412EE-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--B9EE1302AB724B3FA76024DB096412EE-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--B9EE1302AB724B3FA76024DB096412EE-->  
<VALUE><![CDATA[M_STORAGE_ACTIVE_CHECK_LAST]]></VALUE>
+<!--B9EE1302AB724B3FA76024DB096412EE-->  <MSGTEXT><![CDATA[The Storage Bin is 
the last one active for this Warehouse]]></MSGTEXT>
+<!--B9EE1302AB724B3FA76024DB096412EE-->  <MSGTYPE><![CDATA[W]]></MSGTYPE>
+<!--B9EE1302AB724B3FA76024DB096412EE-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
+<!--B9EE1302AB724B3FA76024DB096412EE--></AD_MESSAGE>
+
 <!--BAD33CDEBE2547A9A2FF7E87DA0B4C38--><AD_MESSAGE>
 <!--BAD33CDEBE2547A9A2FF7E87DA0B4C38-->  
<AD_MESSAGE_ID><![CDATA[BAD33CDEBE2547A9A2FF7E87DA0B4C38]]></AD_MESSAGE_ID>
 <!--BAD33CDEBE2547A9A2FF7E87DA0B4C38-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff -r 8e05e2cd1f5b -r 0e26ae8cd928 
src-db/database/sourcedata/AD_MODEL_OBJECT.xml
--- a/src-db/database/sourcedata/AD_MODEL_OBJECT.xml    Wed Apr 25 18:28:42 
2012 +0200
+++ b/src-db/database/sourcedata/AD_MODEL_OBJECT.xml    Wed Apr 25 18:33:43 
2012 +0200
@@ -3211,6 +3211,18 @@
 <!--30D55DB2422B4CA7B7B2355E1A08EF11-->  
<OBJECT_TYPE><![CDATA[S]]></OBJECT_TYPE>
 <!--30D55DB2422B4CA7B7B2355E1A08EF11--></AD_MODEL_OBJECT>
 
+<!--31BC8D12B955403EB8D88B85EB9BF4E4--><AD_MODEL_OBJECT>
+<!--31BC8D12B955403EB8D88B85EB9BF4E4-->  
<AD_MODEL_OBJECT_ID><![CDATA[31BC8D12B955403EB8D88B85EB9BF4E4]]></AD_MODEL_OBJECT_ID>
+<!--31BC8D12B955403EB8D88B85EB9BF4E4-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--31BC8D12B955403EB8D88B85EB9BF4E4-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--31BC8D12B955403EB8D88B85EB9BF4E4-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--31BC8D12B955403EB8D88B85EB9BF4E4-->  <ACTION><![CDATA[C]]></ACTION>
+<!--31BC8D12B955403EB8D88B85EB9BF4E4-->  
<CLASSNAME><![CDATA[org.openbravo.erpCommon.ad_callouts.SE_Locator_Activate]]></CLASSNAME>
+<!--31BC8D12B955403EB8D88B85EB9BF4E4-->  <ISDEFAULT><![CDATA[Y]]></ISDEFAULT>
+<!--31BC8D12B955403EB8D88B85EB9BF4E4-->  
<AD_CALLOUT_ID><![CDATA[3C9DEC9042534CFA8C74B83D28CA777D]]></AD_CALLOUT_ID>
+<!--31BC8D12B955403EB8D88B85EB9BF4E4-->  
<OBJECT_TYPE><![CDATA[S]]></OBJECT_TYPE>
+<!--31BC8D12B955403EB8D88B85EB9BF4E4--></AD_MODEL_OBJECT>
+
 <!--328EDF326D894E7D8BBA2B06FB07F1EA--><AD_MODEL_OBJECT>
 <!--328EDF326D894E7D8BBA2B06FB07F1EA-->  
<AD_MODEL_OBJECT_ID><![CDATA[328EDF326D894E7D8BBA2B06FB07F1EA]]></AD_MODEL_OBJECT_ID>
 <!--328EDF326D894E7D8BBA2B06FB07F1EA-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff -r 8e05e2cd1f5b -r 0e26ae8cd928 
src-db/database/sourcedata/AD_MODEL_OBJECT_MAPPING.xml
--- a/src-db/database/sourcedata/AD_MODEL_OBJECT_MAPPING.xml    Wed Apr 25 
18:28:42 2012 +0200
+++ b/src-db/database/sourcedata/AD_MODEL_OBJECT_MAPPING.xml    Wed Apr 25 
18:33:43 2012 +0200
@@ -4080,6 +4080,16 @@
 <!--887A5D8C19464BCD805726641AD05CAD-->  <ISDEFAULT><![CDATA[Y]]></ISDEFAULT>
 <!--887A5D8C19464BCD805726641AD05CAD--></AD_MODEL_OBJECT_MAPPING>
 
+<!--8E29104FB7F742429239BCE757554EDB--><AD_MODEL_OBJECT_MAPPING>
+<!--8E29104FB7F742429239BCE757554EDB-->  
<AD_MODEL_OBJECT_MAPPING_ID><![CDATA[8E29104FB7F742429239BCE757554EDB]]></AD_MODEL_OBJECT_MAPPING_ID>
+<!--8E29104FB7F742429239BCE757554EDB-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--8E29104FB7F742429239BCE757554EDB-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--8E29104FB7F742429239BCE757554EDB-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--8E29104FB7F742429239BCE757554EDB-->  
<AD_MODEL_OBJECT_ID><![CDATA[31BC8D12B955403EB8D88B85EB9BF4E4]]></AD_MODEL_OBJECT_ID>
+<!--8E29104FB7F742429239BCE757554EDB-->  
<MAPPINGNAME><![CDATA[/ad_callouts/SE_Locator_Activate.html]]></MAPPINGNAME>
+<!--8E29104FB7F742429239BCE757554EDB-->  <ISDEFAULT><![CDATA[Y]]></ISDEFAULT>
+<!--8E29104FB7F742429239BCE757554EDB--></AD_MODEL_OBJECT_MAPPING>
+
 <!--8FFBEAE4CF644D3D98B19722BAE14E64--><AD_MODEL_OBJECT_MAPPING>
 <!--8FFBEAE4CF644D3D98B19722BAE14E64-->  
<AD_MODEL_OBJECT_MAPPING_ID><![CDATA[8FFBEAE4CF644D3D98B19722BAE14E64]]></AD_MODEL_OBJECT_MAPPING_ID>
 <!--8FFBEAE4CF644D3D98B19722BAE14E64-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff -r 8e05e2cd1f5b -r 0e26ae8cd928 
src/org/openbravo/erpCommon/ad_callouts/SE_Locator_Activate.java
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/src/org/openbravo/erpCommon/ad_callouts/SE_Locator_Activate.java  Wed Apr 
25 18:33:43 2012 +0200
@@ -0,0 +1,144 @@
+/*
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo  Public  License
+ * Version  1.1  (the  "License"),  being   the  Mozilla   Public  License
+ * Version 1.1  with a permitted attribution clause; you may not  use this
+ * file except in compliance with the License. You  may  obtain  a copy of
+ * the License at http://www.openbravo.com/legal/license.html
+ * Software distributed under the License  is  distributed  on  an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific  language  governing  rights  and  limitations
+ * under the License.
+ * The Original Code is Openbravo ERP.
+ * The Initial Developer of the Original Code is Openbravo SLU
+ * All portions are Copyright (C) 2012 Openbravo SLU
+ * All Rights Reserved.
+ * Contributor(s):  ______________________________________.
+ ************************************************************************
+ */
+
+package org.openbravo.erpCommon.ad_callouts;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.servlet.ServletException;
+
+import org.openbravo.advpaymentmngt.utility.FIN_Utility;
+import org.openbravo.base.secureApp.VariablesSecureApp;
+import org.openbravo.dal.core.OBContext;
+import org.openbravo.dal.service.OBDal;
+import org.openbravo.dal.service.OBQuery;
+import org.openbravo.model.common.enterprise.Locator;
+import org.openbravo.model.common.enterprise.Warehouse;
+import org.openbravo.model.materialmgmt.onhandquantity.StorageDetail;
+import org.openbravo.model.materialmgmt.onhandquantity.StoragePending;
+
+public class SE_Locator_Activate extends SimpleCallout {
+  private static final long serialVersionUID = 1L;
+
+  private final String STORAGEBIN_TAB = "178";
+  private final String WAREHOUSE_TAB = "177";
+
+  @Override
+  protected void execute(CalloutInfo info) throws ServletException {
+
+    VariablesSecureApp vars = info.vars;
+    String active = vars.getStringParameter("inpisactive");
+    String strLocator = vars.getStringParameter("inpmLocatorId");
+    String tab = vars.getStringParameter("inpTabId");
+    String strWarehouse = vars.getStringParameter("inpmWarehouseId");
+
+    if (active.equals("Y")) {
+      return;
+    }
+
+    OBContext.setAdminMode(true);
+    try {
+
+      if (tab.equals(STORAGEBIN_TAB)) {
+        if (storageIsNotEmpty(strLocator)) {
+          info.addResult("MESSAGE", 
FIN_Utility.messageBD("M_STORAGE_ACTIVE_CHECK_FULL"));
+        } else {
+          Locator locator = OBDal.getInstance().get(Locator.class, strLocator);
+          if (numberOfActiveStorageBins(locator.getWarehouse()) == 1 && 
locator.isActive()) {
+            // This means that the warehouse has only one active storage bin 
and it is this one
+            info.addResult("MESSAGE", 
FIN_Utility.messageBD("M_STORAGE_ACTIVE_CHECK_LAST"));
+          }
+        }
+      } else if (tab.equals(WAREHOUSE_TAB)) {
+        Warehouse warehouse = OBDal.getInstance().get(Warehouse.class, 
strWarehouse);
+        if (numberOfActiveStorageBins(warehouse) > 0) {
+          info.addResult("MESSAGE", 
FIN_Utility.messageBD("M_WAREHOUSE_ACTIVE_CHECK_ACTIVES"));
+        } else if (warehouseWithPendingReceipts(warehouse.getId())) {
+          info.addResult("MESSAGE", 
FIN_Utility.messageBD("M_WAREHOUSE_ACTIVE_CHECK_ENTRIES"));
+        }
+      }
+
+    } finally {
+      OBContext.restorePreviousMode();
+    }
+  }
+
+  /**
+   * This method returns true if the storage bin with the id passed as 
argument has stock inside.
+   * This means that the storage bin should not be deactivated.
+   */
+  private boolean storageIsNotEmpty(String strLocator) {
+    final StringBuilder hsqlScript = new StringBuilder();
+    final List<Object> parameters = new ArrayList<Object>();
+
+    hsqlScript.append(" as sd ");
+    hsqlScript.append(" where sd." + StorageDetail.PROPERTY_STORAGEBIN + ".id 
= ? and ");
+    parameters.add(strLocator);
+    hsqlScript.append(" (coalesce (sd." + 
StorageDetail.PROPERTY_QUANTITYONHAND + ",0) <> 0)");
+    hsqlScript.append(" or coalesce (sd." + 
StorageDetail.PROPERTY_ONHANDORDERQUANITY + ",0) <> 0");
+    hsqlScript.append(" or coalesce (sd." + 
StorageDetail.PROPERTY_QUANTITYINDRAFTTRANSACTIONS
+        + ",0) <> 0");
+    hsqlScript.append(" or coalesce (sd." + 
StorageDetail.PROPERTY_QUANTITYORDERINDRAFTTRANSACTIONS
+        + ",0) <> 0) ");
+
+    final OBQuery<StorageDetail> query = 
OBDal.getInstance().createQuery(StorageDetail.class,
+        hsqlScript.toString());
+    query.setParameters(parameters);
+    return query.list().size() > 0;
+  }
+
+  /**
+   * This method returns true if the warehouse has pending shipments or 
receipts.
+   */
+  private Boolean warehouseWithPendingReceipts(String warehouse) {
+    final StringBuilder hsqlScript = new StringBuilder();
+    final List<Object> parameters = new ArrayList<Object>();
+
+    hsqlScript.append(" as sp");
+    hsqlScript.append(" left join sp.warehouse as w");
+    hsqlScript.append(" where w.id = ? and");
+    parameters.add(warehouse);
+    hsqlScript.append(" (coalesce (sp." + 
StoragePending.PROPERTY_ORDEREDQUANTITY + ",0) <> 0");
+    hsqlScript.append(" or coalesce (sp." + 
StoragePending.PROPERTY_ORDEREDQUANTITYORDER
+        + ",0) <> 0");
+    hsqlScript.append(" or coalesce (sp." + 
StoragePending.PROPERTY_RESERVEDQUANTITY + ",0) <> 0");
+    hsqlScript.append(" or coalesce (sp." + 
StoragePending.PROPERTY_RESERVEDQUANTITYORDER
+        + ",0) <> 0) ");
+
+    final OBQuery<StoragePending> query = 
OBDal.getInstance().createQuery(StoragePending.class,
+        hsqlScript.toString());
+    query.setParameters(parameters);
+    return query.list().size() > 0;
+  }
+
+  /**
+   * This method returns the number of Active Storage Bins a Warehouse has.
+   */
+  private int numberOfActiveStorageBins(Warehouse warehouse) {
+    int number = 0;
+    for (Locator locator : warehouse.getLocatorList()) {
+      if (locator.isActive()) {
+        number++;
+      }
+    }
+    return number;

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to