/[openfoncier]/trunk/app/sitadel.php
ViewVC logotype

Contents of /trunk/app/sitadel.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3197 - (show annotations)
Fri Dec 5 17:24:53 2014 UTC (10 years, 2 months ago) by vpihour
File size: 42403 byte(s)
* Amélioration - Si une commune est divisée en arrondissement, ce n'est pas le 
  code INSEE de la commune qu'il faut mettre en entête mais, le code impôt de 
  l'arrondissement du dossier d'autorisation.
* Amélioration - Si on essayait de générer un export SITADEL et qu'une erreur 
  étaient détectée dans les données, seul un fichier d'erreur était généré. 
  Dorénavant, la gestion des erreurs est moins restrive. Deux fichiers sont 
  générés en cas d'erreur : le fichier d'export et le fichier d'erreurs.
* Bug - Si on essayait de générer un export SITADEL contenant des mouvements
  modificatif, une erreur se produisait. C'est corrigé.

1 <?php
2 /**
3 * Ce script permet de générer un document type texte contenant
4 * la liste de toutes les demandes d'autorisation dd'occupation de droit du sol
5 * formulées entre deux dates.
6 *
7 * @package openads
8 * @version SVN : $Id$
9 */
10
11 // Appel des classes
12 require_once "../obj/utils.class.php";
13 require_once "../app/sitadel.class.php";
14 require_once "sitadel.inc";
15 $f = new utils(NULL, "export_sitadel", _("export SITADEL"), "ico_reqmo.png", "export");
16
17 /**
18 * Description de la page
19 */
20 $description = _("Cette page vous permet de Transmettre les dossiers suivant la procedure SITADEL");
21 $f->displayDescription($description);
22
23 // 1ere étape : affichage du formulaire permettant le choix d'un interval de date
24 // ainsi que l'ordre
25 if (empty($_POST)) {
26 // Récupération des paramètres
27 if (isset($_GET["datedebut"]) AND $_GET["datedebut"] != "") {
28 $datedebut = substr($_GET["datedebut"],8,2)."/".substr($_GET["datedebut"],5,2)."/".substr($_GET["datedebut"],0,4);
29 } else {
30 $datedebut = "";
31 }
32 if (isset($_GET["datefin"]) AND $_GET["datefin"] != "") {
33 $datefin = substr($_GET["datefin"],8,2)."/".substr($_GET["datefin"],5,2)."/".substr($_GET["datefin"],0,4);
34 } else {
35 $datefin = "";
36 }
37 if (isset($_GET["numero"]) AND $_GET["numero"] != "") {
38 $numero = $_GET["numero"];
39 } else {
40 $numero = "";
41 }
42 affichageFormulaire($datedebut, $datefin, $numero);
43 } else { // Traitement après validation du formulaire
44
45 // init de la valeur d'erreur
46 $correct=true;
47 // init de la chaîne contenant l'erreur
48 $erreur = "";
49
50 // XXX
51 $longueurenregistrement= 0 ;
52
53 // XXX
54 $t10 = "||||||||||"; // 10 |
55
56 // Initialisation des dates de début et de fin
57 $datedebut ='';
58 $datefin='';
59
60 // Traitement des erreurs
61 if ($_POST["datedebut"] == "") {
62 $correct=false;
63 } else {
64 $datedebut = substr($_POST["datedebut"],6,4).
65 "-".substr($_POST["datedebut"],3,2)."-".
66 substr($_POST["datedebut"],0,2);
67 }
68 if ($_POST["datefin"] == "") {
69 $correct=false;
70 } else {
71 $datefin = substr($_POST["datefin"],6,4).
72 "-".substr($_POST["datefin"],3,2)."-".
73 substr($_POST["datefin"],0,2);
74 }
75 $numero = $_POST["numero"];
76 if ($correct === true){ // ***
77 // Requête permettant de lister tous les dossiers de l'export
78 $sql= "SELECT dossier.dossier,
79 dossier_instruction_type.mouvement_sitadel,
80 dossier.date_depot,
81 dossier.date_decision,
82 dossier.date_chantier,
83 dossier.date_achevement,
84 dossier.terrain_references_cadastrales as dossier_terrain_references_cadastrales,
85 dossier.terrain_adresse_voie_numero as dossier_terrain_adresse_voie_numero,
86 dossier.terrain_adresse_voie as dossier_terrain_adresse_voie,
87 dossier.terrain_adresse_lieu_dit as dossier_terrain_adresse_lieu_dit,
88 dossier.terrain_adresse_localite as dossier_terrain_adresse_localite,
89 dossier.terrain_adresse_code_postal as dossier_terrain_adresse_code_postal,
90 dossier.terrain_adresse_bp as dossier_terrain_adresse_bp,
91 dossier.terrain_adresse_cedex as dossier_terrain_adresse_cedex,
92 dossier_autorisation_type.code,
93 dossier.date_limite,
94 dossier.date_notification_delai,
95
96 arrondissement.code_impots as code_impots,
97
98 autorite_competente.autorite_competente_sitadel,
99 pp.type_demandeur,
100 pp.qualite,
101 civilite_pp.libelle as civilite_pp,
102 pp.particulier_nom as pp_particulier_nom,
103 pp.particulier_prenom as pp_particulier_prenom,
104 pp.personne_morale_denomination as pp_personne_morale_denomination,
105 pp.personne_morale_raison_sociale as pp_personne_morale_raison_sociale,
106 pp.personne_morale_siret as pp_personne_morale_siret,
107 pp.personne_morale_categorie_juridique as pp_personne_morale_categorie_juridique,
108 civilite_pm.libelle as civilite_pm_libelle,
109 pp.personne_morale_nom as pp_personne_morale_nom,
110 pp.personne_morale_prenom as pp_personne_morale_prenom,
111
112 pp.numero as pp_numero,
113 pp.voie as pp_voie,
114 pp.complement as pp_complement,
115 pp.lieu_dit as pp_lieu_dit,
116 pp.localite as pp_localite,
117 pp.code_postal as pp_code_postal,
118 pp.bp as pp_bp,
119 pp.cedex as pp_cedex,
120 pp.pays as pp_pays,
121 pp.division_territoriale as pp_division_territoriale,
122
123 civilite_delegataire.libelle as civilite_delegataire_libelle,
124 delegataire.particulier_nom as delegataire_particulier_nom,
125 delegataire.particulier_prenom as delegataire_particulier_prenom,
126 delegataire.numero as delegataire_numero,
127 delegataire.voie as delegataire_voie,
128 delegataire.complement as delegataire_complement,
129 delegataire.lieu_dit as delegataire_lieu_dit,
130 delegataire.localite as delegataire_localite,
131 delegataire.code_postal as delegataire_code_postal,
132 delegataire.bp as delegataire_bp,
133 delegataire.cedex as delegataire_cedex,
134 delegataire.pays as delegataire_pays,
135 delegataire.division_territoriale as delegataire_division_territoriale,
136
137 pp.telephone_fixe as pp_telephone_fixe,
138 pp.courriel as pp_courriel,
139
140 donnees_techniques.co_archi_recours,
141 donnees_techniques.am_terr_surf,
142 donnees_techniques.am_lotiss,
143 donnees_techniques.terr_juri_zac,
144 donnees_techniques.terr_juri_afu,
145 donnees_techniques.terr_juri_desc,
146 donnees_techniques.tr_desc,
147 donnees_techniques.co_cstr_nouv,
148 donnees_techniques.co_cstr_exist,
149 donnees_techniques.co_modif_aspect,
150 donnees_techniques.co_modif_struct,
151 donnees_techniques.co_cloture,
152 donnees_techniques.co_trx_exten,
153 donnees_techniques.co_trx_surelev,
154 donnees_techniques.co_trx_nivsup,
155 donnees_techniques.co_trx_amgt,
156 donnees_techniques.co_anx_pisc,
157 donnees_techniques.co_anx_gara,
158 donnees_techniques.co_anx_veran,
159 donnees_techniques.co_anx_abri,
160 donnees_techniques.co_anx_autr,
161 donnees_techniques.co_bat_niv_nb,
162 donnees_techniques.su_avt_shon1,
163 donnees_techniques.su_avt_shon2,
164 donnees_techniques.su_avt_shon3,
165 donnees_techniques.su_avt_shon4,
166 donnees_techniques.su_avt_shon5,
167 donnees_techniques.su_avt_shon6,
168 donnees_techniques.su_avt_shon7,
169 donnees_techniques.su_avt_shon8,
170 donnees_techniques.su_avt_shon9,
171 donnees_techniques.su_demo_shon1,
172 donnees_techniques.su_demo_shon2,
173 donnees_techniques.su_demo_shon3,
174 donnees_techniques.su_demo_shon4,
175 donnees_techniques.su_demo_shon5,
176 donnees_techniques.su_demo_shon6,
177 donnees_techniques.su_demo_shon7,
178 donnees_techniques.su_demo_shon8,
179 donnees_techniques.su_demo_shon9,
180 donnees_techniques.su_chge_shon1,
181 donnees_techniques.su_chge_shon2,
182 donnees_techniques.su_chge_shon3,
183 donnees_techniques.su_chge_shon4,
184 donnees_techniques.su_chge_shon5,
185 donnees_techniques.su_chge_shon6,
186 donnees_techniques.su_chge_shon7,
187 donnees_techniques.su_chge_shon8,
188 donnees_techniques.su_chge_shon9,
189 donnees_techniques.su_trsf_shon1,
190 donnees_techniques.su_trsf_shon2,
191 donnees_techniques.su_trsf_shon3,
192 donnees_techniques.su_trsf_shon4,
193 donnees_techniques.su_trsf_shon5,
194 donnees_techniques.su_trsf_shon6,
195 donnees_techniques.su_trsf_shon7,
196 donnees_techniques.su_trsf_shon8,
197 donnees_techniques.su_trsf_shon9,
198 donnees_techniques.su_cstr_shon1,
199 donnees_techniques.su_cstr_shon2,
200 donnees_techniques.su_cstr_shon3,
201 donnees_techniques.su_cstr_shon4,
202 donnees_techniques.su_cstr_shon5,
203 donnees_techniques.su_cstr_shon6,
204 donnees_techniques.su_cstr_shon7,
205 donnees_techniques.su_cstr_shon8,
206 donnees_techniques.su_cstr_shon9,
207 donnees_techniques.su_tot_shon1,
208 donnees_techniques.su_tot_shon2,
209 donnees_techniques.su_tot_shon3,
210 donnees_techniques.su_tot_shon4,
211 donnees_techniques.su_tot_shon5,
212 donnees_techniques.su_tot_shon6,
213 donnees_techniques.su_tot_shon7,
214 donnees_techniques.su_tot_shon8,
215 donnees_techniques.su_tot_shon9,
216 donnees_techniques.co_sp_transport,
217 donnees_techniques.co_sp_enseign,
218 donnees_techniques.co_sp_sante,
219 donnees_techniques.co_sp_act_soc,
220 donnees_techniques.co_sp_ouvr_spe,
221 donnees_techniques.co_sp_culture,
222 donnees_techniques.dm_tot_log_nb,
223 donnees_techniques.co_tot_ind_nb,
224 donnees_techniques.co_tot_coll_nb,
225 donnees_techniques.co_tot_log_nb,
226 donnees_techniques.co_resid_agees,
227 donnees_techniques.co_resid_etud,
228 donnees_techniques.co_resid_tourism,
229 donnees_techniques.co_resid_hot_soc,
230 donnees_techniques.co_resid_hand,
231 donnees_techniques.co_resid_autr,
232 donnees_techniques.co_resid_autr_desc,
233 donnees_techniques.co_uti_pers,
234 donnees_techniques.co_uti_princ,
235 donnees_techniques.co_uti_secon,
236 donnees_techniques.co_uti_vente,
237 donnees_techniques.co_uti_loc,
238 donnees_techniques.co_foyer_chamb_nb,
239 donnees_techniques.co_fin_lls_nb,
240 donnees_techniques.co_fin_aa_nb,
241 donnees_techniques.co_fin_ptz_nb,
242 donnees_techniques.co_fin_autr_nb,
243 donnees_techniques.co_mais_piece_nb,
244 donnees_techniques.co_log_1p_nb,
245 donnees_techniques.co_log_2p_nb,
246 donnees_techniques.co_log_3p_nb,
247 donnees_techniques.co_log_4p_nb,
248 donnees_techniques.co_log_5p_nb,
249 donnees_techniques.co_log_6p_nb,
250 donnees_techniques.mod_desc,
251
252 donnees_techniques.doc_date,
253 donnees_techniques.doc_tot_trav,
254 donnees_techniques.doc_tranche_trav,
255 donnees_techniques.doc_tranche_trav_desc,
256 donnees_techniques.doc_surf,
257 donnees_techniques.doc_nb_log,
258 donnees_techniques.doc_nb_log_indiv,
259 donnees_techniques.doc_nb_log_coll,
260 donnees_techniques.doc_nb_log_lls,
261 donnees_techniques.doc_nb_log_aa,
262 donnees_techniques.doc_nb_log_ptz,
263 donnees_techniques.doc_nb_log_autre,
264 donnees_techniques.daact_date,
265 donnees_techniques.daact_date_chgmt_dest,
266 donnees_techniques.daact_tot_trav,
267 donnees_techniques.daact_tranche_trav,
268 donnees_techniques.daact_tranche_trav_desc,
269 donnees_techniques.daact_surf,
270 donnees_techniques.daact_nb_log,
271 donnees_techniques.daact_nb_log_indiv,
272 donnees_techniques.daact_nb_log_coll,
273 donnees_techniques.daact_nb_log_lls,
274 donnees_techniques.daact_nb_log_aa,
275 donnees_techniques.daact_nb_log_ptz,
276 donnees_techniques.daact_nb_log_autre,
277
278 dossier_autorisation.date_depot as date_depot_da,
279 dossier_autorisation.date_decision as date_decision_da,
280 dossier_autorisation.date_validite as date_validite_da,
281 dossier_autorisation.date_chantier as date_chantier_da,
282 dossier_autorisation.date_achevement as date_achevement_da,
283 avis_decision.typeavis as typeavis_da,
284 avis_decision.sitadel,
285 avis_decision.sitadel_motif,
286 etat.statut as statut_di
287
288 FROM ".DB_PREFIXE."dossier";
289 $sql .= " INNER JOIN ".DB_PREFIXE."dossier_instruction_type
290 ON dossier.dossier_instruction_type =
291 dossier_instruction_type.dossier_instruction_type
292
293 INNER JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille
294 ON dossier_instruction_type.dossier_autorisation_type_detaille
295 =dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
296 INNER JOIN ".DB_PREFIXE."dossier_autorisation_type
297 ON dossier_autorisation_type.dossier_autorisation_type
298 =dossier_autorisation_type_detaille.dossier_autorisation_type
299 INNER JOIN ".DB_PREFIXE."dossier_autorisation
300 ON dossier_autorisation.dossier_autorisation
301 =dossier.dossier_autorisation
302 INNER JOIN ".DB_PREFIXE."autorite_competente
303 ON autorite_competente.autorite_competente
304 =dossier.autorite_competente
305
306 LEFT JOIN ".DB_PREFIXE."donnees_techniques
307 ON donnees_techniques.dossier_instruction = dossier.dossier
308 LEFT JOIN ".DB_PREFIXE."avis_decision
309 ON avis_decision.avis_decision = dossier.avis_decision
310 LEFT JOIN ".DB_PREFIXE."lien_dossier_demandeur as ldd_pp
311 ON ldd_pp.dossier = dossier.dossier
312 AND ldd_pp.petitionnaire_principal is TRUE
313 LEFT JOIN ".DB_PREFIXE."demandeur as pp
314 ON ldd_pp.demandeur = pp.demandeur
315 LEFT JOIN ".DB_PREFIXE."civilite as civilite_pp
316 ON civilite_pp.civilite = pp.particulier_civilite
317 LEFT JOIN ".DB_PREFIXE."civilite as civilite_pm
318 ON civilite_pm.civilite = pp.particulier_civilite
319 LEFT JOIN ".DB_PREFIXE."lien_dossier_demandeur as ldd_delegataire
320 ON ldd_delegataire.dossier = dossier.dossier
321 LEFT JOIN ".DB_PREFIXE."demandeur as delegataire
322 ON ldd_delegataire.demandeur = delegataire.demandeur AND delegataire.qualite='delegataire'
323 LEFT JOIN ".DB_PREFIXE."civilite as civilite_delegataire
324 ON civilite_delegataire.civilite = delegataire.particulier_civilite
325 LEFT JOIN ".DB_PREFIXE."etat
326 ON etat.etat = dossier.etat
327 LEFT JOIN ".DB_PREFIXE."arrondissement
328 ON dossier_autorisation.arrondissement=arrondissement.arrondissement
329 ";
330 $sql .= " WHERE dossier_instruction_type.mouvement_sitadel IS NOT NULL";
331 $sql .= " AND dossier.a_qualifier IS NOT TRUE";
332 $sql .= " AND ((dossier.date_depot >='".$datedebut."' AND dossier.date_depot<='".$datefin."')";
333 $sql .= " OR (dossier.date_decision>='".$datedebut."' AND dossier.date_decision<='".$datefin."')";
334 $sql .= " OR (dossier.date_chantier>='".$datedebut."' AND dossier.date_chantier<='".$datefin."')";
335 $sql .= " OR (dossier.date_achevement>='".$datedebut."' AND dossier.date_achevement<='".$datefin."'))";
336 $sql .= " order by dossier.date_depot";
337 $res = $f->db -> query ($sql);
338 $f->addToLog("app/sitadel.php : db->query(\"".$sql."\")", VERBOSE_MODE);
339 $f->isDatabaseError($res);
340 $export="";
341 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
342 // initialisation de la classe permettant la mise en forme de chaque ligne de l'export
343 $g = new sitadel($row['dossier'], $f);
344 $g->setRow($row);
345 // sitadel
346 $g->setVal($val);
347 //
348 // parametre
349 // $sql = "select parametre, valeur from ".DB_PREFIXE."statistique where dossier ='".$row['dossier']."'";
350 // $res1 = $f->db -> query ($sql);
351 // $f->isDatabaseError($res1);
352 // while ($row1=& $res1->fetchRow(DB_FETCHMODE_ASSOC)){
353 // $g->parametre[$row1['parametre']]=$row1['valeur'];
354 // }
355 $departement =$f->collectivite["departement"];
356 $commune =$f->collectivite["commune"];
357 $region =$f->collectivite["region"];
358 // depot
359 $depot="";
360
361 // Tous les mouvements autres que transfert ont comme mouvement le code DEPOT
362 // les décisions devant êtres précédées par le dépôt correspondant,
363 // les dossiers avec date de décision comprise dans l'interval fourni sont
364 // réaffichés en tant que dépôts (mouvement DEPOT)
365 if ($row['mouvement_sitadel'] != 'TRANSFERT'
366 and $row['mouvement_sitadel'] != 'SUPPRESSION'
367 and (($row['date_depot'] >= $datedebut
368 and $row['date_depot'] <= $datefin)
369 or ($row['date_decision'] >= $datedebut
370 and $row['date_decision'] <= $datefin))) {
371 $depot.=$g->entete("DEPOT",$departement,$commune,$pf_departement);
372 $depot.=$g->etatcivil();
373 $depot.=$g->adresse();
374 $depot.=$g->delegataire();
375 $depot.=$g->meltel($row['mouvement_sitadel']);
376 $depot.=$g->adresse_terrain();
377 $depot.=$g->parcelle();
378 // ===========================
379 // contrat maison individuelle
380 // ===========================
381 // sitadel : contrat|
382 // openads : non renseigne
383 $depot.= $g->defaultValue('contrat')."|";
384 // ==========
385 // architecte
386 // ==========
387 // sitadel : architecte|
388 // openads : données techniques.co_archi_recours
389 if($row['co_archi_recours'] == "t") {
390 $depot.= "1|";
391 } else {
392 $depot.= "0|";
393 }
394 // =====================
395 // utilisation data cnil
396 // ======================
397 // sitadel : cnil
398 // openads : non renseigne
399 $depot.= $g->defaultValue('cnil');
400 // fin d enregistrement depot
401 $depot.="\n";
402 }
403
404 // Seuls les dossier de type transfert ont comme mouvement le code TRANSFERT
405 $transfert ="";
406 if($row['mouvement_sitadel']=='TRANSFERT'
407 and $row['date_depot'] >= $datedebut
408 and $row['date_depot']<=$datefin){
409 $transfert.=$g->entete("TRANSFERT",$departement,$commune,$pf_departement);
410 $transfert.=$g->etatcivil();
411 $transfert.=$g->adresse();
412 $transfert.=$g->meltel($row['mouvement_sitadel']);
413 $transfert.="\n";
414 }
415
416
417 // Une ligne de mouvement DECISION est insérée après chaque ligne
418 // de mouvement DEPOT
419 $decision="";
420 if ($row['mouvement_sitadel'] != 'MODIFICATIF'
421 and $row['mouvement_sitadel'] != 'TRANSFERT'
422 and $row['mouvement_sitadel'] != 'SUPPRESSION'
423 and (($row['date_depot'] >= $datedebut and $row['date_depot']<=$datefin)
424 or ($row['date_decision'] >= $datedebut and $row['date_decision']<=$datefin))) {
425
426 //Ajout de l'entête
427 $decision.=$g->entete("DECISION",$departement,$commune,$pf_departement);
428
429 //Ajout du groupe 1
430 $decision.= $g->decision_groupe1();
431 // Si la décision est favorable, groupe 2
432 if ( $row['sitadel'] == 2 || $row['sitadel'] == 4 || $row['sitadel'] == 5
433 || $row['sitadel'] == 0 ){
434
435 $decision.= $g->amenagement_terrain();
436 $su_avt_shon = $g->shon("su_avt_shon");
437 //Si la SHON existante avant travaux est supérieur à la SHON
438 //démolie alors la variable natproj est égale à 2
439 $shonExistante = 0;
440 $shonDemolie = 0;
441 for ( $i=1;$i<=9;$i++){
442
443 $shonExistante += floor($row['su_avt_shon'.$i]);
444 $shonDemolie += floor($row['su_demo_shon'.$i]);
445 }
446 if ( $shonExistante > $shonDemolie && $row['co_cstr_nouv'] == 't' ){
447
448 $erreur .= _("Si la SHON existante avant travaux est superieur a la SHON demolie alors la variable natproj doit etre egale a 2 pour le dossier no")." ".$row['dossier']."\n";
449 }
450 //Si la SHON existante avant travaux et la SHON démolie sont
451 //égales alors la variable natproj est égale à 1
452 elseif ( $shonExistante > $shonDemolie && $row['co_cstr_exist'] == 't' ) {
453
454 $erreur .= _("Si la SHON existante avant travaux et la SHON demolie sont egales alors la variable natproj doit etre egale a 1 pour le dossier no")." ".$row['dossier']."\n";
455 }
456 else {
457 $decision .= $su_avt_shon;
458 }
459
460 $su_demo_shon = $g->shon("su_demo_shon");
461 //La SHON démolie s'accompagne obligatoirement de la shon
462 //existante avant travaux
463 //Erreur
464 if ( $shonExistante != 0 && $shonExistante == 0 ){
465 $erreur .= _("La SHON demolie s'accompagne obligatoirement de la SHON existante avant travaux pour le dossier no")." ".$row['dossier']."\n";
466 }
467 else {
468 $decision .= $su_demo_shon;
469 }
470
471
472 $decision.= $g->shon("su_chge_shon");
473 $su_trsf_shon = $g->shon("su_trsf_shon");
474 $su_cstr_shon = $g->shon("su_cstr_shon");
475 //Les SHON relatives à la transformation et issues de la
476 //transformation doivent être égales
477 if ( strcasecmp($su_trsf_shon, $su_cstr_shon) == 0 ||
478 (!preg_match("/[0|]{7}/", $su_trsf_shon) &&
479 preg_match("/[0|]{7}/", $su_cstr_shon) &&
480 $row['co_cstr_nouv']!='t' && $row['co_cstr_exist']!='t')){
481
482 $decision.= $su_trsf_shon;
483 $decision.= $su_cstr_shon;
484 }
485 //Erreur
486 else {
487 $erreur .= _("Les SHON globales vouees a la transformation et issues de la transformation de doivent etre egales pour le dossier no")." ".$row['dossier']."\n";
488 }
489
490 //Les SHON relatives à la transformation s'accompagnent
491 //obligatoirement de SHON existante avant travaux non nulle
492 if (( !preg_match("/[0|]{7}/", $su_trsf_shon) &&
493 !preg_match("/[0|]{7}/", $su_cstr_shon) &&
494 !preg_match("/[0|]{7}/", $su_avt_shon)) ||
495 (preg_match("/[0|]{7}/", $su_trsf_shon) &&
496 preg_match("/[0|]{7}/", $su_cstr_shon)&&
497 preg_match("/[0|]{7}/", $su_avt_shon))){
498
499 $decision.= $su_avt_shon;
500 }
501 //Erreur
502 else {
503
504 $erreur .= _("Les SHON relatives a la transformation s'accompagnent obligatoirement de SHON existante avant travaux non nulle pour le dossier no")." ".$row['dossier']."\n";
505 }
506
507 $decision.= $g->shon("su_tot_shon");
508
509 // Un nombre de logements démolis strictement positif doit
510 // s'accompagner obligatoirement de SHON démolie.
511 if($row['dm_tot_log_nb'] > 0) {
512 if($row['su_demo_shon1'] <= 0) {
513
514 $erreur .= _("Un nombre de logements demolis strictement positif doit s'accompagner obligatoirement de SHON demolie pour le dossier no")." ".$row['dossier']."\n";
515 }
516 }
517
518 // Un nombre de logements créés strictement positif doit
519 // s'accompagner obligatoirement de SHON créée ou de SHON
520 // issue de la transformation ayant pour destination l'habitation.
521 if($row['co_tot_log_nb'] > 0 AND ($row['su_cstr_shon1'] <= 0 OR $row['su_trsf_shon1'] <=0)) {
522
523 $erreur .= _("Un nombre de logements crees strictement positif doit s'accompagner obligatoirement de SHON creee ou de SHON issue de la transformation ayant pour destination l'habitation pour le dossier no")." ".$row['dossier']."\n";
524 }
525
526 // La SHON créée ou issue de la transformation
527 // suffixée par 9 (intérêt collectif ou service public) doit
528 // obligatoirement s'accompagner de la décomposition
529 // en sous modalité renseignée par la variable cpublic et réciproquement.
530
531 // Test si une valeur est true
532 $cpublic = FALSE;
533 if (isset($row['co_sp_transport']) && $row['co_sp_transport'] == 't') {
534 $cpublic = TRUE;
535 }
536 if (isset($row['co_sp_enseign']) && $row['co_sp_enseign'] == 't') {
537 $cpublic = TRUE;
538 }
539 if (isset($row['co_sp_sante']) && $row['co_sp_sante'] == 't') {
540 $cpublic = TRUE;
541 }
542 if (isset($row['co_sp_act_soc']) && $row['co_sp_act_soc'] == 't') {
543 $cpublic = TRUE;
544 }
545 if (isset($row['co_sp_ouvr_spe']) && $row['co_sp_ouvr_spe'] == 't') {
546 $cpublic = TRUE;
547 }
548 if (isset($row['co_sp_culture']) && $row['co_sp_culture'] == 't') {
549 $cpublic = TRUE;
550 }
551
552 if($cpublic !== TRUE AND ($row['su_cstr_shon9'] > 0 OR $row['su_trsf_shon9'] > 0)) {
553 $erreur .= _("La SHON creee ou issue de la transformation concernant le service public ou l'interet collectif doit obligatoirement s'accompagner du choix de destination des constructions pour le dossier no")." ".$row['dossier']."\n";
554 }
555
556 // La destination principale du logement mise à résidence
557 // principale ou résidence secondaire doit obligatoirement
558 // s'accompagner d'un mode d'utilisation à occupation personnelle
559 if($row['co_uti_princ'] == 't' OR $row['co_uti_secon'] == 't') {
560 if($row['co_uti_pers'] != 't') {
561
562 $erreur .= _("La destination principale du logement mise a residence principale ou residence secondaire doit obligatoirement s'accompagner d'un mode d'utilisation a occupation personnelle pour le dossier no")." ".$row['dossier']."\n";
563 }
564 }
565
566 $decision.= $g->destination($row['mouvement_sitadel']);
567
568 // Le nombre total de logements créés (variable nbtotlog)
569 // doit être égal à la somme des nombres de logements créés
570 // ventilés par type de financement
571 if($row['co_tot_log_nb'] != ($row['co_fin_lls_nb'] + $row['co_fin_aa_nb'] +
572 $row['co_fin_ptz_nb'] + $row['co_fin_autr_nb'])) {
573
574 $erreur .= _("Le nombre total de logements crees doit etre egal a la somme des nombres de logements crees ventiles par type de financement pour le dossier no")." ".$row['dossier']."\n";
575 }
576
577 $decision.= $g->repartitionFinan();
578
579 // Le nombre total de logements créés (variable nbtotlog)
580 // doit être égal à la totalisation de la répartition des
581 // logements par nombre de pièces
582 if($row['co_tot_log_nb'] != ($row['co_log_1p_nb'] + $row['co_log_2p_nb'] +
583 $row['co_log_3p_nb'] + $row['co_log_4p_nb'] + $row['co_log_5p_nb'] +
584 $row['co_log_6p_nb'])) {
585
586 $erreur .= _("Le nombre total de logements crees doit etre egal a la totalisation de la repartition des logements par nombre de pieces pour le dossier no")." ".$row['dossier']."\n";
587 }
588
589 $decision.= $g->repartitionNbPiece($row['mouvement_sitadel']);
590 }
591 $decision.="\n";
592 }
593
594 // modificatif
595 $modificatif='';
596 if($row['mouvement_sitadel'] == 'MODIFICATIF'
597 and $row['date_depot'] >= $datedebut
598 and $row['date_depot'] <= $datefin) {
599 $modificatif.=$g->entete("MODIFICATIF",$departement,$commune,$pf_departement);
600 if(isset($row['date_decision']) or $row['date_decision']==""){
601 // avis_sitadel et avis_sitadel_motif
602 if($row['avis_decision']!=''){
603
604 $modificatif.= $g->decision_groupe1();
605 }
606 // si la decision est favorable, envoi des informations statistiques
607 if($row["sitadel"] == 2 or $row["sitadel"] == 4
608 or $row["sitadel"] == 5){
609 // si accordé : ajout du 2nd groupe d'informations
610 $modificatif .= $g->adresse_terrain(); // adresse du terrain
611 $modificatif .= $g->parcelle(); // 3 premières parcelles
612 $modificatif .= $g->modificatif_terrain(); // Informations complémentaires
613
614 $modificatif.= $g->shon("su_avt_shon");
615 $modificatif.= $g->shon("su_demo_shon");
616 $modificatif.= $g->shon("su_chge_shon");
617 $modificatif.= $g->shon("su_trsf_shon");
618 $modificatif.= $g->shon("su_cstr_shon");
619
620 $modificatif.= "vm|vm|vm|vm|vm|vm|vm|vm|vm|";
621
622 $modificatif.= $g->repartitionFinan();
623 $modificatif.= $g->repartitionNbPiece($row['mouvement_sitadel']);
624 $modificatif.="\n";
625 }
626 }
627 }
628
629 // Mouvement suppression
630 $suppression = '';
631 if($row['mouvement_sitadel'] == 'SUPPRESSION') {
632 $suppression .= $g->entete("SUPPRESSION",$departement,$commune,$pf_departement);
633 $suppression .= "\n";
634 }
635
636 // Règles sur le mouvement suivi
637 // suivi DOC
638 $chantier="";
639 if($row['date_chantier'] >= $datedebut and $row['date_chantier']<=$datefin){
640
641 // Une ouverture de chantier ne peut concerner qu'un permis autorisé
642 if($row['typeavis_da'] != 'F') {
643 $erreur .= _("Une ouverture de chantier ne peut concerner qu'un permis autorise : dossier no")." ".$row['dossier']."\n";
644 }
645 // La date d'ouverture de chantier doit être supérieur à la date d'autorisation
646 if($row['doc_date'] > $row['date_decision_da']) {
647 $erreur .= _("La date d'ouverture de chantier doit être superieur a la date d'autorisation : dossier no")." ".$row['dossier']."\n";
648 }
649
650 $chantier.=$g->entete("SUIVI",$departement,$commune,$pf_departement);
651 $chantier.=$g->chantier();
652 $chantier.="\n";
653 }
654 // suivi DAACT
655 $achevement="";
656 if($row['date_achevement'] >= $datedebut and $row['date_achevement']<=$datefin){
657
658 // Un achèvement de chantier ne peut concerner qu'un permis autorisé
659 if($row['typeavis_da'] != 'F') {
660 $erreur .= _("Un achevement de chantier ne peut concerner qu'un permis autorise : dossier no")." ".$row['dossier']."\n";
661 }
662 if( $row['date_chantier_da'] == "" ) {
663 $erreur .= _("Un achevement de chantier ne peut concerner qu'un permis sur lequel un chantier a ete ouvert : dossier no")." ".$row['dossier']."\n";
664 }
665 // La date d'achevement de travaux doit être supérieur à la date d'ouverture des travaux
666 if($row['daact_date'] > $row['date_chantier_da']) {
667 $erreur .= _("La date d'achevement de travaux doit etre superieur a la date d'ouverture des travaux : dossier no")." ".$row['dossier']."\n";
668 }
669 $achevement.=$g->entete("SUIVI",$departement,$commune,$pf_departement);
670 $achevement.=$g->achevement();
671 $achevement.="\n";
672 }
673 // export
674 $export.=$depot.$decision.$transfert.$modificatif.$chantier.$achevement.$suppression;
675 } // fin while
676 // ***************************************
677 // entete de l enregistrement page 8 et 9
678 // ***************************************
679 // numero
680 // $numero= $db -> nextId('sitadel');
681
682 // On affiche le fichier généré
683 $departement =$f->collectivite["departement"];
684 $commune =$f->collectivite["commune"];
685 $region =$f->collectivite["region"];
686 $numero=$_POST["numero"];
687 $fichiertransmis = date('ymj').$pf_departement.$departement.$commune;
688 $longueurenregistrement= 0 ; // a calculer *** enregistrement le plus long
689 $entete = "SITADEL|".$pf_departement.$departement."|".$commune."|".$region."|".$fichiertransmis."|".$numero."|";
690 // calcul enregistrement le plus long
691 if(DBCHARSET=='UTF8'){
692 $export=utf8_decode($export);
693 }
694 // nombreenrgistremment et longueurenregistrement
695 $nbenr = explode("\n",$export);
696 $tmp=array();
697 $cpt=0;
698 for($i=0;$i<sizeof($nbenr);$i++){
699 // mb_strlen( variable,encoding) PHP 4 >= 4.0.6, PHP 5
700 // Le param�tre encoding est l'encodage des caract�res.
701 // S'il est omis, l'encodage de caracteres interne sera utilis�.
702 $tmp[$i] = strlen($nbenr[$i]);
703 //echo strlen($nbenr[$i])." ".$nbenr[$i]."<br>";
704 $cpt++;
705 }
706 $longueurenregistrement=max($tmp);
707 $nombreenregistrement=$cpt; // + entete
708 // Date de modification
709 $datemodification = date('y').str_pad (DATE('m'), 2, "0", STR_PAD_LEFT).str_pad (DATE('j'), 2, "0", STR_PAD_LEFT);
710 // export
711 $version = substr($f->version,0,8);
712 $entete.= $longueurenregistrement."|".$datemodification."|".
713 $nombreenregistrement."|openADS|".$version."\n";
714 $export=$entete.$export;
715 // $str = htmlentities($str, ENT_QUOTES);
716 // ecriture des fichiers en tmp
717 $fichier = "../tmp/SITADEL".substr($_POST["datedebut"],3,2).
718 "".substr($_POST["datedebut"],8,4)."";
719 $inf = fopen($fichier,"w");
720 fwrite($inf,$export);
721 fclose($inf);
722 $f->displayMessage("ok", _("Fichier")." ".$fichier." "._("sauvegarde")."<br/>".
723 _("Pour telecharger le fichier, cliquer ici :").
724 " <a href=\"".$fichier."\" target=\"_blank\">
725 <img src=\"../app/img/ico_trace.png\" alt=\"".
726 _("Telecharger le fichier CNEN")."\" title=\"".
727 _("Telecharger le fichier Sitadel")."\" /></a>".
728 _("avec le bouton droit et enregistrer la cible du lien sous.")
729 );
730
731 if(DEBUG != "PRODUCTION_MODE"){
732 $affiche="";
733 $affiche= str_replace("\n","<br>",$export);
734 echo $affiche;
735 }
736
737 // Si une erreur a été trouvée
738 if($erreur != "") {
739 $fichier = "../tmp/erreur_SITADEL".substr($_POST["datedebut"],3,2).
740 "".substr($_POST["datedebut"],8,4)."";
741 $inf = fopen($fichier,"w");
742 fwrite($inf,$erreur);
743 fclose($inf);
744 $f->addToMessage("error", _("Une ou plusieurs erreurs sont survenues pendant l'export,".
745 " celles-ci sont listees dans le fichiers ci-dessous").
746 "<br/>"._("Fichier d'erreur")." ".$fichier." "._("sauvegardé").
747 "<br/>"._("Pour telecharger le fichier d'erreur, cliquer ici :")." <a href=\"".$fichier."\" target=\"_blank\">".
748 "<img src=\"../app/img/ico_trace.png\" alt=\""._("Telecharger le fichier d'erreur")."\" title=\""._("Telecharger le fichier d'erreur")."\" />".
749 "</a>"._("avec le bouton droit et enregistrer la cible du lien sous."));
750 $f->displayMessages();
751 }
752
753 // Affichage du bouton retour
754 // Composition du tableau de paramètres
755 $params = array(
756 "href" => "../app/sitadel.php?datedebut=".$datedebut."&amp;datefin=".$datefin."&amp;numero=".$numero,
757 );
758 // Appel de la méthode d'affichage du lien retour par le layout
759 $f->layout->display_form_retour($params);
760
761 } else {// correct = false
762 $f->displayMessage("error", _("Les champs dates sont obligatoires"));
763 affichageFormulaire($_POST["datedebut"], $_POST["datefin"], $numero);
764 }
765 }//validation
766
767 /**
768 * Affichage du formulaire
769 *
770 * */
771 function affichageFormulaire($datedebut="", $datefin="", $numero=""){
772
773 echo "<form method=\"POST\" action=\"sitadel.php\" name=f1>";
774 // champ date debut
775 echo " "._("debut")." ";
776 echo "<input type='text' name='datedebut' id=\"datedebut\" value=\"";
777 echo $datedebut;
778 echo "\" size=\"15\" class=\"champFormulaire datepicker\" onchange='fdate(this)' onkeyup=\"\" onclick=\"\" />";
779 // champ date fin
780 echo " "._("fin")." ";
781 echo "<input type='text' name='datefin' id=\"datefin\" value=\"";
782 echo $datefin;
783 echo "\" size=\"15\" class=\"champFormulaire datepicker\" onchange='fdate(this)' onkeyup=\"\" onclick=\"\" />";
784 // numero d'ordre d'envoi
785 echo " "._("Numero d'ordre d'envoi")." : "."<select name='numero'>";
786 for ($i = 1; $i < 11; $i++) {
787 echo "<option value ='".$i."' ";
788 echo ($numero == $i )? "selected='selected'":"";
789 echo">".$i."</option>";
790 }
791 echo "</select>";
792 echo "<br><br><input type='submit' value='export SITADEL'>";
793 echo "</form>";
794 }
795 ?>

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26