Modifications diverses
[auf_coda_additions.git] / db / procedures / auf_p_ctrlCptEcriture.sql
index 10da112..219607c 100644 (file)
@@ -1,32 +1,27 @@
-USE [coda-prod]
+USE [coda-prod]
 GO
 
 SET ANSI_NULLS ON
 GO
 SET QUOTED_IDENTIFIER OFF
 GO
-ALTER PROCEDURE [dbo].[auf_p_ctrlCptEcriture]
-
-                 @cmpcode varchar(12),
-                 @pcg varchar(10),
-                 @elm23 varchar(10),
-                 @operation varchar(10),
-                 @exrcice int,
-                 @periode int
 
+ALTER PROCEDURE [dbo].[auf_p_ctrlCptEcriture]
+    @cmpcode varchar(12),
+    @pcg varchar(10),
+    @elm23 varchar(144),
+    @operation varchar(10),
+    @exercice int,
+    @periode int
 AS
 
-
-
 -- execute auf_p_ctrlCptEcriture 'AUF','62510','2092RR','714',2008,7
 
 ---  cette procédure permet de controler les éléments (pcg, élément 2 et 3 ) et aussi
 ---  les règles des éléments gauches et droites pour la clé comptable
 
-
-
-DECLARE @elm2 varchar(12)
-DECLARE @elm3 varchar(10)
+DECLARE @elm2 varchar(72)
+DECLARE @elm3 varchar(72)
 DECLARE @valeur varchar(72)
 DECLARE @valeur2 varchar(72)
 DECLARE @valeurfin varchar(72)
@@ -40,263 +35,105 @@ DECLARE @startperiod smallint
 DECLARE @endyear smallint
 DECLARE @endperiod smallint
 
-
 SET NOCOUNT ON
 
 SELECT @resultat = ''
 
-IF ( ltrim(rtrim(@operation)) = '' )
+IF (ltrim(rtrim(@operation)) = '')
     BEGIN
-       SELECT @elm2 = @elm23
-       SELECT @elm3 = ''
+        SELECT @elm2 = @elm23
+        SELECT @elm3 = ''
     END
-   ELSE
+ELSE
     BEGIN
        SELECT @elm2 = ltrim(rtrim(@elm23)) + ltrim(rtrim(@operation))
        SELECT @elm3 = ltrim(rtrim(@elm23))
     END
 
---- recuperer les maitres éléments
-
-SELECT  code,
-        elmlevel,
-        deldate,
-        startyear,
-        startperiod,
-        endyear,
-        endperiod,
-        subanal
-
-INTO    #elements
-
-FROM    oas_element
-
-WHERE  ( cmpcode = @cmpcode AND
-         ltrim(rtrim(code)) <> '' AND code is NOT null ) AND
-       ( ( code = @pcg AND elmlevel = 1 ) OR
-         ( code = @elm2 AND elmlevel = 2 ) OR
-         ( code = @elm3 AND elmlevel = 3 )
-       )
-
+-- recuperer les maitres éléments
+SELECT code, elmlevel, deldate, startyear, startperiod, endyear, endperiod, subanal
+INTO #elements
+FROM oas_element
+WHERE
+    cmpcode = @cmpcode
+    AND ltrim(rtrim(code)) <> ''
+    AND code is NOT null
+    AND (
+        (code = @pcg AND elmlevel = 1)
+        OR (code = @elm2 AND elmlevel = 2)
+        OR (code = @elm3 AND elmlevel = 3)
+    )
 ORDER BY elmlevel
 
---- recuperer les regles des éléments
-
-SELECT  elmcode code ,
-        elmlevel,
-        direction sense,
-        lstseqno ordre,
-        logical operLogic,
-        openb parDebut,
-        closeb parfin,
-        cffunction operateur,
-        cfvalue   valeur
-
-INTO    #regles
-
-FROM    oas_rllist
-
-WHERE   cmpcode = @cmpcode AND
-       ( ( elmcode = @pcg AND elmlevel = 1 ) OR
-         ( elmcode = @elm2 AND elmlevel = 2 ) OR
-         ( elmcode = @elm3 AND elmlevel = 3 )
-       )
-
-
 -- Vérifier si les éléments existent dans les maitres éléments
