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

Diff of /trunk/app/sitadel.class.php

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 187 by fraynaud, Tue Oct 11 15:01:43 2011 UTC revision 1797 by nhaye, Fri Apr 26 18:08:38 2013 UTC
# Line 1  Line 1 
1  <?php  <?php
2  /**  /**
3   * Ce fichier est destine a gerer les transferts sitadel   * Classe permettant la mise en forme de chaque ligne de l'export SITADEL
4   *   * Les méthode retourne des morceaux de lignes en faisant correspondre les valeurs
5   * @package openmairie_foncier   * du dossier avec les valeurs définie pour l'export SITADEL
6   * @version SVN : $Id   *
7     * @package openfoncier
8     * @version SVN : $Id$
9   */   */
10    
   
11  class sitadel {  class sitadel {
12            
13      var $dossier;      var $dossier; // identifiant du dossier à insérer dans l'export
14        var $row; // Valeurs du dossier
     var $row; // dossier  
15      var $val; // parametre par defaut      var $val; // parametre par defaut
16      var $parametre; //parametre dossier      var $parametre; //parametre dossier
17      var $DEBUG=2;      var $DEBUG=0; // 1 = valeur
18    
19        /**
20         * Constructeur, initialisation de l'attribut dossier
21         *
22         * @param dossier string identifiant du dossier à traiter
23         */
24      function sitadel($dossier) {      function sitadel($dossier) {
25          $this->dossier=$dossier;          $this->dossier=$dossier;
         // recherche de parametre  
26      }// fin constructeur      }// fin constructeur
27    
28        /**
29      function entete($mouvement, $departement, $commune){       * Permet de mettre en forme le début de chaque la ligne
30         *
31         * @param mouvement string DEPOT, DECISION, SUIVI, TRANSFERT, MODIFICATIF, SUPPRESSION
32         * @param departement string non utilisé
33         * @param commune string code commune du dossier
34         * @param pf_departement string code du département du dossier
35         *
36         * @return string entete de la ligne
37         */
38        function entete($mouvement, $departement, $commune,$pf_departement){
39          // sitadel : mouv|typpermis|equivalence|dep|commune|andepnumpc|indmod          // sitadel : mouv|typpermis|equivalence|dep|commune|andepnumpc|indmod
40          $entete=$mouvement."|".$this->row['nature']."||0".$departement."|".$commune."|".$this->row['annee'].          // l'equivalence n'est pas utilisée
41                  "|".substr($this->dossier,4,5)."|".substr($this->dossier,9,2)."|";            $entete=$mouvement."|".$this->row['code']."|Vm|".$pf_departement.$departement."|".$commune."|".substr($this->dossier,8,2).
42                    "|".substr($this->dossier,10,5)."|".$this->row['version']."|";  
43          return $entete;          return $entete;
44      }      }
45    
46        /**
47         * Permet de mettre en forme l'état civil :
48         * personne morale / physique
49         * société, siret, civilité, nom, prénom / civilité, nom, prénom
50         *
51         * @return string demandeur désigné
52         */
53      function etatcivil(){      function etatcivil(){
54          // etat civil demandeur          // etat civil demandeur
55          // codemo|          // codemo|
56          if($this->row['demandeur_categorie']==9          if ($this->row['qualite'] == "particulier") {
            or $this->row['demandeur_categorie']=="")  
57             $codemo=1;// personne physique             $codemo=1;// personne physique
58          else          } else {
59             $codemo=2;// personne morale                 $codemo=2;// personne morale
60            }    
61          $etatcivil=$codemo."|"; // 1 personne physique ; 2 sinon          $etatcivil=$codemo."|"; // 1 personne physique ; 2 sinon
62          // openfoncier civilite (5/8 ok), nom (80/30-> substr), societe (80/50->substr)          // openfoncier civilite (5/8 ok), nom (80/30-> substr), societe (80/50->substr)
63          // civpart|prenompart|nompart|denopm|rspm|siret|catjur|civrep|prenomrep|nomrep|          // civpart|prenompart|nompart|denopm|rspm|siret|catjur|civrep|prenomrep|nomrep|
64          // suivant codemo = 1 (personne physique) ou 2 (personne morale)          // suivant codemo = 1 (personne physique) ou 2 (personne morale)
65          // demandeur_civilite n est pas normalise Madame ou Monsieur          // demandeur_civilite n est pas normalise Madame ou Monsieur
66          if($codemo==1){          if ($codemo == 1) {
67             // *civpart*|*prenompart*|nompart||||||             // *civpart*|*prenompart*|nompart||||||
68             $etatcivil.= $this->p('civpart')."|".$this->p('prenompart')."|";              $etatcivil.= $this->maj(substr($this->row['civilite_pp'],0,8))."|";
69             $etatcivil.= $this->maj(substr($this->row['demandeur_nom'],0,30))."||||||||";              $etatcivil.= $this->maj(substr($this->row['pp_particulier_prenom'],0,30))."|";
70          }else{  
71                $etatcivil.= $this->maj(substr($this->row['pp_particulier_nom'],0,30))."||||||||";
72            } else {
73             //denopm|*rspm*|*siret*|*catjur*|*civrep*|*prenomrep*|nomrep|                     //denopm|*rspm*|*siret*|*catjur*|*civrep*|*prenomrep*|nomrep|        
74             $etatcivil.="|||"; // codemo=1             $etatcivil.="|||"; // codemo=1
75             $etatcivil.=$this->maj(substr($this->row['demandeur_societe']),0,50)."|";             $etatcivil.=$this->maj(substr($this->row['pp_personne_morale_denomination'],0,50))."|";
76             $etatcivil.=$this->maj(substr($this->row['categorie_libelle'],0,30))."|";             $etatcivil.=$this->maj(substr($this->row['pp_personne_morale_raison_sociale'],0,30))."|";
77             $etatcivil.=$this->p('rspm')."|".$this->p('siret')."|".$this->p('catjur')."|".             $etatcivil.=$this->maj(substr($this->row['pp_personne_morale_siret'],0,14))."|";
78                         $this->p('civrep')."|".$this->p('prenomrep'); // *** +1             $etatcivil.=$this->maj(substr($this->row['pp_personne_morale_categorie_juridique'],0,4))."|";
79             $etatcivil.=$this->maj(substr($this->row['demandeur_nom'],0,30))."|";             $etatcivil.=$this->maj(substr($this->row['civilite_pm_libelle'],0,8))."|";
80               $etatcivil.=$this->maj(substr($this->row['pp_personne_morale_prenom'],0,30))."|";
81               $etatcivil.=$this->maj(substr($this->row['pp_personne_morale_nom'],0,30))."|";
82          }          }
83          return $etatcivil;          return $etatcivil;
84      }      }
# Line 62  class sitadel { Line 87  class sitadel {
87          // openfoncier : adresse (80/ 26+38 -> substr sur 2 zones) - cp (5/5 OK) - ville (30/36 -> OK)          // openfoncier : adresse (80/ 26+38 -> substr sur 2 zones) - cp (5/5 OK) - ville (30/36 -> OK)
88          // *numvoiemo*|*typvoiemo*|libvoiemo|lieuditmo(+)|communemo|codposmo|*bpmo*|*cedexmo*|*paysmo*|*divetermo|          // *numvoiemo*|*typvoiemo*|libvoiemo|lieuditmo(+)|communemo|codposmo|*bpmo*|*cedexmo*|*paysmo*|*divetermo|
89          $adresse="";          $adresse="";
90          $adresse = $this->p('numvoiemo')."|".$this->p('typvoiemo')."|".          $adresse.= $this->maj(substr($this->row['pp_numero'],0,5))."|";
91          $adresse.= $this->maj(substr($this->row['demandeur_adresse'],0,26))."|".          $adresse.= $this->maj(substr("",0,5))."|";
92                     $this->maj(substr($this->row['demandeur_adresse'],26,38))."|";          $adresse.= $this->maj(substr($this->row['pp_voie'],0,26))."|";
93          $adresse.= $this->maj($this->row['demandeur_ville'])."|".$this->row['demandeur_cp']."|";          $adresse.= $this->maj(substr($this->row['pp_lieu_dit'],0,38))."|";
94          $adresse.= $this->p('bpmo')."|".$this->p('cedexmo')."|".$this->p('paysmo')."|".$this->p('divtermo')."|";          $adresse.= $this->maj(substr($this->row['pp_localite'],0,32))."|";
95            $adresse.= $this->maj(substr($this->row['pp_code_postal'],0,5))."|";
96            $adresse.= $this->maj(substr($this->row['pp_bp'],0,5))."|";
97            $adresse.= $this->maj(substr($this->row['pp_cedex'],0,5))."|";
98            $adresse.= $this->maj(substr($this->row['pp_pays'],0,3))."|";
99            $adresse.= $this->maj(substr($this->row['pp_division_territoriale'],0,38))."|";
100    
101          return $adresse;          return $adresse;
102      }      }
103            
# Line 78  class sitadel { Line 109  class sitadel {
109          // libvoietiers|lieudittier|communetier|codpostier          // libvoietiers|lieudittier|communetier|codpostier
110          // |*bptier*|*cedextier*|*paystier*|*divtertier*|          // |*bptier*|*cedextier*|*paystier*|*divtertier*|
111          $delegataire="";          $delegataire="";
112          if($this->row['delegataire']=='Oui'){          $delegataire.= $this->maj(substr($this->row['civilite_delegataire_libelle'],0,8))."|";
113             $delegataire.= $this->p('civtier')."|".$this->p('prenomtier');          $delegataire.= $this->maj(substr($this->row['delegataire_particulier_prenom'],0,30))."|";
114             $delegataire.="|".$this->maj(substr($this->row['delegataire_nom'],0,30))."|";          $delegataire.= $this->maj(substr($this->row['delegataire_particulier_nom'],0,30))."|";
115             $delegataire.= "|".$this->p('typevoietier')."|".$this->maj(substr($this->row['delegataire_adresse'],0,26))."|".          $delegataire.= $this->maj(substr($this->row['delegataire_numero'],0,5))."|";
116                     $this->maj(substr($this->row['delegataire_adresse'],26,38))."|";          $delegataire.= $this->maj(substr("",0,5))."|";
117             $delegataire.= $this->maj($this->row['delegataire_ville'])."|".          $delegataire.= $this->maj(substr($this->row['delegataire_voie'],0,26))."|";
118                      $this->row['delegataire_cp']."|";          $delegataire.= $this->maj(substr($this->row['delegataire_lieu_dit'],0,38))."|";
119              $delegataire.= $this->p('bptier')."|".$this->p('cedextier')."|";          $delegataire.= $this->maj(substr($this->row['delegataire_localite'],0,32))."|";
120              $delegataire.= $this->p('paystier')."|".$this->p('divtertier')."|";          $delegataire.= $this->maj(substr($this->row['delegataire_code_postal'],0,5))."|";
121          }else{          $delegataire.= $this->maj(substr($this->row['delegataire_bp'],0,5))."|";
122             $delegataire.= "|||||||||||||"; // *** 13 |          $delegataire.= $this->maj(substr($this->row['delegataire_cedex'],0,5))."|";
123          }          $delegataire.= $this->maj(substr($this->row['delegataire_pays'],0,3))."|";
124            $delegataire.= $this->maj(substr($this->row['delegataire_division_territoriale'],0,38))."|";
125          return $delegataire;          return $delegataire;
126      }      }
127            
# Line 97  class sitadel { Line 129  class sitadel {
129          // sitadel : telmo|melmo|          // sitadel : telmo|melmo|
130          $meltel="";          $meltel="";
131          if($mouvement != "Transfert")          if($mouvement != "Transfert")
132              $meltel.=$this->row['demandeur_telephone']."|";              $meltel.=$this->maj(substr($this->row['pp_telephone_fixe'],0,5))."|";
133          $meltel.= $this->row['demandeur_email']."|";          $meltel.= $this->maj(substr($this->row['pp_courriel'],0,5))."|";
134          // sitadel: suivi          // suivi electronique
135          if($this->row['delegataire']=='Oui'){          // Il n'y a pas de notification par mail gérée dans l'appli
136            /*if($this->row['delegataire']=='Oui'){
137             $meltel.= "1";             $meltel.= "1";
138          }else{          }else{
139             $meltel.= "0";             $meltel.= "0";
140          }          }*/
141          // |          // suivi -> fin enr pour transfert (sans |)
142          if($mouvement != "Transfert")          if($mouvement != "Transfert")
143              $meltel= "|";              $meltel.= "|";
144          return $meltel;          return $meltel;
145      }      }  
       
