diff -r e9aa75423baf src-db/database/model/functions/M_CHECK_STOCK.xml
--- a/src-db/database/model/functions/M_CHECK_STOCK.xml	Mon Sep 29 09:39:26 2014 +0200
+++ b/src-db/database/model/functions/M_CHECK_STOCK.xml	Tue Sep 30 10:01:09 2014 +0200
@@ -45,20 +45,16 @@
   FROM AD_CLIENTINFO
   WHERE AD_CLIENT_ID=p_AD_Client_ID;
   IF v_Stock='N' THEN
-    SELECT COUNT(*)
-    INTO v_ExistsNegativeStock
-    FROM
-      ( SELECT ROUND(COALESCE(QTYONHAND, 0), 2) AS QTY,
-        ROUND(COALESCE(QTYORDERONHAND, 0), 2) AS QTYORDER
+      SELECT 1
+      INTO v_ExistsNegativeStock
+      where exists (select 1
       FROM M_STORAGE_DETAIL
-      WHERE M_PRODUCT_ID=p_M_Product_ID
-        AND AD_CLIENT_ID=p_AD_Client_ID
-        AND AD_ORG_ID=p_AD_Org_ID
-      )
-      A
-    WHERE QTY<0
-      OR QTYORDER<0;
-    IF v_ExistsNegativeStock<>0 THEN
+      WHERE M_PRODUCT_ID=p_m_product_id
+        AND AD_CLIENT_ID=p_ad_client_id
+        AND AD_ORG_ID=p_ad_org_id
+        and (QTYORDERONHAND< 0 or qtyonhand < 0));
+        
+    IF v_ExistsNegativeStock is not null THEN
       p_Result:=0;
       p_Message:='@NotEnoughStocked@';
     END IF;
diff -r e9aa75423baf src-db/database/model/tables/M_STORAGE_DETAIL.xml
--- a/src-db/database/model/tables/M_STORAGE_DETAIL.xml	Mon Sep 29 09:39:26 2014 +0200
+++ b/src-db/database/model/tables/M_STORAGE_DETAIL.xml	Tue Sep 30 10:01:09 2014 +0200
@@ -103,6 +103,12 @@
       <index name="M_STORAGE_DETAIL_UOM" unique="false">
         <index-column name="C_UOM_ID"/>
       </index>
+      <index name="M_STORAGEDET_QTYONHAND" unique="false">
+        <index-column name="QTYONHAND"/>
+      </index>
+      <index name="M_STORAGEDET_QTYORDERONHAND" unique="false">
+        <index-column name="QTYORDERONHAND"/>
+      </index>
       <unique name="M_STORAGE_DETAIL_UN">
         <unique-column name="M_PRODUCT_ID"/>
         <unique-column name="M_LOCATOR_ID"/>
