Commit | Line | Data |
---|---|---|
4e57e206 | 1 | USE [coda-prod] |
22ab1788 EMS |
2 | GO |
3 | ||
4 | SET ANSI_NULLS ON | |
5 | GO | |
6 | SET QUOTED_IDENTIFIER OFF | |
7 | GO | |
22ab1788 | 8 | |
4e57e206 EMS |
9 | ALTER PROCEDURE [dbo].[auf_p_ctrlCptEcriture] |
10 | @cmpcode varchar(12), | |
11 | @pcg varchar(10), | |
12 | @elm23 varchar(144), | |
13 | @operation varchar(10), | |
14 | @exercice int, | |
15 | @periode int | |
22ab1788 EMS |
16 | AS |
17 | ||
22ab1788 EMS |
18 | -- execute auf_p_ctrlCptEcriture 'AUF','62510','2092RR','714',2008,7 |
19 | ||
20 | --- cette procédure permet de controler les éléments (pcg, élément 2 et 3 ) et aussi | |
21 | --- les règles des éléments gauches et droites pour la clé comptable | |
22 | ||
4e57e206 EMS |
23 | DECLARE @elm2 varchar(72) |
24 | DECLARE @elm3 varchar(72) | |
22ab1788 EMS |
25 | DECLARE @valeur varchar(72) |
26 | DECLARE @valeur2 varchar(72) | |
27 | DECLARE @valeurfin varchar(72) | |
28 | DECLARE @resultat varchar(200) | |
29 | DECLARE @code varchar(72) | |
30 | DECLARE @elmlevel smallint | |
31 | DECLARE @subanal smallint | |
32 | DECLARE @deldate datetime | |
33 | DECLARE @startyear smallint | |
34 | DECLARE @startperiod smallint | |
35 | DECLARE @endyear smallint | |
36 | DECLARE @endperiod smallint | |
37 | ||
22ab1788 EMS |
38 | SET NOCOUNT ON |
39 | ||
40 | SELECT @resultat = '' | |
41 | ||
4e57e206 | 42 | IF (ltrim(rtrim(@operation)) = '') |
22ab1788 | 43 | BEGIN |
4e57e206 EMS |
44 | SELECT @elm2 = @elm23 |
45 | SELECT @elm3 = '' | |
22ab1788 | 46 | END |
4e57e206 | 47 | ELSE |
22ab1788 EMS |
48 | BEGIN |
49 | SELECT @elm2 = ltrim(rtrim(@elm23)) + ltrim(rtrim(@operation)) | |
50 | SELECT @elm3 = ltrim(rtrim(@elm23)) | |
51 | END | |
52 | ||
4e57e206 EMS |
53 | -- recuperer les maitres éléments |
54 | SELECT code, elmlevel, deldate, startyear, startperiod, endyear, endperiod, subanal | |
55 | INTO #elements | |
56 | FROM oas_element | |
57 | WHERE | |
58 | cmpcode = @cmpcode | |
59 | AND ltrim(rtrim(code)) <> '' | |
60 | AND code is NOT null | |
61 | AND ( | |
62 | (code = @pcg AND elmlevel = 1) | |
63 | OR (code = @elm2 AND elmlevel = 2) | |
64 | OR (code = @elm3 AND elmlevel = 3) | |
65 | ) | |
22ab1788 EMS |
66 | ORDER BY elmlevel |
67 | ||
22ab1788 | 68 | -- Vérifier si les éléments existent dans les maitres éléments |
4e57e206 EMS |
69 | IF NOT exists ( SELECT code FROM #elements WHERE code = @pcg AND elmlevel = 1) |
70 | SELECT @resultat = @pcg + ' : PCG non existant' | |
22ab1788 | 71 | |
4e57e206 EMS |
72 | IF ltrim(rtrim(@elm2)) <> '' |
73 | AND NOT exists (SELECT code FROM #elements WHERE code = @elm2 AND elmlevel = 2) | |
74 | SELECT @resultat = @resultat + ', ' + @elm2 + ' : élément 2 non existant' | |
22ab1788 | 75 | |
4e57e206 EMS |
76 | IF ltrim(rtrim(@elm3)) <> '' |
77 | AND NOT exists (SELECT code FROM #elements WHERE code = @elm3 AND elmlevel = 3) | |
78 | SELECT @resultat = @resultat + ', ' + @elm3 + ' : élément 3 non existant' | |
22ab1788 | 79 | |
4e57e206 EMS |
80 | DECLARE listeElm CURSOR FOR |
81 | SELECT code, elmlevel, deldate, startyear, startperiod, endyear, endperiod, subanal | |
82 | FROM #elements | |
22ab1788 | 83 | |
4e57e206 EMS |
84 | OPEN listeElm |
85 | FETCH NEXT FROM listeElm | |
86 | INTO @code, @elmlevel, @deldate, @startyear, @startperiod, @endyear, @endperiod, @subanal | |
22ab1788 | 87 | |
4e57e206 EMS |
88 | WHILE @@FETCH_STATUS = 0 |
89 | BEGIN | |
90 | -- vérifier si l'élément est supprimé | |
91 | IF (@deldate is NOT null) | |
92 | SELECT @resultat = ltrim(rtrim(@code)) + ' : est supprimé' | |
22ab1788 | 93 | |
4e57e206 EMS |
94 | -- comparer les dates début et de fin vs exercice et période de l'ecriture |
95 | IF (@startyear <> 0 AND @exercice < @startyear) | |
96 | OR (@endyear <> 0 AND @exercice > @endyear ) | |
97 | SELECT @resultat = @code + ' : exercice de début et/ou de fin non valide' | |
22ab1788 | 98 | |
4e57e206 EMS |
99 | IF (@startyear = @exercice AND @startperiod > @periode) |
100 | SELECT @resultat = @code + ' : période de début non valide' | |
22ab1788 | 101 | |
4e57e206 EMS |
102 | IF (@endyear = @exercice AND @endperiod < @periode) |
103 | SELECT @resultat = @code + ' : période de fin non valide' | |
22ab1788 | 104 | |
4e57e206 EMS |
105 | -- si PCG non sous analysé |
106 | IF (@elmlevel = 1) | |
107 | BEGIN -- el1 | |
22ab1788 | 108 | |
4e57e206 EMS |
109 | -- si PCG non sous analysé |
110 | IF ( @elm2 <> '' AND @subanal = 46 ) | |
111 | SELECT @resultat = @code + ' : PCG à ne pas sous analyser' | |
22ab1788 | 112 | |
4e57e206 EMS |
113 | -- si PCG sous analysé |
114 | IF ( @elm2 = '' AND @subanal = 76 ) | |
115 | SELECT @resultat = @code + ' : PCG à sous analyser' | |
22ab1788 | 116 | |
22ab1788 EMS |
117 | END |
118 | ||
4e57e206 EMS |
119 | IF ( @elmlevel = 2 ) |
120 | BEGIN | |
22ab1788 | 121 | |
4e57e206 EMS |
122 | -- si élément 2 non sous analysé |
123 | IF @elm3 <> '' AND @subanal = 46 | |
124 | SELECT @resultat = @code + ' : élément 2 à ne pas sous analyser' | |
22ab1788 | 125 | |
4e57e206 EMS |
126 | -- si élément 2 sous analysé |
127 | IF @elm3 = '' AND @subanal = 76 | |
128 | SELECT @resultat = @code + ' : élément 2 à sous analyser' | |
22ab1788 | 129 | |
4e57e206 | 130 | END |
22ab1788 | 131 | |
4e57e206 EMS |
132 | FETCH NEXT FROM listeElm |
133 | INTO @code, @elmlevel, @deldate, @startyear, @startperiod, @endyear, @endperiod, @subanal | |
134 | END | |
22ab1788 | 135 | |
22ab1788 EMS |
136 | DROP TABLE #elements |
137 | ||
22ab1788 | 138 | SELECT @resultat AS resultat |
22ab1788 | 139 | GO |