146            
147      function adresse_terrain(){      function adresse_terrain(){
148          // openfoncier numero (4/5 substr), adresse(80, 26 +38 -> substr), complement (non utilise (80)), cp (5/5 ok), ville (30/32 ok)          // openfoncier numero (4/5 substr), adresse(80, 26 +38 -> substr), complement (non utilise (80)), cp (5/5 ok), ville (30/32 ok)
149          // sitadel : |numvoiete|*typvoiete*|libvoiete|lieudite|communete|codposte|*bpte*|*cedexte*|          // sitadel : |numvoiete|*typvoiete*|libvoiete|lieudite|communete|codposte|*bpte*|*cedexte*|
150          // mettre le | en debut pour info du 2eme groupe (suite 1er groupe)            // mettre le | en debut pour info du 2eme groupe (suite 1er groupe)  
151          $adresse="|";          $adresse="";
152          //          $adresse.= $this->maj(substr($this->row['dossier_terrain_adresse_voie_numero'],0,5))."|";
153          $adresse.= substr($this->row['terrain_numero'],0,4)."|".$this->p('typvoiete')."|";          $adresse.= $this->maj(substr("",0,5))."|";
154          $adresse.= $this->maj(substr($this->row['terrain_adresse'],0,26))."|".          $adresse.= $this->maj(substr($this->row['dossier_complement'],0,26))."|";
155                     $this->maj(substr($this->row['terrain_adresse'],26,38))."|";          $adresse.= $this->maj(substr($this->row['dossier_terrain_adresse_lieu_dit'],0,38))."|";
156          $adresse.= $this->maj($this->row['terrain_ville'])."|";          $adresse.= $this->maj(substr($this->row['dossier_terrain_adresse_localite'],0,32))."|";
157          $adresse.= $this->row['terrain_cp']."|";          $adresse.= $this->maj(substr($this->row['dossier_terrain_adresse_code_postal'],0,5))."|";
158          $adresse.= $this->p('bpte')."|".$this->p('cedexte')."|";          $adresse.= $this->maj(substr($this->row['dossier_terrain_adresse_bp'],0,5))."|";
159          return $adresse;          $adresse.= $this->maj(substr($this->row['dossier_terrain_adresse_cedex'],0,5))."|";
160    
161            return $adresse;
162      }      }
163    
164      function parcelle(){      function parcelle(){
# Line 135  class sitadel { Line 168  class sitadel {
168          // cadastre 3 parcelles + 3 sections          // cadastre 3 parcelles + 3 sections
169          // openfoncier = 1 seule parcelle (6/3+5)          // openfoncier = 1 seule parcelle (6/3+5)
170          // sitadel : scadastre1|ncadastre1|*scadastre2*|*ncadastre2*|*scadastre3*|*ncadastre3*|          // sitadel : scadastre1|ncadastre1|*scadastre2*|*ncadastre2*|*scadastre3*|*ncadastre3*|
171          $parcelle= substr($this->row['parcelle'],0,2)."|";          $parcelle = "";
172          $parcelle.= substr($this->row['parcelle'],2,4)."|";          $numero = "";
173            if ($this->row['dossier_terrain_references_cadastrales'] != "" ) {
174                $tab_parcelles = $this->parseParcelles($this->row['dossier_terrain_references_cadastrales']);
175            } else {
176                $parcelle.= $this->p('scadastre1')."|".$this->p('ncadastre1')."|";
177            }
178    
179          $parcelle.= $this->p('scadastre2')."|".$this->p('ncadastre2')."|";          $parcelle.= $this->p('scadastre2')."|".$this->p('ncadastre2')."|";
180          $parcelle.= $this->p('scadastre3')."|".$this->p('ncadastre3')."|";          $parcelle.= $this->p('scadastre3')."|".$this->p('ncadastre3')."|";
181          return $parcelle;          return $parcelle;
182      }      }
183    
184        /**
185         * Permet de calculer la liste des parcelles à partir de la chaîne passée en paramètre
186         * et la retourner sous forme d'un tableau associatif
187         * @param  string $strParcelles chaîne de la parcelles
188         * @return array (array(quartier, section, parcelle), ...)
189         */
190        function parseParcelles($strParcelles) {
191            // Séparation des lignes
192            $references = explode(";", $strParcelles);
193            $liste_parcelles = array();
194            // On boucle sur chaque ligne pour ajouter la liste des parcelles de chaque ligne
195            foreach ($references as $parcelles) {
196                // On transforme la chaîne de la ligne de parcelles en tableau
197                $ref = str_split($parcelles);
198                // Les 1er caractères sont numériques
199                $num = true;
200                // Tableau des champs de la ligne de références cadastrales
201                $reference_tab = array();
202                $temp = "";
203                foreach ($ref as $carac) {
204                    // Permet de tester si le caractère courant est de même type que le précédent
205                    if(is_numeric($carac) === $num) {
206                        $temp .= $carac;
207                    } else {
208                        // Bascule
209                        $num = !$num;
210                        // On stock le champ
211                        $reference_tab[] = $temp;
212                        // re-init de la valeur temporaire pour le champ suivant
213                        $temp = $carac;
214                    }
215                }
216                // Stockage du dernier champ sur lequel il n'y a pas eu de bascule
217                $reference_tab[] = $temp;
218    
219                // Calcul des parcelles
220                $quartier = $reference_tab[0];
221                $sect = $reference_tab[1];
222    
223                for ($i=2; $i < count($reference_tab); $i+=2) {
224                    $parc["quartier"] = $quartier;
225                    $parc["section"] = $sect;
226                    if(!isset($ancien_ref_parc) OR $reference_tab[$i-1] == "/") {
227                        // 1ere parcelle ou parcelle individuelle
228                        $parc["parcelle"] = $reference_tab[$i];
229                        // Ajout d'une parcelle à la liste
230                        $liste_parcelles[] = $parc;
231                    } elseif ($reference_tab[$i-1] == "A") {
232                        // Interval de parcelles
233                        for ($j=$ancien_ref_parc+1; $j <= $reference_tab[$i]; $j++) {
234                            $parc["parcelle"] = $j;
235                            // Ajout d'une parcelle à la liste
236                            $liste_parcelles[] = $parc;
237                        }
238                    }
239                    // Sauvegarde de la référence courante de parcelle
240                    $ancien_ref_parc = $reference_tab[$i];
241                }
242            }
243            return $liste_parcelles;
244        }
245    
246        function decision_groupe1($avis_sitadel, $avis_sitadel_motif,$structure){
247      function decision_groupe1($avis_sitadel, $avis_sitadel_motif){          $decision=  $structure.'|'; // au nom de la commune
         $decision= '1|'; // au nom de la commune  
248          $decision.= $avis_sitadel."|";          $decision.= $avis_sitadel."|";
249          // date au format francais 8 caracteres          // date au format francais 8 caracteres
250          $decision.= substr($this->row['date_decision'],8,2).''.          $decision.= substr($this->row['date_decision'],8,2).''.
251                      substr($this->row['date_decision'],5,2)."".                      substr($this->row['date_decision'],5,2)."".
252                      substr($this->row['date_decision'],0,4)."|";                                  substr($this->row['date_decision'],0,4)."|";            
253          $decision.= $avis_sitadel_motif;          $decision.= $avis_sitadel_motif."|";
254          return $decision;          return $decision;
255      }      }
256            
# Line 161  class sitadel { Line 260  class sitadel {
260          return $contenu;          return $contenu;
261      }      }
262            
       
       
       
