details: /erp/devel/pi/rev/338a18e985ec
changeset: 8484:338a18e985ec
user: Valery Lezhebokov <valery.lezhebokov <at> gmail.com>
date: Sun Sep 26 13:58:02 2010 +0200
summary: Fixes issue 12775: You can create a DB prefix with lowercase letters
details: /erp/devel/pi/rev/576d9c0e1315
changeset: 8485:576d9c0e1315
user: Asier Lostalé <asier.lostale <at> openbravo.com>
date: Thu Sep 30 11:04:07 2010 +0200
summary: merge
diffstat:
.hgsigs | 1 +
.hgtags | 1 +
src-db/database/model/functions/AD_UPDATE_ACCESS.xml | 4 +
src-db/database/model/functions/FACT_ACCT_RESET.xml | 36 +++++++-
src-db/database/model/postscript-PostgreSql.sql | 2 -
src-db/database/model/prescript-PostgreSql.sql | 32 ++++++-
src-db/database/model/triggers/AD_ELEMENT_TRL_TRG.xml | 9 +-
src-db/database/model/triggers/AD_MODULE_DBPREFIX_TRG.xml | 14 +-
src-db/database/model/triggers/AD_ROLE_TRG.xml | 36 +++++--
src-db/database/sourcedata/AD_COLUMN.xml | 2 +
src-db/database/sourcedata/AD_FIELD.xml | 1 -
src-db/database/sourcedata/AD_MESSAGE.xml | 11 ++
src-db/database/sourcedata/AD_MODULE.xml | 4 +-
src-test/org/openbravo/test/AllAntTaskTests.java | 2 +
src-test/org/openbravo/test/dal/ViewTest.java | 52 ++++++++++++
src/org/openbravo/base/model/Column.java | 5 +-
src/org/openbravo/base/model/ModelProvider.java | 19 ++--
src/org/openbravo/erpCommon/ad_forms/AcctServer.java | 2 +-
src/org/openbravo/erpCommon/ad_forms/TranslationHandler.java | 4 +-
src/org/openbravo/erpCommon/ad_process/ApplyModules.java | 2 +-
20 files changed, 186 insertions(+), 53 deletions(-)
diffs (truncated from 629 to 300 lines):
diff -r 57d4bf060d34 -r 576d9c0e1315 .hgsigs
--- a/.hgsigs Thu Sep 23 16:01:24 2010 +0200
+++ b/.hgsigs Thu Sep 30 11:04:07 2010 +0200
@@ -22,3 +22,4 @@
7fe932c5c015da84a972d6945dd0451366bbf325 0
iEYEABECAAYFAkwodmcACgkQCX/oGf+2qkM4jQCgq2n4X0Tzi8EcGqNLhtzjOJ/1YcgAn3Fh9aZRpXmM2zYmMwuecn4UR5tt
618363224a381737439e0bd4461e2d36c4fd986e 0
iEYEABECAAYFAkxFkHoACgkQCX/oGf+2qkP7DQCeK9qCv3jETpO5iM89PV2bJYmpErMAoO/H2QyeKKZjublcgFmH7g1tEomB
6563372bc2fbf0bc2e15f70c2a8da81fad8cbc2e 0
iEYEABECAAYFAkyDw4sACgkQCX/oGf+2qkMZ1ACePoFeipRkNAN6bW7yIUeiRYgEMBMAni+gFwpEp8kfGKryvixvdudRgGoQ
+b033dcbeeabc1db396798b8e5cbe196522f43a53 0
iEYEABECAAYFAkydFwMACgkQCX/oGf+2qkM1NwCbBJjgs9qM221q415Ygu/EVvhE31sAn2+O6DOYQNbM3xFuCnhhtuDQWDa/
diff -r 57d4bf060d34 -r 576d9c0e1315 .hgtags
--- a/.hgtags Thu Sep 23 16:01:24 2010 +0200
+++ b/.hgtags Thu Sep 30 11:04:07 2010 +0200
@@ -32,3 +32,4 @@
34eed7b386965b19e191fbfe03195588cdc75254 2.50MP19
99ff33f6588973f7e738b6afd47ad44f3ac08d20 2.50MP20
a3c1cffa8af7b60cab6949251fce1faaa13ca5bb 2.50MP21
+8ede6ac265f1dd70536888ce3e20ffd54e3a3bc6 2.50MP22
diff -r 57d4bf060d34 -r 576d9c0e1315
src-db/database/model/functions/AD_UPDATE_ACCESS.xml
--- a/src-db/database/model/functions/AD_UPDATE_ACCESS.xml Thu Sep 23
16:01:24 2010 +0200
+++ b/src-db/database/model/functions/AD_UPDATE_ACCESS.xml Thu Sep 30
11:04:07 2010 +0200
@@ -30,6 +30,7 @@
'0', now(), '0', 'Y'
FROM AD_FORM, AD_ROLE
WHERE AD_ROLE.ISMANUAL = 'N'
+ AND AD_FORM.IsActive='Y'
AND (
(AD_ROLE.USERLEVEL = 'S' AND AD_FORM.ACCESSLEVEL IN ('4','7','6'))
OR
@@ -52,6 +53,7 @@
'0', now(), '0', 'Y'
FROM AD_PROCESS, AD_ROLE
WHERE AD_ROLE.ISMANUAL = 'N'
+ AND AD_PROCESS.IsActive='Y'
AND (
(AD_ROLE.USERLEVEL = 'S' AND AD_PROCESS.ACCESSLEVEL IN ('4','7','6'))
OR
@@ -116,6 +118,7 @@
'0', now(), '0', 'Y'
FROM AD_WINDOW, AD_ROLE, AD_TAB, AD_TABLE
WHERE AD_ROLE.ISMANUAL = 'N'
+ AND AD_WINDOW.IsActive='Y'
AND AD_WINDOW.AD_WINDOW_ID = AD_TAB.AD_WINDOW_ID
AND AD_TAB.AD_TABLE_ID = AD_TABLE.AD_TABLE_ID
AND (
@@ -144,6 +147,7 @@
'0', now(), '0', 'Y'
FROM AD_WORKFLOW, AD_ROLE
WHERE AD_ROLE.ISMANUAL = 'N'
+ AND AD_WORKFLOW.IsActive='Y'
AND (
(AD_ROLE.USERLEVEL = 'S' AND AD_WORKFLOW.ACCESSLEVEL IN ('4','7','6'))
OR
diff -r 57d4bf060d34 -r 576d9c0e1315
src-db/database/model/functions/FACT_ACCT_RESET.xml
--- a/src-db/database/model/functions/FACT_ACCT_RESET.xml Thu Sep 23
16:01:24 2010 +0200
+++ b/src-db/database/model/functions/FACT_ACCT_RESET.xml Thu Sep 30
11:04:07 2010 +0200
@@ -19,7 +19,7 @@
* parts created by ComPiere are Copyright (C) ComPiere, Inc.;
* All Rights Reserved.
* Contributor(s): Openbravo SLU
- * Contributions are Copyright (C) 2001-2009 Openbravo, S.L.U.
+ * Contributions are Copyright (C) 2001-2010 Openbravo, S.L.U.
*
* Specifically, this derivative work is based upon the following Compiere
* file and version.
@@ -62,6 +62,8 @@
v_DocAction VARCHAR2(60);
v_UpdatedBy AD_PINSTANCE.UpdatedBy%TYPE;
v_DeleteFact varchar2(1):='Y';
+
+ v_isacctle AD_OrgType.IsAcctLegalEntity%TYPE:='N';
BEGIN
-- Update AD_PInstance
DBMS_OUTPUT.PUT_LINE('Updating PInstance - Processing ' || p_PInstance_ID)
;
@@ -119,14 +121,41 @@
WHERE ' || v_TableName || '_ID =''' || v_Record_ID || ''' AND
AD_CLIENT_ID =''' || v_AD_Client_ID || ''' '
INTO v_AD_Org_ID;
END IF;
+
+ -- Check the period control is opened (only if it is legal entity with
accounting)
+ SELECT COALESCE(t.ISACCTLEGALENTITY, 'N')
+ INTO v_isacctle
+ FROM AD_Org o JOIN AD_OrgType t ON (o.ad_orgtype_id=t.ad_orgtype_id)
+ WHERE AD_IsOrgIncluded(v_AD_Org_ID, o.ad_org_id , v_AD_Client_ID) <> -1
+ AND t.ISACCTLEGALENTITY='Y';
+ IF (v_isacctle='Y') THEN
+ DECLARE
+ v_available_period NUMBER:=0;
+ TYPE RECORD IS REF CURSOR;
+ Cur_Fact_Records RECORD;
+ BEGIN
+ FOR Cur_Fact_Records IN
+ (SELECT DATEACCT, DOCBASETYPE, C_DOCTYPE_ID
+ FROM FACT_ACCT
+ WHERE AD_TABLE_ID=v_AD_Table_ID
+ AND Record_ID = v_Record_ID
+ )
+ LOOP
+ v_available_period:=C_CHK_OPEN_PERIOD(v_AD_Org_ID,
Cur_Fact_Records.DATEACCT, Cur_Fact_Records.DOCBASETYPE,
Cur_Fact_Records.C_DOCTYPE_ID);
+ IF (v_available_period<>1) THEN
+ RAISE_APPLICATION_ERROR(-20000, '@PeriodClosedForUnPosting@');
+ END IF;
+ END LOOP;
+ END;
+ END IF;
END IF;
DBMS_OUTPUT.PUT_LINE(' Record_ID=' || v_Record_ID) ;
- -- Fact_Acct_Rest - Finish_Process Extension Point
+ -- Fact_Acct_Rest - Start_Process Extension Point
SELECT count(*) INTO v_count
FROM DUAL
where exists (select 1 from ad_ep_procedures where ad_extension_points_id =
'E1F9635815BF4A44B88E3EAADBD0D10E');
- IF (v_count=1) THEN
+ IF (v_count=1) THEN
DECLARE
v_ep_instance VARCHAR(32);
v_extension_point_id VARCHAR(32) := 'E1F9635815BF4A44B88E3EAADBD0D10E';
@@ -166,6 +195,7 @@
WHERE ad_ep_instance_id = v_ep_instance;
END;
END IF;
+ -- Fact_Acct_Rest - Finish_Process Extension Point
DECLARE
TYPE RECORD IS REF CURSOR;
Cur_Clients RECORD;
diff -r 57d4bf060d34 -r 576d9c0e1315
src-db/database/model/postscript-PostgreSql.sql
--- a/src-db/database/model/postscript-PostgreSql.sql Thu Sep 23 16:01:24
2010 +0200
+++ b/src-db/database/model/postscript-PostgreSql.sql Thu Sep 30 11:04:07
2010 +0200
@@ -23,7 +23,6 @@
BEGIN
FOR Cur_Triggers IN (SELECT OBJECT_NAME AS NAME, TABLE_NAME
FROM USER_OBJECTS
- WHERE OBJECT_TYPE = 'TRIGGER'
ORDER BY OBJECT_NAME) LOOP
v_seqNo := v_seqNo + 1;
-- INSERT INTO AD_SCRIPT_SQL VALUES (v_seqNo, 'ALTER TRIGGER
'||Cur_Triggers.NAME||' DISABLE');
@@ -96,7 +95,6 @@
BEGIN
FOR Cur_Triggers IN (SELECT OBJECT_NAME AS NAME, TABLE_NAME
FROM USER_OBJECTS
- WHERE OBJECT_TYPE = 'TRIGGER'
ORDER BY OBJECT_NAME) LOOP
v_seqNo := v_seqNo + 1;
-- INSERT INTO AD_SCRIPT_SQL VALUES (v_seqNo, 'ALTER TRIGGER
'||Cur_Triggers.NAME||' ENABLE');
diff -r 57d4bf060d34 -r 576d9c0e1315
src-db/database/model/prescript-PostgreSql.sql
--- a/src-db/database/model/prescript-PostgreSql.sql Thu Sep 23 16:01:24
2010 +0200
+++ b/src-db/database/model/prescript-PostgreSql.sql Thu Sep 30 11:04:07
2010 +0200
@@ -1158,18 +1158,42 @@
SELECT * FROM drop_view('USER_OBJECTS')
/-- END
-CREATE OR REPLACE VIEW USER_OBJECTS
-(TABLE_NAME, OBJECT_NAME, OBJECT_ID, OBJECT_TYPE, STATUS)
+CREATE or REPLACE function create_user_objects() returns varchar as '
+DECLARE
+ cnt int4;
+BEGIN
+ SELECT into cnt count(*) from version() where version like ''%PostgreSQL
9.%'';
+ if cnt > 0 then
+ execute ''CREATE OR REPLACE VIEW USER_OBJECTS
+(TABLE_NAME, OBJECT_NAME, OBJECT_ID)
AS
-SELECT UPPER(PG_CLASS.RELNAME), UPPER(PG_TRIGGER.TGNAME), PG_TRIGGER.TGFOID,
TO_CHAR('TRIGGER'), CASE is_Trigger_Enabled(PG_TRIGGER.TGNAME) WHEN TRUE THEN
TO_CHAR('VALID') ELSE TO_CHAR('INVALID') END
+SELECT UPPER(PG_CLASS.RELNAME), UPPER(PG_TRIGGER.TGNAME), PG_TRIGGER.TGFOID
+FROM PG_TRIGGER, PG_NAMESPACE, PG_CLASS
+WHERE PG_TRIGGER.TGRELID = PG_CLASS.OID
+AND PG_TRIGGER.TGISINTERNAL = FALSE
+AND PG_CLASS.RELNAMESPACE = PG_NAMESPACE.OID
+AND PG_NAMESPACE.NSPNAME = CURRENT_SCHEMA()'';
+else
+execute ''CREATE OR REPLACE VIEW USER_OBJECTS
+(TABLE_NAME, OBJECT_NAME, OBJECT_ID)
+AS
+SELECT UPPER(PG_CLASS.RELNAME), UPPER(PG_TRIGGER.TGNAME), PG_TRIGGER.TGFOID
FROM PG_TRIGGER, PG_NAMESPACE, PG_CLASS
WHERE PG_TRIGGER.TGRELID = PG_CLASS.OID
AND PG_TRIGGER.TGISCONSTRAINT = FALSE
AND PG_CLASS.RELNAMESPACE = PG_NAMESPACE.OID
-AND PG_NAMESPACE.NSPNAME = CURRENT_SCHEMA()
+AND PG_NAMESPACE.NSPNAME = CURRENT_SCHEMA()'';
+ end if;
+ return null;
+END;'
+language 'plpgsql'
/-- END
+SELECT * FROM create_user_objects()
+/-- END
+DROP FUNCTION create_user_objects()
+/-- END
SELECT * FROM drop_view('USER_CONS_COLUMNS')
/-- END
diff -r 57d4bf060d34 -r 576d9c0e1315
src-db/database/model/triggers/AD_ELEMENT_TRL_TRG.xml
--- a/src-db/database/model/triggers/AD_ELEMENT_TRL_TRG.xml Thu Sep 23
16:01:24 2010 +0200
+++ b/src-db/database/model/triggers/AD_ELEMENT_TRL_TRG.xml Thu Sep 30
11:04:07 2010 +0200
@@ -38,12 +38,13 @@
IF UPDATING
THEN
IF ( COALESCE (:OLD.NAME, '.') <> COALESCE (:NEW.NAME, '.')
- OR COALESCE (:OLD.Description, '.') <>
- COALESCE (:NEW.Description, '.')
+ OR COALESCE (:OLD.Description, '.') <> COALESCE (:NEW.Description, '.')
OR COALESCE (:OLD.HELP, '.') <> COALESCE (:NEW.HELP, '.')
OR COALESCE (:OLD.PrintName, '.') <> COALESCE (:NEW.PrintName, '.')
- OR COALESCE (:OLD.IsTranslated, '.') <>
- COALESCE (:NEW.IsTranslated, '.')
+ OR COALESCE (:OLD.IsTranslated, '.') <> COALESCE (:NEW.IsTranslated,
'.')
+ OR COALESCE (:OLD.PO_NAME, '.') <> COALESCE (:NEW.PO_NAME, '.')
+ OR COALESCE (:OLD.PO_Description, '.') <> COALESCE
(:NEW.PO_Description, '.')
+ OR COALESCE (:OLD.PO_HELP, '.') <> COALESCE (:NEW.PO_HELP, '.')
)
THEN
-- Field
diff -r 57d4bf060d34 -r 576d9c0e1315
src-db/database/model/triggers/AD_MODULE_DBPREFIX_TRG.xml
--- a/src-db/database/model/triggers/AD_MODULE_DBPREFIX_TRG.xml Thu Sep 23
16:01:24 2010 +0200
+++ b/src-db/database/model/triggers/AD_MODULE_DBPREFIX_TRG.xml Thu Sep 30
11:04:07 2010 +0200
@@ -52,17 +52,15 @@
startsWithLetter := false;
FOR I IN 1..LENGTH(:new.name) LOOP
v_char := substr(:new.name,i,1);
- IF NOT ((v_char between 'A' and 'Z')
- or (v_char between '0' and '9')) THEN
+ IF NOT ((ascii(v_char) between ascii('A') and ascii('Z'))
+ or (ascii(v_char) between ascii('0') and ascii('9'))) THEN
RAISE_APPLICATION_ERROR(-20531, '@20531@') ;
END IF;
- IF v_char between 'A' and 'Z' THEN
- startsWithLetter := true;
- END IF;
- IF NOT startsWithLetter THEN
+ END LOOP;
+ -- DB_Prefix should start with a letter
+ IF NOT (ascii(substr(:new.name,1,1)) between ascii('A') and ascii('Z'))
THEN
RAISE_APPLICATION_ERROR(-20531, '@20531@') ;
- END IF;
- END LOOP;
+ END IF;
END IF;
END AD_MODULE_DBPREFIX_TRG
]]></body>
diff -r 57d4bf060d34 -r 576d9c0e1315
src-db/database/model/triggers/AD_ROLE_TRG.xml
--- a/src-db/database/model/triggers/AD_ROLE_TRG.xml Thu Sep 23 16:01:24
2010 +0200
+++ b/src-db/database/model/triggers/AD_ROLE_TRG.xml Thu Sep 30 11:04:07
2010 +0200
@@ -87,7 +87,8 @@
from AD_Window w, AD_Tab t, AD_Table tt
WHERE w.AD_Window_ID=t.AD_Window_ID
AND t.AD_Table_ID=tt.AD_Table_ID
- AND tt.AccessLevel IN ('4','7','6')) w;
+ AND tt.AccessLevel IN ('4','7','6')
+ AND w.IsActive = 'Y') w;
-- Process
INSERT INTO AD_Process_Access
( AD_Process_Access_ID, AD_Process_ID, AD_Role_ID,
@@ -95,7 +96,8 @@
SELECT get_uuid(), p.AD_Process_ID, :new.AD_Role_ID,
:new.AD_CLIENT_ID, :new.AD_ORG_ID, 'Y', now(), :new.UpdatedBy, now(),
:new.UpdatedBy, 'Y'
FROM AD_Process p
- WHERE AccessLevel IN ('4','7','6');
+ WHERE AccessLevel IN ('4','7','6')
+ AND p.IsActive='Y';
-- Form
INSERT INTO AD_Form_Access
(AD_Form_Access_ID, AD_Form_ID, AD_Role_ID,
@@ -103,7 +105,8 @@
SELECT get_uuid(), f.AD_Form_ID, :new.AD_Role_ID,
:new.AD_CLIENT_ID, :new.AD_ORG_ID, 'Y', now(), :new.UpdatedBy, now(),
:new.UpdatedBy, 'Y'
FROM AD_Form f
- WHERE AccessLevel IN ('4','7','6');
+ WHERE AccessLevel IN ('4','7','6')
+ AND f.IsActive='Y';
-- Workflow
INSERT INTO AD_WorkFlow_Access
(AD_WorkFlow_Access_ID, AD_WorkFlow_ID, AD_Role_ID,
@@ -111,7 +114,8 @@
SELECT get_uuid(), w.AD_WorkFlow_ID, :new.AD_Role_ID,
:new.AD_CLIENT_ID, :new.AD_ORG_ID, 'Y', now(), :new.UpdatedBy, now(),
:new.UpdatedBy, 'Y'
FROM AD_WorkFlow w
- WHERE AccessLevel IN ('4','7','6');
+ WHERE AccessLevel IN ('4','7','6')
+ AND w.IsActive='Y';
-- Client/Org
ELSIF (:new.UserLevel=' CO' OR :new.UserLevel=' C') AND (:new.IsManual <>
'Y') THEN
@@ -126,7 +130,8 @@
WHERE w.AD_Window_ID=t.AD_Window_ID
AND t.AD_Table_ID=tt.AD_Table_ID
AND tt.AccessLevel IN ('7','6','3','1')
- AND w.AD_Window_ID NOT IN ('100','102','165','187')) w;
+ AND w.AD_Window_ID NOT IN ('100','102','165','187')
+ AND w.IsActive='Y') w;
-- Process
INSERT INTO AD_Process_Access
(AD_Process_Access_ID, AD_Process_ID, AD_Role_ID,
@@ -134,7 +139,8 @@
SELECT DISTINCT get_uuid(), p.AD_Process_ID, :new.AD_Role_ID,
:new.AD_CLIENT_ID, :new.AD_ORG_ID, 'Y', now(), :new.UpdatedBy, now(),
:new.UpdatedBy, 'Y'
FROM AD_Process p
- WHERE AccessLevel IN ('7','6','3','1');
+ WHERE AccessLevel IN ('7','6','3','1')
------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits