batch/1.1/old/getDirigeants.php
2013-06-19 08:24:49 +00:00

250 lines
9.7 KiB
PHP

#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
$table='rncs_dirigeants';
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(FWK_PATH.'common/ftp.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
//define('DIRIGEANTS_LOCAL_DIR', '/home/data/insee/even/');
$strInfoScript='Usage : '.basename($argv[0]). " <option>
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();
?>