Modifications diverses
[auf_coda_additions.git] / db / procedures / auf_p_ctrlCptEcriture.sql
1 USE [coda-prod]
2 GO
3
4 SET ANSI_NULLS ON
5 GO
6 SET QUOTED_IDENTIFIER OFF
7 GO
8
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
16 AS
17
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
23 DECLARE @elm2 varchar(72)
24 DECLARE @elm3 varchar(72)
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
38 SET NOCOUNT ON
39
40 SELECT @resultat = ''
41
42 IF (ltrim(rtrim(@operation)) = '')
43 BEGIN
44 SELECT @elm2 = @elm23
45 SELECT @elm3 = ''
46 END
47 ELSE
48 BEGIN
49 SELECT @elm2 = ltrim(rtrim(@elm23)) + ltrim(rtrim(@operation))
50 SELECT @elm3 = ltrim(rtrim(@elm23))
51 END
52
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 )
66 ORDER BY elmlevel
67
68 -- Vérifier si les éléments existent dans les maitres éléments
69 IF NOT exists ( SELECT code FROM #elements WHERE code = @pcg AND elmlevel = 1)
70 SELECT @resultat = @pcg + ' : PCG non existant'
71
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'
75
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'
79
80 DECLARE listeElm CURSOR FOR
81 SELECT code, elmlevel, deldate, startyear, startperiod, endyear, endperiod, subanal
82 FROM #elements
83
84 OPEN listeElm
85 FETCH NEXT FROM listeElm
86 INTO @code, @elmlevel, @deldate, @startyear, @startperiod, @endyear, @endperiod, @subanal
87
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é'
93
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'
98
99 IF (@startyear = @exercice AND @startperiod > @periode)
100 SELECT @resultat = @code + ' : période de début non valide'
101
102 IF (@endyear = @exercice AND @endperiod < @periode)
103 SELECT @resultat = @code + ' : période de fin non valide'
104
105 -- si PCG non sous analysé
106 IF (@elmlevel = 1)
107 BEGIN -- el1
108
109 -- si PCG non sous analysé
110 IF ( @elm2 <> '' AND @subanal = 46 )
111 SELECT @resultat = @code + ' : PCG à ne pas sous analyser'
112
113 -- si PCG sous analysé
114 IF ( @elm2 = '' AND @subanal = 76 )
115 SELECT @resultat = @code + ' : PCG à sous analyser'
116
117 END
118
119 IF ( @elmlevel = 2 )
120 BEGIN
121
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'
125
126 -- si élément 2 sous analysé
127 IF @elm3 = '' AND @subanal = 76
128 SELECT @resultat = @code + ' : élément 2 à sous analyser'
129
130 END
131
132 FETCH NEXT FROM listeElm
133 INTO @code, @elmlevel, @deldate, @startyear, @startperiod, @endyear, @endperiod, @subanal
134 END
135
136 DROP TABLE #elements
137
138 SELECT @resultat AS resultat
139 GO