250 lines
9.8 KiB
PHP
250 lines
9.8 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();
|
|
|
|
?>
|