Modifications diverses
[auf_coda_additions.git] / db / procedures / auf_p_ctrlCptEcriture.sql
CommitLineData
4e57e206 1USE [coda-prod]
22ab1788
EMS
2GO
3
4SET ANSI_NULLS ON
5GO
6SET QUOTED_IDENTIFIER OFF
7GO
22ab1788 8
4e57e206
EMS
9ALTER 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
16AS
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
23DECLARE @elm2 varchar(72)
24DECLARE @elm3 varchar(72)
22ab1788
EMS
25DECLARE @valeur varchar(72)
26DECLARE @valeur2 varchar(72)
27DECLARE @valeurfin varchar(72)
28DECLARE @resultat varchar(200)
29DECLARE @code varchar(72)
30DECLARE @elmlevel smallint
31DECLARE @subanal smallint
32DECLARE @deldate datetime
33DECLARE @startyear smallint
34DECLARE @startperiod smallint
35DECLARE @endyear smallint
36DECLARE @endperiod smallint
37
22ab1788
EMS
38SET NOCOUNT ON
39
40SELECT @resultat = ''
41
4e57e206 42IF (ltrim(rtrim(@operation)) = '')
22ab1788 43 BEGIN
4e57e206
EMS
44 SELECT @elm2 = @elm23
45 SELECT @elm3 = ''
22ab1788 46 END
4e57e206 47ELSE
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
54SELECT code, elmlevel, deldate, startyear, startperiod, endyear, endperiod, subanal
55INTO #elements
56FROM oas_element
57WHERE
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
66ORDER BY elmlevel
67
22ab1788 68-- Vérifier si les éléments existent dans les maitres éléments
4e57e206
EMS
69IF NOT exists ( SELECT code FROM #elements WHERE code = @pcg AND elmlevel = 1)
70 SELECT @resultat = @pcg + ' : PCG non existant'
22ab1788 71
4e57e206
EMS
72IF 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
76IF 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
80DECLARE listeElm CURSOR FOR
81SELECT code, elmlevel, deldate, startyear, startperiod, endyear, endperiod, subanal
82FROM #elements
22ab1788 83
4e57e206
EMS
84OPEN listeElm
85FETCH NEXT FROM listeElm
86INTO @code, @elmlevel, @deldate, @startyear, @startperiod, @endyear, @endperiod, @subanal
22ab1788 87
4e57e206
EMS
88WHILE @@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
136DROP TABLE #elements
137
22ab1788 138SELECT @resultat AS resultat
22ab1788 139GO