263      function amenagement(){      function amenagement(){
264          // renseignement du groupe 2 ***          // renseignement du groupe 2 ***
265          // lotissement|zac|afu|                  // lotissement|zac|afu|        
266                    $contenu="";
267          if($this->row['amenagement']!='')          if($this->row['amenagement']!='')
268                 $contenu.= "1|";                 $contenu.= "1|";
269          else          else
270                 $dcontenu.= "0|";                 $contenu.= "0|";
271          $contenu.= $this->p('zac')."|".$this->p('afu')."|";          $contenu.= $this->p('zac')."|".$this->p('afu')."|";
272          return $contenu;          return $contenu;
273      }      }
# Line 286  class sitadel { Line 382  class sitadel {
382              $suivi1.=$this->p('finisoc')."|".$this->p('finaaoc')."|".              $suivi1.=$this->p('finisoc')."|".$this->p('finaaoc')."|".
383                      $this->p('finptzoc')."|".$this->p('finafoc')."|".$this->p('indoc')."|";                      $this->p('finptzoc')."|".$this->p('finafoc')."|".$this->p('indoc')."|";
384              $suivi1.="|||||||||||"; // achevement 11|              $suivi1.="|||||||||||"; // achevement 11|
385              return $suivi1;              return $suivi1;      
           
