details:   /erp/stable/2.50/rev/ae1a33f19985
changeset: 9373:ae1a33f19985
user:      Ainhoa Pagola <ainhoa.pagola <at> openbravo.com>
date:      Thu Apr 14 12:43:08 2011 +0200
summary:   Fixes issue 16764, 16761. Error control addedto function 
m_freight_calculate

diffstat:

 src-db/database/model/functions/M_FREIGHT_CALCULATE.xml |  126 ++++++++++++-
 src-db/database/sourcedata/AD_MESSAGE.xml               |  165 ++++++++++++++++
 2 files changed, 290 insertions(+), 1 deletions(-)

diffs (truncated from 464 to 300 lines):

diff -r c1380d175fd9 -r ae1a33f19985 
src-db/database/model/functions/M_FREIGHT_CALCULATE.xml
--- a/src-db/database/model/functions/M_FREIGHT_CALCULATE.xml   Thu Apr 14 
14:03:33 2011 +0200
+++ b/src-db/database/model/functions/M_FREIGHT_CALCULATE.xml   Thu Apr 14 
12:43:08 2011 +0200
@@ -16,7 +16,7 @@
 * under the License.
 * The Original Code is Openbravo ERP.
 * The Initial Developer of the Original Code is Openbravo SLU
-* All portions are Copyright (C) 2001-2009 Openbravo SLU
+* All portions are Copyright (C) 2001-2011 Openbravo SLU
 * All Rights Reserved.
 * Contributor(s):  ______________________________________.
 ************************************************************************/
@@ -47,6 +47,11 @@
     v_RoundLine CHAR(1) ;
     v_RoundTotal CHAR(1) ;
     v_FreightUnit VARCHAR2(60) ;
+    v_count NUMBER;
+    v_From_Region_ID VARCHAR2(32);
+    v_TO_Region_ID VARCHAR2(32);
+    v_QtyFrom NUMBER;
+    v_QtyTo NUMBER;
   BEGIN
     --  Get Parameters
     v_ResultStr:='ReadingParameters';
@@ -78,6 +83,11 @@
         DBMS_OUTPUT.PUT_LINE('  Calc_qty=' || v_Calc_Qty) ;
       END IF;
     END LOOP; --  Get Parameter
+
+    IF (v_Calc_Qty='N' AND v_Cheaper='N') THEN
+        RAISE_APPLICATION_ERROR(-20000, '@NoFreightParam@');
+    END IF;
+
     DBMS_OUTPUT.PUT_LINE('  v_Record_ID=' || v_Record_ID) ;
     v_ResultStr:='Select variables';
     SELECT M_Shipper_ID,
@@ -94,6 +104,11 @@
       v_Freight_Currency_ID
     FROM M_InOut
     WHERE M_InOut_ID=v_Record_ID;
+
+    IF (v_FreightCategory_ID IS NULL) THEN
+        RAISE_APPLICATION_ERROR(-20000, '@NoFreightCatSelected@');
+    END IF;
+
     v_ResultStr:='Set to and from region';
     IF(v_IsSOTrx='Y') THEN
       SELECT COALESCE(dl.C_REGION_ID, l.C_REGION_ID),
@@ -114,6 +129,14 @@
         AND i.M_WAREHOUSE_ID=w.M_WAREHOUSE_ID
         AND w.C_LOCATION_ID=wl.C_LOCATION_ID
         AND i.M_InOut_ID=v_Record_ID;
+
+      IF (v_To_ID IS NULL) THEN
+        RAISE_APPLICATION_ERROR(-20000, '@NoBPRegion@');
+      END IF;
+      IF (v_From_ID IS NULL) THEN
+        RAISE_APPLICATION_ERROR(-20000, '@NoWarehouseRegion@');
+      END IF;
+
     ELSE
       SELECT COALESCE(dl.C_REGION_ID, l.C_REGION_ID),
         wl.C_REGION_ID
@@ -133,6 +156,13 @@
         AND i.M_WAREHOUSE_ID=w.M_WAREHOUSE_ID
         AND w.C_LOCATION_ID=wl.C_LOCATION_ID
         AND i.M_InOut_ID=v_Record_ID;
