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