#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini Mise à jour des liens actionnaires et participations. Options : -v Mode debug (Verbosité au maximum et fonctionnement sans timer ni contraintes temporelles) -a Traiter les actionnaires -p Traiter les participations -d Purge les tables -n Mise à jour des zones Nom/Prénoms par rapport à la raison sociale -t Mise à jour TVA -i Mise à jour de l'identité -e Mise à jour suite aux évènements -g Mise à jour des Associés Gérants RNCS -m Traitement des multiples doublons dans liensRef ";/* -i:XXXXX Reprendre au code commune Insee XXXXX ";*/ $argv=$_SERVER['argv']; $tabSiren=array(); for ($i=1,$j=0; isset($argv[$i]); $i++) { if (substr($argv[$i],0,1)=='-') { switch (substr($argv[$i],1,1)) { case 'a': $doAct=true; break; case 'p': $doPar=true; break; case 'd': $doPurge=true; break; case 'n': $doNomPrenom=true; break; case 'v': $modeDebug=true; break; case 't': $doMajTVA=true; break; case 'i': $doIdentite=true; break; case 'e': $doEven=true; break; case 'g': $doAssocGer=true; break; case 'm': $doDoublons=true; break; case '-': case '?': die($strInfoScript); break; default: die('Option '. $argv[$i] . " inconnue !\n"); } } else $tabSiren[]=$argv[$i]; } /** URL = http://www.justice.gouv.fr/recherche-juridictions/popup.php?insee=01053&type=all ** referer = http://www.justice.gouv.fr/recherche-juridictions/consult.php ** ** URL = http://www.insee.fr/fr/nom_def_met/nomenclatures/cog/cog.telechargement.annee.asp?annee=2007 **/ $iDb=new WDB('jo'); $iInsee=new MInsee(); echo date ('Y/m/d - H:i:s')." - Début de la mise à jour des liens...".EOL; if ($doNomPrenom) { $iBodacc=new MBodacc(); echo date ('Y/m/d - H:i:s')." - Recherche des mise à jour des Zones Noms/Prénoms...".EOL; $ret=$iDb->select('liensRef', 'id, PpPm, RS, civilite, nom, prenom, adresse_num, adresse_btq, adresse_codvoie, adresse_libvoie, adresse_comp, adresse_cp, adresse_ville, adresse_pays', " PpPm='PP' AND RS LIKE '% %' AND nom='' and prenom='' AND /*id>999*/ id>=902511 AND RS NOT LIKE '%FAMILLE%'", false, MYSQL_ASSOC);//OR idLoc1Num LIKE 'FR%' $nb=count($ret); echo date ('Y/m/d - H:i:s')." - Début de la mise à jour des $nb zones...".EOL; foreach ($ret as $i=>$lien) { $id=$lien['id']; $rs=$lien['RS']; $civ=$lien['civilite']; $tmp=$iBodacc->getNomPrenomGenre($rs); $nom=$tmp['Nom']; $prenom=$tmp['Prenoms']; $sexe=$tmp['Genre']; if ($civ=='' && $sexe='M') $civ2='M'; elseif ($civ=='' && $sexe='F') $civ2='MME'; else $civ2=$civ; echo "$i/$nb - $id, $rs : $civ $nom [$civ2] $prenom".EOL; $tabUpdate=array( 'nom' => $nom, 'prenom'=> $prenom, 'civilite'=> $civ2); $iDb->update('liensRef', $tabUpdate, "id=$id", false); if (mysql_errno()) echo mysql_error().EOL; } die(); } if ($doDoublons) { $iBodacc=new MBodacc(); echo date ('Y/m/d - H:i:s')." - Recherche des Doublons...".EOL; $ret=$iDb->select('liensRef', 'COUNT(*) AS nb, siren', "siren>0 GROUP BY siren having nb>1 ORDER BY nb DESC", false, MYSQL_ASSOC); $nb=count($ret); echo date ('Y/m/d - H:i:s')." - Début de la mise à jour des $nb doublons...".EOL; foreach ($ret as $i=>$lien) { $siren=$lien['siren']; echo "$i/$nb : $siren = ".$lien['nb']." doublons..."; $ret2=$iDb->select( 'liensRef', 'id, rs, nom, prenom', "siren=$siren", false, MYSQL_ASSOC); foreach ($ret2 as $j=>$tmp) { if ($j==0) { // La 1ère fiche est la bonne ! $idRef=$tmp['id']; continue; } // on recherche tous les cas ou cette 2nde fiche est act $idPre=$tmp['id']; $ret3=$iDb->update( 'liens2', array('idAct'=>$idRef), "idAct=$idPre", false); // on recherche tous les cas ou cette 2nde fiche est par $ret3=$iDb->update( 'liens2', array('idPar'=>$idRef), "idPar=$idPre", false); // On supprime physiquement la fiche $ret3=$iDb->delete( 'liensRef', "id=$idPre", false); echo "$idPre remplacé par $idRef, "; } echo EOL; } die(); } if ($doEven) { /* echo date ('Y/m/d - H:i:s')." - Recherche des modifications RNCS...".EOL; $ret=$iDb->select( 'rncs_modifs', 'siren, champs, valeur, flux', "flux>='2013-01-15' AND `table`='rncs_entrep' AND (champs='capitalMontant' OR champs='capitalType' OR champs='cj' OR champs='actif' OR champs='raisonSociale') GROUP BY siren, champs", false, MYSQL_ASSOC); $nb=count($ret); echo date ('Y/m/d - H:i:s')." - Début du traitement des $nb modifications...".EOL; foreach ($ret as $i=>$lien) { $siren=$lien['siren']; $champs=$lien['champs']; $valeur=$lien['valeur']; //echo "$i/$nb : $siren = ".$lien['nb']." doublons..."; $ret2=$iDb->select( 'liensRef', 'id, siren, actif, RS, cj, capital, dateCapital', "siren=$siren", false, MYSQL_ASSOC); $idRef=@$ret2[0]['id']; $lien2=@$ret2[0]; if ($idRef>0) { $ret3=$iDb->select( 'liens2', 'count(*) AS nb', "idAct=$idRef AND actif=1", false); $nbAct=$ret3[0]['nb']; $ret3=$iDb->select( 'liens2', 'count(*) AS nb', "idPar=$idRef AND actif=1", false); $nbPar=$ret3[0]['nb']; if ($nbAct>0 || $nbPar>0) { echo "$i/$nb : $siren ($champs='$valeur') - $nbAct fois actionnaire et $nbPar fois participation".EOL; $tabId=@$iInsee->getIdentiteEntreprise($siren, 0, 0, false, false); print_r($lien2); print_r($tabId); die(); } } } die(); */ $ret=$iDb->select( 'liensRef', 'id, siren, actif, RS', "id>=1000", false, MYSQL_ASSOC); $nb=count($ret); echo date ('Y/m/d - H:i:s')." - Début du traitement des $nb modifications...".EOL; foreach ($ret as $i=>$lien) { $idRef=$lien['id']; $siren=$lien['siren']; $RS=$lien['RS']; if ($idRef>0) { $ret3=$iDb->select( 'liens2', 'count(*) AS nb', "idAct=$idRef AND actif=1", false); $nbAct=$ret3[0]['nb']; $ret3=$iDb->select( 'liens2', 'count(*) AS nb', "idPar=$idRef AND actif=1", false); $nbPar=$ret3[0]['nb']; if ($nbAct==0 && $nbPar==0) { echo "$i/$nb : $idRef, $siren ($RS) - $nbAct fois actionnaire et $nbPar fois participation".EOL; $iDb->delete('liensRef', "id=$idRef", false); //die(); } } } die(); } if ($doAssocGer) { echo date ('Y/m/d - H:i:s')." - Recherche des associés gérants au RNCS...".EOL; $ret=$iDb->select( 'rncs_dirigeants', 'id, siren, adr_dep, typeDir, raisonSociale, dirSiren, dirRS, civilite, nom, prenom, naissance_nom, naissance_date, naissance_lieu, nat, adresse, fonction_code, fonction_lib, actif, dateFin, flux, dateInsert, dateUpdate', "fonction_code=0209 AND flux>='2013-01-01' AND (typeDir='PP' OR (typeDir='PM' AND dirSiren>1000)) GROUP BY siren ASC, actif DESC", false, MYSQL_ASSOC); $nb=count($ret); echo date ('Y/m/d - H:i:s')." - Début du traitement des $nb associés gérants...".EOL; foreach ($ret as $i=>$lien) { // Participation $sirenPar=$lien['siren']; $rsPar=$lien['raisonSociale']; $typeDir=$lien['typeDir']; // echo "$i/$nb : $siren = ".$lien['nb']." doublons..."; $ret2=$iDb->select( 'liensRef', 'id, siren, actif, RS, cj, capital, dateCapital', "siren=$sirenPar", false, MYSQL_ASSOC); $idRef=@$ret2[0]['id']; $lien2=@$ret2[0]; if (!@$iInsee->valideSiren($sirenPar)) { echo "$i/$nb : $siren, $rs ($typeDir) - Siren invalide !!!".EOL;; die(); continue; } else $sirenParV=1; if ($idRef>0) { $tabAct=$iDb->select( 'liensRef', 'id, siren, actif, RS, cj, capital, dateCapital', "id=(SELECT idPar FROM liens2 WHERE idAct=$idRef AND actif=1)", false, MYSQL_ASSOC); $nbAct=count($tabAct); $tabPar=$iDb->select( 'liensRef', 'id, siren, actif, RS, cj, capital, dateCapital', "id=(SELECT idAct FROM liens2 WHERE idPar=$idRef AND actif=1)", false, MYSQL_ASSOC); $nbPar=count($tabPar); if ($nbAct>0 || $nbPar>0) { echo "$i/$nb : $sirenParPar, $rsPar ($typeDir) - $nbAct fois actionnaire et $nbPar fois participation".EOL; $tabId=@$iInsee->getIdentiteEntreprise($sirenPar, 0, 0, false, false); print_r($lien2); //print_r($tabId); print_r($tabAct); print_r($tabPar); print_r($lien); die(); } else echo "$i/$nb : $sirenPar, $rsPar ($typeDir) - Ni actionnaire, Ni participation !".EOL; } else { //echo "$i/$nb : $sirenPar, $rsPar ($typeDir) - ABSENTE de liensRef !".EOL; //print_r($lien); // Actionnaire $sirenAct=$lien['dirSiren']; $civ=$naf=''; if ($sirenAct>1000 && @$iInsee->valideSiren($sirenAct)) { $sirenActV=1; $tabId=@$iInsee->getIdentiteEntreprise($sirenAct, 0, 0, false, false); $naf=$tabId['NafEnt']; if ($tabId['FJ']<2000) { $ppPm='PP'; $tabInsertComp=array( 'nom'=>$tabId['dir1Nom'], 'prenom'=>$tabId['dir1Prenom'], 'nom_usage'=>$tabId['dir1NomUsage']); } else { $ppPm='PM'; $tabInsertComp=array( 'capital'=>$tabId['Capital'], 'deviseCapital'=>$tabId['CapitalDev']); if (isset($tabId['CapitalNbActions']) && $tabId['CapitalNbActions']) $tabInsertComp['nbActions']=$tabId['CapitalNbActions']; } if ($tabId['Civilite']==1) $civ='M'; elseif ($tabId['Civilite']==2) $civ='MME'; $nom=$tabId['Nom']; $cj=$tabId['FJ']; $actif=$tabId['Actif']; $ville=$tabId['Ville']; $pays=getCodePays3($tabId['PaysIso2']); } else { // id, siren, adr_dep, , raisonSociale, dirSiren, , , nom, prenom, naissance_nom, naissance_date, naissance_lieu // nat, adresse, fonction_code, fonction_lib, actif, dateFin, flux, dateInsert, dateUpdate $nom=trim($lien['dirRS']); $nomTemp=" $nom "; $ppPm=$lien['typeDir']; $civ=$lien['civilite']; $sirenAct=$sirenActV=0; $cj=1900; $tabInsertComp=array(); $actif=1; $cp=$dep=$codPays3=''; if (preg_match('/^(.*)\((.*)\)/U', $lien['naissance_lieu'], $matches)) { $lieuNaiss=trim($matches[1]); $depPaysNaiss=trim($matches[2]); if ($depPaysNaiss>1000 && $depPaysNaiss<98000) { $cp=$depPaysNaiss; if ($cp<97000) { $dep=substr(''.$cp,0,2); $codPays3='FRA'; } elseif ($cp<98000) $dep=substr(''.$cp,0,3); } elseif ($depPaysNaiss>0 && $depPaysNaiss<980) { $dep=$depPaysNaiss; $codPays3='FRA'; } else { $codPays3=getCodePays3fromLib(preg_replace('/\((.*)\)/','',$depPaysNaiss)); if ($codPays3=='') { $dep=getCodeDep($depPaysNaiss); if ($dep>0 && $dep<977) $codPays3='FRA'; } } echo ( $lien['naissance_lieu']." : Ville = '$lieuNaiss'\tDept='$dep'\tPays='$codPays3'".EOL); continue; } else { $lieuNaiss=trim($lien['naissance_lieu'].EOL); } //$pays=$lien['Pays']; //if ($pays=='') $pays='FRA'; $ville=''; } continue; if ($civ=='') $civ=$lien['civilite']; $tabInsertComp['nom']=strtoupper($lien['nom']); $tabInsertComp['prenom']=$lien['prenom']; $tabInsertComp['nom_usage']=strtoupper($lien['naissance_nom']); $tabInsertComp['naissance_date']=$lien['naissance_date']; $tabInsertComp['naissance_lieu']=$lien['naissance_lieu']; $tabInsertComp['adresse_comp']=$lien['adresse']; if ($typeDir=='PP') $rsAct=$civ.' '.strtoupper($lien['nom']).' '.$lien['prenom']; //id`, `siren`, `sirenValide, source, actif, PpPm, RS, sigle //naissance_dept_pays, nat`, `adresse_num`, `adresse_btq`, `adresse_codvoie`, `adresse_libvoie`, ``, `adresse_cp`, `adresse_ville`, //`adresse_pays`, `tel`, `fax`, `web`, `email`, `dateSaisie`, `cj`, `ape`, `categorie`, `capital`, `deviseCapital`, `dateCapital`, `nbActions`, //`dateNbActions`, `idLoc1Type`, `idLoc1Num`, `idLoc2Type`, `idLoc2Num`, `idLoc3Type`, `idLoc3Num`, `bilMillesime`, `bilDev`, `bilFL`, `bilHN`, `bilFPr`, `bilEE`, `grpTop`, `grpNom`, `dateInsert`, `idInsert`, `dateUpdate`, `idUpdate`, `dateSuppr`, `idSuppr /* [id] => 14049526 [siren] => 324311463 [adr_dep] => 75 [typeDir] => PM [raisonSociale] => ROTHSCHILD & COMPAGNIE GESTION [dirSiren] => 000000000 [dirRS] => RCG GESTION [] => [] => [] => [] => [nat] => [] => [fonction_code] => 0209 [fonction_lib] => Associé-gérant [actif] => 1 [dateFin] => 0000-00-00 [flux] => 2013-01-01 [dateInsert] => 2013-01-01 07:20:09 [dateUpdate] => 0000-00-00 00:00:00 */ //if ($ppPm=='PP') print_r($tabId); if ($sirenAct<1000) $sirenAct=0; $tabInsertRef2=array( 'siren'=>$sirenAct, 'sirenValide'=>$sirenActV, 'source'=>$lien['source'], 'actif'=>$actif, 'PpPm'=>$ppPm, 'RS'=>$rsAct, 'cj'=>$cj, 'ape'=>$naf, 'categorie'=>getCategorie($nom, $cj, $civ, $naf), 'civilite'=>$civ, 'adresse_ville'=>$ville, 'adresse_pays'=>$pays, 'idLoc1Num'=>$lien['idNational'], 'dateInsert'=>$lien['dateInsert'], 'dateUpdate'=>$lien['dateUpdate']); $tabInsertTmp=array_merge($tabInsertRef2,$tabInsertComp); print_r($tabInsertTmp); die(); $iDb->insert('liensRef', $tabInsertTmp, false); if ($sirenAct*1>1000) $where="siren=$sirenAct"; else $where="actif=$actif AND RS='".addslashes($nom)."' AND civilite='$civ' AND adresse_ville='".addslashes($ville)."' AND adresse_pays='$pays' AND cj=$cj AND ape='$naf'"; /* civilite, nom, prenom, naissance_nom, naissance_date, nat, adresse_ville*/ $ret2=$iDb->select('liensRef', 'id', $where, false, MYSQL_ASSOC); $idAct=$ret2[0]['id']; if (!isset($ret2[0]['id'])) die($where); $nomAct=$nom; //die("Ajout de l'actionaire n°$idAct".EOL); // Participation /* [id] => 14049526 [siren] => 324311463 [adr_dep] => 75 [typeDir] => PM [raisonSociale] => ROTHSCHILD & COMPAGNIE GESTION [dirSiren] => 000000000 [dirRS] => RCG GESTION [civilite] => [nom] => [prenom] => [naissance_nom] => [naissance_date] => 0000-00-00 [naissance_lieu] => [nat] => [adresse] => [fonction_code] => 0209 [fonction_lib] => Associé-gérant [actif] => 1 [dateFin] => 0000-00-00 [flux] => 2013-01-01 [dateInsert] => 2013-01-01 07:20:09 [dateUpdate] => 0000-00-00 00:00:00 */ //$sirenPar=$lien['Siren1']; //if (!@$iInsee->valideSiren($sirenPar)) continue; //if (@trim($tabId['Nom'])=='') continue; $civ=$naf=''; if ($sirenPar>1000 && @$iInsee->valideSiren($sirenPar)) { $sirenParV=1; $tabId=@$iInsee->getIdentiteEntreprise($sirenPar, 0, 0, false, false); $naf=$tabId['NafEnt']; if ($tabId['FJ']<2000) { $ppPm='PP'; $tabInsertComp=array( 'nom'=>$tabId['dir1Nom'], 'prenom'=>$tabId['dir1Prenom'], 'nom_usage'=>$tabId['dir1NomUsage']); } else { $ppPm='PM'; $tabInsertComp=array('capital'=>$tabId['Capital'], 'deviseCapital'=>$tabId['CapitalDev']); if (isset($tabId['CapitalNbActions']) && $tabId['CapitalNbActions']) $tabInsertComp['nbActions']=$tabId['CapitalNbActions']; } if ($tabId['Civilite']==1) $civ='M'; elseif ($tabId['Civilite']==2) $civ='MME'; $nom=$tabId['Nom']; $cj=$tabId['FJ']; $actif=$tabId['Actif']; $ville=$tabId['Ville']; } else { $sirenPar=$sirenParV=0; $ppPm='P'.$lien['PpPm']; $nom=trim($lien['RaisonSociale']); if ($ppPm=='PP') die("$sirenAct / $sirenPar : Attention, personne physique participation !!!".EOL); $cj=0; $tabInsertComp=array(); $ville=''; $actif=1; } $pays=getCodePays3($tabId['PaysIso2']); if ($sirenPar<1000) $sirenPar=0; $tabInsertRef1=array( 'siren'=>$sirenPar, 'sirenValide'=>$sirenParV, 'source'=>$lien['source'], 'actif'=>$actif, 'PpPm'=>$ppPm, 'RS'=>$nom, 'cj'=>$cj, 'ape'=>$naf, 'categorie'=>getCategorie($nom, $cj, $civ, $naf), 'civilite'=>$civ, 'adresse_ville'=>$ville, 'adresse_pays'=>$pays, 'idLoc1Num'=>'', 'dateInsert'=>$lien['dateInsert'], 'dateUpdate'=>$lien['dateUpdate']); $iDb->insert('liensRef', array_merge($tabInsertRef1,$tabInsertComp), false); if ($sirenPar*1>1000) $where="siren=$sirenPar"; else $where="actif=$actif AND RS='".addslashes($nom)."' AND civilite='$civ' AND adresse_ville='".addslashes($ville)."' AND adresse_pays='$pays' AND cj=$cj AND ape='$naf'"; /* civilite, nom, prenom, naissance_nom, naissance_date, nat, adresse_ville*/ $ret2=$iDb->select('liensRef', 'id', $where, false, MYSQL_ASSOC); $idPar=$ret2[0]['id']; if (!isset($ret2[0]['id'])) die($where); $nomPar=$nom; // Lien $iDb->insert('liens2', array( 'idAct'=>$idAct, 'idPar'=>$idPar, 'actif'=>$lien['actif'], 'source'=>$lien['source'], 'PDetention'=>$lien['Pmin'], 'MajMin'=>$lien['MajMin'], 'dateEffetLien'=>$lien['dateLien'], 'docRef'=>'', 'dateDocRef'=>'', 'dateInsert'=>$lien['dateInsert'], 'dateUpdate'=>$lien['dateUpdate']), false); echo "$i/$nb - $idAct, $sirenAct ($nomAct) détient ".$lien['Pmin']." % de $idPar, $sirenPar ($nomPar) au ".$lien['dateLien'].' [id='.$lien['id'].']'.EOL; //die(); } } die(); } if ($doIdentite) { $iBodacc=new MBodacc(); echo date ('Y/m/d - H:i:s')." - Recherche des mise à jour Identitaires...".EOL; if(count($tabSiren)>0) { $strSiren=' AND siren IN('; $strSiren.=implode(',',$tabSiren); $strSiren.=') '; } else $strSiren=" AND (RS='' OR (adresse_libvoie='' AND adresse_cp='')) "; $ret=$iDb->select( 'liensRef', 'id, actif, siren, PpPm, RS, sigle, civilite, nom, prenom, nom_usage, naissance_date, naissance_lieu, adresse_num, adresse_btq, adresse_codvoie, adresse_libvoie, adresse_comp, adresse_cp, adresse_ville, adresse_pays, tel, fax, web, email, cj, ape, categorie, capital, deviseCapital', // id, actif, siren, PpPm, RS, civilite, nom, prenom, adresse_num, adresse_btq, adresse_codvoie, adresse_libvoie, adresse_comp, adresse_cp, adresse_ville, adresse_pays, tel, fax, web, email, dateSaisie, cj, ape, categorie, capital, deviseCapital, dateCapital, nbActions, dateNbActions, bilMillesime, bilDev, bilFL, bilHN, bilFPr, bilEE, dateInsert, idInsert, dateUpdate, idUpdate', "siren>1000 $strSiren /*AND PpPm='PM' /*LIMIT 0,200000*/ ORDER BY dateInsert DESC, dateUpdate DESC", false, MYSQL_ASSOC);//OR idLoc1Num LIKE 'FR%' // "siren>0 AND sirenValide=1 AND idSuppr=0 AND adresse_libvoie='' AND PpPm='PM' /*LIMIT 0,200000*/ ORDER BY id DESC", false, MYSQL_ASSOC);//OR idLoc1Num LIKE 'FR%' // "siren>0 AND sirenValide=1 AND idSuppr=0 AND siren>303459218 AND PpPm='PP' LIMIT 0,200000", false, MYSQL_ASSOC);//OR idLoc1Num LIKE 'FR%' $nb=count($ret); /* echo "SELECT id, actif, siren, PpPm, RS, sigle, civilite, nom, prenom, nom_usage, naissance_date, naissance_lieu, adresse_num, adresse_btq, adresse_codvoie, adresse_libvoie, adresse_comp, adresse_cp, adresse_ville, adresse_pays, tel, fax, web, email, cj, ape, categorie, capital, deviseCapital FROM liensRef WHERE siren>1000 $strSiren AND sirenValide=1 ORDER BY siren ASC".EOL; */ echo date ('Y/m/d - H:i:s')." - Début de la mise à jour des $nb zones...".EOL; foreach ($ret as $i=>$lien) { $id=$lien['id']; $siren=$lien['siren']; $rs=$lien['RS']; if (!@$iInsee->valideSiren($siren)) { $iDb->update('liensRef', array('sirenValide'=>0), "id=$id", false); if ($modeDebug) echo "$i/$nb : $siren siren invalide pour $rs (id=$id)".EOL; continue; } // Fiche LienRef invalide !!! /*if ($rs=='') { if ($modeDebug) echo "$i/$nb : $siren - Pas de Raison Sociale pour l'id $id".EOL; continue; }*/ $tabId=@$iInsee->getIdentiteEntreprise($siren, 0, 0, false, false); if ($tabId['Nom']=='') { if ($modeDebug) echo "$i/$nb : $siren - Fiche d'identité inexistante pour l'id $id".EOL; continue; // Le siren est valide mais n'existe pas ! } //print_r($tabId);die(); $naf=$tabId['NafEnt']; $sigle=$tabId['Sigle']; $civ=$rs=$nom=$prenom=$nomUsage=$lieuNaiss=''; $dateNaiss='0000-00-00'; if ($tabId['FJ']<2000) { $ppPm='PP'; if ($tabId['Civilite']==1) $civ='M'; elseif ($tabId['Civilite']==2) $civ='MME'; $nom=trim($tabId['dir1Nom']); $prenom=trim($tabId['dir1Prenom']); $nomUsage=trim($tabId['dir1NomUsage']); $dateNaiss=$tabId['dir1DateNaiss']; $lieuNaiss=$tabId['dir1LieuNaiss']; $rs=trim($civ.' '.strtoupper($nom).' '.ucwords(strtolower($prenom))); if (strlen($rs)<4) $rs=$tabId['Nom']; } else { $ppPm='PM'; if (isset($tabId['nomLong']) && strlen($tabId['nomLong'])>strlen($tabId['Nom'])) $rs=$tabId['nomLong']; else $rs=$tabId['Nom']; } //echo "$id - $siren : NOM='$rs'".EOL; //if ($tabId['FJ']==5499) die(print_r($tabId,1)); $cj=$tabId['FJ']; $actif=$tabId['Actif']; if ($actif==0 && @$tabId['EntActiveRCS']==1) $actif=1; $tabUpdate=array( 'id'=>$id, 'siren'=>$siren, 'actif'=>$actif, 'PpPm'=>$ppPm, 'RS'=>$rs, 'sigle'=>$sigle, 'civilite'=>$civ, 'nom'=>$nom, 'prenom'=>$prenom, 'nom_usage'=>$nomUsage, 'naissance_date'=>$dateNaiss, 'naissance_lieu'=>$lieuNaiss, 'adresse_num'=>$tabId['AdresseNum'], 'adresse_btq'=>$tabId['AdresseBtq'], 'adresse_codvoie'=>$tabId['AdresseVoie'], 'adresse_libvoie'=>$tabId['AdresseRue'], 'adresse_comp'=>$tabId['Adresse2'], 'adresse_cp'=>$tabId['CP'], 'adresse_ville'=>$tabId['Ville'], 'adresse_pays'=>getCodePays3($tabId['PaysIso2']), 'tel'=>$tabId['Tel'], 'fax'=>$tabId['Fax'], 'web'=>$tabId['Web'], 'email'=>$tabId['Mail'], 'cj'=>$tabId['FJ'], 'ape'=>$tabId['NafEnt'], 'categorie'=>getCategorie($rs, $cj, $civ, $naf), 'capital'=>$tabId['Capital']*1, 'deviseCapital'=>$tabId['CapitalDev'], /*'dateCapital'=>$tabId['Mail'], 'nbActions'=>$tabId['Mail'], 'dateNbActions'=>$tabId['Mail'],*/ ); //$iDb->update('liensRef', $tabUpdate, "id=$id", false); $tabUpdateDiff = array_diff_assoc($tabUpdate, $lien); /*echo "$i/$nb : $siren - Table liensRef :".EOL; print_r($lien); //echo "$i/$nb : $siren - Fiche d'identité :".EOL; //print_r($tabId); echo "$i/$nb : $siren - MISE A JOUR :".EOL; print_r($tabUpdateDiff); */ //die(); if (count($tabUpdateDiff)>0) { if (isset($tabUpdateDiff['capital']) && round($tabUpdate['capital'])==$lien['capital'] && count($tabUpdateDiff)==1) { echo "$i/$nb : $siren - Pas de mise à jour car capitaux identiques : ".$lien['capital'].EOL; continue; } $iDb->update('liensRef', $tabUpdateDiff, "id=$id", false); echo mysql_error().EOL; //print_r($lien); /*echo round($tabUpdate['capital']).EOL; echo @$tabUpdateDiff['capital'].EOL; */ if (isset($tabUpdateDiff['capital'])) echo "$i/$nb : $siren - Changement de capital de '".$lien['capital'].' '.$lien['deviseCapital']."' a '".$tabUpdate['capital'].' '.$tabUpdate['deviseCapital']."'".EOL; if (isset($tabUpdateDiff['actif'])) echo "$i/$nb : $siren - Changement de statut de '".$lien['actif']."' a '".$tabUpdate['actif']."'".EOL; if (isset($tabUpdateDiff['RS'])) echo "$i/$nb : $siren - Changement de NOM de '".$lien['RS']."' a '".$tabUpdate['RS']."'".EOL; //if (isset($tabUpdateDiff['adresse_cp']))echo "$i/$nb : $siren - Changement de CP de '".$lien['adresse_cp']."' a '".$tabUpdate['adresse_cp']."'".EOL; if (isset($tabUpdateDiff['cj'])) echo "$i/$nb : $siren - Changement de FJur de '".$lien['cj']."' a '".$tabUpdate['cj']."'".EOL; if (isset($tabUpdateDiff['ape'])) echo "$i/$nb : $siren - Changement d'activité de '".$lien['ape']."' a '".$tabUpdate['ape']."'".EOL; } elseif ($modeDebug) echo "$i/$nb : $siren - Pas de mise à jour".EOL; // die("$id\t$siren".EOL); /* 'sirenValide'=>$sirenParV, 'source'=>$lien['source'], 'actif'=>$actif, 'PpPm'=>$ppPm, 'RS'=>$nom, 'cj'=>$cj, 'ape'=>$naf, 'categorie' 'civilite'=>$civ, 'adresse_ville'=>$ville, 'adresse_pays'=>$pays, 'idLoc1Num'=>'', 'dateInsert'=>$lien['dateInsert'], 'dateUpdate'=>$lien['dateUpdate']); $iDb->insert('liensRef', array_merge($tabInsertRef1,$tabInsertComp), false); [dateSaisie] => 0000-00-00 00:00:00 [cj] => 5710 [ape] => 4669B [categorie] => NA [capital] => 64086 [deviseCapital] => EUR [dateCapital] => [nbActions] => 0 [dateNbActions] => [bilMillesime] => [bilDev] => [bilFL] => [bilHN] => [bilFPr] => [bilEE] => [dateInsert] => 0000-00-00 00:00:00 [idInsert] => [dateUpdate] => 2010-01-15 00:20:30 [idUpdate] => 0 ) $civ=$lien['civilite']; echo "$i/$nb - $id, $rs : $civ $nom [$civ2] $prenom".EOL; /* $tabUpdate=array( 'nom' => $nom, 'prenom'=> $prenom, 'civilite'=> $civ2); $iDb->update('liensRef', $tabUpdate, "id=$id", false); if (mysql_errno()) echo mysql_error().EOL;*/ //print_r($lien); /*die();/* $naf=$tabId['NafEnt']; if ($tabId['FJ']<2000) { $ppPm='PP'; $tabInsertComp=array( 'nom'=>$tabId['dir1Nom'], 'prenom'=>$tabId['dir1Prenom'], 'nom_usage'=>$tabId['dir1NomUsage']); } else { $ppPm='PM'; $tabInsertComp=array( 'capital'=>$tabId['Capital'], 'deviseCapital'=>$tabId['CapitalDev']); if (isset($tabId['CapitalNbActions']) && $tabId['CapitalNbActions']) $tabInsertComp['nbActions']=$tabId['CapitalNbActions']; } if ($tabId['Civilite']==1) $civ='M'; elseif ($tabId['Civilite']==2) $civ='MME'; $nom=$tabId['Nom']; $cj=$tabId['FJ']; $actif=$tabId['Actif']; $ville=$tabId['Ville']; /* [Adresse] => 0016 RUE DU DOCTEUR MESLIER [Adresse2] => [AdresseNum] => 0016 [AdresseBtq] => [AdresseVoie] => RUE [AdresseRue] => DU DOCTEUR MESLIER [Tel] => 06.75.22.60.55 [Fax] => 01 40 21 80 82 [Web] => [Mail] => $pays=getCodePays3($tabId['PaysIso2']); */ //die(); } die(); } if ($doMajTVA) { $tabZones=array('tvaValide'=>'(.*)', 'tvaInvalide'=>'(.*)', 'tvaNumero'=>'Num(?:.*)ro de TVA(?:.*)(.*)', 'etat'=>'(?:.*)tat Membre(?:.*)(.*)', 'raisonSociale'=>'Nom(?:.*)(.*)', 'adresse'=>'Adresse(?:.*)(.*)', ); echo date ('Y/m/d - H:i:s')." - Recherche des mise à jour d'infos TVA...".EOL; $ret=$iDb->select('liensRef', /*BE CZ DK FI*/ 'id, PpPm, RS, adresse_num, adresse_btq, adresse_codvoie, adresse_libvoie, adresse_comp, adresse_cp, adresse_ville, adresse_pays, tel, fax, web, email, idLoc1Type, idLoc1Num', " idLoc1Num NOT LIKE '%*%' AND ( idLoc1Num LIKE 'AT%' OR idLoc1Num LIKE 'SK%' OR idLoc1Num LIKE 'BE%' OR idLoc1Num LIKE 'BG%' OR idLoc1Num LIKE 'CY%' OR idLoc1Num LIKE 'CZ%' OR idLoc1Num LIKE 'DE%' OR idLoc1Num LIKE 'DK%' OR idLoc1Num LIKE 'EE%' OR idLoc1Num LIKE 'EL%' OR idLoc1Num LIKE 'ES%' OR idLoc1Num LIKE 'FI%' OR idLoc1Num LIKE 'GB%' OR idLoc1Num LIKE 'HU%' OR idLoc1Num LIKE 'IE%' OR idLoc1Num LIKE 'IT%' OR idLoc1Num LIKE 'LT%' OR idLoc1Num LIKE 'LU%' OR idLoc1Num LIKE 'LV%' OR idLoc1Num LIKE 'MT%' OR idLoc1Num LIKE 'NL%' OR idLoc1Num LIKE 'PL%' OR idLoc1Num LIKE 'PT%' OR idLoc1Num LIKE 'RO%' OR idLoc1Num LIKE 'SE%' OR idLoc1Num LIKE 'SI%') ORDER BY idLoc1Num ASC", false, MYSQL_ASSOC);//OR idLoc1Num LIKE 'FR%' $nb=count($ret); echo date ('Y/m/d - H:i:s')." - Début de la mise à jour des $nb identifiants TVA...".EOL; foreach ($ret as $i=>$lien) { $id=$lien['id']; $pays=substr($lien['idLoc1Num'],0,2); $vat=substr($lien['idLoc1Num'],2); $url="http://ec.europa.eu/taxation_customs/vies/viesquer.do?locale=fr&memberStateCode=$pays&number=$vat&action=check"; $page=getUrl($url, '', '', '', false); $referer=$url; $body=$page['body']; $tabHtml=html2array($body, $tabZones); echo $lien['RS'].' ('.$lien['adresse_pays'].") : TVA = $pays $vat "; if (@substr($tabHtml['tvaValide'],0,3)=='Oui') { $valide=1; echo '(valide)'; switch ($lien['adresse_pays']) { case 'FRA': $type=2; break; case 'DEU': $type=5; break; case 'AUT': $type=9; break; case 'BEL': $type=10; break; case 'ESP': $type=13; break; case 'FIN': $type=14; break; case 'GRC': $type=16; break; case 'IRL': $type=17; break; case 'ITA': $type=19; break; case 'LUX': $type=22; break; case 'NLD': $type=24; break; case 'PRT': $type=26; break; case 'GBR': $type=27; break; case 'SWE': $type=29; break; case 'POL': $type=31; break; case 'DNK': $type=32; break; case 'BGR': $type=49; break; case 'EST': $type=50; break; case 'HUN': $type=51; break; case 'LVA': $type=52; break; case 'LTU': $type=53; break; case 'CZE': $type=54; break; case 'SVK': $type=55; break; case 'SVN': $type=56; break; default: $type='NULL'; break; } $rsVies=strtoupper($tabHtml['raisonSociale']); $adrVies=$tabHtml['adresse']; $tabUpdate=array( 'RS' => $rsVies, 'adresse_comp' => $adrVies, 'idLoc1Type' => $type, ); //, adresse_num, adresse_btq, adresse_codvoie, adresse_libvoie, adresse_comp, adresse_cp, adresse_ville echo " - $rsVies [$adrVies]"; //die(); $iDb->update('liensRef', $tabUpdate, "id=$id", false); } else { $valide=0; echo '(INVALIDE)'; } echo EOL; randsleep(3,7);//,21); } die(); } if ($doPurge) { die(); while (1) { echo date('Y/m/d - H:i:s') ." - Confirmez la demande de purge des nouvelles tables LIENS ? (O/N) ... "; $saisie = trim(strtoupper(fgets(STDIN))); if ($saisie=='O' || $saisie=='o') break; } $iDb->query('TRUNCATE TABLE liens2;'); $iDb->query('TRUNCATE TABLE liensRef;'); $tabInsert=array( array('id'=>1, 'siren'=>0, 'source'=>9999, 'actif'=>1, 'PpPm'=>'PM', 'RS'=>'ETAT FRANCAIS', 'categorie'=>'Etat/Autorité publique', 'dateInsert'=>'20070401120000'), array('id'=>2, 'siren'=>0, 'source'=>9999, 'actif'=>1, 'PpPm'=>'PP', 'RS'=>'FAMILLE', 'categorie'=>'Personne(s) ou famille(s)', 'dateInsert'=>'20070401120000'), array('id'=>3, 'siren'=>0, 'source'=>9999, 'actif'=>1, 'PpPm'=>'PP', 'RS'=>'PERSONNES PHYSIQUES', 'categorie'=>'Personne(s) ou famille(s)', 'dateInsert'=>'20070401120000'), array('id'=>4, 'siren'=>0, 'source'=>9999, 'actif'=>1, 'PpPm'=>'PP', 'RS'=>'CADRES DU GROUPE', 'categorie'=>'Employés/Directeurs', 'dateInsert'=>'20070401120000'), array('id'=>5, 'siren'=>0, 'source'=>9999, 'actif'=>1, 'PpPm'=>'PP', 'RS'=>'PUBLIC', 'categorie'=>'Public', 'dateInsert'=>'20070401120000'), array('id'=>6, 'siren'=>0, 'source'=>9999, 'actif'=>1, 'PpPm'=>'PP', 'RS'=>'ADHERENTS', 'categorie'=>'NA', 'dateInsert'=>'20070401120000'), array('id'=>7, 'siren'=>0, 'source'=>9999, 'actif'=>1, 'PpPm'=>'PP', 'RS'=>'MANAGEMENT', 'categorie'=>'Employés/Directeurs', 'dateInsert'=>'20070401120000'), array('id'=>8, 'siren'=>0, 'source'=>9999, 'actif'=>1, 'PpPm'=>'PP', 'RS'=>'SALARIES', 'categorie'=>'Employés/Directeurs', 'dateInsert'=>'20070401120000'), ); foreach($tabInsert as $tabInsertRef) $iDb->insert('liensRef', $tabInsertRef, false); $iDb->query('ALTER TABLE liensRef AUTO_INCREMENT=1000;'); } if ($doAct) { $limNb=100000; for($limI=0;$limI<700000;$limI+=$limNb) { echo date ('Y/m/d - H:i:s')." - Recherche des liens actionnaires [limite=$limI]...".EOL; $ret=$iDb->select('liens', 'id, Siren1, actif, source, ActionPart, Pmin, MajMin, PpPm, idNational, Siren2, RaisonSociale, Pays, dateLien, dateInsert, dateUpdate', "ActionPart=1 /*AND Siren2=552100554 /*AND idNational<>''*/ AND id>=1206687 ORDER BY id ASC LIMIT $limI,$limNb", false, MYSQL_ASSOC); $nb=count($ret); echo date ('Y/m/d - H:i:s')." - Début de la mise à jour des $nb liens actionnaires...".EOL; foreach ($ret as $i=>$lien) { //print_r($lien); // Participation $sirenPar=$lien['Siren1']; if (!@$iInsee->valideSiren($sirenPar)) continue; else $sirenParV=1; // Actionnaire $sirenAct=$lien['Siren2']; $civ=$naf=''; if ($sirenAct>1000 && @$iInsee->valideSiren($sirenAct)) { $sirenActV=1; $tabId=@$iInsee->getIdentiteEntreprise($sirenAct, 0, 0, false, false); $naf=$tabId['NafEnt']; if ($tabId['FJ']<2000) { $ppPm='PP'; $tabInsertComp=array( 'nom'=>$tabId['dir1Nom'], 'prenom'=>$tabId['dir1Prenom'], 'nom_usage'=>$tabId['dir1NomUsage']); } else { $ppPm='PM'; $tabInsertComp=array( 'capital'=>$tabId['Capital'], 'deviseCapital'=>$tabId['CapitalDev']); if (isset($tabId['CapitalNbActions']) && $tabId['CapitalNbActions']) $tabInsertComp['nbActions']=$tabId['CapitalNbActions']; } if ($tabId['Civilite']==1) $civ='M'; elseif ($tabId['Civilite']==2) $civ='MME'; $nom=$tabId['Nom']; $cj=$tabId['FJ']; $actif=$tabId['Actif']; $ville=$tabId['Ville']; $pays=getCodePays3($tabId['PaysIso2']); } else { $nom=trim($lien['RaisonSociale']); $nomTemp=" $nom "; $ppPm='P'.$lien['PpPm']; if (preg_match('/^( MONSIEUR | MADAME | MADEMOISELLE | M | M\. | MME | MLLE | MLE )/i', $nomTemp, $matches) && strlen($nom)>11 && count(explode(' ',$nom))>2) { if ($ppPm<>'PP' && $ppPm<>'PM') $ppPm='PP'; switch(trim($matches[1])) { case 'MONSIEUR': case 'M': case 'M.': $civ='M'; break; case 'MADAME': case 'MME': $civ='MME'; break; case 'MADEMOISELLE': case 'MLLE': case 'MLE': $civ='MLE'; break; default: $civ=''; break; } $nom=trim(preg_replace('/^( MONSIEUR | MADAME | MADEMOISELLE | M | M\. | MME | MLLE | MLE )/i', '', $nomTemp)); } $sirenAct=$sirenActV=0; $cj=0; $tabInsertComp=array(); $actif=1; $pays=$lien['Pays']; if ($pays=='') $pays='FRA'; $ville=''; } //if ($ppPm=='PP') print_r($tabId); if ($sirenAct<1000) $sirenAct=0; $tabInsertRef2=array( 'siren'=>$sirenAct, 'sirenValide'=>$sirenActV, 'source'=>$lien['source'], 'actif'=>$actif, 'PpPm'=>$ppPm, 'RS'=>$nom, 'cj'=>$cj, 'ape'=>$naf, 'categorie'=>getCategorie($nom, $cj, $civ, $naf), 'civilite'=>$civ, 'adresse_ville'=>$ville, 'adresse_pays'=>$pays, 'idLoc1Num'=>$lien['idNational'], 'dateInsert'=>$lien['dateInsert'], 'dateUpdate'=>$lien['dateUpdate']); $iDb->insert('liensRef', array_merge($tabInsertRef2,$tabInsertComp), false); if ($sirenAct*1>1000) $where="siren=$sirenAct"; else $where="actif=$actif AND RS='".addslashes($nom)."' AND civilite='$civ' AND adresse_ville='".addslashes($ville)."' AND adresse_pays='$pays' AND cj=$cj AND ape='$naf'"; /* civilite, nom, prenom, naissance_nom, naissance_date, nat, adresse_ville*/ $ret2=$iDb->select('liensRef', 'id', $where, false, MYSQL_ASSOC); $idAct=$ret2[0]['id']; if (!isset($ret2[0]['id'])) die($where); $nomAct=$nom; // Participation //$sirenPar=$lien['Siren1']; //if (!@$iInsee->valideSiren($sirenPar)) continue; //if (@trim($tabId['Nom'])=='') continue; $civ=$naf=''; if ($sirenPar>1000 && @$iInsee->valideSiren($sirenPar)) { $sirenParV=1; $tabId=@$iInsee->getIdentiteEntreprise($sirenPar, 0, 0, false, false); $naf=$tabId['NafEnt']; if ($tabId['FJ']<2000) { $ppPm='PP'; $tabInsertComp=array( 'nom'=>$tabId['dir1Nom'], 'prenom'=>$tabId['dir1Prenom'], 'nom_usage'=>$tabId['dir1NomUsage']); } else { $ppPm='PM'; $tabInsertComp=array('capital'=>$tabId['Capital'], 'deviseCapital'=>$tabId['CapitalDev']); if (isset($tabId['CapitalNbActions']) && $tabId['CapitalNbActions']) $tabInsertComp['nbActions']=$tabId['CapitalNbActions']; } if ($tabId['Civilite']==1) $civ='M'; elseif ($tabId['Civilite']==2) $civ='MME'; $nom=$tabId['Nom']; $cj=$tabId['FJ']; $actif=$tabId['Actif']; $ville=$tabId['Ville']; } else { $sirenPar=$sirenParV=0; $ppPm='P'.$lien['PpPm']; $nom=trim($lien['RaisonSociale']); if ($ppPm=='PP') die("$sirenAct / $sirenPar : Attention, personne physique participation !!!".EOL); $cj=0; $tabInsertComp=array(); $ville=''; $actif=1; } $pays=getCodePays3($tabId['PaysIso2']); if ($sirenPar<1000) $sirenPar=0; $tabInsertRef1=array('siren'=>$sirenPar, 'sirenValide'=>$sirenParV, 'source'=>$lien['source'], 'actif'=>$actif, 'PpPm'=>$ppPm, 'RS'=>$nom, 'cj'=>$cj, 'ape'=>$naf, 'categorie'=>getCategorie($nom, $cj, $civ, $naf), 'civilite'=>$civ, 'adresse_ville'=>$ville, 'adresse_pays'=>$pays, 'idLoc1Num'=>'', 'dateInsert'=>$lien['dateInsert'], 'dateUpdate'=>$lien['dateUpdate']); $iDb->insert('liensRef', array_merge($tabInsertRef1,$tabInsertComp), false); if ($sirenPar*1>1000) $where="siren=$sirenPar"; else $where="actif=$actif AND RS='".addslashes($nom)."' AND civilite='$civ' AND adresse_ville='".addslashes($ville)."' AND adresse_pays='$pays' AND cj=$cj AND ape='$naf'"; /* civilite, nom, prenom, naissance_nom, naissance_date, nat, adresse_ville*/ $ret2=$iDb->select('liensRef', 'id', $where, false, MYSQL_ASSOC); $idPar=$ret2[0]['id']; if (!isset($ret2[0]['id'])) die($where); $nomPar=$nom; // Lien $iDb->insert('liens2', array( 'idAct'=>$idAct, 'idPar'=>$idPar, 'actif'=>$lien['actif'], 'source'=>$lien['source'], 'PDetention'=>$lien['Pmin'], 'MajMin'=>$lien['MajMin'], 'dateEffetLien'=>$lien['dateLien'], 'docRef'=>'', 'dateDocRef'=>'', 'dateInsert'=>$lien['dateInsert'], 'dateUpdate'=>$lien['dateUpdate']), false); echo "$i/$nb - $idAct, $sirenAct ($nomAct) détient ".$lien['Pmin']." % de $idPar, $sirenPar ($nomPar) au ".$lien['dateLien'].' [id='.$lien['id'].']'.EOL; //die(); } } } if ($doPar) { echo date ('Y/m/d - H:i:s')." - Début de la mise à jour des liens participations...".EOL; $ret=$iDb->select('liens', 'id, Siren1, actif, source, ActionPart, Pmin, MajMin, PpPm, idNational, Siren2, RaisonSociale, Pays, dateLien, dateInsert, dateUpdate', "ActionPart=2 AND Siren1>=318610615 /*AND idNational<>''*/ ORDER BY Siren1 ASC", false, MYSQL_ASSOC); $nb=count($ret); foreach ($ret as $i=>$lien) { //print_r($lien); // Actionnaire $sirenAct=$lien['Siren1']; if (!@$iInsee->valideSiren($sirenAct)) continue; else $sirenActV=1; $tabId=@$iInsee->getIdentiteEntreprise($sirenAct, 0, 0, false, false); $naf=$tabId['NafEnt']; if (@trim($tabId['Nom'])=='') continue; //($siren, $nic=0, $id=0, $forceVerif=false, $accesDist=true) { if ($tabId['Civilite']==1) $civ='M'; elseif ($tabId['Civilite']==2) $civ='MME'; else $civ=''; if ($tabId['FJ']<2000) { $ppPm='PP'; $tabInsertComp=array( 'nom'=>$tabId['dir1Nom'], 'prenom'=>$tabId['dir1Prenom'], 'nom_usage'=>$tabId['dir1NomUsage']); } else { $ppPm='PM'; $tabInsertComp=array('capital'=>$tabId['Capital'], 'deviseCapital'=>$tabId['CapitalDev']); if (isset($tabId['CapitalNbActions']) && $tabId['CapitalNbActions']) $tabInsertComp['nbActions']=$tabId['CapitalNbActions']; } //if ($ppPm=='PP') print_r($tabId); if ($sirenAct<1000) $sirenAct=0; $tabInsertRef1=array('siren'=>$sirenAct, 'sirenValide'=>$sirenActV, 'source'=>$lien['source'], 'actif'=>$tabId['Actif'], 'PpPm'=>$ppPm, 'RS'=>$tabId['Nom'], 'cj'=>$tabId['FJ'], 'ape'=>$naf, 'categorie'=>getCategorie($tabId['Nom'], $tabId['FJ'], $civ, $naf), 'civilite'=>$civ, 'adresse_ville'=>$tabId['Ville'], 'adresse_pays'=>getCodePays3($tabId['PaysIso2']), 'idLoc1Num'=>'', 'dateInsert'=>$lien['dateInsert'], 'dateUpdate'=>$lien['dateUpdate']); $iDb->insert('liensRef', array_merge($tabInsertRef1,$tabInsertComp), false); $ret2=$iDb->select('liensRef', 'id', "siren=$sirenAct", false, MYSQL_ASSOC); $idAct=$ret2[0]['id']; $nomAct=$tabId['Nom']; // Participation $sirenPar=$lien['Siren2']; $civ=$naf=''; if ($sirenPar>1000 && @$iInsee->valideSiren($sirenPar)) { $sirenParV=1; $tabId=@$iInsee->getIdentiteEntreprise($sirenPar, 0, 0, false, false); $naf=$tabId['NafEnt']; if ($tabId['FJ']<2000) { $ppPm='PP'; $tabInsertComp=array( 'nom'=>$tabId['dir1Nom'], 'prenom'=>$tabId['dir1Prenom'], 'nom_usage'=>$tabId['dir1NomUsage']); } else { $ppPm='PM'; $tabInsertComp=array('capital'=>$tabId['Capital'], 'deviseCapital'=>$tabId['CapitalDev']); if (isset($tabId['CapitalNbActions']) && $tabId['CapitalNbActions']) $tabInsertComp['nbActions']=$tabId['CapitalNbActions']; } if ($tabId['Civilite']==1) $civ='M'; elseif ($tabId['Civilite']==2) $civ='MME'; $nom=$tabId['Nom']; $cj=$tabId['FJ']; $actif=$tabId['Actif']; $ville=$tabId['Ville']; $pays=getCodePays3($tabId['PaysIso2']); } else { $sirenPar=$sirenParV=0; $ppPm='P'.$lien['PpPm']; $nom=trim($lien['RaisonSociale']); if ($ppPm=='PP') { echo "$sirenAct / $sirenPar : Attention, personne physique participation !!!".EOL; continue; } $cj=0; $tabInsertComp=array(); $actif=1; $pays=$lien['Pays']; if ($pays=='') $pays='FRA'; $ville=''; } //if ($ppPm=='PP') print_r($tabId); if ($sirenPar<1000) $sirenPar='0'; $tabInsertRef2=array( 'siren'=>$sirenPar, 'sirenValide'=>$sirenActV, 'source'=>$lien['source'], 'actif'=>$actif, 'PpPm'=>$ppPm, 'RS'=>$nom, 'cj'=>$cj, 'ape'=>$naf, 'categorie'=>getCategorie($nom, $cj, $civ, $naf), 'civilite'=>$civ, 'adresse_ville'=>$ville, 'adresse_pays'=>$pays, 'idLoc1Num'=>$lien['idNational'], 'dateInsert'=>$lien['dateInsert'], 'dateUpdate'=>$lien['dateUpdate']); if (!$iDb->insert('liensRef', array_merge($tabInsertRef2,$tabInsertComp), false)) { if (mysql_errno()<>1062) die(mysql_errno().': '.mysql_error().EOL.print_r(array_merge($tabInsertRef2,$tabInsertComp), true)); } if ($sirenPar*1>1000) $where="siren=$sirenPar"; //else $where="RS='".addslashes($nom)."' AND adresse_ville='".addslashes($ville)."' AND adresse_pays='$pays'"; /* civilite, nom, prenom, naissance_nom, naissance_date, nat, adresse_ville*/ else $where="actif=$actif AND RS='".addslashes($nom)."' AND civilite='$civ' AND adresse_ville='".addslashes($ville)."' AND adresse_pays='$pays' AND cj=$cj AND ape='$naf'"; /* civilite, nom, prenom, naissance_nom, naissance_date, nat, adresse_ville*/ $ret2=$iDb->select('liensRef', 'id', $where, false, MYSQL_ASSOC); $idPar=$ret2[0]['id']; if (!isset($ret2[0]['id'])) die($where); $nomPar=$nom; // Lien $iDb->insert('liens2', array( 'idAct'=>$idAct, 'idPar'=>$idPar, 'actif'=>$lien['actif'], 'source'=>$lien['source'], 'PDetention'=>$lien['Pmin'], 'MajMin'=>$lien['MajMin'], 'dateEffetLien'=>$lien['dateLien'], 'docRef'=>'', 'dateDocRef'=>'', 'dateInsert'=>$lien['dateInsert'], 'dateUpdate'=>$lien['dateUpdate']), false); //echo "$i/$nb - $idAct ($sirenAct) détient ".$lien['Pmin']." % de $idPar ($sirenPar) au ".$lien['dateLien'].EOL; echo "$i/$nb - $idAct, $sirenAct ($nomAct) détient ".$lien['Pmin']." % de $idPar, $sirenPar ($nomPar) au ".$lien['dateLien'].EOL; } } function getCodePays3($codePays2) { global $iDb; $ret=$iDb->select('tabPays', 'codPays3', "codPays='$codePays2'", false, MYSQL_ASSOC); return $ret[0]['codPays3']; } function getCodePays3fromLib($libPays) { global $iDb; $ret=$iDb->select('tabPays', 'codPays3', "libPays LIKE '%$libPays%' OR libPaysEN LIKE '%$libPays%'", false, MYSQL_ASSOC); //print_r($ret); if (count($ret)==1) return $ret[0]['codPays3']; else return ''; } function getCodeDep($libDep) { global $iDb; $ret=$iDb->select('insee.departements', 'numdep, libdep', "libdep LIKE '%$libDep%'", false, MYSQL_ASSOC); if (count($ret)==1) return $ret[0]['numdep']; else return ''; } function getCategorie($nom, $cj=0, $civ='', $naf='') { $naf2=substr($naf,0,2)*1; // 'Actionnaires privés', 'Actionnaires anonymes' /* 'Private Equity', 'Fond de pension', 'Fondation/Institut de recherche', /* 'ETAT FRANCAIS', 'categorie'=>'', 'dateInsert'=>'20070401120000'), 'CADRES DU GROUPE', 'categorie'=>'Employés/Directeurs', 'dateInsert'=>'20070401120000'), 'PUBLIC', 'categorie'=>'Public', 'dateInsert'=>'20070401120000'), 'ADHERENTS', 'categorie'=>'NA', 'dateInsert'=>'20070401120000'), 'MANAGEMENT', 'categorie'=>'Employés/Directeurs', 'dateInsert'=>'20070401120000'), 'SALARIES'*/ if ($civ=='M' || $civ=='MME' || $civ=='MLLE') return 'Personne(s) ou famille(s)'; elseif (preg_match('/FAMILLE |MONSIEUR |MADAME |MADEMOISELLE|PERSONNES PHYSIQUES/i', $nom)) return 'Personne(s) ou famille(s)'; elseif (preg_match('/^(M | MME)/i', $nom)) return 'Personne(s) ou famille(s)'; elseif (preg_match('/CADRES|MANAGEMENT|SALARIES|DIRECTION|DIRECTEUR|EMPLOYEES|PERSONNEL/i', $nom)) return 'Employés/Directeurs'; elseif ($cj>=4000 && $cj<5000) return 'Etat/Autorité publique'; // 4 - Personne morale de droit public soumise au droit commercial elseif ($cj>=7000 && $cj<8000) return 'Etat/Autorité publique'; // 7 - Personne morale et organisme soumis au droit administratif elseif ($cj==3210) return 'Etat/Autorité publique'; // Etat, collectivité ou établissement public étranger elseif ($cj>=1000 && $cj<2000) return 'Personne(s) ou famille(s)'; elseif ($cj==2110 || $cj==2210 || $cj==2310 || $cj==2385) return 'Personne(s) ou famille(s)'; // Indivision, SEP elseif ($cj==6100 || $cj==6595 || $cj==6596 || $naf=='6411Z' || $naf=='6419Z') return 'Banque'; elseif ($cj==6411 || $naf2==65) return 'Assurances'; elseif ($naf2==64 || $naf2==66 || preg_match('/FINANCIERE/i', $nom)) return 'Compagnie financière'; elseif ($naf2>=5 && $naf2<=39) return 'Industrie'; elseif (preg_match('/PUBLIC/i', $nom)) return 'Public'; elseif (preg_match('/ETAT|GOVERNMENT OF FRANCE/i', $nom)) return 'Etat/Autorité publique'; return 'NA'; } ?>