#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini Chargement du/des fichier dirigeant en provenance de CSF. Options : -d Mode debug (Verbosité au maximum) "; $iDb=new WDB('jo'); $iInsee=new MInsee(); $nbSiretValides=$nbSiretInvalides=$nbInsert=$nbUpdate=0; $modeDebug=false; $ftpStep=true; $updateInsee=true; $tabFichier=array(); $argv=$_SERVER['argv']; for ($i=1,$j=0; isset($argv[$i]); $i++) { if (substr($argv[$i],0,1)=='-') { switch (substr($argv[$i],1,1)) { case 'd': $modeDebug=true; break; case 'j': $ftpStep=false; break; case 'u': $updateInsee=false; break; case '-': case '?': die($strInfoScript); break; default: die('Option '. $argv[$i] . " inconnue !\n"); } } else $tabFichier[]=$argv[$i]; } if (count($tabFichier)==0) die('Aucun fichier CSF à traiter'.EOL); echo date ('Y/m/d - H:i:s') . " - Début du traitement de chargement des dirigeants".EOL; global $tabFctCSF; $tabFctCSF=array( 'f0100'=>'Administrateur', 'f0101'=>'Administrateur délégué', 'f0108'=>'Administrateur provisoire', 'f0209'=>'Associé-gérant', 'f0400'=>'Co-gérant', 'f0603'=>'Contrôleur de gestion', 'f0709'=>'Directeur général', 'f0704'=>'Directeur général délégué', 'f0713'=>'Directeur général non administrateur', 'f0708'=>'Directeur général unique', 'f0900'=>'Gérant', 'f1650'=>'Gouverneur', 'f1900'=>'Liquidateur', 'f1300'=>'Président', 'f1301'=>'Président Directeur Général', 'f1306'=>'Président du conseil d\'administration', 'f1307'=>'Président du conseil de surveillance', 'f1308'=>'Président du directoire', 'f1401'=>'Représentant en France d\'une société étrangère', 'f1651'=>'Sous-gouverneur', 'f1800'=>'Vice-président', ); /* 200 Gérant 300 Co-gérant 1200 Associé-gérant 600 Administrateur 100 Président 4100 Liquidateur 110 Président du conseil d'administration 400 Directeur général 120 Président Directeur Général 900 Président du conseil de surveillance 500 Vice-président 430 Directeur général délégué 4400 Représentant en France d'une société étrangère 1300 Contrôleur de gestion 700 Président du directoire 410 Directeur général non administrateur 4300 Administrateur provisoire 420 Directeur général unique 600 Administrateur délégué 150 Sous-gouverneur Gouverneur */ function getFctCode($str) { global $tabFctCSF; $key=array_search($str, $tabFctCSF); if ($key) { return str_replace('f','',$key).''; } else return 0; } for ($i=0; isset($tabFichier[$i]); $i++) { $nomFichier =$tabFichier[$i]; $fp=fopen($nomFichier, 'r'); if (!$fp) { echo date ('Y/m/d - H:i:s')." - Erreur : Impossible d'ouvrir le fichier n°$i à traiter '".$nomFichier."'".EOL; echo date ('Y/m/d - H:i:s') . " - Fin du traitement".EOL; die(); } $nbLignes=0; // Nombre de ligne du fichier while (!feof($fp)) { $nbLignes++; $a = trim(fgets($fp, 1024)); } echo date ('Y/m/d - H:i:s')." - Début du traitement du fichier $nomFichier ($nbLignes lignes à traiter) !".EOL; //$finFichier=false; $nbLignes=0; rewind($fp); /** Traitement de la 1ère ligne **/ $a = trim(fgets($fp, 1024)); $tab=explode("\t", $a); $erreur=''; if ($tab[0]<>'RCS') $erreur='Ligne 1, Champ 1 : libellé RCS attentu'; if ($tab[1]<>'RAISON_SOCIAL') $erreur='Ligne 1, Champ 2 : libellé RAISON_SOCIAL attentu'; if ($tab[2]<>'CIVILITE') $erreur='Ligne 1, Champ 3 : libellé CIVILITE attentu'; if ($tab[3]<>'NOM') $erreur='Ligne 1, Champ 4 : libellé NOM attentu'; if ($tab[4]<>'PRENOM') $erreur='Ligne 1, Champ 5 : libellé PRENOM attentu'; if ($tab[5]<>'NOM_NAISSANCE') $erreur='Ligne 1, Champ 6 : libellé NOM_NAISSANCE attentu'; if ($tab[6]<>'DATE_NAISSANCE') $erreur='Ligne 1, Champ 7 : libellé DATE_NAISSANCE attentu'; if ($tab[7]<>'LIEU_NAISSANCE') $erreur='Ligne 1, Champ 8 : libellé LIEU_NAISSANCE attentu'; if ($tab[8]<>'FONCTION') $erreur='Ligne 1, Champ 9 : libellé FONCTION attentu'; if ($erreur<>'') { echo date ('Y/m/d - H:i:s') . " - Erreur : $erreur !".EOL; echo date ('Y/m/d - H:i:s') . " - Fin du traitement".EOL; die(); } $ret=$iDb->query("UPDATE $table SET actif=actif%10 WHERE source='csf'"); echo date ('Y/m/d - H:i:s') . " - Les dirigeants CSF sont OK pour la mise à jour ($ret).".EOL; $dateInsert=date('YmdHis'); // $ret=$iDb->update($table, array('actif'=>0), '1'); // echo date ('Y/m/d - H:i:s')." - Tous les dirigeants ont été passés inactifs ($ret) !".EOL; while (!feof($fp)) { $nbLignes++; $a = trim(fgets($fp, 1024)); //unset($tabErreur); $nbErr=0; $tab=explode("\t", $a); $tabDir=array(); $tabDir['siren'] = $tab[0]; if (!$iInsee->valideSiren($tabDir['siren'])) { echo date ('Y/m/d - H:i:s')." - Ligne $ligne : Champs SIREN invalide ". $tabDir['siren'] .' !'.EOL; $nbSiretInvalides++; } else $nbSiretValides++; $tabDir['raisonSociale'] = $tab[1]; if (strlen($tabDir['raisonSociale'])>60) echo date ('Y/m/d - H:i:s')." - Ligne $ligne : Champs RAISON_SOCIALE de longueur ". strlen($tabDir['raisonSociale']) .' !'.EOL; $tabDir['civilite'] = $tab[2]; if ($tabDir['civilite']<>'M' && $tabDir['civilite']<>'MME' && $tabDir['civilite']<>'MLLE' && $tabDir['civilite']<>'') echo date ('Y/m/d - H:i:s')." - Ligne $ligne : Champs CIVILITE inconnu '". $tabDir['civilite'] ."' !".EOL; $tabDir['nom'] = $tab[3]; if (strlen($tabDir['nom'])>60) echo date ('Y/m/d - H:i:s')." - Ligne $ligne : Champs NOM de longueur ". strlen($tabDir['nom']) .' !'.EOL; $tabDir['prenom'] = $tab[4]; if (strlen($tabDir['prenom'])>30) echo date ('Y/m/d - H:i:s')." - Ligne $ligne : Champs PRENOM de longueur ". strlen($tabDir['prenom']) .' !'.EOL; $tabDir['naissance_nom'] = $tab[5]; if (strlen($tabDir['naissance_nom'])>60) echo date ('Y/m/d - H:i:s')." - Ligne $ligne : Champs NOM_NAISSANCE de longueur ". strlen($tabDir['naissance_nom']) .' !'.EOL; $dateIn = $tab[6]; $dateOut=@WDate::dateT('m/d/Y','Y-m-d',$dateIn); if ($dateIn<>'') $tabDir['naissance_date']=$dateOut; else $tabDir['naissance_date']='0000-00-00'; //die(date ('Y/m/d - H:i:s')." - Ligne $ligne : Champs DATE_NAISSANCE in $dateIn donne en out ". $tabDir['naissance_date'] .' !'.EOL); $tabDir['naissance_lieu'] = $tab[7]; if (strlen($tabDir['naissance_lieu'])>35) echo date ('Y/m/d - H:i:s')." - Ligne $ligne : Champs LIEU_NAISSANCE de longueur ". strlen($tabDir['naissance_lieu']) .' !'.EOL; $tabDir['fonction_lib'] = trim($tab[8]); $tabDir['fonction_code'] = ''.getFctCode($tabDir['fonction_lib']); if ($tabDir['fonction_code']=='' && $tabDir['fonction_lib']=='') echo date ('Y/m/d - H:i:s')." - Ligne $ligne : Champs FONCTION vide !".EOL; elseif ($tabDir['fonction_code']=='' && $tabDir['fonction_lib']<>'') echo date ('Y/m/d - H:i:s')." - Ligne $ligne : Champs FONCTION inconnu '". $tabDir['fonction_lib'] ."' !".EOL; $tabDir['actif']=11; $tabDir['dateInsert']=$dateInsert; $tabDir['source']='csf'; $tabTmp=$iDb->select($table, 'count(*)',"siren='". $tabDir['siren'] ."' AND ". "civilite='". $tabDir['civilite'] ."' AND ". "nom='". addslashes($tabDir['nom']) ."' AND ". "prenom='". addslashes($tabDir['prenom']) ."' AND ". "naissance_nom='". addslashes($tabDir['naissance_nom'])."' AND ". "naissance_date='". $tabDir['naissance_date'] ."' AND ". "fonction_lib='". addslashes($tabDir['fonction_lib']) ."'"); if ($tabTmp[0][0]==0) { $iDb->insert($table, $tabDir); $nbInsert++; if ($modeDebug) echo date ('Y/m/d - H:i:s') . " - Insertion du dirigeant ". $tabDir['nom']." ".$tabDir['prenom'].", siren=".$tabDir['siren'] .'!'.EOL; } else { $iDb->update($table, $tabDir, "siren='". $tabDir['siren'] ."' AND ". "civilite='". $tabDir['civilite'] ."' AND ". "nom='". addslashes($tabDir['nom']) ."' AND ". "prenom='". addslashes($tabDir['prenom']) ."' AND ". "naissance_nom='". addslashes($tabDir['naissance_nom'])."' AND ". "naissance_date='". $tabDir['naissance_date'] ."' AND ". "fonction_lib='". addslashes($tabDir['fonction_lib']) ."'"); $nbUpdate++; if ($modeDebug) echo date ('Y/m/d - H:i:s') . " - MAJ ". $tabDir['nom']." ".$tabDir['prenom'].", siren=".$tabDir['siren'] .'!'.EOL; } //echo '?'; //$line = trim(fgets(STDIN)); } fclose ($fp); echo date ('Y/m/d - H:i:s')." - Le fichier n°$i, $nomFichier vient d'être chargé : $nbInsert ajouts et $nbUpdate MAJ !".EOL; } echo date ('Y/m/d - H:i:s') . " - $nbLignes lignes traitées dont $nbSiretInvalides siren/siret invalides !".EOL; $ret=$iDb->update($table, array('actif'=>0), "actif=1 AND source='csf'"); echo date ('Y/m/d - H:i:s') . " - $ret dirigants CSF on été passés à inactif (car non transmis depuis le dernier chargement) !".EOL; $ret=$iDb->update($table, array('actif'=>1), "actif=11 AND source='csf'"); echo date ('Y/m/d - H:i:s') . " - Passage à actif de tous les dirigeants CSF chargés ($ret).".EOL; echo date ('Y/m/d - H:i:s') . " - Fin du traitement de chargement des dirigeants".EOL; die(); ?>