details:   https://code.openbravo.com/erp/devel/pi/rev/b5a72c7ad0dc
changeset: 20140:b5a72c7ad0dc
user:      David Miguelez <david.miguelez <at> openbravo.com>
date:      Wed Apr 17 18:50:35 2013 +0200
summary:   Fixes Issue 23566. Prevents from creating a Goods Receipt with
a Warehouse that not belongs to the Organization of the Document.

diffstat:

 src-db/database/sourcedata/AD_MESSAGE.xml                        |  12 +++
 src/org/openbravo/erpCommon/ad_forms/MaterialReceiptPending.java |  38 
+++++++++-
 2 files changed, 49 insertions(+), 1 deletions(-)

diffs (105 lines):

diff -r 94433e46bcd9 -r b5a72c7ad0dc src-db/database/sourcedata/AD_MESSAGE.xml
--- a/src-db/database/sourcedata/AD_MESSAGE.xml Thu Apr 18 11:02:33 2013 +0200
+++ b/src-db/database/sourcedata/AD_MESSAGE.xml Wed Apr 17 18:50:35 2013 +0200
@@ -23480,6 +23480,18 @@
 <!--DA317D308E294B55BA3DB949F45AA9BA-->  
<ISINCLUDEINI18N><![CDATA[N]]></ISINCLUDEINI18N>
 <!--DA317D308E294B55BA3DB949F45AA9BA--></AD_MESSAGE>
 
+<!--DAD951EF2B0548F68AD853B6AF578FD3--><AD_MESSAGE>
+<!--DAD951EF2B0548F68AD853B6AF578FD3-->  
<AD_MESSAGE_ID><![CDATA[DAD951EF2B0548F68AD853B6AF578FD3]]></AD_MESSAGE_ID>
+<!--DAD951EF2B0548F68AD853B6AF578FD3-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--DAD951EF2B0548F68AD853B6AF578FD3-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--DAD951EF2B0548F68AD853B6AF578FD3-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--DAD951EF2B0548F68AD853B6AF578FD3-->  
<VALUE><![CDATA[WarehouseNotAccessibleByOrg]]></VALUE>
+<!--DAD951EF2B0548F68AD853B6AF578FD3-->  <MSGTEXT><![CDATA[The selected 
Warehouse is not accessible by the Organization of the selected 
Document.]]></MSGTEXT>
+<!--DAD951EF2B0548F68AD853B6AF578FD3-->  <MSGTYPE><![CDATA[E]]></MSGTYPE>
+<!--DAD951EF2B0548F68AD853B6AF578FD3-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
+<!--DAD951EF2B0548F68AD853B6AF578FD3-->  
<ISINCLUDEINI18N><![CDATA[N]]></ISINCLUDEINI18N>
+<!--DAD951EF2B0548F68AD853B6AF578FD3--></AD_MESSAGE>
+
 <!--DBA2EDC3661F42E0B9241DA3D948B729--><AD_MESSAGE>
 <!--DBA2EDC3661F42E0B9241DA3D948B729-->  
<AD_MESSAGE_ID><![CDATA[DBA2EDC3661F42E0B9241DA3D948B729]]></AD_MESSAGE_ID>
 <!--DBA2EDC3661F42E0B9241DA3D948B729-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff -r 94433e46bcd9 -r b5a72c7ad0dc 
src/org/openbravo/erpCommon/ad_forms/MaterialReceiptPending.java
--- a/src/org/openbravo/erpCommon/ad_forms/MaterialReceiptPending.java  Thu Apr 
18 11:02:33 2013 +0200
+++ b/src/org/openbravo/erpCommon/ad_forms/MaterialReceiptPending.java  Wed Apr 
17 18:50:35 2013 +0200
@@ -23,6 +23,7 @@
 import java.io.PrintWriter;
 import java.sql.Connection;
 import java.sql.SQLException;
+import java.util.List;
 import java.util.StringTokenizer;
 import java.util.regex.Pattern;
 