+IF NOT exists ( SELECT code FROM #elements WHERE code = @pcg AND elmlevel = 1)
+    SELECT @resultat = @pcg + ' : PCG non existant'
 
- IF NOT exists ( SELECT code FROM #elements WHERE code = @pcg AND elmlevel = 1)
-      SELECT @resultat = @pcg + ' : PCG non existant'
-
- IF ( ltrim(rtrim(@elm2)) <> '' )
-   IF NOT exists ( SELECT code FROM #elements WHERE code = @elm2 AND elmlevel = 2)
-      SELECT @resultat = @resultat + ', ' + @elm2 + ' : élément 2 non existant'
-
- IF ( ltrim(rtrim(@elm3)) <> '' )
-   IF NOT exists ( SELECT code FROM #elements WHERE code = @elm3 AND elmlevel = 3)
-      SELECT @resultat = @resultat + ', ' + @elm3 + ' : élément 3 non existant'
-
-
-
-
-DECLARE listeElm cursor for
-SELECT  code,
-        elmlevel,
-        deldate,
-        startyear,
-        startperiod,
-        endyear,
-        endperiod,
-        subanal
+IF ltrim(rtrim(@elm2)) <> ''
+   AND NOT exists (SELECT code FROM #elements WHERE code = @elm2 AND elmlevel = 2)
+    SELECT @resultat = @resultat + ', ' + @elm2 + ' : élément 2 non existant'
 
-    FROM #elements
+IF ltrim(rtrim(@elm3)) <> ''
+   AND NOT exists (SELECT code FROM #elements WHERE code = @elm3 AND elmlevel = 3)
+    SELECT @resultat = @resultat + ', ' + @elm3 + ' : élément 3 non existant'
 
-open listeElm
+DECLARE listeElm CURSOR FOR
+SELECT code, elmlevel, deldate, startyear, startperiod, endyear, endperiod, subanal
+FROM #elements
 
-    fetch next FROM   listeElm
-    INTO    @code,
-            @elmlevel,
-            @deldate,
-            @startyear,
-            @startperiod,
-            @endyear,
-            @endperiod,
-            @subanal
+OPEN listeElm
+FETCH NEXT FROM listeElm
+INTO @code, @elmlevel, @deldate, @startyear, @startperiod, @endyear, @endperiod, @subanal
 
-    while (@@fetch_status <> -1)
-    BEGIN --1
-
-      IF (@@fetch_status <> -2)
-          BEGIN --2
-
-      -- vérifier si l'élément est supprimé
-              IF ( @deldate is NOT null)
-               BEGIN
-                SELECT @resultat = ltrim(rtrim(@code)) + ' : est supprimé'
-               END
-      -- comparer les dates début et de fin vs exercice et période de l'ecriture
-
-              IF (  ( @startyear <> 0 AND @exrcice < @startyear)  OR ( @endyear <> 0 AND @exrcice > @endyear ) )
-                SELECT @resultat = @code + ' : exercice de début et/ou de fin non valide'
-
-              IF ( @startyear = @exrcice AND @startperiod > @periode )
-                SELECT @resultat = @code + ' : période de début non valide'
-
-
-
-              IF ( @endyear = @exrcice AND @endperiod < @periode )
-                SELECT @resultat = @code + ' : période de fin non valide'
+WHILE @@FETCH_STATUS = 0
+    BEGIN
+        -- vérifier si l'élément est supprimé
+        IF (@deldate is NOT null)
+            SELECT @resultat = ltrim(rtrim(@code)) + ' : est supprimé'
 
-       -- vérifier liste gauches et droites des éléments
+        -- comparer les dates début et de fin vs exercice et période de l'ecriture
+        IF (@startyear <> 0 AND @exercice < @startyear)
+           OR (@endyear <> 0 AND @exercice > @endyear )
+            SELECT @resultat = @code + ' : exercice de début et/ou de fin non valide'
 
-              -- si PCG non sous analysé
-              IF ( @elmlevel = 1 )
-                BEGIN --el1
+        IF (@startyear = @exercice AND @startperiod > @periode)
+            SELECT @resultat = @code + ' : période de début non valide'
 
-                   --- si PCG non sous analysé
-                   IF ( @elm2 <> '' AND @subanal = 46  )
-                        SELECT @resultat = @code + ' : PCG à ne pas sous analysé'
+        IF (@endyear = @exercice AND @endperiod < @periode)
+            SELECT @resultat = @code + ' : période de fin non valide'
 
-                          --- si PCG sous analysé
-                   IF ( @elm2 = '' AND @subanal = 76 )
-                        SELECT @resultat = @code + ' : PCG à sous analysé'
-            END
+        -- si PCG non sous analysé
+        IF (@elmlevel = 1)
+            BEGIN -- el1
 
-             IF ( @elmlevel = 2 )
-                BEGIN --el1
+                -- si PCG non sous analysé
+                IF ( @elm2 <> '' AND @subanal = 46  )
+                    SELECT @resultat = @code + ' : PCG à ne pas sous analyser'
 
-                   --- si élément 2 non sous analysé
-                   IF ( @elm3 <> '' AND @subanal = 46  )
-                        SELECT @resultat = @code + ' : élément 2 à ne pas sous analysé'
+                -- si PCG sous analysé
+                IF ( @elm2 = '' AND @subanal = 76 )
+                    SELECT @resultat = @code + ' : PCG à sous analyser'
 
-                          --- si élément 2 sous analysé
-                   IF ( @elm3 = '' AND @subanal = 76 )
-                        SELECT @resultat = @code + ' : élément 2 à sous analysé'
             END
 
-              -- vérifier liste de droite du PCG et liste de gauche de l'élément 3
-               --- si opérateur COMME
-                IF exists ( SELECT code FROM #regles  WHERE code = @code AND
-                           operateur = 6 AND ordre = 1 )
-                BEGIN
-
-                     SELECT @valeur = ( select ltrim(rtrim(valeur))
-                                        FROM #regles
-                                        WHERE code = @code AND operateur = 6 AND ordre = 1 )
-
-                     SELECT @valeur = REPLACE ( @valeur , '*' , '%' )
-
-                     IF exists ( SELECT code FROM #regles  WHERE code = @code AND
-                                  operateur = 6 AND ordre = 2 )
-                      BEGIN
-
-                  SELECT @valeur2 = ( select ltrim(rtrim(valeur))
-                                               FROM #regles
-                                               WHERE code = @code AND operateur = 6 AND ordre = 2 )
-
-                          SELECT @valeur2 = REPLACE ( @valeur2 , '*' , '%' )
-
-                          IF ( @elm2 NOT LIKE @valeur  AND @elm2 NOT LIKE @valeur2)
-                           BEGIN
-                             IF ( @elmlevel = 1 )
-                               SELECT @resultat = @code + ' : élément droite ' + ltrim(rtrim(@elm2)) +  ' non valide'
-                             IF ( @elmlevel = 3 )
-                               SELECT @resultat = @code + ' : élément gauche ' + ltrim(rtrim(@elm2)) + ' non valide'
-                           END
-
-                       END
-                       ELSE
-                       BEGIN
-
-                           IF ( @elm2 NOT LIKE @valeur )
-                            BEGIN
-
-                               IF ( @elmlevel = 1 )
-                                 SELECT @resultat = @code + ' : élément droite ' + ltrim(rtrim(@elm2)) +  ' non valide'
-
-                               IF ( @elmlevel = 3 )
-                                 SELECT @resultat = @code + ' : élément gauche ' + ltrim(rtrim(@elm2)) + ' non valide'
-
-                            END
-                        END
-               END
-
-
-
-                --- si opérateur ENTRE avoir avec nathalie houle
-        IF exists ( SELECT code FROM #regles  WHERE code = @code AND
-                           operateur = 9 AND elmlevel = 1 AND ordre = 1 )
-                  BEGIN
-
-                     -- valeur début
-                     SELECT @valeur = ( select ltrim(rtrim(valeur))
-                                        FROM #regles
-                                        WHERE code = @code AND operateur = 9
-                                              AND ordre = 1 )
-
-                     SELECT @valeurfin = ( select ltrim(rtrim(valeur))
-                                           FROM #regles
-                                           WHERE code = @code AND operateur = -1 AND ordre = 2 )
+        IF ( @elmlevel = 2 )
+            BEGIN
 
-                     IF NOT (  @elm2 BETWEEN @valeur AND @valeurfin )
-                        BEGIN
+               -- si élément 2 non sous analysé
+               IF @elm3 <> '' AND @subanal = 46
+                   SELECT @resultat = @code + ' : élément 2 à ne pas sous analyser'
 
-                           IF ( @elmlevel = 1 )
-                             SELECT @resultat = @code + ' : élément droite ' + ltrim(rtrim(@elm2)) + ' non valide'
-                           IF ( @elmlevel = 3 )
-                             SELECT @resultat = @code + ' : élément gauche ' + ltrim(rtrim(@elm2)) + ' non valide'
-                        END
+               -- si élément 2 sous analysé
+               IF @elm3 = '' AND @subanal = 76
+                   SELECT @resultat = @code + ' : élément 2 à sous analyser'
 
-                  END
-
-          END -- 2
-
-
-
-      fetch next FROM   listeElm
-        INTO    @code,
-                @elmlevel,
-                @deldate,
-                @startyear,
-                @startperiod,
-                @endyear,
-                @endperiod,
-                @subanal
-    END -- 1
+            END
 
+        FETCH NEXT FROM listeElm
+        INTO @code, @elmlevel, @deldate, @startyear, @startperiod, @endyear, @endperiod, @subanal
+    END
 
-DROP TABLE #regles
 DROP TABLE #elements
 
-
-
 SELECT @resultat AS resultat
-
-
-
-
-
-
-
-
 GO