+
+      IF (v_To_ID IS NULL) THEN
+        RAISE_APPLICATION_ERROR(-20000, '@NoWarehouseRegion@');
+      END IF;
+      IF (v_From_ID IS NULL) THEN
+        RAISE_APPLICATION_ERROR(-20000, '@NoBPRegion@');
+      END IF;
     END IF;
     SELECT TOTAL_ROUND,
       LINE_ROUND,
@@ -142,8 +172,37 @@
       v_FreightUnit
     FROM M_FreightCategory
     WHERE M_FreightCategory_ID=v_FreightCategory_ID;
+
+    IF v_RoundTotal IS NULL OR v_RoundLine IS NULL OR v_FreightUnit IS NULL 
THEN
+      RAISE_APPLICATION_ERROR(-20000, '@NoFreightCatRounding@');
+    END IF;
+
+    SELECT COUNT(*)
+    INTO v_Count
+    FROM M_InOutLine l,
+      M_Product p
+    WHERE l.M_Product_ID=p.M_Product_ID
+      AND M_InOut_ID=v_Record_ID;
+    IF (v_count=0) THEN
+      RAISE_APPLICATION_ERROR(-20000, '@FreightNoLines@');
+    END IF;
+
     v_ResultStr:='Calculate freight quantity';
     IF(v_Calc_Qty='Y') THEN
+
+      IF v_FreightUnit='P' THEN
+        SELECT COUNT(*)
+        INTO v_count
+        FROM M_InOutLine l,
+          M_Product p
+        WHERE l.M_Product_ID=p.M_Product_ID
+          AND M_InOut_ID=v_Record_ID
+          AND (p.unitsperpallet IS NULL OR p.unitsperpallet = 0);
+        IF (v_count>0) THEN
+          RAISE_APPLICATION_ERROR(-20000, '@FreightNoUnitsPerPallet@');
+        END IF;
+      END IF;
+
       SELECT
         CASE v_RoundLine WHEN 'N' THEN
           CASE v_RoundTotal WHEN 'N' THEN sum(QTY) WHEN 'I' THEN 
trunc(sum(QTY)) WHEN 'U' THEN CEIL(sum(QTY)) WHEN 'R' THEN ROUND(sum(QTY), 0)
@@ -169,11 +228,23 @@
       UPDATE M_InOut  SET NoPackages=v_Qty  WHERE M_InOut_ID=v_Record_ID;
     END IF;
   BEGIN
+
     IF(v_Cheaper='Y') THEN
       v_ResultStr:='Calculate cheaper amount';
       DECLARE
         Cur_M_FreightSelect RECORD;
       BEGIN
