Modifié par Julien EYMERY le 2021/03/02 11:17

Afficher les derniers auteurs
1 (((
2 = Introduction =
3 )))
4
5 Le numéro de (% style="color: rgb(255,102,0);" %)**SIREN**(%%) est attribué par l'INSEE lors de la création d'une entreprise (ou lors de la déclaration d'existence des travailleurs indépendants, artistes auteurs).
6 Ce code est national, invariable et dure le temps de la vie de l'entreprise.
7
8 Il est composé de **9 chiffres** et se présente comme suit selon l'activité :
9 * Profession libérale / artiste auteur : 000 000 000
10 * Commerçant : 000 000 000 RCS
11 * Artisan : 000 000 000 RM 000
12
13
14 Le numéro de (% style="color: rgb(255,102,0);" %)**SIRET**(%%), quant à lui, identifie géographiquement l'établissement d'une entreprise. Il est composé de (% style="color: rgb(255,102,0);" %)**14 chiffres**(%%) correspondant au (% style="color: rgb(255,102,0);" %)**SIREN (9 chiffres) + le NIC (5 chiffres)**(%%).
15
16 Il peut donc y avoir plusieurs (% style="color: rgb(255,102,0);" %)**SIRET**(%%) à partir d'un seul (% style="color: rgb(255,102,0);" %)**SIREN**(%%) si une entreprise à plusieurs établissements.
17 (((
18 = Règles de validation =
19 )))
20 (((
21 ==== Validité d'un numéro de SIREN ====
22 )))
23
24 Le numéro SIREN est composé de (% style="color: rgb(255,102,0);" %)**8 chiffres**(%%), plus (% style="color: rgb(255,102,0);" %)**un chiffre de contrôle**(%%) qui permet de vérifier la validité du numéro.
25 La clef de contrôle utilisée pour vérifier l'exactitude d'un identifiant est une clef « 1-2 », suivant l'algorithme de Luhn.
26 Le principe est le suivant : on multiplie les chiffres de rang impair à partir de la droite par 1, ceux de rang pair par 2.
27
28 (% style="color: rgb(255,102,0);" %)**La somme des chiffres obtenus doit être congrue à zéro modulo 10**(%%), c'est-à-dire qu'elle doit être multiple de 10.
29 (((
30 ==== Exemple de contrôle de numéro SIREN ====
31 )))
32
33 Code SIREN (% style="color: rgb(255,0,0);" %)**73282932**(%%)(% style="color: rgb(0,128,0);" %)**0**(%%)
34 |=(((
35 Pos9)))|=(((
36 Pos8)))|=(((
37 Pos7)))|=(((
38 Pos6)))|=(((
39 Pos5)))|=(((
40 Pos4)))|=(((
41 Pos3)))|=(((
42 Pos2)))|=(((
43 Pos1)))
44 |(((
45 (% style="color: rgb(255,0,0);" %)7(%%))))|(((
46 (% style="color: rgb(255,0,0);" %)3(%%))))|(((
47 (% style="color: rgb(255,0,0);" %)2(%%))))|(((
48 (% style="color: rgb(255,0,0);" %)8(%%))))|(((
49 (% style="color: rgb(255,0,0);" %)2(%%))))|(((
50 (% style="color: rgb(255,0,0);" %)9(%%))))|(((
51 (% style="color: rgb(255,0,0);" %)3(%%))))|(((
52 (% style="color: rgb(255,0,0);" %)2(%%))))|(((
53 (% style="color: rgb(0,128,0);" %)0(%%))))
54 |(((
55 7x1)))|(((
56 3x2)))|(((
57 2x1)))|(((
58 8x2)))|(((
59 2x1)))|(((
60 9x2)))|(((
61 3x1)))|(((
62 2x2)))|(((
63 0x1)))
64 |(((
65 7)))|(((
66 6)))|(((
67 2)))|(((
68 16)))|(((
69 2)))|(((
70 18)))|(((
71 3)))|(((
72 4)))|(((
73 0)))
74
75 La somme des chiffres suivants : 7+6+2+1+6+2+1+8+3+4+0 vaut 40, qui est multiple de 10.
76 Ce numéro (% style="color: rgb(255,102,0);" %)**SIREN**(%%) est donc (% style="color: rgb(255,102,0);" %)**correct**(%%).
77 (((
78 ==== Validité d'un numéro de SIRET ====
79 )))
80
81 Le numéro (% style="color: rgb(255,102,0);" %)**SIRET**(%%) est composé de (% style="color: rgb(255,102,0);" %)**14 chiffres**(%%), (% style="color: rgb(255,102,0);" %)**dont un chiffre de contrôle**(%%) (le dernier) qui permet de vérifier la validité du numéro de (% style="color: rgb(255,102,0);" %)**SIRET (SIREN + NIC)**(%%).
82 La clef de contrôle utilisée pour vérifier l'exactitude d'un identifiant est une clé "1-2", suivant l'algorithme de Luhn.
83 Le principe est le suivant : on multiplie les chiffres de rang impair à partir de la droite par 1, ceux de rang pair par 2.
84 (% style="color: rgb(255,102,0);" %)**La somme des chiffres obtenus doit être congrue à zéro modulo 10**(%%), c'est-à-dire qu'elle doit être multiple de 10.
85 (((
86 ==== Exemple de contrôle de numéro SIRET ====
87 )))
88
89 Code SIRET (% style="color: rgb(255,0,0);" %)**7328293200007**(%%)(% style="color: rgb(0,128,0);" %)**4**(%%)
90 |=(((
91 Pos14)))|=(((
92 Pos13)))|=(((
93 Pos12)))|=(((
94 Pos11)))|=(((
95 Pos10)))|=(((
96 Pos9)))|=(((
97 Pos8)))|=(((
98 Pos7)))|=(((
99 Pos6)))|=(((
100 Pos5)))|=(((
101 Pos4)))|=(((
102 Pos3)))|=(((
103 Pos2)))|=(((
104 Pos1)))
105 |(((
106 (% style="color: rgb(255,0,0);" %)7(%%))))|(((
107 (% style="color: rgb(255,0,0);" %)3(%%))))|(((
108 (% style="color: rgb(255,0,0);" %)2(%%))))|(((
109 (% style="color: rgb(255,0,0);" %)8(%%))))|(((
110 (% style="color: rgb(255,0,0);" %)2(%%))))|(((
111 (% style="color: rgb(255,0,0);" %)9(%%))))|(((
112 (% style="color: rgb(255,0,0);" %)3(%%))))|(((
113 (% style="color: rgb(255,0,0);" %)2(%%))))|(((
114 (% style="color: rgb(255,0,0);" %)0(%%))))|(((
115 (% style="color: rgb(255,0,0);" %)0(%%))))|(((
116 (% style="color: rgb(255,0,0);" %)0(%%))))|(((
117 (% style="color: rgb(255,0,0);" %)0(%%))))|(((
118 (% style="color: rgb(255,0,0);" %)7(%%))))|(((
119 (% style="color: rgb(0,128,0);" %)4(%%))))
120 |(((
121 7x2)))|(((
122 3x1)))|(((
123 2x2)))|(((
124 8x1)))|(((
125 2x2)))|(((
126 9x1)))|(((
127 3x2)))|(((
128 2x1)))|(((
129 0x2)))|(((
130 0x1)))|(((
131 0x2)))|(((
132 0x1)))|(((
133 2x2)))|(((
134 4x1)))
135 |(((
136 (14)1+4)))|(((
137 3)))|(((
138 4)))|(((
139 8)))|(((
140 4)))|(((
141 9)))|(((
142 6)))|(((
143 2)))|(((
144 0)))|(((
145 0)))|(((
146 0)))|(((
147 0)))|(((
148 4)))|(((
149 4)))
150
151 La somme des chiffres suivants : 1+4+3+4+8+4+9+6+2+0+0+0+0+1+4+4 vaut 50, qui est multiple de 10.
152 Ce numéro (% style="color: rgb(255,102,0);" %)**SIRET**(%%) est donc (% style="color: rgb(255,102,0);" %)**correct**(%%).
153 (((
154 = Exemple de code permettant la vérification d'un code SIREN ou SIRET =
155 )))
156
157 En entrée, 2 zones écran :
158 * ZADH_NUM_SIR_ADH est le numéro de (% style="color: rgb(255,102,0);" %)**SIREN**(%%) - NUM_E(9,0)
159 * ZADH_NIC_ADH est le (% style="color: rgb(255,102,0);" %)**NIC**(%%) (numéro interne de classement) - NUM_E(5,0)
160
161
162 En sortie :
163 * W_FLG_CTRL contient une valeur (% style="color: rgb(255,102,0);" %)***Vrai**(%%) si le (% style="color: rgb(255,102,0);" %)**SIRET**(%%) ou (% style="color: rgb(255,102,0);" %)**SIREN**(%%) est valide, (% style="color: rgb(255,102,0);" %)***Faux**(%%) sinon.
164
165
166
167 {{code language="adelia" language="adelia"}}
168 [DECLARATION]
169 Alpha(9)    WA_SIREN
170 Alpha(14)   WA_SIRET
171 Nun_E(14,0) WN_SIRET
172 Alpha(1)    W_A
173 Nun_E(1,0)  W_N
174 Num_Bin_2   W_POS
175 Bool        W_IMPAIRE
176 Num_E(3,0)  W_SOM
177 Num_E(1,0)  W_UNIT
178 Num_E(2,0)  W_DIZ
179
180 {{/code}}
181
182
183
184
185
186 {{code language="adelia" language="adelia"}}
187 [TRAITEMENT]
188 Si ZADH_NIC_ADH = 0
189    /* ___ traitement SIREN ____________________________________________
190    Placer_A_Droite ZADH_NUM_SIR_ADH WA_SIREN
191    W_POS = 9
192    W_IMPAIRE = *Vrai
193    Tant_Que W_POS >= 1
194       W_A = &Extraction(WA_SIREN;W_POS;1)
195       W_N = &Alpha_Num(W_A)   
196       Si W_IMPAIRE /* --- impair
197          W_SOM = W_SOM + W_N
198       Sinon     /* --- pair
199          W_DIZ = W_N * 2
200          Si W_DIZ <= 9
201             W_SOM = W_SOM + W_DIZ
202          Sinon     /* --- Résultat multiplication sur 2 positions
203             W_DIZ = W_DIZ - 10
204             W_SOM = W_SOM + 1 + W_DIZ
205          Fin
206       Fin
207       W_POS = W_POS - 1
208       W_IMPAIRE = Non W_IMPAIRE
209    Refaire
210 Sinon
211    /* ___ traitement SIRET ____________________________________________
212    WN_SIRET = (ZADH_NUM_SIR_ADH * 100000) + ZADH_NIC_ADH
213    Placer_A_Droite WN_SIRET WA_SIRET
214    W_POS = 14
215    W_IMPAIRE = *Vrai
216    Tant_Que W_POS >= 1
217       W_A = &EXTRACTION(WA_SIRET;W_POS;1)
218       W_N = &ALPHA_NUM(W_A)   
219       Si W_IMPAIRE /* --- impair
220          W_SOM = W_SOM + W_N
221       Sinon     /* --- pair
222          W_DIZ = W_N * 2
223          Si W_DIZ <= 9
224             W_SOM = W_SOM + W_DIZ
225          Sinon     /* --- Résultat multiplication sur 2 positions
226             W_DIZ = W_DIZ - 10
227             W_SOM = W_SOM + 1 + W_DIZ
228          Fin
229       Fin
230       W_POS = W_POS - 1
231       W_IMPAIRE = Non W_IMPAIRE
232    Refaire
233 Fin
234 /* ___ Récupère l'unité de W_SOM ______________________________________
235 W_UNIT = W_SOM / 10
236 Reste W_UNIT
237 W_FLG_CTRL = (W_UNIT = 0)
238
239 {{/code}}
240
241