@@ -33,6 +34,7 @@
 import org.openbravo.base.filter.IsIDFilter;
 import org.openbravo.base.secureApp.HttpSecureAppServlet;
 import org.openbravo.base.secureApp.VariablesSecureApp;
+import org.openbravo.dal.service.OBDal;
 import org.openbravo.erpCommon.businessUtility.Tree;
 import org.openbravo.erpCommon.businessUtility.WindowTabs;
 import org.openbravo.erpCommon.businessUtility.WindowTabsData;
@@ -45,6 +47,11 @@
 import org.openbravo.erpCommon.utility.SequenceIdData;
 import org.openbravo.erpCommon.utility.ToolBar;
 import org.openbravo.erpCommon.utility.Utility;
+import org.openbravo.model.common.enterprise.Locator;
+import org.openbravo.model.common.enterprise.OrgWarehouse;
+import org.openbravo.model.common.enterprise.Organization;
+import org.openbravo.model.common.enterprise.Warehouse;
+import org.openbravo.model.common.order.OrderLine;
 import org.openbravo.utils.Replace;
 import org.openbravo.xmlEngine.XmlDocument;
 
@@ -231,6 +238,7 @@
       }
       xmlDocument.setParameter("script", html.toString());
     }
+
     xmlDocument.setData("structure1", data);
     out.println(xmlDocument.print());
     out.close();
@@ -270,6 +278,35 @@
           String strOrderlineId = st.nextToken().trim();
           MaterialReceiptPendingData[] data = 
MaterialReceiptPendingData.select(this,
               strOrderlineId);
+
+          String strLocator = vars.getStringParameter("inpmLocatorId" + 
strOrderlineId);
+          Locator locator = OBDal.getInstance().get(Locator.class, strLocator);
+          Warehouse locatorWH = locator.getWarehouse();
+
+          Organization orderOrganization = 
OBDal.getInstance().get(Organization.class,
+              data[0].adOrgId);
+
+          boolean warehouseBelongsToOrg = false;
+          List<OrgWarehouse> orderOrgWHList = 
orderOrganization.getOrganizationWarehouseList();
+          for (OrgWarehouse orderOrgWH : orderOrgWHList) {
+            if (orderOrgWH.getWarehouse().equals(locatorWH)) {
+              warehouseBelongsToOrg = true;
+              continue;
+            }
+          }
+          if (!warehouseBelongsToOrg) {
+            OrderLine ol = OBDal.getInstance().get(OrderLine.class, 
strOrderlineId);
+            myMessage.setType("Error");
+            myMessage.setTitle(Utility.messageBD(this, "Error", 
vars.getLanguage()));
+            myMessage.setMessage(Utility.messageBD(this, 
"WarehouseNotAccessibleByOrg",
+                vars.getLanguage())
+                + " "
+                + ol.getSalesOrder().getDocumentNo()
+                + " - "
+                + MaterialReceiptPendingData.bPartnerDescription(this, 
data[0].cBpartnerId));
+            return myMessage;
+          }
+
           if (!strLastBpartnerId.equals(data[0].cBpartnerId)
               || !strLastOrgId.equals(data[0].adOrgId)) {
             if (!strmInoutId.equals("")) {
@@ -318,7 +355,6 @@
           strLastBpartnerId = data[0].cBpartnerId;
           strLastOrgId = data[0].adOrgId;
           String strQtyordered = vars.getNumericParameter("inpQtyordered" + 
strOrderlineId);
-          String strLocator = vars.getStringParameter("inpmLocatorId" + 
strOrderlineId);
           String strSequenceLine = SequenceIdData.getUUID();
           MaterialReceiptPendingLinesData[] dataLine = 
MaterialReceiptPendingLinesData.select(this,
               strOrderlineId);

------------------------------------------------------------------------------
Precog is a next-generation analytics platform capable of advanced
analytics on semi-structured data. The platform includes APIs for building
apps and a phenomenal toolset for data science. Developers can use
our toolset for easy data analysis & visualization. Get a free account!
http://www2.precog.com/precogplatform/slashdotnewsletter
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to