+
+        SELECT COUNT(*)
+        INTO v_Count
+        FROM M_Freight
+        WHERE M_FreightCategory_ID=v_FreightCategory_ID
+          AND ValidFrom<v_date
+          AND (v_Freight_Currency_ID IS NULL OR 
C_Currency_ID=v_Freight_Currency_ID);
+        IF (v_count=0) THEN
+          RAISE_APPLICATION_ERROR(-20000, '@FreightNotDefined@');
+        END IF;
+
         FOR Cur_M_FreightSelect IN
           (SELECT f.M_Shipper_ID, f.C_Currency_ID,
             CASE isprice WHEN 'Y' THEN freightamt*v_Qty ELSE freightamt
@@ -207,12 +278,61 @@
           v_Currency_ID:=Cur_M_FreightSelect.C_Currency_ID;
           EXIT;
         END LOOP;
+        IF v_Amt IS NULL THEN
+          RAISE_APPLICATION_ERROR(-20000, '@FreightNotConfigured@');
+        END IF;
       END;
     ELSE
       v_ResultStr:='Calculate amount';
       DECLARE
         Cur_M_FreightSelect RECORD;
       BEGIN
+
+        IF (v_Shipper_ID IS NULL) THEN
+          RAISE_APPLICATION_ERROR(-20000, '@NoShipperSelected@');
+        END IF;
+
+        SELECT COUNT(*)
+        INTO v_Count
+        FROM M_Freight
+        WHERE M_FreightCategory_ID=v_FreightCategory_ID
+          AND ValidFrom<v_date
+          AND M_Shipper_ID=v_Shipper_ID
+          AND (v_Freight_Currency_ID IS NULL OR 
C_Currency_ID=v_Freight_Currency_ID);
+        IF (v_count=0) THEN
+          RAISE_APPLICATION_ERROR(-20000, '@FreightNotDefined@');
+        END IF;
+
+        SELECT C_Region_ID, TO_Region_ID, QtyFrom, QtyTo
+        INTO v_From_Region_ID, v_TO_Region_ID, v_QtyFrom, v_QtyTo
+        FROM M_Freight
+        WHERE M_FreightCategory_ID=v_FreightCategory_ID
+          AND ValidFrom<v_date
+          AND M_Shipper_ID=v_Shipper_ID
+          AND (v_Freight_Currency_ID IS NULL OR 
C_Currency_ID=v_Freight_Currency_ID)
+          AND validFrom = (SELECT max(validFrom)
+                           FROM M_Freight
+                           WHERE M_FreightCategory_ID=v_FreightCategory_ID
+                           AND ValidFrom<v_date
+                           AND M_Shipper_ID=v_Shipper_ID
+                           AND (v_Freight_Currency_ID IS NULL OR 
C_Currency_ID=v_Freight_Currency_ID));
+
+        IF v_From_Region_ID IS NULL OR v_TO_Region_ID IS NULL THEN
+          RAISE_APPLICATION_ERROR(-20000, '@NoFreightRegion@');
+        END IF;
+
+        IF v_QtyFrom IS NULL OR v_QtyTo IS NULL THEN
+          RAISE_APPLICATION_ERROR(-20000, '@FreightMinMaxQuantity@');
+        END IF;
+
+        IF v_Qty<v_QtyFrom THEN
+          RAISE_APPLICATION_ERROR(-20000, '@FreightMinQuantity@');
+        END IF;
+
+        IF v_Qty>v_QtyTo THEN
+          RAISE_APPLICATION_ERROR(-20000, '@FreightMaxQuantity@');
+        END IF;
+
         FOR Cur_M_FreightSelect IN
           (SELECT M_Shipper_ID, C_Currency_ID,
             CASE isprice WHEN 'Y' THEN freightamt*v_Qty ELSE freightamt
@@ -234,6 +354,10 @@
           v_Currency_ID:=Cur_M_FreightSelect.C_Currency_ID;
           EXIT;
         END LOOP;
+
+        IF v_Amt IS NULL THEN
+          RAISE_APPLICATION_ERROR(-20000, '@FreightNotFound@');
+        END IF;
       END;
     END IF;
   EXCEPTION
diff -r c1380d175fd9 -r ae1a33f19985 src-db/database/sourcedata/AD_MESSAGE.xml
--- a/src-db/database/sourcedata/AD_MESSAGE.xml Thu Apr 14 14:03:33 2011 +0200
+++ b/src-db/database/sourcedata/AD_MESSAGE.xml Thu Apr 14 12:43:08 2011 +0200
@@ -29818,6 +29818,17 @@
 <!--0EABAB89726A4A3C800199142CF8E17F-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
 <!--0EABAB89726A4A3C800199142CF8E17F--></AD_MESSAGE>
 
+<!--0FB62BBD5E134E3C972A446ACC687715--><AD_MESSAGE>
+<!--0FB62BBD5E134E3C972A446ACC687715-->  
<AD_MESSAGE_ID><![CDATA[0FB62BBD5E134E3C972A446ACC687715]]></AD_MESSAGE_ID>
+<!--0FB62BBD5E134E3C972A446ACC687715-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--0FB62BBD5E134E3C972A446ACC687715-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--0FB62BBD5E134E3C972A446ACC687715-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--0FB62BBD5E134E3C972A446ACC687715-->  
<VALUE><![CDATA[NoFreightCatSelected]]></VALUE>
+<!--0FB62BBD5E134E3C972A446ACC687715-->  <MSGTEXT><![CDATA[There is no freight 
category selected]]></MSGTEXT>
+<!--0FB62BBD5E134E3C972A446ACC687715-->  <MSGTYPE><![CDATA[E]]></MSGTYPE>
+<!--0FB62BBD5E134E3C972A446ACC687715-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
+<!--0FB62BBD5E134E3C972A446ACC687715--></AD_MESSAGE>
+
 <!--0FC7B0C6F4FC4F04BEAD06F30E895516--><AD_MESSAGE>
 <!--0FC7B0C6F4FC4F04BEAD06F30E895516-->  
<AD_MESSAGE_ID><![CDATA[0FC7B0C6F4FC4F04BEAD06F30E895516]]></AD_MESSAGE_ID>
 <!--0FC7B0C6F4FC4F04BEAD06F30E895516-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -30127,6 +30138,28 @@
 <!--1860E10DED5C486D8CF33B7C8104448E-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
 <!--1860E10DED5C486D8CF33B7C8104448E--></AD_MESSAGE>
 
+<!--1961EDB8E6F743B29134D8DA4E411528--><AD_MESSAGE>
+<!--1961EDB8E6F743B29134D8DA4E411528-->  
<AD_MESSAGE_ID><![CDATA[1961EDB8E6F743B29134D8DA4E411528]]></AD_MESSAGE_ID>
+<!--1961EDB8E6F743B29134D8DA4E411528-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--1961EDB8E6F743B29134D8DA4E411528-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--1961EDB8E6F743B29134D8DA4E411528-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--1961EDB8E6F743B29134D8DA4E411528-->  
<VALUE><![CDATA[FreightNoLines]]></VALUE>
+<!--1961EDB8E6F743B29134D8DA4E411528-->  <MSGTEXT><![CDATA[Freight amount 
cannot be calculated because there is no lines]]></MSGTEXT>
+<!--1961EDB8E6F743B29134D8DA4E411528-->  <MSGTYPE><![CDATA[E]]></MSGTYPE>
+<!--1961EDB8E6F743B29134D8DA4E411528-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
+<!--1961EDB8E6F743B29134D8DA4E411528--></AD_MESSAGE>
+
+<!--19F447F6CE3747D0B7BFC8F32DF15DC2--><AD_MESSAGE>
+<!--19F447F6CE3747D0B7BFC8F32DF15DC2-->  
<AD_MESSAGE_ID><![CDATA[19F447F6CE3747D0B7BFC8F32DF15DC2]]></AD_MESSAGE_ID>
+<!--19F447F6CE3747D0B7BFC8F32DF15DC2-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--19F447F6CE3747D0B7BFC8F32DF15DC2-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--19F447F6CE3747D0B7BFC8F32DF15DC2-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--19F447F6CE3747D0B7BFC8F32DF15DC2-->  
<VALUE><![CDATA[FreightNotFound]]></VALUE>
+<!--19F447F6CE3747D0B7BFC8F32DF15DC2-->  <MSGTEXT><![CDATA[The shipping 
company doesn't met the requirements. Check that the regions configured match 
the desired origin and destination. ]]></MSGTEXT>
+<!--19F447F6CE3747D0B7BFC8F32DF15DC2-->  <MSGTYPE><![CDATA[E]]></MSGTYPE>
+<!--19F447F6CE3747D0B7BFC8F32DF15DC2-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
+<!--19F447F6CE3747D0B7BFC8F32DF15DC2--></AD_MESSAGE>
+
 <!--1A721BC106BF4DB791325E1421AFA95E--><AD_MESSAGE>
 <!--1A721BC106BF4DB791325E1421AFA95E-->  
<AD_MESSAGE_ID><![CDATA[1A721BC106BF4DB791325E1421AFA95E]]></AD_MESSAGE_ID>
 <!--1A721BC106BF4DB791325E1421AFA95E-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -30194,6 +30227,17 @@
 <!--1DAB5DCDF04B4FEE97200DE4D2028FAB-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
 <!--1DAB5DCDF04B4FEE97200DE4D2028FAB--></AD_MESSAGE>
 
+<!--1E0F1799B5F144778669B2D23FD9BA9E--><AD_MESSAGE>
+<!--1E0F1799B5F144778669B2D23FD9BA9E-->  
<AD_MESSAGE_ID><![CDATA[1E0F1799B5F144778669B2D23FD9BA9E]]></AD_MESSAGE_ID>
+<!--1E0F1799B5F144778669B2D23FD9BA9E-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--1E0F1799B5F144778669B2D23FD9BA9E-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--1E0F1799B5F144778669B2D23FD9BA9E-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--1E0F1799B5F144778669B2D23FD9BA9E-->  <VALUE><![CDATA[NoBPRegion]]></VALUE>
+<!--1E0F1799B5F144778669B2D23FD9BA9E-->  <MSGTEXT><![CDATA[Freight amount can 
not be calculated because the business partner's location has no region 
set]]></MSGTEXT>
+<!--1E0F1799B5F144778669B2D23FD9BA9E-->  <MSGTYPE><![CDATA[E]]></MSGTYPE>
+<!--1E0F1799B5F144778669B2D23FD9BA9E-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
+<!--1E0F1799B5F144778669B2D23FD9BA9E--></AD_MESSAGE>
+
 <!--1E4DFEDC675F4BD8AFA6A8D707D77FFF--><AD_MESSAGE>
 <!--1E4DFEDC675F4BD8AFA6A8D707D77FFF-->  
<AD_MESSAGE_ID><![CDATA[1E4DFEDC675F4BD8AFA6A8D707D77FFF]]></AD_MESSAGE_ID>
 <!--1E4DFEDC675F4BD8AFA6A8D707D77FFF-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -31728,6 +31772,17 @@
 <!--6D61AC5B65C64E8A8B86C66E3877F6EC-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
 <!--6D61AC5B65C64E8A8B86C66E3877F6EC--></AD_MESSAGE>
 
+<!--6E27BC6E9B654EE297EA8298B73AE578--><AD_MESSAGE>
+<!--6E27BC6E9B654EE297EA8298B73AE578-->  
<AD_MESSAGE_ID><![CDATA[6E27BC6E9B654EE297EA8298B73AE578]]></AD_MESSAGE_ID>
+<!--6E27BC6E9B654EE297EA8298B73AE578-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--6E27BC6E9B654EE297EA8298B73AE578-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--6E27BC6E9B654EE297EA8298B73AE578-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--6E27BC6E9B654EE297EA8298B73AE578-->  
<VALUE><![CDATA[FreightNoUnitsPerPallet]]></VALUE>
+<!--6E27BC6E9B654EE297EA8298B73AE578-->  <MSGTEXT><![CDATA[The freight amount 
cannot be calculated because at least one of the products has no "units per 
pallet" set.]]></MSGTEXT>
+<!--6E27BC6E9B654EE297EA8298B73AE578-->  <MSGTYPE><![CDATA[E]]></MSGTYPE>
+<!--6E27BC6E9B654EE297EA8298B73AE578-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
+<!--6E27BC6E9B654EE297EA8298B73AE578--></AD_MESSAGE>
+
 <!--6F43018F37274704A195A23CC6842AD7--><AD_MESSAGE>
 <!--6F43018F37274704A195A23CC6842AD7-->  
<AD_MESSAGE_ID><![CDATA[6F43018F37274704A195A23CC6842AD7]]></AD_MESSAGE_ID>
 <!--6F43018F37274704A195A23CC6842AD7-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -31840,6 +31895,17 @@
 <!--7272CB32B045428CA06727419E1E7561-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>

------------------------------------------------------------------------------
Benefiting from Server Virtualization: Beyond Initial Workload 
Consolidation -- Increasing the use of server virtualization is a top
priority.Virtualization can reduce costs, simplify management, and improve 
application availability and disaster protection. Learn more about boosting 
the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to