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

328 lines
16 KiB
PHP

#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
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 des fiches Html contenant les données des Kbis du jour.
Options :
-d Mode debug (Verbosité au maximum)
";
$iDb=new WDB('jo');
$iInsee=new MInsee();
$nbSiretInvalides=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];
}
echo date ('Y/m/d - H:i:s') . " - Début du traitement de chargement des dirigeants".EOL;
$tabFct=array( md5('Administrateur') => 0100,
md5('Administrateur délégué') => 0101,
md5('Administrateur provisoire') => 0108,
md5('Associé-gérant') => 0209,
md5('Co-gérant') => 0400,
md5('Contrôleur de gestion') => 0603,
md5('Directeur général') => 0709,
md5('Directeur général délégué') => 0704,
md5('Directeur général non administrateur') => 0713,
md5('Directeur général unique') => 0708,
md5('Gérant') => 0900,
md5('Gouverneur') => 1650,
md5('Liquidateur') => 1900,
md5('Président') => 1300,
md5('Président Directeur Général') => 1301,
md5('Président du conseil d\'administration') => 1306,
md5('Président du conseil de surveillance') => 1307,
md5('Président du directoire') => 1308,
md5('Représentant en France d\'une société étrangère') => 1401,
md5('Sous-gouverneur') => 1651,
md5('Vice-président') => 1800,
);
$conn_id = ftp_connect('192.168.3.4');
// Identification avec un nom d'utilisateur et un mot de passe
$login_result = ftp_login($conn_id, 'kbis', 'kbis');
$tabList=ftp_nlist($conn_id, 'html/');
$nbList=count($tabList);
ftp_chdir($conn_id, 'html');
foreach ($tabList as $fichier) {
//die($fichier);
$ficDist=str_replace('html/', '', $fichier);
ftp_get($conn_id,"/tmp/$ficDist", $ficDist, FTP_ASCII);
$strKbis=file_get_contents("/tmp/$ficDist");
$tabKbis=array();
if (preg_match('/<TD style="FONT-WEIGHT\: bold; FONT-SIZE\: 11px; LINE-HEIGHT\: normal; FONT-STYLE\: normal; FONT-VARIANT\: normal" align=left>(.*)<\/TD>/Uis', $strKbis, $matches))
$tabKbis['greffe_nom']=trim(strip_tags($matches[1]));
if (preg_match('/<TD style="FONT-WEIGHT\: normal; FONT-SIZE\: 9px; LINE-HEIGHT\: normal; FONT-STYLE\: normal; FONT-VARIANT\: normal">(.*)<\/TD>/Uis', $strKbis, $matches))
$tabKbis['greffe_adresse']=trim(strip_tags($matches[1]));
if (preg_match('/<CENTER style="FONT-STYLE\: italic; BACKGROUND-COLOR\: #dcdcdc">(.*)<\/CENTER><\/H3>/Uis', $strKbis, $matches))
$tabKbis['extrait_type']=trim(strip_tags($matches[1]));
if (preg_match('/<CENTER>Extrait au (.*)<\/CENTER>/Uis', $strKbis, $matches))
$tabKbis['extrait_date']=trim(strip_tags($matches[1]));
if (preg_match('/<TD align=left colSpan=2><B>IDENTIFICATION <\/B>(.*)<TD colSpan=2><B>RENSEIGNEMENTS RELATIFS A LA PERSONNE MORALE<\/B>/Uis', $strKbis, $matches)) {
$htmlId=$matches[1];
if (preg_match('/<TD style="FONT-STYLE\: italic" vAlign=top align=left>Dénomination sociale \:<\/TD>(.*)<\/TD><\/TR>/Uis', $htmlId, $matches))
$tabKbis['rs']=trim(strip_tags($matches[1]));
if (preg_match('/<TD style="FONT-STYLE\: italic" vAlign=top align=left>Numéro d\'identification \:<\/TD>(.*)<\/TD><\/TR>/Uis', $htmlId, $matches))
$tabKbis['sirenTxt']=trim(strip_tags($matches[1]));
if (preg_match('/<TD style="FONT-STYLE\: italic" vAlign=top align=left>Numéro RCS \:<\/TD>(.*)<\/TD><\/TR>/Uis', $htmlId, $matches))
$tabKbis['rcs']=trim(strip_tags($matches[1]));
if (preg_match('/<TD style="FONT-STYLE\: italic" vAlign=top align=left>Date immatriculation \:<\/TD>(.*)<\/TD><\/TR>/Uis', $htmlId, $matches))
$tabKbis['dateImmat']=trim(strip_tags($matches[1]));
}
if (preg_match('/<TD style="FONT-STYLE: italic" vAlign=top>Forme juridique :<\/TD>(.*)<TD align=left colSpan=2><B>ADMINISTRATION<\/B>/Uis', $strKbis, $matches)) {
$htmlPm=$matches[1];
if (preg_match('/<TD style="FONT-STYLE\: italic" vAlign=top align=left>Dénomination sociale \:<\/TD>(.*)<\/TD><\/TR>/Uis', $htmlPm, $matches))
$tabKbis['fj']=trim(strip_tags($matches[1]));
if (preg_match('/<TD style="FONT-STYLE: italic" vAlign=top>Au capital :<\/TD>(.*)<\/TD><\/TR>/Uis', $htmlPm, $matches))
$tabKbis['capital']=trim(strip_tags($matches[1]));
if (preg_match('/<TD style="FONT-STYLE: italic" vAlign=top align=left>Adresse du siège :<\/TD>(.*)<\/TD><\/TR>/Uis', $htmlPm, $matches))
$tabKbis['adresse']=trim(strip_tags($matches[1]));
if (preg_match('/<TD style="FONT-STYLE: italic" vAlign=top align=left>Durée de la société<\/TD>(.*)<\/TD><\/TR>/Uis', $htmlPm, $matches))
$tabKbis['duree']=trim(strip_tags($matches[1]));
if (preg_match('/<TD style="FONT-STYLE: italic" vAlign=top align=left>Date d\'arrêté des comptes:<\/TD>(.*)<\/TD><\/TR>/Uis', $htmlPm, $matches))
$tabKbis['date_cloture']=trim(strip_tags($matches[1]));
if (preg_match('/<TD style="FONT-STYLE: italic" vAlign=top align=left>Constitution&nbsp;-&nbsp;Dépôt&nbsp;de&nbsp;l\'acte&nbsp;constitutif :<\/TD>(.*)<\/TD><\/TR>/Uis', $htmlPm, $matches))
$tabKbis['date_constitution']=trim(strip_tags($matches[1]));
if (preg_match('/<TD style="FONT-STYLE: italic" vAlign=top align=left>Publication:<\/TD>(.*)<\/TD><\/TR>/Uis', $htmlPm, $matches))
$tabKbis['date_annonce_constitution']=trim(strip_tags($matches[1]));
}
if (preg_match('/<TD align=left colSpan=2><B>ADMINISTRATION<\/B>(.*)<TD align=left colSpan=2><B>RENSEIGNEMENTS RELATIFS A L\'ACTIVITE COMMERCIALE<\/B>/Uis', $strKbis, $matches)) {
$tabKbis['dirigeants']=array();
$htmlAd=$matches[1];
$tabTmp=explode('<HR SIZE=1>', $htmlAd);
foreach ($tabTmp as $i=>$htmlDir) {
if ($i==0) continue;
$tabDir=array();
if (preg_match('/<TD style="FONT-STYLE: italic" vAlign=top>(.*)<\/TD>/Uis', $htmlDir, $matches))
$tabDir['fonction']=trim(strip_tags($matches[1]));
if (preg_match('/<TBODY>(?:.*)<TR>(?:.*)<TD>(.*)<\/TD><\/TR>/Uis', $htmlDir, $matches))
$tabDir['nom']=trim(strip_tags($matches[1]));
if (preg_match('/<TD>\((.*)\)<\/TD><\/TR>/Uis', $htmlDir, $matches))
$tabDir['siren']=trim(strip_tags($matches[1]));
if (preg_match('/<TD>(.*)<\/TD><\/TR>(?:.*)<TR>(?:.*)<TD>représentée par <\/TD><\/TR>(?:.*)<TD>(.*)<\/TD><\/TR>/Uis', $htmlDir, $matches)) {
//$tabDir['rs']=trim(strip_tags($matches[1]));
$tabDir['rep']=trim(strip_tags($matches[2]));
}
if (preg_match('/<TD>né\(e\)(.*)<TR>/Uis', $htmlDir, $matches))
$tabDir['naiss']=trim(strip_tags($matches[1]));
if (preg_match('/<TD>de nationalité (.*)<\/TD><\/TR></Uis', $htmlDir, $matches))
$tabDir['natio']=trim(strip_tags($matches[1]));
if (preg_match('/<TD>demeurant (.*)<\/TD><\/TR></Uis', $htmlDir, $matches))
$tabDir['adresse']=trim(strip_tags($matches[1]));
//$tabDir['html']=$htmlDir;
$tabKbis['dirigeants'][]=$tabDir;
}
}
if (preg_match('/<TD align=left colSpan=2><B>RENSEIGNEMENTS RELATIFS A L\'ACTIVITE COMMERCIALE<\/B>(.*)<TD align=left colSpan=2><B>OBSERVATIONS<\/B>/Uis', $strKbis, $matches)) {
$htmlAc=$matches[1];
if (preg_match('/<TD style="FONT-STYLE: italic" vAlign=top align=left>Origine du fonds ou de l\'activité :<\/TD>(.*)<\/TD><\/TR>/Uis', $htmlAc, $matches))
$tabKbis['origine_fonds']=trim(strip_tags($matches[1]));
if (preg_match('/<TD style="FONT-STYLE: italic" vAlign=top align=left>Activité :<\/TD>(.*)<\/TD><\/TR>/Uis', $htmlAc, $matches))
$tabKbis['activite']=trim(strip_tags($matches[1]));
if (preg_match('/<TD style="FONT-STYLE: italic" vAlign=top align=left>Enseigne :<\/TD>(.*)<\/TD><\/TR>/Uis', $htmlAc, $matches))
$tabKbis['sigle']=trim(strip_tags($matches[1]));
if (preg_match('/<TD style="FONT-STYLE: italic" vAlign=top align=left>Adresse de l\'établissement principal : <\/TD>(.*)<\/TD><\/TR>/Uis', $htmlAc, $matches))
$tabKbis['adresse_etabp']=trim(strip_tags($matches[1]));
if (preg_match('/<TD style="FONT-STYLE: italic" vAlign=top align=left>Précédent Exploitant : <\/TD>(.*)<\/TD><\/TR>/Uis', $htmlAc, $matches))
$tabKbis['prec_exp_nom']=trim(strip_tags($matches[1]));
if (preg_match('/<TD><I>n° identification <\/I>(.*)<\/TD><\/TR>(.*)<\/TD><\/TR>/Uis', $htmlAc, $matches)) {
$tabKbis['prec_exp_siren']=trim(strip_tags($matches[1]));
$tabKbis['prec_exp_info']=trim(strip_tags($matches[2]));
}
if (preg_match('/<TD vAlign=top align=left><I>Oppositions pour la correspondance :<\/I><\/TD>(.*)<\/TD><\/TR>/Uis', $htmlAc, $matches))
$tabKbis['prec_exp_oppo']=trim(strip_tags($matches[1]));
if (preg_match('/<TD style="FONT-STYLE: italic" vAlign=top align=left>Commencement d\'activité le :<\/TD>(.*)<\/TD><\/TR>/Uis', $htmlAc, $matches))
$tabKbis['prec_exp_debut_activite']=trim(strip_tags($matches[1]));
if (preg_match('/<TD style="FONT-STYLE: italic" vAlign=top>Mode d\'exploitation :<\/TD>(.*)<\/TD><\/TR>/Uis', $htmlAc, $matches))
$tabKbis['prec_exp_exploitation']=trim(strip_tags($matches[1]));
}
if (preg_match('/<TD align=left colSpan=2><B>OBSERVATIONS<\/B>(.*)<CENTER style="FONT-STYLE: italic; BACKGROUND-COLOR: #dcdcdc">Fin de l\'extrait <\/CENTER><\/H3>/Uis', $strKbis, $matches)) {
$htmlOb=$matches[1];
$tabKbis['observations']=array();
$tabTmp=explode('<TH></TH></TR>', $htmlOb);
$nbObs=-1+count($tabTmp);
foreach ($tabTmp as $i=>$htmlObs) {
if ($i==$nbObs) break;
$tabObs=array();
if (preg_match('/<TD style="FONT-STYLE: italic" vAlign=top align=left>(.*)&nbsp;(.*)<\/TD>(?:.*)<TD>(.*)<\/TD>/Uis', $htmlObs, $matches)) {
$tabObs['date']=trim(strip_tags($matches[1]));
$tabObs['numero']=trim(strip_tags($matches[2]));
$tabObs['commentaire']=trim(strip_tags($matches[3]));
}
$tabKbis['observations'][]=$tabObs;
}
}
print_r($tabKbis);
//die($strKbis);
}
// Fermeture de la connexion et du pointeur de fichier
ftp_close($conn_id);
/*
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->update('rncs_dirigeants', 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'] = ''.@$tabFct[md5($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']=9;
$tabDir['source']='csf';
if (!$iDb->insert('rncs_dirigeants', $tabDir))
if (!$iDb->update('rncs_dirigeants', $tabDir, "siren='". $tabDir['siren'] ."' AND ".
"raisonSociale='". $tabDir['raisonSociale'] ."' AND ".
"civilite='". $tabDir['civilite'] ."' AND ".
"nom='". $tabDir['nom'] ."' AND ".
"prenom='". $tabDir['prenom'] ."' AND ".
"naissance_nom='". $tabDir['naissance_nom'] ."' AND ".
"naissance_date='". $tabDir['naissance_date'] ."' AND ".
"naissance_lieu='". $tabDir['naissance_lieu'] ."' AND ".
"fonction_lib='". $tabDir['fonction_lib'] ."'"))
echo date ('Y/m/d - H:i:s') . " - ERREUR n°". mysql_errno()." à l'insertion du dirigeant ".
$tabDir['nom']." ".$tabDir['prenom'].", siren=".$tabDir['siren'] .'!'.EOL;
}
fclose ($fp);
echo date ('Y/m/d - H:i:s')." - Le fichier n°$i, $nomFichier vient d'être chargé.".EOL;
}
echo date ('Y/m/d - H:i:s') . " - $nbLignes lignes traitées dont $nbSiretInvalides siret invalides !".EOL;
$ret=$iDb->update('rncs_dirigeants', 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('rncs_dirigeants', array('actif'=>1), "actif=9 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();
?>