details:   https://code.openbravo.com/erp/devel/pi/rev/fe92a8c56211
changeset: 17761:fe92a8c56211
user:      Javier Etxarri <javier.echarri <at> openbravo.com>
date:      Fri Aug 24 14:37:39 2012 +0200
summary:   Fixes issue 19405: Error when you try to change a period's name in 
Oracle

diffstat:

 src-db/database/model/triggers/C_PERIOD_TRG2.xml |  13 +---------
 src-db/database/model/triggers/C_PERIOD_TRG3.xml |  28 ++++++++++++++++++++++++
 2 files changed, 30 insertions(+), 11 deletions(-)

diffs (57 lines):

diff -r 31716d369708 -r fe92a8c56211 
src-db/database/model/triggers/C_PERIOD_TRG2.xml
--- a/src-db/database/model/triggers/C_PERIOD_TRG2.xml  Fri Aug 24 13:46:23 
2012 +0200
+++ b/src-db/database/model/triggers/C_PERIOD_TRG2.xml  Fri Aug 24 14:37:39 
2012 +0200
@@ -52,19 +52,10 @@
        IF (INSERTING AND :NEW.PERIODTYPE = 'C_YEARPERIOD') THEN
                -- Creating periods from procedure, no need to check dates
                :NEW.PERIODTYPE := 'S';
-       ELSE
+       Else
                IF (:NEW.STARTDATE > :NEW.ENDDATE) THEN
                        RAISE_APPLICATION_ERROR(-20000, '@DatesWrong@');
-               END IF;
-               SELECT COUNT(*) INTO V_COUNT 
-               FROM C_PERIOD 
-               WHERE C_PERIOD_ID <> :NEW.C_PERIOD_ID 
-                       AND AD_ORG_ID = :NEW.AD_ORG_ID
-                       AND :NEW.STARTDATE <= ENDDATE 
-                       AND :NEW.ENDDATE >= STARTDATE;
-               IF (V_COUNT > 0) THEN
-                       RAISE_APPLICATION_ERROR(-20000, '@DatesOverlapped@');
-               END IF;
+               End If;
        END IF;
    END IF;
 
diff -r 31716d369708 -r fe92a8c56211 
src-db/database/model/triggers/C_PERIOD_TRG3.xml
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/src-db/database/model/triggers/C_PERIOD_TRG3.xml  Fri Aug 24 14:37:39 
2012 +0200
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+  <database name="TRIGGER C_PERIOD_TRG3">
+    <trigger name="C_PERIOD_TRG3" table="C_PERIOD" fires="after" insert="true" 
update="true" delete="false" foreach="statement">
+      <body><![CDATA[
+    V_COUNT NUMBER:= 0;
+Begin
+    For Cur_Period In
+      (Select * 
+      From C_Period
+      Where C_Period_Id In (Select Distinct(Cp.C_Period_Id)
+      From C_Period Cp 
+            Join C_Periodcontrol Cpc On Cpc.C_Period_Id= Cp.C_Period_Id 
+      Where Periodstatus = 'O'))
+    Loop
+       Select Count(*) 
+       Into V_COUNT
+       From C_Period 
+       Where C_Period_Id <> Cur_Period.C_Period_Id
+       And Ad_Org_Id=Cur_Period.Ad_Org_Id
+       And Cur_Period.startdate <= Enddate
+                        And Cur_Period.Enddate >= Startdate;
+       If (V_COUNT > 0) Then
+         RAISE_APPLICATION_ERROR(-20000, '@DatesOverlapped@');
+       End if;
+    End Loop;
+END]]></body>
+    </trigger>
+  </database>

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