192 lines
9.5 KiB
PHP
192 lines
9.5 KiB
PHP
|
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
|
||
|
<?php
|
||
|
include_once(INCLUDE_PATH.'insee/classMInsee.php');
|
||
|
|
||
|
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION]
|
||
|
Sirenage automatique des annonces Bodacc pas encore sirenées.
|
||
|
|
||
|
Options :
|
||
|
-s Sirenage semi-automatique (Ligne de prompt pour les entreprises non sirenées)
|
||
|
-p Sirenage de toutes les annonces sans propositions (en vu du traitement manuel)
|
||
|
-a Re-sirenage de toutes les annonces Bodacc non sirenées !
|
||
|
-i:XXX Reprise à partir du numéro d'annonce XXX
|
||
|
";
|
||
|
$semiManuel=$sansPropo=$toutes=$index=false;
|
||
|
|
||
|
$argv=$_SERVER['argv'];
|
||
|
if ($_SERVER['argc']==1) $semiManuel=false; // Fonctionnement normal du script, càd : on sirene que en auto
|
||
|
else {
|
||
|
for ($i=1; isset($argv[$i]); $i++) {
|
||
|
if (substr($argv[$i],0,1)=='-') {
|
||
|
switch (substr($argv[$i],1,1)) {
|
||
|
case 's':
|
||
|
$semiManuel=true;
|
||
|
break;
|
||
|
case 'p':
|
||
|
$sansPropo=true;
|
||
|
break;
|
||
|
case 'a':
|
||
|
$toutes=true;
|
||
|
break;
|
||
|
case 'i':
|
||
|
$index=trim(substr($argv[$i],3));
|
||
|
break;
|
||
|
case '-':
|
||
|
case '?':
|
||
|
die($strInfoScript);
|
||
|
break;
|
||
|
default:
|
||
|
die('Option '. $argv[$i] . " inconnue !\n");
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
echo date('Y/m/d - H:i:s') ." - DEBUT du programme de SIRENAGE des fichiers CLIENTS...".EOL;
|
||
|
|
||
|
$iDb=new WDB('tmp');
|
||
|
$iInsee=new MInsee();
|
||
|
$listeNonSirene=$iDb->select('mederic', 'ID_CLIENT, REF, RAISON_SOCIALE, ENSEIGNE2, SIGLE2, ADRESSE, CP, VILLE', 'SIREN=0', true);
|
||
|
echo date('Y/m/d - H:i:s') ." - Nombre d'entreprises à traiter : ".count($listeNonSirene). EOL;
|
||
|
foreach ($listeNonSirene as $k=>$entrep) {
|
||
|
$siege='';$actif='';$deb=0;$nbRep=20;$maxRep=20;$pertinence=false;
|
||
|
$avecSiren=true;
|
||
|
|
||
|
$tabEtabs=@$iInsee->rechercheEtab($entrep['RAISON_SOCIALE'], $entrep['ADRESSE'], $entrep['CP'], $entrep['VILLE'], $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, $avecSiren);
|
||
|
if (@$tabEtabs[nbReponses]==0 && $entrep['ENSEIGNE2']<>'') {
|
||
|
$tabEtabs=@$iInsee->rechercheEtab($entrep['ENSEIGNE2'], $entrep['ADRESSE'], $entrep['CP'], $entrep['VILLE'], $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, $avecSiren);
|
||
|
} elseif (@$tabEtabs[nbReponses]==0 && $entrep['SIGLE2']<>'') {
|
||
|
$tabEtabs=@$iInsee->rechercheEtab($entrep['SIGLE2'], $entrep['ADRESSE'], $entrep['CP'], $entrep['VILLE'], $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, $avecSiren);
|
||
|
}
|
||
|
//print_r($tabEtabs);
|
||
|
//die();
|
||
|
$tabSiren=array();
|
||
|
//echo "RECHERCHE DE : ". $entrep['RAISON_SOCIALE']. $entrep['ENSEIGNE2']. $entrep['SIGLE2']. $entrep['ADRESSE']. $entrep['CP']. $entrep['VILLE'].' ('.$tabEtabs['nbReponsesTotal']. " réponses)... ";
|
||
|
|
||
|
foreach ($tabEtabs['reponses'] as $i=>$etab) {
|
||
|
$tabSiren[]=$etab['Siren'];
|
||
|
/* $siret = $etab['Siret']; // 40847260300039
|
||
|
$siege = $etab['Siege']; // 0
|
||
|
$nom = $etab['Nom']; // SETTIER JEAN MARC
|
||
|
$nom2 = $etab['Nom2']; //
|
||
|
$sigle = $etab['Sigle']; //
|
||
|
$sigle = $etab['Enseigne'];//
|
||
|
$sigle = $etab['Adresse']; // 0059 R DE PATAY
|
||
|
$sigle = $etab['CP']; // 45000
|
||
|
$sigle = $etab['Ville']; // ORLEANS
|
||
|
$sigle = $etab['Tel']; // 00000000
|
||
|
$sigle = $etab['Fax']; // 00000000
|
||
|
$sigle = $etab['FJ']; // 1500
|
||
|
$sigle = $etab['FJLib']; // Profession libérale
|
||
|
$siren = $etab['Siren']; // 408472603
|
||
|
$nic = $etab['Nic']; // 00039
|
||
|
$actif = $etab['Actif']; // 0
|
||
|
*/
|
||
|
}
|
||
|
$tabUnique=array_unique($tabSiren);
|
||
|
//echo "RECHERCHE DE : ". $entrep['RAISON_SOCIALE']. $entrep['ENSEIGNE2']. $entrep['SIGLE2']. $entrep['ADRESSE']. $entrep['CP']. $entrep['VILLE'].' ('.$tabEtabs['nbReponsesTotal']. " réponses)... ";
|
||
|
if (count($tabUnique)==1) {
|
||
|
echo '1;'.$entrep['REF'].';'.$tabUnique[0].';'.$etab['Nom'].';'.$entrep['RAISON_SOCIALE'].';'.$entrep['ENSEIGNE2'].';'.$entrep['SIGLE2'].';'.$entrep['ADRESSE'].';'.$entrep['CP'].';'.$entrep['VILLE'].EOL;
|
||
|
} else {
|
||
|
echo count($tabUnique).';'.$entrep['REF'].';000000000;;'.$etab['Nom'].';'.$entrep['RAISON_SOCIALE'].';'.$entrep['ENSEIGNE2'].';'.$entrep['SIGLE2'].';'.$entrep['ADRESSE'].';'.$entrep['CP'].';'.$entrep['VILLE'].EOL;
|
||
|
}
|
||
|
// die();//
|
||
|
/* if (count($tabTrouve)==1) {
|
||
|
$entrepT=$tabTrouve[0];
|
||
|
$siren=substr($entrepT['Siret'],0,9);
|
||
|
$nic=substr($entrepT['Siret'],9,5);
|
||
|
echo "$siren $nic\n";
|
||
|
//print_r($entrepT);die();
|
||
|
/*if ($table['db']<>'jo')
|
||
|
$iDb->update($table['table'], array($table['champSiren']=>$siren), "id='".$entrep['id']."'", true) or die($iDb->getLastError());
|
||
|
else
|
||
|
if (trim($siren)<>'') {
|
||
|
$tabTmp=$iDb->select('bodacc_detail','count(*)', 'id='. $entrep['id'] ." AND siren=$siren", true);
|
||
|
if ($tabTmp[0][0]<>0) { // Cette annonce est déjà ratachée au siren, on supprime donc ce lien inutile référençant le même siren
|
||
|
//$iDb->delete('bodacc_detail', 'id='. $entrep['id'] .' AND siren='.$entrep['sir'], true);
|
||
|
} else
|
||
|
$iDb->update('bodacc_detail', array('siren'=>$siren, $table['champNic']=>$nic, $table['champSirenValide']=>3, $table['champNicValide']=>3), 'id='.$entrep['id'].' AND siren='.$entrep['sir'], true) or die($iDb->getLastError());
|
||
|
// On efface l'information de la table A sirener au cas où !
|
||
|
$iDb->delete('bodacc_sirenage', 'idAnn='.$entrep['id'].' AND siren='.$entrep['sir']) or die($iDb->getLastError());
|
||
|
}
|
||
|
} elseif (count($tabTrouve)==0) {
|
||
|
echo " Pas de réponse !\n";
|
||
|
$tabInsert=array( 'idAnn'=>$entrep['id'],
|
||
|
'siren'=>$entrep['sir']);
|
||
|
if (!$iDb->insert('bodacc_sirenage', $tabInsert))
|
||
|
$iDb->update('bodacc_sirenage', array('siretProposes'=>''), 'idAnn='.$entrep['id'].' AND siren='.$entrep['sir']) or die($iDb->getLastError());
|
||
|
} else { // Plusieurs siren possibles
|
||
|
echo "\n";
|
||
|
$siren1=substr($tabTrouve[0]['Siret'],0,9);
|
||
|
$nic1=substr($tabTrouve[0]['Siret'],9,5);
|
||
|
$sirenDiff=$sirenNomIdem=$sirenAdrIdem=false;
|
||
|
$tabSiren=array(0=>0);
|
||
|
$tabSiret=array();
|
||
|
foreach ($tabTrouve as $j=>$entrepT) {
|
||
|
if($j==0) echo "PROBABLES : \n";
|
||
|
$siren=substr($entrepT['Siret'],0,9);
|
||
|
$nic=substr($entrepT['Siret'],9,5);
|
||
|
$tabSiren[]=$siren;
|
||
|
$nomT=strtr($entrep['RS'], '/(),-',' ');
|
||
|
$adresseT=trim(strtoupper(preg_replace("/[0-9]{1,4}(.*)( R | AV | RUE | AVENUE | BD | BOULEVARD )/i",'',strtr($entrepT['Adresse'], '/(),-',' '))));
|
||
|
if (levenshtein($raisonSociale,$nomT)>2) $sirenNomIdem=$siren;
|
||
|
if ($siren<>$siren1) $sirenDiff=true;
|
||
|
if (levenshtein($adresse,$adresseT)<2) $sirenAdrIdem=$siren;
|
||
|
$num=$j+1;
|
||
|
echo "$num. $siren $nic, ". $entrepT['Nom'].', '.$entrepT['Nom2'].', '.$entrepT['Enseigne'].', '.$entrepT['Adresse'].', '.$entrepT['CP'].', '.$entrepT['Ville']."\n";
|
||
|
$tabSiret[]=$entrepT['Siret'].'-'.$entrepT['Pertinence'];
|
||
|
}
|
||
|
|
||
|
if ($sirenDiff==false) {
|
||
|
// Tous les SIREN sont identiques, l'entreprise ttouvée est la bonne !
|
||
|
echo "$num. Siren trouvé = $siren (tous les Sirens sont identiques) !\n";
|
||
|
$iDb->update('bodacc_detail', array('siren'=>$siren, $table['champSirenValide']=>4, $table['champNicValide']=>0), 'id='.$entrep['id'].' AND siren='.$entrep['sir'], true) or die($iDb->getLastError());
|
||
|
// On efface l'information de la table A sirener au cas où !
|
||
|
$iDb->delete('bodacc_sirenage', 'idAnn='.$entrep['id'].' AND siren='.$entrep['sir']) or die($iDb->getLastError());
|
||
|
} else {
|
||
|
/** On insère en base toutes les multipropositions pour le sirenage manuel
|
||
|
$tabInsert=array( 'idAnn'=>$entrep['id'],
|
||
|
'siren'=>$entrep['sir'],
|
||
|
'siretProposes'=>implode(';',$tabSiret));
|
||
|
if ($iDb->insert('bodacc_sirenage', $tabInsert))
|
||
|
$iDb->update('bodacc_sirenage', array('siretProposes'=>implode(';',$tabSiret)), 'idAnn='.$entrep['id'].' AND siren='.$entrep['sir']) or die($iDb->getLastError());
|
||
|
}
|
||
|
//, 'id='.$entrep['id'].' AND '. $table['champSiren'] .'='.$entrep['sir'], true) or die(mysql_error());
|
||
|
|
||
|
/*elseif ($sirenNomIdem!=false) {
|
||
|
echo "$num. Siren trouvé = $sirenNomIdem (raisons sociales identiques) !\n";
|
||
|
if ($table['db']<>'jo')
|
||
|
$iDb->update($table['table'], array($table['champSiren']=>$sirenNomIdem), "id='".$entrep['id']."'", true) or die(mysql_error());
|
||
|
else
|
||
|
$iDb->update($table['table'], array($table['champSiren']=>$sirenNomIdem, $table['champSirenValide']=>5), 'id='.$entrep['id'], true) or die(mysql_error());
|
||
|
} elseif ($sirenAdrIdem!=false) {
|
||
|
echo "$num. Siren trouvé = $sirenNomIdem (adresses identiques) !\n";
|
||
|
if ($table['db']<>'jo')
|
||
|
$iDb->update($table['table'], array($table['champSiren']=>$sirenAdrIdem), "id='".$entrep['id']."'", true) or die(mysql_error());
|
||
|
else
|
||
|
$iDb->update($table['table'], array($table['champSiren']=>$sirenAdrIdem, $table['champSirenValide']=>6), 'id='.$entrep['id'], true) or die(mysql_error());
|
||
|
} else
|
||
|
{ //if ($semiManuel==true);
|
||
|
$saisie='';
|
||
|
while($semiManuel==true && $saisie=='') {
|
||
|
echo "Veuillez saisir le numéro qui identifie la bonne entreprise (0 si pas de réponse) : ";
|
||
|
$saisie = trim(fgets(STDIN));
|
||
|
if ($saisie==0) break;
|
||
|
elseif ($saisie>0 && $saisie<=$j+1) {
|
||
|
$sir=$tabSiren[$saisie];
|
||
|
if ($table['db']<>'jo')
|
||
|
$iDb->update($table['table'], array($table['champSiren']=>$sir), "id='".$entrep['id']."'", true) or die(mysql_error());
|
||
|
else
|
||
|
$iDb->update($table['table'], array($table['champSiren']=>$sir, $table['champSirenValide']=>2),
|
||
|
'id='.$entrep['id'], true) or die(mysql_error());
|
||
|
break;
|
||
|
}
|
||
|
else $saisie='';
|
||
|
}
|
||
|
}*/
|
||
|
}
|
||
|
|
||
|
echo date('Y/m/d - H:i:s') ." - FIN du programme de SIRENAGE.".EOL;
|
||
|
die();
|
||
|
?>
|