details:   https://code.openbravo.com/erp/devel/pi/rev/ef9b9a588ce3
changeset: 16243:ef9b9a588ce3
user:      Javier Etxarri <javier.echarri <at> openbravo.com>
date:      Fri Apr 27 14:52:20 2012 +0200
summary:   Fixes issue 20367: Create Standards can not be executed.
The problem was that in the create standares process, application create one 
record in m_storage_detail with one product without any atrributeset and with 
qty's zero.
So the m_update_inventory tries to delete but it has a related record in 
m_stock_aux

diffstat:

 src-db/database/model/functions/M_UPDATE_INVENTORY.xml |   6 ++-
 src-db/database/model/functions/M_UPDATE_STOCKAUX.xml  |  28 ++++++++++++++++++
 2 files changed, 32 insertions(+), 2 deletions(-)

diffs (69 lines):

diff -r 0a1174509a27 -r ef9b9a588ce3 
src-db/database/model/functions/M_UPDATE_INVENTORY.xml
--- a/src-db/database/model/functions/M_UPDATE_INVENTORY.xml    Fri Apr 27 
14:00:25 2012 +0200
+++ b/src-db/database/model/functions/M_UPDATE_INVENTORY.xml    Fri Apr 27 
14:52:20 2012 +0200
@@ -57,6 +57,7 @@
 * Contributor(s):  ______________________________________.
 ************************************************************************/
   v_cuenta NUMBER;
+  v_count NUMBER;
   v_qtyorder NUMBER;
   v_preqtyorder NUMBER;
   v_Storage_ID VARCHAR2(32);
@@ -132,9 +133,10 @@
     AND (QTYORDERONHAND=0 OR QTYORDERONHAND IS NULL)
     AND PREQTYONHAND=0
     AND (PREQTYORDERONHAND=0 OR PREQTYORDERONHAND IS NULL)
-    AND P.M_PRODUCT_ID=p_product;
+    AND P.M_PRODUCT_ID=p_product
+    AND NOT EXISTS (SELECT 1 FROM m_stock_aux WHERE M_STORAGE_DETAIL_ID = 
SD.M_STORAGE_DETAIL_ID);
 
-    IF (v_Storage_ID IS NOT NULL) THEN
+    IF (v_Storage_ID IS NOT NULL) THEN    
       DELETE FROM M_STORAGE_DETAIL WHERE M_STORAGE_DETAIL_ID =v_Storage_ID;
     END IF;
 
diff -r 0a1174509a27 -r ef9b9a588ce3 
src-db/database/model/functions/M_UPDATE_STOCKAUX.xml
--- a/src-db/database/model/functions/M_UPDATE_STOCKAUX.xml     Fri Apr 27 
14:00:25 2012 +0200
+++ b/src-db/database/model/functions/M_UPDATE_STOCKAUX.xml     Fri Apr 27 
14:52:20 2012 +0200
@@ -58,6 +58,7 @@
 ************************************************************************/
 
   v_count NUMBER;
+  v_StorageAux_ID VARCHAR2(32);
   v_StorageDetail_ID VARCHAR2(32);
   
 BEGIN
@@ -104,6 +105,33 @@
        SET QUANTITY = QUANTITY + p_qty, UPDATED = now()
        WHERE M_STORAGE_DETAIL_ID = v_StorageDetail_ID;
     END IF;
+    
+    SELECT MAX(sa.m_stock_aux_id)
+    INTO v_StorageAux_ID
+    FROM m_stock_aux sa
+    WHERE m_storage_detail_id=v_StorageDetail_ID
+    AND COALESCE(quantity, 0) = 0
+    AND COALESCE(qtyorder, 0) = 0;
+    
+    IF (v_StorageAux_ID IS NOT NULL) THEN
+       DELETE FROM M_STOCK_AUX WHERE M_STOCK_AUX_ID = v_StorageAux_ID;
+       
+       SELECT COUNT(*) 
+       INTO v_count
+       FROM M_STORAGE_DETAIL SD JOIN m_product p ON 
SD.M_PRODUCT_ID=p.m_product_id
+             JOIN m_attributeset aset ON p.m_attributeset_id = 
aset.m_attributeset_id 
+       WHERE COALESCE(p.attrsetvaluetype, '-') <> 'F'
+       AND aset.isoneattrsetvalrequired = 'Y'
+       AND QTYONHAND = 0
+       AND COALESCE(QTYORDERONHAND, 0) = 0
+       AND PREQTYONHAND=0
+       AND COALESCE(PREQTYORDERONHAND, 0) = 0
+       AND SD.M_STORAGE_DETAIL_ID = v_StorageDetail_ID;
+       
+       IF (v_count > 0) THEN
+          DELETE FROM M_STORAGE_DETAIL WHERE M_STORAGE_DETAIL_ID = 
v_StorageDetail_ID;
+       END IF;
+    END IF;
   END IF;
 END M_UPDATE_STOCKAUX
 ]]></body>

------------------------------------------------------------------------------
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