386      }      }
387    
388      function achevement(){      function achevement(){
389          $suivi2="||||||||||"; // occupation 10 |          $suivi2="||||||||||"; // occupation 10 |
390          //datereat|          //datereat|
391          $suivi2.=substr($this->row['date_achevement'],8,2).substr($this->row['date_achevement'],5,2).          $suivi2.=substr($this->row['date_achevement'],8,2).
392                     substr($this->row['date_achevement'],5,2).
393                   substr($this->row['date_achevement'],0,4)."|"; // ok *** au format francais                   substr($this->row['date_achevement'],0,4)."|"; // ok *** au format francais
394          //nblogat|nbmaisat|nbcollat|          //nblogat|nbmaisat|nbcollat|
395          $suivi2.=$this->p('nblogat')."|".$this->p('nbmaisat')."|".$this->p('nbcollat')."|";          $suivi2.=$this->p('nblogat')."|".$this->p('nbmaisat')."|".$this->p('nbcollat')."|";
# Line 321  class sitadel { Line 417  class sitadel {
417              return $this->val[$champ];              return $this->val[$champ];
418      }      }
419            
   
420      function maj($val) {      function maj($val) {
421              $val = strtoupper($val);              $val = strtoupper($val);
422              $val=str_replace(chr(195), "", $val);       // supprime le premier code des accents en UTF-8              $val=str_replace(chr(195), "", $val);       // supprime le premier code des accents en UTF-8
423              $s = array('/[âàäÀ]/', '/[éêèëÉÈ]/', '/[îï]/', '/[ôöÔ]/', '/[ûùü]/', '/[çÇ]/', '/\'|\"|^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\-\s\r/');              $s = array('/[âàäÀ]/', '/[éêèëÉÈ]/', '/[îï]/', '/[ôöÔ]/', '/[ûùü]/', '/[çÇ]/', '/\'|\"|^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\-\s\r/');
424              $r = array('A', 'E', 'I', 'O', 'U', 'C', ' ');              $r = array('A', 'E', 'I', 'O', 'U', 'C', ' ');
425              $val = preg_replace($s , $r, $val);              $val = preg_replace($s , $r, $val);
426              return $val;              // Formatage des valeurs manquantes
427                return $this->testVM($val);
428      }      }
       
       
   
   
   
429    
430        /**
431         * Permet de tester si la valeur est manquante et retourner Vm
432         * sinon retourne le champ
433         *
434         * @param  string $champ champ à tester
435         * @return string        valeur à insérer dans l'export
436         */
437        function testVM($champ) {
438            if ( $champ == "" ) {
439                return "Vm";
440            } else {
441                return $champ;
442            }
443        }
444  }  }
445    
446  ?>  ?>

Legend:
Removed from v.187  
changed lines
  Added in v.1797

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26