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

Contents of /trunk/app/sitadel.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3588 - (show annotations)
Tue Jul 21 14:58:40 2015 UTC (9 years, 6 months ago) by nmeucci
File size: 47355 byte(s)
Ajout de couleurs de rubriques dans l'affichage.

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

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26